0.47.4 • Published 2 months ago

@snack-uikit/fields v0.47.4

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
2 months ago

Fields

Todo

  • сделать режим выбора периода в FieldDate.
  • сделать маску ввода серого цвета в FieldDate
  • сбрасывать состояние tabIndex-ов при потере фокуса c кнопок

Installation

npm i @snack-uikit/fields

Changelog

Поля для форм

Example

import { useState } from 'react';
import { FieldDate, FieldSecure, FieldSelect, FieldText, FieldTextArea } from '@snack-uikit/fields';
import { PlaceholderSVG } from '@snack-uikit/icons';

const [value, setValue] = useState('11.11.1111');
const [isOpen, setIsOpen] = useState(false);

<FieldDate
  value={value}
  onChange={setValue}
  open={isOpen}
  onOpenChange={setIsOpen}
  id='field-1'
  name='field-1'
  disabled={false}
  readonly={false}
  showCopyButton={true}
  onFocus={() => {}}
  onBlur={() => {}}
  label='Select date'
  labelTooltip='You can choose any date'
  required={true}
  hint='You have entered wrong date'
  size='s'
  validationState='default'
/>;

// ...

const [value, setValue] = useState('1234');
const [isHidden, setIsHidden] = useState(false);

<FieldSecure
  value={value}
  onChange={setValue}
  hidden={isHidden}
  onHiddenChange={setIsHidden}
  id='field-1'
  name='field-1'
  placeholder='Enter password'
  maxLength={20}
  allowMoreThanMaxLength={false}
  disabled={false}
  readonly={false}
  showCopyButton={true}
  onFocus={() => {}}
  onBlur={() => {}}
  label='Enter password'
  labelTooltip='You can enter password here'
  required={true}
  hint='You have entered wrong password'
  size='s'
  validationState='error'
  prefixIcon={<PlaceholderSVG />}
/>;

// ...

const [value, setValue] = useState('abc');

<FieldText
  value={value}
  onChange={setValue}
  id='field-1'
  name='field-1'
  placeholder='Enter text'
  maxLength={20}
  allowMoreThanMaxLength={false}
  disabled={false}
  readonly={false}
  showCopyButton={true}
  onFocus={() => {}}
  onBlur={() => {}}
  label='Enter text'
  labelTooltip='You can input any text'
  required={true}
  hint='You have entered wrong answer'
  size='s'
  validationState='error'
  prefixIcon={<PlaceholderSVG />}
/>;

// ...

const [value, setValue] = useState('abc');

<FieldTextArea
  value={value}
  onChange={setValue}
  id='field-1'
  name='field-1'
  placeholder='Enter text'
  maxLength={20}
  maxRows={8}
  resizable={true}
  allowMoreThanMaxLength={true}
  disabled={false}
  readonly={false}
  showCopyButton={true}
  onFocus={() => {}}
  onBlur={() => {}}
  label='Enter text'
  labelTooltip='You can input any text'
  required={true}
  hint='You have entered wrong answer'
  size='s'
  validationState='error'
/>;

// ...

const [value, setValue] = useState('1234');
const [isOpen, setIsOpen] = useState(false);

<FieldSelect
  mode='single'
  value={value}
  onChange={setValue}
  options={[
    { value: 'op1', option: 'Option 1' },
    { value: 'op2', option: 'Option 2' },
  ]}
  open={isHidden}
  onOpenChange={setIsOpen}
  id='field-1'
  name='field-1'
  placeholder='Select an item'
  noDataText={'No data'}
  searchable={true}
  disabled={false}
  readonly={false}
  showCopyButton={true}
  onFocus={() => {}}
  onBlur={() => {}}
  label='Select an item'
  labelTooltip='You can choose any option'
  required={true}
  hint='You have chosen wrong item'
  size='s'
  validationState='error'
  prefixIcon={<PlaceholderSVG />}
  enableFuzzySearch={true}
/>;

Особенности работы FieldStepper-a

FieldStepper в основном предназначен для работы с небольшими числами, которые изменяются с помощью кнопок увеличения и уменьшения значения. Для обеспечения консистентности в компонент была добавлена возможность ввода значений с клавиатуры, однако это требует валидации пользовательского ввода.

Существует два способа ограничения ввода: 1. Исправление значения после завершения ввода пользователем:

  • Такой способ есть, он активируется с помощью пропсы allowMoreThanLimits = false. Однако, это плохой UX-паттерн, так как пользователь может не заметить, что значение было изменено.

  1. Запрет ввода чисел, превышающих максимальное или минимальное значение:
    • Такой способ можно было бы реализовать либо исправлением значения на max/min, либо просто не изменяя значение в поле. Однако, это ещё более плохой UX-паттерн, так как может быть воспринят пользователем как неисправность.

Правильным подходом будет позволить пользователю ввести желаемое значение и, при необходимости, подсветить его некорректность с помощью свойств validationState и hint. Это можно сделать по событию blur или при отправке формы.

FieldDecorator

Props

nametypedefault valuedescription
children*ReactNode-Контент
classNamestring-CSS-класс
disabledboolean-Деактивирован ли элемент Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только на чтение Доступно ли поле только на чтение
errorstring-
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
labelForstring-Аттрибут for
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
length{ current: number; max?: number; }-Допустимая длинна текста
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки

FieldText

Props

nametypedefault valuedescription
showCopyButtonboolean-Отображение кнопки Копировать для поля (актуально только для readonly = true)
showClearButtonbooleantrueОтображение кнопки очистки поля
allowMoreThanMaxLengthboolean-Можно ли вводить больше разрешённого кол-ва символов
prefixIconReactElement<any, string \| JSXElementConstructor<any>>-Иконка-префикс для поля
prefixReactNode-Произвольный префикс для поля
postfixReactNode-Произвольный постфикс для поля
buttonButton-Кнопка действия внутри поля
valuestring-Значение input
onChange(value: string, e?: ChangeEvent<HTMLInputElement>) => void-Колбек смены значения
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
placeholderstring-Значение плейсхолдера
maxLengthnumber-Максимальная длина вводимого значения
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
autoCompletestring \| booleanfalseВключен ли автокомплит для поля
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

FieldTextArea

Props

nametypedefault valuedescription
minRowsnumber3Минимальное кол-во строк, до которого размер поля может быть увеличен
maxRowsnumber1000Максимальное кол-во строк, до которого размер поля может быть увеличен
resizableboolean-Может ли ли пользователь изменять размеры поля (если св-во не включено, поле автоматически меняет свой размер)
onChange(value: string, e?: ChangeEvent<HTMLTextAreaElement>) => void-Колбек смены значения
showCopyButtonboolean-Отображение кнопки Копировать для поля (актуально только для readonly = true)
showClearButtonbooleantrueОтображение кнопки очистки поля
allowMoreThanMaxLengthbooleantrueМожно ли вводить больше разрешённого кол-ва символов
valuestring-HTML-аттрибут value
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только на чтение
idstring-HTML-аттрибут id
namestring-HTML-аттрибут name
placeholderstring-Плейсхолдер
maxLengthnumber-Максимальное кол-во символов
onFocusFocusEventHandler<HTMLTextAreaElement>-Колбек получения фокуса
onBlurFocusEventHandler<HTMLTextAreaElement>-Колбек потери фокуса
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLTextAreaElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

FieldSecure

Props

nametypedefault valuedescription
hiddenboolean-Замаскированно ли значение поля
onHiddenChange(value: boolean) => void-Колбек смены маскирования
showCopyButtonboolean-Отображение кнопки копирования
allowMoreThanMaxLengthboolean-Можно ли вводить больше разрешённого кол-ва символов
prefixIconReactElement<any, string \| JSXElementConstructor<any>>-Иконка-префикс для поля
asyncValueGetter() => Promise<string>-Свойство позволяет грузить данные в поле по требованию
valuestring-Значение input
onChange(value: string, e?: ChangeEvent<HTMLInputElement>) => void-Колбек смены значения
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
placeholderstring-Значение плейсхолдера
maxLengthnumber-Максимальная длина вводимого значения
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
autoCompletestring \| booleanfalseВключен ли автокомплит для поля
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

parseDate

helper

Преобразует строковое значение поля FieldDate в тип Date

FieldDate

Props

nametypedefault valuedescription
value*string-Значение input
openboolean-Открыт date-picker
onOpenChange(value: boolean) => void-Колбек открытия пикера
onChange(value: string) => void-Колбек смены значения
showCopyButtonboolean-Отображение кнопки копирования
showClearButtonbooleantrueОтображение кнопки Очистки поля
localeLocalenew Intl.Locale('ru-RU')Текущая локаль календаря
buildCellProps(date: Date, viewMode: ViewMode) => { isDisabled?: boolean; isHoliday?: boolean } ;-Колбек установки свойств ячеек календаря. Вызывается на построение каждой ячейки. Принимает два параметра: Date - дата ячейки ViewMode: - month отображение месяца, каждая ячейка - 1 день - year отображение года, каждая ячейка - 1 месяц - decade отображение декады, каждая ячейка - 1 год Колбек должен возвращать объект с полями, отвечающими за отключение и подкраску ячейки.
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

FieldSelect

Props

nametypedefault valuedescription
options*OptionProps[]-
disabledbooleanfalseЯвляется ли поле деактивированным
readonlybooleanfalse falseЯвляется ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
placeholderstring-Значение плейсхолдера
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
onKeyDownKeyboardEventHandler<HTMLInputElement>-Колбек обработки нажатия клавиши клавиатуры
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"-Размер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"-Состояние валидации
showHintIconboolean-Отображать иконку подсказки
loadingboolean-
prefixReactNode-Произвольный префикс для поля
postfixReactNode-Произвольный постфикс для поля
valueItemId \| ItemId[]-Controlled состояние
onChangeOnChangeHandler<any>-Controlled обработчик измения состояния
defaultValueItemId \| ItemId[]-Начальное состояние
openboolean-
onOpenChange(open: boolean) => void-
showCopyButtonboolean-Отображение кнопки Копировать для поля (актуально только для readonly = true)
showClearButtonbooleantrueОтображение кнопки очистки поля
prefixIconReactElement<any, string \| JSXElementConstructor<any>>-Иконка-префикс для поля
widthStrategyenum PopoverWidthStrategy: "auto", "gte", "eq"-
pinTopOptionProps[]-
pinBottomOptionProps[]-
footerReactNode-
searchSearchState-
untouchableScrollbarsboolean-Отключает возможность взаимодействовать со скролбарами мышью.
dataFilteredboolean-
dataErrorboolean-
noDataStateEmptyStateProps-Экран при отстутствии данных
noResultsStateEmptyStateProps-Экран при отстутствии результатов поиска или фильтров
errorDataStateEmptyStateProps-Экран при ошибке запроса
searchableboolean-
autocompleteboolean-
addOptionByEnterboolean-
enableFuzzySearchboolean-Включить нечеткий поиск
selectedOptionFormatterSelectedOptionFormatter-
selection"single" | "multiple"-
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-
removeByBackspaceboolean-
resetSearchOnOptionSelectionboolean-Поведение строки поиска при выборе опции из списка

FieldStepper

Props

nametypedefault valuedescription
valuenumber-Значение поля
onChange(value: number, e?: ChangeEvent<HTMLInputElement>) => void-Колбек смены значения
stepnumber1Шаг поля
allowMoreThanLimitsbooleantrueМожно ли вводить c клавиатуры числа, выходящие за пределы min/max
prefixReactNode-Произвольный префикс для поля
postfixReactNode-Произвольный постфикс для поля
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
minnumberNumber.NEGATIVE_INFINITYМинимальное значение поля
maxnumberNumber.POSITIVE_INFINITYМаксимальное значение поля
errorstring-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

FieldSlider

Props

nametypedefault valuedescription
postfixIconReactElement<any, string \| JSXElementConstructor<any>>-Иконка-постфикс для поля
showScaleBarbooleantrueОтображение линейки
textInputFormatterTextInputFormatter-Функция для форматирования значений в текстовом поле
unbindInputFromMarksboolean-Отвязать текстовое поле от значений на линейке
prefixReactNode-Произвольный префикс для поля
postfixReactNode-Произвольный постфикс для поля
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
valuenumber \| number[]-
onChange(value: number \| number[]) => void-
rangeboolean-
tipFormatter(value: string \| number) => ReactNode-
stepnumber-
minnumber-
maxnumber-
marksRecord<string \| number, ReactNode \| MarkObj>-
classNamestring-CSS-класс
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-

FieldColor

Props

nametypedefault valuedescription
openboolean-Открыт color-picker
onOpenChange(value: boolean) => void-Колбек открытия пикера
showCopyButtonboolean-Отображение кнопки копирования
showClearButtonbooleantrueОтображение кнопки Очистки поля
valuestring-Значение input
onChange(value: string) => void-
classNamestring-Класснейм
withAlphaboolean-Значение с альфаканалом
autoApplyboolean-Применять изменения автоматически, если значение false - то изменения происходят по кнопке
colorMode{ hex?: boolean; rgb?: boolean; hsv?: boolean; }-
disabledboolean-Является ли поле деактивированным
readonlyboolean-Является ли поле доступным только для чтения
idstring-Значение html-атрибута id
namestring-Значение html-атрибута name
placeholderstring-Значение плейсхолдера
onFocusFocusEventHandler<HTMLInputElement>-Колбек обработки получения фокуса
onBlurFocusEventHandler<HTMLInputElement>-Колбек обработки потери фокуса
errorstring-
labelstring-Лейбл
captionstring-Подпись справа от лейбла
labelTooltipReactNode-Всплывающая подсказка лейбла
requiredboolean-Является ли поле обязательным
sizeenum Size: "s", "m", "l"SIZE.SРазмер
labelTooltipPlacementenum Placement: "left", "left-start", "left-end", "right", "right-start", "right-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end"topРасположение подсказки лейбла
hintstring-Подсказка внизу
validationStateenum ValidationState: "default", "error", "warning", "success"defaultСостояние валидации
showHintIconboolean-Отображать иконку подсказки
refRef<HTMLInputElement>-Allows getting a ref to the component instance. Once the component unmounts, React will set ref.current to null (or call the ref with null if you passed a callback ref). @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
keyKey-
0.43.0

3 months ago

0.32.5

9 months ago

0.32.4

9 months ago

0.32.3

9 months ago

0.32.2

9 months ago

0.32.1

9 months ago

0.44.0

3 months ago

0.33.0

9 months ago

0.45.0

3 months ago

0.41.1

5 months ago

0.41.2

5 months ago

0.41.0

5 months ago

0.41.10

4 months ago

0.42.6

3 months ago

0.42.7

3 months ago

0.42.4

3 months ago

0.42.5

3 months ago

0.42.2

3 months ago

0.42.3

3 months ago

0.42.0

4 months ago

0.42.1

3 months ago

0.36.4

7 months ago

0.36.3

7 months ago

0.36.2

8 months ago

0.36.1

8 months ago

0.36.0

8 months ago

0.36.5

7 months ago

0.37.0

7 months ago

0.34.0

9 months ago

0.46.0

3 months ago

0.35.5

8 months ago

0.35.4

8 months ago

0.35.3

8 months ago

0.35.2

9 months ago

0.35.1

9 months ago

0.35.0

9 months ago

0.35.6

8 months ago

0.47.3

2 months ago

0.47.4

2 months ago

0.47.1

3 months ago

0.47.2

2 months ago

0.47.0

3 months ago

0.38.2

6 months ago

0.38.1

6 months ago

0.38.0

6 months ago

0.38.3

6 months ago

0.39.1

6 months ago

0.39.0

6 months ago

0.39.3

6 months ago

0.39.2

6 months ago

0.40.6

5 months ago

0.40.7

5 months ago

0.40.4

5 months ago

0.40.5

5 months ago

0.40.2

5 months ago

0.40.3

5 months ago

0.40.0

6 months ago

0.40.1

6 months ago

0.41.9

4 months ago

0.41.7

5 months ago

0.41.8

4 months ago

0.41.5

5 months ago

0.41.6

5 months ago

0.41.3

5 months ago

0.41.4

5 months ago

0.32.0

9 months ago

0.30.0

10 months ago

0.31.0

10 months ago

0.29.6

10 months ago

0.29.5

10 months ago

0.29.4

10 months ago

0.29.3

10 months ago

0.29.2

10 months ago

0.29.0

11 months ago

0.29.1

10 months ago

0.28.0

11 months ago

0.27.1

11 months ago

0.25.2

11 months ago

0.25.1

12 months ago

0.21.5

1 year ago

0.25.0

12 months ago

0.21.4

1 year ago

0.21.3

1 year ago

0.21.2

1 year ago

0.21.1

1 year ago

0.21.0

1 year ago

0.26.0

11 months ago

0.22.2

1 year ago

0.22.1

1 year ago

0.22.0

1 year ago

0.23.6

1 year ago

0.23.5

1 year ago

0.27.0

11 months ago

0.23.4

1 year ago

0.23.3

1 year ago

0.23.2

1 year ago

0.23.1

1 year ago

0.23.0

1 year ago

0.23.9

12 months ago

0.23.8

1 year ago

0.23.7

1 year ago

0.20.10

1 year ago

0.20.9

1 year ago

0.24.1

12 months ago

0.24.0

12 months ago

0.20.8

1 year ago

0.20.7

1 year ago

0.20.6

1 year ago

0.20.5

1 year ago

0.20.4

1 year ago

0.20.3

1 year ago

0.20.1

1 year ago

0.20.2

1 year ago

0.20.0

1 year ago

0.19.2

1 year ago

0.19.1

1 year ago

0.19.0

1 year ago

0.18.2

1 year ago

0.18.3

1 year ago

0.18.1

1 year ago

0.18.0

1 year ago

0.17.14

1 year ago

0.17.13

1 year ago

0.17.12

1 year ago

0.17.11

1 year ago

0.17.9

1 year ago

0.17.10

1 year ago

0.17.8

1 year ago

0.17.7

1 year ago

0.17.6

1 year ago

0.17.5

1 year ago

0.17.4

1 year ago

0.17.2

1 year ago

0.17.3

1 year ago

0.17.1

1 year ago

0.17.0

1 year ago

0.16.0

1 year ago

0.16.1

1 year ago

0.15.0

1 year ago

0.14.2

1 year ago

0.14.1

1 year ago

0.14.0

1 year ago

0.13.4

1 year ago

0.13.2

2 years ago

0.13.3

2 years ago

0.13.1

2 years ago

0.13.0

2 years ago

0.12.3

2 years ago

0.12.2

2 years ago

0.12.1

2 years ago

0.12.0

2 years ago

0.11.6

2 years ago

0.11.4

2 years ago

0.11.5

2 years ago

0.11.3

2 years ago

0.11.2

2 years ago

0.11.1

2 years ago

0.11.0

2 years ago

0.10.4

2 years ago

0.10.3

2 years ago

0.10.2

2 years ago

0.10.1

2 years ago

0.10.0

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.9.0

2 years ago