0.47.4 • Published 1 month ago

@snack-uikit/fields v0.47.4

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 month 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

2 months ago

0.32.5

8 months ago

0.32.4

8 months ago

0.32.3

8 months ago

0.32.2

8 months ago

0.32.1

8 months ago

0.44.0

2 months ago

0.33.0

8 months ago

0.45.0

2 months ago

0.41.1

4 months ago

0.41.2

4 months ago

0.41.0

4 months ago

0.41.10

3 months ago

0.42.6

2 months ago

0.42.7

2 months ago

0.42.4

2 months ago

0.42.5

2 months ago

0.42.2

2 months ago

0.42.3

2 months ago

0.42.0

3 months ago

0.42.1

2 months ago

0.36.4

6 months ago

0.36.3

6 months ago

0.36.2

7 months ago

0.36.1

7 months ago

0.36.0

7 months ago

0.36.5

6 months ago

0.37.0

6 months ago

0.34.0

8 months ago

0.46.0

2 months ago

0.35.5

7 months ago

0.35.4

7 months ago

0.35.3

7 months ago

0.35.2

8 months ago

0.35.1

8 months ago

0.35.0

8 months ago

0.35.6

7 months ago

0.47.3

1 month ago

0.47.4

1 month ago

0.47.1

2 months ago

0.47.2

1 month ago

0.47.0

2 months ago

0.38.2

5 months ago

0.38.1

5 months ago

0.38.0

5 months ago

0.38.3

5 months ago

0.39.1

5 months ago

0.39.0

5 months ago

0.39.3

5 months ago

0.39.2

5 months ago

0.40.6

4 months ago

0.40.7

4 months ago

0.40.4

4 months ago

0.40.5

4 months ago

0.40.2

4 months ago

0.40.3

4 months ago

0.40.0

5 months ago

0.40.1

5 months ago

0.41.9

3 months ago

0.41.7

4 months ago

0.41.8

3 months ago

0.41.5

4 months ago

0.41.6

4 months ago

0.41.3

4 months ago

0.41.4

4 months ago

0.32.0

8 months ago

0.30.0

9 months ago

0.31.0

9 months ago

0.29.6

9 months ago

0.29.5

9 months ago

0.29.4

9 months ago

0.29.3

9 months ago

0.29.2

9 months ago

0.29.0

10 months ago

0.29.1

9 months ago

0.28.0

10 months ago

0.27.1

10 months ago

0.25.2

10 months ago

0.25.1

11 months ago

0.21.5

1 year ago

0.25.0

11 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

10 months ago

0.22.2

1 year ago

0.22.1

1 year ago

0.22.0

1 year ago

0.23.6

11 months ago

0.23.5

11 months ago

0.27.0

10 months ago

0.23.4

12 months ago

0.23.3

12 months ago

0.23.2

12 months ago

0.23.1

1 year ago

0.23.0

1 year ago

0.23.9

11 months ago

0.23.8

11 months ago

0.23.7

11 months ago

0.20.10

1 year ago

0.20.9

1 year ago

0.24.1

11 months ago

0.24.0

11 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

1 year ago

0.13.3

1 year ago

0.13.1

1 year ago

0.13.0

1 year ago

0.12.3

1 year ago

0.12.2

1 year ago

0.12.1

1 year ago

0.12.0

1 year ago

0.11.6

1 year ago

0.11.4

1 year ago

0.11.5

1 year ago

0.11.3

1 year ago

0.11.2

1 year ago

0.11.1

1 year ago

0.11.0

1 year 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