@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 +11 -0
- package/README.md +12 -12
- package/dist/cjs/components/FieldSelect/FieldSelectSingle.d.ts +2 -2
- package/dist/cjs/components/FieldSelect/FieldSelectSingle.js +3 -1
- package/dist/cjs/components/FieldSelect/types.d.ts +4 -2
- package/dist/esm/components/FieldSelect/FieldSelectSingle.d.ts +2 -2
- package/dist/esm/components/FieldSelect/FieldSelectSingle.js +3 -2
- package/dist/esm/components/FieldSelect/types.d.ts +4 -2
- package/package.json +2 -2
- package/src/components/FieldSelect/FieldSelectSingle.tsx +2 -0
- package/src/components/FieldSelect/types.ts +4 -2
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"> &
|
|
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"
|
|
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 &
|
|
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"> &
|
|
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"
|
|
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),
|
|
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 &
|
|
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
|
+
"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": "
|
|
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
|
-
|
|
156
|
+
FiledSelectCommonProps;
|
|
155
157
|
|
|
156
158
|
export type FieldSelectMultipleProps = FieldSelectPrivateProps & {
|
|
157
159
|
removeByBackspace?: boolean;
|