@snack-uikit/fields 0.41.7 → 0.41.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 0.41.8 (2025-04-01)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **LK-5116:** add resetSearchOnOptionSelection for field select single ([d6260eb](https://github.com/cloud-ru-tech/snack-uikit/commit/d6260eb04b8707a35d66b16558c822e8e196edf8))
12
+
13
+
14
+
15
+
16
+
6
17
  ## 0.41.7 (2025-03-25)
7
18
 
8
19
 
package/README.md CHANGED
@@ -343,17 +343,23 @@ FieldStepper в основном предназначен для работы с
343
343
  | onChange | `OnChangeHandler<any>` | - | Controlled обработчик измения состояния |
344
344
  | value | `ItemId \| ItemId[]` | - | Controlled состояние |
345
345
  | defaultValue | `ItemId \| ItemId[]` | - | Начальное состояние |
346
+ | pinTop | `OptionProps[]` | - | |
347
+ | pinBottom | `OptionProps[]` | - | |
348
+ | searchable | `boolean` | - | |
346
349
  | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
347
- | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
348
- | open | `boolean` | - | |
349
- | onOpenChange | `(open: boolean) => void` | - | |
350
350
  | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
351
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
351
352
  | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
352
- | widthStrategy | enum PopoverWidthStrategy: `"auto"`, `"gte"`, `"eq"` | - | |
353
- | pinTop | `OptionProps[]` | - | |
354
- | pinBottom | `OptionProps[]` | - | |
355
353
  | footer | `ReactNode` | - | |
354
+ | widthStrategy | enum PopoverWidthStrategy: `"auto"`, `"gte"`, `"eq"` | - | |
356
355
  | search | `SearchState` | - | |
356
+ | autocomplete | `boolean` | - | |
357
+ | addOptionByEnter | `boolean` | - | |
358
+ | open | `boolean` | - | |
359
+ | enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
360
+ | resetSearchOnOptionSelection | `boolean` | true | Поведение строки поиска при выборе опции из списка, false необходимо при асинхронной подгрузке значений с бэка, в случае если надо поиск оставить как значение при отсутствии данных |
361
+ | onOpenChange | `(open: boolean) => void` | - | |
362
+ | selectedOptionFormatter | `SelectedOptionFormatter` | - | |
357
363
  | scrollToSelectedItem | `boolean` | - | Флаг, отвещающий за прокручивание до выбранного элемента |
358
364
  | virtualized | `boolean` | - | Включить виртуализацию на компоненты списка. Рекомендуется если у вас от 1к элементов списка |
359
365
  | untouchableScrollbars | `boolean` | - | Отключает возможность взаимодействовать со скролбарами мышью. |
@@ -362,16 +368,10 @@ FieldStepper в основном предназначен для работы с
362
368
  | noDataState | `EmptyStateProps` | - | Экран при отстутствии данных |
363
369
  | noResultsState | `EmptyStateProps` | - | Экран при отстутствии результатов поиска или фильтров |
364
370
  | errorDataState | `EmptyStateProps` | - | Экран при ошибке запроса |
365
- | searchable | `boolean` | - | |
366
- | autocomplete | `boolean` | - | |
367
- | addOptionByEnter | `boolean` | - | |
368
- | enableFuzzySearch | `boolean` | - | Включить нечеткий поиск |
369
- | selectedOptionFormatter | `SelectedOptionFormatter` | - | |
370
371
  | selection | "single" \| "multiple" | - | |
371
372
  | ref | `LegacyRef<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 {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
372
373
  | key | `Key` | - | |
373
374
  | removeByBackspace | `boolean` | - | |
374
- | resetSearchOnOptionSelection | `boolean` | - | Поведение строки поиска при выборе опции из списка |
375
375
  ## FieldSlider
376
376
  ### Props
377
377
  | name | type | default value | description |
@@ -4,7 +4,7 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
4
4
  loading?: boolean;
5
5
  prefix?: import("react").ReactNode;
6
6
  postfix?: import("react").ReactNode;
7
- } & Omit<import("@snack-uikit/list").SelectionSingleState, "mode"> & Omit<{
7
+ } & Omit<import("@snack-uikit/list").SelectionSingleState, "mode"> & {
8
8
  'data-test-id'?: string;
9
9
  } & import("react").AriaAttributes & {
10
10
  options: import("./types").OptionProps[];
@@ -26,4 +26,4 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
26
26
  resetSearchOnOptionSelection?: boolean;
27
27
  onOpenChange?(open: boolean): void;
28
28
  selectedOptionFormatter?: SelectedOptionFormatter;
29
- } & Pick<import("@snack-uikit/list").DroplistProps, "scrollToSelectedItem" | "virtualized" | "untouchableScrollbars" | "dataFiltered" | "dataError" | "noDataState" | "noResultsState" | "errorDataState">, "resetSearchOnOptionSelection"> & import("react").RefAttributes<HTMLInputElement>>;
29
+ } & Pick<import("@snack-uikit/list").DroplistProps, "scrollToSelectedItem" | "virtualized" | "untouchableScrollbars" | "dataFiltered" | "dataError" | "noDataState" | "noResultsState" | "errorDataState"> & import("react").RefAttributes<HTMLInputElement>>;
@@ -65,9 +65,10 @@ exports.FieldSelectSingle = (0, react_1.forwardRef)((props, ref) => {
65
65
  onOpenChange,
66
66
  selectedOptionFormatter = defaultSelectedOptionFormatter,
67
67
  enableFuzzySearch = true,
68
+ resetSearchOnOptionSelection = true,
68
69
  onCopyButtonClick
69
70
  } = props,
70
- rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "onCopyButtonClick"]);
71
+ rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "resetSearchOnOptionSelection", "onCopyButtonClick"]);
71
72
  const localRef = (0, react_1.useRef)(null);
72
73
  const [open = false, setOpen] = (0, hooks_1.useValueControl)({
73
74
  value: openProp,
@@ -94,6 +95,7 @@ exports.FieldSelectSingle = (0, react_1.forwardRef)((props, ref) => {
94
95
  updateInputValue
95
96
  } = (0, hooks_2.useSearchInput)(Object.assign(Object.assign({}, search), {
96
97
  defaultValue: selectedOptionFormatter(selectedItem),
98
+ resetSearchOnOptionSelection,
97
99
  selectedOptionFormatter
98
100
  }));
99
101
  const prevSelectedItem = (0, react_1.useRef)(selectedItem);
@@ -68,12 +68,14 @@ type FiledSelectCommonProps = WithSupportProps<{
68
68
  open?: boolean;
69
69
  /** Включить нечеткий поиск */
70
70
  enableFuzzySearch?: boolean;
71
- /** Поведение строки поиска при выборе опции из списка */
71
+ /** Поведение строки поиска при выборе опции из списка, false необходимо при асинхронной подгрузке значений с бэка, в случае если надо поиск оставить как значение при отсутствии данных
72
+ * @default true
73
+ */
72
74
  resetSearchOnOptionSelection?: boolean;
73
75
  onOpenChange?(open: boolean): void;
74
76
  selectedOptionFormatter?: SelectedOptionFormatter;
75
77
  }> & Pick<DroplistProps, 'dataError' | 'noDataState' | 'noResultsState' | 'errorDataState' | 'dataFiltered' | 'untouchableScrollbars' | 'scrollToSelectedItem' | 'virtualized'>;
76
- export type FieldSelectSingleProps = FieldSelectPrivateProps & Omit<SelectionSingleState, 'mode'> & WrapperProps & Omit<FiledSelectCommonProps, 'resetSearchOnOptionSelection'>;
78
+ export type FieldSelectSingleProps = FieldSelectPrivateProps & Omit<SelectionSingleState, 'mode'> & WrapperProps & FiledSelectCommonProps;
77
79
  export type FieldSelectMultipleProps = FieldSelectPrivateProps & {
78
80
  removeByBackspace?: boolean;
79
81
  } & Omit<SelectionMultipleState, 'mode'> & Omit<FiledSelectCommonProps, 'showCopyButton' | 'onCopyButtonClick'>;
@@ -4,7 +4,7 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
4
4
  loading?: boolean;
5
5
  prefix?: import("react").ReactNode;
6
6
  postfix?: import("react").ReactNode;
7
- } & Omit<import("@snack-uikit/list").SelectionSingleState, "mode"> & Omit<{
7
+ } & Omit<import("@snack-uikit/list").SelectionSingleState, "mode"> & {
8
8
  'data-test-id'?: string;
9
9
  } & import("react").AriaAttributes & {
10
10
  options: import("./types").OptionProps[];
@@ -26,4 +26,4 @@ export declare const FieldSelectSingle: import("react").ForwardRefExoticComponen
26
26
  resetSearchOnOptionSelection?: boolean;
27
27
  onOpenChange?(open: boolean): void;
28
28
  selectedOptionFormatter?: SelectedOptionFormatter;
29
- } & Pick<import("@snack-uikit/list").DroplistProps, "scrollToSelectedItem" | "virtualized" | "untouchableScrollbars" | "dataFiltered" | "dataError" | "noDataState" | "noResultsState" | "errorDataState">, "resetSearchOnOptionSelection"> & import("react").RefAttributes<HTMLInputElement>>;
29
+ } & Pick<import("@snack-uikit/list").DroplistProps, "scrollToSelectedItem" | "virtualized" | "untouchableScrollbars" | "dataFiltered" | "dataError" | "noDataState" | "noResultsState" | "errorDataState"> & import("react").RefAttributes<HTMLInputElement>>;
@@ -29,7 +29,7 @@ const defaultSelectedOptionFormatter = item =>
29
29
  // @ts-expect-error
30
30
  (item === null || item === void 0 ? void 0 : item.content.option) || '';
31
31
  export const FieldSelectSingle = forwardRef((props, ref) => {
32
- const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showCopyButton = true, showClearButton = true, onKeyDown: onInputKeyDownProp, required = false, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter, enableFuzzySearch = true, onCopyButtonClick } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "onCopyButtonClick"]);
32
+ const { id, name, placeholder, size = 's', options, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable = true, showCopyButton = true, showClearButton = true, onKeyDown: onInputKeyDownProp, required = false, validationState = 'default', search, autocomplete = false, prefixIcon, prefix, postfix, addOptionByEnter = false, untouchableScrollbars = false, open: openProp, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter, enableFuzzySearch = true, resetSearchOnOptionSelection = true, onCopyButtonClick } = props, rest = __rest(props, ["id", "name", "placeholder", "size", "options", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showCopyButton", "showClearButton", "onKeyDown", "required", "validationState", "search", "autocomplete", "prefixIcon", "prefix", "postfix", "addOptionByEnter", "untouchableScrollbars", "open", "onOpenChange", "selectedOptionFormatter", "enableFuzzySearch", "resetSearchOnOptionSelection", "onCopyButtonClick"]);
33
33
  const localRef = useRef(null);
34
34
  const [open = false, setOpen] = useValueControl({ value: openProp, onChange: onOpenChange });
35
35
  const [value, setValue] = useValueControl({
@@ -38,7 +38,8 @@ export const FieldSelectSingle = forwardRef((props, ref) => {
38
38
  onChange: onChangeProp,
39
39
  });
40
40
  const [{ selectedItem, items = [] }, setItems] = useState(() => updateItems({ options, value, currentItems: [], selectedItem: undefined }));
41
- const { inputValue, setInputValue, prevInputValue, updateInputValue } = useSearchInput(Object.assign(Object.assign({}, search), { defaultValue: selectedOptionFormatter(selectedItem), selectedOptionFormatter }));
41
+ const { inputValue, setInputValue, prevInputValue, updateInputValue } = useSearchInput(Object.assign(Object.assign({}, search), { defaultValue: selectedOptionFormatter(selectedItem), resetSearchOnOptionSelection,
42
+ selectedOptionFormatter }));
42
43
  const prevSelectedItem = useRef(selectedItem);
43
44
  const prefixSettings = usePrefix({ prefix, disabled });
44
45
  const postfixSettings = usePostfix({ postfix, disabled });
@@ -68,12 +68,14 @@ type FiledSelectCommonProps = WithSupportProps<{
68
68
  open?: boolean;
69
69
  /** Включить нечеткий поиск */
70
70
  enableFuzzySearch?: boolean;
71
- /** Поведение строки поиска при выборе опции из списка */
71
+ /** Поведение строки поиска при выборе опции из списка, false необходимо при асинхронной подгрузке значений с бэка, в случае если надо поиск оставить как значение при отсутствии данных
72
+ * @default true
73
+ */
72
74
  resetSearchOnOptionSelection?: boolean;
73
75
  onOpenChange?(open: boolean): void;
74
76
  selectedOptionFormatter?: SelectedOptionFormatter;
75
77
  }> & Pick<DroplistProps, 'dataError' | 'noDataState' | 'noResultsState' | 'errorDataState' | 'dataFiltered' | 'untouchableScrollbars' | 'scrollToSelectedItem' | 'virtualized'>;
76
- export type FieldSelectSingleProps = FieldSelectPrivateProps & Omit<SelectionSingleState, 'mode'> & WrapperProps & Omit<FiledSelectCommonProps, 'resetSearchOnOptionSelection'>;
78
+ export type FieldSelectSingleProps = FieldSelectPrivateProps & Omit<SelectionSingleState, 'mode'> & WrapperProps & FiledSelectCommonProps;
77
79
  export type FieldSelectMultipleProps = FieldSelectPrivateProps & {
78
80
  removeByBackspace?: boolean;
79
81
  } & Omit<SelectionMultipleState, 'mode'> & Omit<FiledSelectCommonProps, 'showCopyButton' | 'onCopyButtonClick'>;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Fields",
7
- "version": "0.41.7",
7
+ "version": "0.41.8",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -65,5 +65,5 @@
65
65
  "peerDependencies": {
66
66
  "@snack-uikit/locale": "*"
67
67
  },
68
- "gitHead": "3f11b6caedc3e873fcd20d1715280d66442538fe"
68
+ "gitHead": "babd336f1c88450f232fffd697b97765645a0815"
69
69
  }
@@ -59,6 +59,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
59
59
  onOpenChange,
60
60
  selectedOptionFormatter = defaultSelectedOptionFormatter,
61
61
  enableFuzzySearch = true,
62
+ resetSearchOnOptionSelection = true,
62
63
  onCopyButtonClick,
63
64
  ...rest
64
65
  } = props;
@@ -78,6 +79,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
78
79
  const { inputValue, setInputValue, prevInputValue, updateInputValue } = useSearchInput({
79
80
  ...search,
80
81
  defaultValue: selectedOptionFormatter(selectedItem),
82
+ resetSearchOnOptionSelection,
81
83
  selectedOptionFormatter,
82
84
  });
83
85
 
@@ -129,7 +129,9 @@ type FiledSelectCommonProps = WithSupportProps<{
129
129
  /** Включить нечеткий поиск */
130
130
  enableFuzzySearch?: boolean;
131
131
 
132
- /** Поведение строки поиска при выборе опции из списка */
132
+ /** Поведение строки поиска при выборе опции из списка, false необходимо при асинхронной подгрузке значений с бэка, в случае если надо поиск оставить как значение при отсутствии данных
133
+ * @default true
134
+ */
133
135
  resetSearchOnOptionSelection?: boolean;
134
136
 
135
137
  onOpenChange?(open: boolean): void;
@@ -151,7 +153,7 @@ type FiledSelectCommonProps = WithSupportProps<{
151
153
  export type FieldSelectSingleProps = FieldSelectPrivateProps &
152
154
  Omit<SelectionSingleState, 'mode'> &
153
155
  WrapperProps &
154
- Omit<FiledSelectCommonProps, 'resetSearchOnOptionSelection'>;
156
+ FiledSelectCommonProps;
155
157
 
156
158
  export type FieldSelectMultipleProps = FieldSelectPrivateProps & {
157
159
  removeByBackspace?: boolean;