@ozen-ui/kit 0.32.2 → 0.34.0

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.
Files changed (99) hide show
  1. package/Autocomplete/package.json +5 -0
  2. package/__inner__/cjs/components/Autocomplete/Autocomplete.css +46 -0
  3. package/__inner__/cjs/components/Autocomplete/Autocomplete.d.ts +4 -0
  4. package/__inner__/cjs/components/Autocomplete/Autocomplete.js +202 -0
  5. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.d.ts +6 -0
  6. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.js +23 -0
  7. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/index.d.ts +1 -0
  8. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/index.js +4 -0
  9. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.d.ts +6 -0
  10. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.js +17 -0
  11. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/index.d.ts +1 -0
  12. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/index.js +4 -0
  13. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +10 -0
  14. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.js +26 -0
  15. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/index.d.ts +1 -0
  16. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/index.js +4 -0
  17. package/__inner__/cjs/components/Autocomplete/components/index.d.ts +3 -0
  18. package/__inner__/cjs/components/Autocomplete/components/index.js +6 -0
  19. package/__inner__/cjs/components/Autocomplete/constants.d.ts +10 -0
  20. package/__inner__/cjs/components/Autocomplete/constants.js +13 -0
  21. package/__inner__/cjs/components/Autocomplete/helper.d.ts +166 -0
  22. package/__inner__/cjs/components/Autocomplete/helper.js +14 -0
  23. package/__inner__/cjs/components/Autocomplete/index.d.ts +2 -0
  24. package/__inner__/cjs/components/Autocomplete/index.js +5 -0
  25. package/__inner__/cjs/components/Autocomplete/types.d.ts +105 -0
  26. package/__inner__/cjs/components/Autocomplete/types.js +2 -0
  27. package/__inner__/cjs/components/DataList/DataList.js +1 -1
  28. package/__inner__/cjs/components/DataList/components/DataListOption/DataListOption.css +10 -2
  29. package/__inner__/cjs/components/DataList/helpers/useDataListNavigation.js +4 -12
  30. package/__inner__/cjs/components/List/List.css +5 -0
  31. package/__inner__/cjs/components/List/List.js +2 -2
  32. package/__inner__/cjs/components/List/constants.d.ts +1 -0
  33. package/__inner__/cjs/components/List/constants.js +2 -1
  34. package/__inner__/cjs/components/List/types.d.ts +2 -0
  35. package/__inner__/cjs/components/Popover/Popover.js +8 -7
  36. package/__inner__/cjs/components/Popover/constants.d.ts +2 -0
  37. package/__inner__/cjs/components/Popover/constants.js +3 -1
  38. package/__inner__/cjs/components/Popover/types.d.ts +6 -0
  39. package/__inner__/cjs/components/Popover/types.js +2 -1
  40. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  41. package/__inner__/cjs/components/Tooltip/Tooltip.js +1 -1
  42. package/__inner__/cjs/hooks/useEventListener/useEventListener.js +2 -4
  43. package/__inner__/cjs/hooks/useHover/useHover.d.ts +2 -2
  44. package/__inner__/cjs/hooks/useHover/useHover.js +2 -2
  45. package/__inner__/cjs/hooks/useMutableRef/index.d.ts +1 -0
  46. package/__inner__/cjs/hooks/useMutableRef/index.js +4 -0
  47. package/__inner__/cjs/hooks/useMutableRef/useMutableRef.d.ts +2 -0
  48. package/__inner__/cjs/hooks/useMutableRef/useMutableRef.js +10 -0
  49. package/__inner__/cjs/locale/locale.js +21 -0
  50. package/__inner__/esm/components/Autocomplete/Autocomplete.css +46 -0
  51. package/__inner__/esm/components/Autocomplete/Autocomplete.d.ts +4 -0
  52. package/__inner__/esm/components/Autocomplete/Autocomplete.js +199 -0
  53. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.d.ts +6 -0
  54. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.js +18 -0
  55. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/index.d.ts +1 -0
  56. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/index.js +1 -0
  57. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.d.ts +6 -0
  58. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.js +12 -0
  59. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/index.d.ts +1 -0
  60. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/index.js +1 -0
  61. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +10 -0
  62. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.js +22 -0
  63. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/index.d.ts +1 -0
  64. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/index.js +1 -0
  65. package/__inner__/esm/components/Autocomplete/components/index.d.ts +3 -0
  66. package/__inner__/esm/components/Autocomplete/components/index.js +3 -0
  67. package/__inner__/esm/components/Autocomplete/constants.d.ts +10 -0
  68. package/__inner__/esm/components/Autocomplete/constants.js +10 -0
  69. package/__inner__/esm/components/Autocomplete/helper.d.ts +166 -0
  70. package/__inner__/esm/components/Autocomplete/helper.js +7 -0
  71. package/__inner__/esm/components/Autocomplete/index.d.ts +2 -0
  72. package/__inner__/esm/components/Autocomplete/index.js +2 -0
  73. package/__inner__/esm/components/Autocomplete/types.d.ts +105 -0
  74. package/__inner__/esm/components/Autocomplete/types.js +1 -0
  75. package/__inner__/esm/components/DataList/DataList.js +1 -1
  76. package/__inner__/esm/components/DataList/components/DataListOption/DataListOption.css +10 -2
  77. package/__inner__/esm/components/DataList/helpers/useDataListNavigation.js +5 -13
  78. package/__inner__/esm/components/List/List.css +5 -0
  79. package/__inner__/esm/components/List/List.js +3 -3
  80. package/__inner__/esm/components/List/constants.d.ts +1 -0
  81. package/__inner__/esm/components/List/constants.js +1 -0
  82. package/__inner__/esm/components/List/types.d.ts +2 -0
  83. package/__inner__/esm/components/Popover/Popover.js +9 -8
  84. package/__inner__/esm/components/Popover/constants.d.ts +2 -0
  85. package/__inner__/esm/components/Popover/constants.js +2 -0
  86. package/__inner__/esm/components/Popover/types.d.ts +6 -0
  87. package/__inner__/esm/components/Popover/types.js +1 -0
  88. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  89. package/__inner__/esm/components/Tooltip/Tooltip.js +1 -1
  90. package/__inner__/esm/hooks/useEventListener/useEventListener.js +3 -5
  91. package/__inner__/esm/hooks/useHover/useHover.d.ts +2 -2
  92. package/__inner__/esm/hooks/useHover/useHover.js +2 -2
  93. package/__inner__/esm/hooks/useMutableRef/index.d.ts +1 -0
  94. package/__inner__/esm/hooks/useMutableRef/index.js +1 -0
  95. package/__inner__/esm/hooks/useMutableRef/useMutableRef.d.ts +2 -0
  96. package/__inner__/esm/hooks/useMutableRef/useMutableRef.js +6 -0
  97. package/__inner__/esm/locale/locale.js +21 -0
  98. package/package.json +1 -1
  99. package/useMutableRef/package.json +5 -0
@@ -0,0 +1,199 @@
1
+ import { __assign, __read, __rest, __spreadArray } from "tslib";
2
+ import './Autocomplete.css';
3
+ import React, { useEffect, useRef, forwardRef, useState } from 'react';
4
+ import { useControlled } from '../../hooks/useControlled';
5
+ import { useMutableRef } from '../../hooks/useMutableRef';
6
+ import { useThemeProps } from '../../hooks/useThemeProps';
7
+ import { cn } from '../../utils/classname';
8
+ import { isKeys } from '../../utils/isKeys';
9
+ import { DataList, DataListOption } from '../DataList';
10
+ import { Input } from '../Input';
11
+ import { AutocompleteLoading, AutocompleteNoOptions, AutocompleteRenderRight, } from './components';
12
+ import { AUTOCOMPLETE_DEFAULT_SIZE, AUTOCOMPLETE_DEFAULT_DISABLED, AUTOCOMPLETE_DEFAULT_REQUIRED, AUTOCOMPLETE_DEFAULT_FULLWIDTH, AUTOCOMPLETE_DEFAULT_AUTOFOCUS, AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE, AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON, AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON, AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST, AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT, } from './constants';
13
+ import { withDefaultGetters } from './helper';
14
+ export var cnAutocomplete = cn('Autocomplete');
15
+ function AutocompleteRender(inProps, ref) {
16
+ var props = useThemeProps({
17
+ props: inProps,
18
+ name: 'Autocomplete',
19
+ });
20
+ var _a = withDefaultGetters(props), _b = _a.disabled, disabled = _b === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLED : _b, _c = _a.required, required = _c === void 0 ? AUTOCOMPLETE_DEFAULT_REQUIRED : _c, _d = _a.autoFocus, autoFocus = _d === void 0 ? AUTOCOMPLETE_DEFAULT_AUTOFOCUS : _d, _e = _a.fullWidth, fullWidth = _e === void 0 ? AUTOCOMPLETE_DEFAULT_FULLWIDTH : _e, _f = _a.size, size = _f === void 0 ? AUTOCOMPLETE_DEFAULT_SIZE : _f, _g = _a.allowCustomValue, allowCustomValue = _g === void 0 ? AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE : _g, _h = _a.disableShowChevron, disableShowChevron = _h === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON : _h, _j = _a.disableClearButton, disableClearButton = _j === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON : _j, _k = _a.disableShowEmptyOptionsList, disableShowEmptyOptionsList = _k === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST : _k, _l = _a.disableCloseOnSelect, disableCloseOnSelect = _l === void 0 ? AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT : _l, _m = _a.renderInput, renderInput = _m === void 0 ? function (props) { return React.createElement(Input, __assign({}, props, { ref: ref })); } : _m, searchFunctionProp = _a.searchFunction, renderOptionProp = _a.renderOption, inputValueProp = _a.inputValue, className = _a.className, valueProp = _a.value, options = _a.options, defaultValue = _a.defaultValue, error = _a.error, onChange = _a.onChange, onInputChange = _a.onInputChange, label = _a.label, placeholder = _a.placeholder, renderLeft = _a.renderLeft, hint = _a.hint, getOptionKey = _a.getOptionKey, getOptionLabel = _a.getOptionLabel, getOptionDisabled = _a.getOptionDisabled, dataListProps = _a.dataListProps, onCloseProp = _a.onClose, onOpenProp = _a.onOpen, openProp = _a.open, defaultOpen = _a.defaultOpen, loading = _a.loading, inputProps = _a.inputProps, onKeyDown = _a.onKeyDown, noOptionsText = _a.noOptionsText, clearText = _a.clearText, openText = _a.openText, loadingText = _a.loadingText, closeText = _a.closeText, other = __rest(_a, ["disabled", "required", "autoFocus", "fullWidth", "size", "allowCustomValue", "disableShowChevron", "disableClearButton", "disableShowEmptyOptionsList", "disableCloseOnSelect", "renderInput", "searchFunction", "renderOption", "inputValue", "className", "value", "options", "defaultValue", "error", "onChange", "onInputChange", "label", "placeholder", "renderLeft", "hint", "getOptionKey", "getOptionLabel", "getOptionDisabled", "dataListProps", "onClose", "onOpen", "open", "defaultOpen", "loading", "inputProps", "onKeyDown", "noOptionsText", "clearText", "openText", "loadingText", "closeText"]);
21
+ var anchorRef = useRef(null);
22
+ var _o = __read(useControlled({
23
+ value: inputValueProp,
24
+ defaultValue: '',
25
+ name: 'Autocomplete',
26
+ state: 'inputValue',
27
+ }), 2), inputValue = _o[0], setInputValue = _o[1];
28
+ var _p = __read(useControlled({
29
+ value: valueProp,
30
+ defaultValue: defaultValue,
31
+ name: 'Autocomplete',
32
+ state: 'value',
33
+ }), 2), valueState = _p[0], setValueState = _p[1];
34
+ var _q = __read(useControlled({
35
+ value: openProp,
36
+ defaultValue: defaultOpen,
37
+ name: 'Autocomplete',
38
+ state: 'open',
39
+ }), 2), open = _q[0], setOpen = _q[1];
40
+ var searchFunctionDefault = function (options, searchValue) {
41
+ return options === null || options === void 0 ? void 0 : options.filter(function (option) {
42
+ return getOptionLabel(option).toLowerCase().includes(searchValue.toLowerCase());
43
+ });
44
+ };
45
+ var savedOnInputChange = useMutableRef(onInputChange);
46
+ var savedGetOptionLabel = useMutableRef(getOptionLabel);
47
+ var _r = __read(useState(__spreadArray([], __read(options), false)), 2), filteredOptions = _r[0], setFilteredOptions = _r[1];
48
+ var searchFunction = searchFunctionProp || searchFunctionDefault;
49
+ var dataListValue = valueState ? getOptionLabel(valueState) : '';
50
+ var hasOptions = !!(filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.length);
51
+ var showNoOptions = !hasOptions && !loading;
52
+ var showLoading = !hasOptions && !!loading;
53
+ var _s = __read(useState(undefined), 2), search = _s[0], setSearch = _s[1];
54
+ /** Эффект – фильтрация списка */
55
+ useEffect(function () {
56
+ if (!open) {
57
+ return;
58
+ }
59
+ setFilteredOptions(search ? search(options) : __spreadArray([], __read(options), false));
60
+ }, [search, options, open, searchFunctionProp]);
61
+ /** Эффект – синхронизируем значение текстового поля со значением в списке */
62
+ useEffect(function () {
63
+ var _a, _b;
64
+ var value = valueState ? (_a = savedGetOptionLabel.current) === null || _a === void 0 ? void 0 : _a.call(savedGetOptionLabel, valueState) : '';
65
+ if (allowCustomValue) {
66
+ value = inputValue || '';
67
+ }
68
+ if (value !== inputValue) {
69
+ setInputValue(value);
70
+ (_b = savedOnInputChange.current) === null || _b === void 0 ? void 0 : _b.call(savedOnInputChange, null, value);
71
+ }
72
+ }, [valueState]);
73
+ /** Эффект – автофокусировка в текстовом поле */
74
+ useEffect(function () {
75
+ var _a;
76
+ if (autoFocus) {
77
+ (_a = anchorRef.current) === null || _a === void 0 ? void 0 : _a.focus();
78
+ }
79
+ }, [autoFocus]);
80
+ /** Актуализация значения текстового поля после его покидания */
81
+ var onBlur = function (e) {
82
+ var _a;
83
+ if (allowCustomValue) {
84
+ return;
85
+ }
86
+ var value = valueState ? getOptionLabel(valueState) : '';
87
+ if (inputValue !== value) {
88
+ setInputValue(value);
89
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, value);
90
+ }
91
+ (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onBlur) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
92
+ };
93
+ /** Ждем выполнения анимации на закрытие и делаем сброс */
94
+ var onExited = function () {
95
+ var _a;
96
+ setSearch(undefined);
97
+ (_a = dataListProps === null || dataListProps === void 0 ? void 0 : dataListProps.onExited) === null || _a === void 0 ? void 0 : _a.call(dataListProps);
98
+ };
99
+ /** Закрытие */
100
+ var handleClose = function () {
101
+ setOpen(false);
102
+ onCloseProp === null || onCloseProp === void 0 ? void 0 : onCloseProp();
103
+ };
104
+ /** Открытие */
105
+ var handleOpen = function () {
106
+ setOpen(true);
107
+ onOpenProp === null || onOpenProp === void 0 ? void 0 : onOpenProp();
108
+ };
109
+ /** Переключатель открытия и закрытия */
110
+ var handleToggle = function () {
111
+ if (disabled)
112
+ return;
113
+ if (open) {
114
+ handleClose();
115
+ }
116
+ else {
117
+ handleOpen();
118
+ }
119
+ };
120
+ /** Очистка поля */
121
+ var onClear = function (e) {
122
+ setValueState(null);
123
+ setInputValue('');
124
+ onChange === null || onChange === void 0 ? void 0 : onChange(e, null);
125
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, '');
126
+ setSearch(undefined);
127
+ };
128
+ /** Открытие списка по клику на текстовом поле */
129
+ var handleClickOnInput = function (e) {
130
+ var _a;
131
+ handleToggle();
132
+ (_a = inputProps === null || inputProps === void 0 ? void 0 : inputProps.onClick) === null || _a === void 0 ? void 0 : _a.call(inputProps, e);
133
+ };
134
+ /** Управление элементом контроля через клавиатуру */
135
+ var handleKeyDown = function (event) {
136
+ if (isKeys(event, ['ArrowDown', 'ArrowUp']) && !open) {
137
+ event.preventDefault();
138
+ handleToggle();
139
+ }
140
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
141
+ };
142
+ /** Событие ввода значения в текстовом поле */
143
+ var handleChangeInput = function (e) {
144
+ var value = e.target.value;
145
+ // Открываем список при вводе первого символа (при условии, что список еще не открыт)
146
+ if (value.length && !open) {
147
+ handleOpen();
148
+ }
149
+ // Делаем сброс при пустом значении в текстовом поле
150
+ if (!value) {
151
+ setValueState(null);
152
+ onChange === null || onChange === void 0 ? void 0 : onChange(e, null);
153
+ }
154
+ // Назначаем значение
155
+ setInputValue(value);
156
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(e, value);
157
+ // Задаем функцию фильтрации
158
+ setSearch(function () { return function (options) { return searchFunction(__spreadArray([], __read(options), false), value); }; });
159
+ };
160
+ /** Событие выбора значения из раскрывающегося списка */
161
+ var handleChangeDataList = function (event, _a) {
162
+ var value = _a.value;
163
+ var selectedOption = filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.find(function (option) { return (getOptionLabel === null || getOptionLabel === void 0 ? void 0 : getOptionLabel(option)) === value; });
164
+ if (selectedOption) {
165
+ var newInputValue = getOptionLabel(selectedOption);
166
+ setValueState(selectedOption);
167
+ onChange === null || onChange === void 0 ? void 0 : onChange(event, selectedOption);
168
+ setInputValue(newInputValue);
169
+ onInputChange === null || onInputChange === void 0 ? void 0 : onInputChange(null, newInputValue);
170
+ }
171
+ // Закрываем список после выбора
172
+ if (!disableCloseOnSelect) {
173
+ handleClose();
174
+ }
175
+ };
176
+ /** Отображение текстового поля */
177
+ var input = renderInput(__assign(__assign({ size: size, hint: hint, disabled: disabled, label: label, required: required, error: error, fullWidth: fullWidth, placeholder: placeholder, renderLeft: renderLeft }, other), { renderRight: (React.createElement(AutocompleteRenderRight, { open: open, size: size, disabled: disabled, clearText: clearText, closeText: closeText, openText: openText, hasValue: !!inputValue, onClear: onClear, onOpen: handleToggle, disableShowChevron: disableShowChevron, disableClearButton: disableClearButton })), onChange: handleChangeInput, onKeyDown: handleKeyDown, value: inputValue || '', inputProps: __assign(__assign({}, inputProps), { onBlur: onBlur, onClick: handleClickOnInput }), bodyProps: { ref: anchorRef, 'aria-expanded': open }, className: cnAutocomplete({ size: size, hasChevron: !disableShowChevron }, [
178
+ className,
179
+ ]), ref: ref }));
180
+ /** Отображение опций */
181
+ var renderOptions = filteredOptions === null || filteredOptions === void 0 ? void 0 : filteredOptions.map(function (option) {
182
+ var selected = valueState
183
+ ? getOptionLabel(valueState) === getOptionLabel(option)
184
+ : false;
185
+ var renderOptionDefault = function (_a) {
186
+ var option = _a.option, selected = _a.selected;
187
+ return (React.createElement(DataListOption, { key: getOptionKey === null || getOptionKey === void 0 ? void 0 : getOptionKey(option), label: getOptionLabel === null || getOptionLabel === void 0 ? void 0 : getOptionLabel(option), value: getOptionLabel === null || getOptionLabel === void 0 ? void 0 : getOptionLabel(option), disabled: getOptionDisabled === null || getOptionDisabled === void 0 ? void 0 : getOptionDisabled(option), selected: selected }));
188
+ };
189
+ var renderOption = renderOptionProp || renderOptionDefault;
190
+ return renderOption({ option: option, selected: selected });
191
+ });
192
+ return (React.createElement(React.Fragment, null,
193
+ input,
194
+ React.createElement(DataList, __assign({ size: size, equalAnchorWidth: true, offset: [0, 4], placement: "bottom-start" }, dataListProps, { open: open, onExited: onExited, onClose: handleClose, anchorRef: anchorRef, selected: dataListValue, onSelect: handleChangeDataList, listProps: __assign({ role: 'listbox' }, dataListProps === null || dataListProps === void 0 ? void 0 : dataListProps.listProps) }),
195
+ renderOptions,
196
+ !disableShowEmptyOptionsList && (React.createElement(AutocompleteNoOptions, { showNoOptions: showNoOptions, noOptionsText: noOptionsText })),
197
+ React.createElement(AutocompleteLoading, { showLoading: showLoading, loadingText: loadingText, size: size }))));
198
+ }
199
+ export var Autocomplete = forwardRef(AutocompleteRender);
@@ -0,0 +1,6 @@
1
+ import type { FC } from 'react';
2
+ import type { AutocompleteProps } from '../../index';
3
+ export type AutocompleteLoadingProps = Pick<AutocompleteProps, 'loadingText' | 'size'> & {
4
+ showLoading: boolean;
5
+ };
6
+ export declare const AutocompleteLoading: FC<AutocompleteLoadingProps>;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { getIconSizeToFormElement } from '../../../../utils/getIconSizeToFormElement';
3
+ import { isNumber } from '../../../../utils/isNumber';
4
+ import { isString } from '../../../../utils/isString';
5
+ import { ListItem, ListItemIcon, ListItemText } from '../../../List';
6
+ import { Loader } from '../../../Loader';
7
+ import { AUTOCOMPLETE_DEFAULT_SIZE } from '../../constants';
8
+ export var AutocompleteLoading = function (_a) {
9
+ var _b = _a.size, sizeProp = _b === void 0 ? AUTOCOMPLETE_DEFAULT_SIZE : _b, showLoading = _a.showLoading, loadingText = _a.loadingText;
10
+ if (!showLoading) {
11
+ return null;
12
+ }
13
+ var size = getIconSizeToFormElement(sizeProp);
14
+ return isString(loadingText) || isNumber(loadingText) ? (React.createElement(ListItem, null,
15
+ React.createElement(ListItemIcon, null,
16
+ React.createElement(Loader, { size: size })),
17
+ React.createElement(ListItemText, { primary: loadingText }))) : (loadingText);
18
+ };
@@ -0,0 +1 @@
1
+ export * from './AutocompleteLoading';
@@ -0,0 +1 @@
1
+ export * from './AutocompleteLoading';
@@ -0,0 +1,6 @@
1
+ import type { FC } from 'react';
2
+ import type { AutocompleteProps } from '../../index';
3
+ export type AutocompleteNoOptionsProps = Pick<AutocompleteProps, 'noOptionsText'> & {
4
+ showNoOptions: boolean;
5
+ };
6
+ export declare const AutocompleteNoOptions: FC<AutocompleteNoOptionsProps>;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { isNumber } from '../../../../utils/isNumber';
3
+ import { isString } from '../../../../utils/isString';
4
+ import { ListItem, ListItemText } from '../../../List';
5
+ export var AutocompleteNoOptions = function (_a) {
6
+ var showNoOptions = _a.showNoOptions, noOptionsText = _a.noOptionsText;
7
+ if (!showNoOptions) {
8
+ return null;
9
+ }
10
+ return isString(noOptionsText) || isNumber(noOptionsText) ? (React.createElement(ListItem, null,
11
+ React.createElement(ListItemText, { primary: noOptionsText }))) : (noOptionsText);
12
+ };
@@ -0,0 +1 @@
1
+ export * from './AutocompleteNoOptions';
@@ -0,0 +1 @@
1
+ export * from './AutocompleteNoOptions';
@@ -0,0 +1,10 @@
1
+ import type { FC } from 'react';
2
+ import React from 'react';
3
+ import type { AutocompleteProps } from '../../index';
4
+ type AutocompleteRenderRightProps = {
5
+ onOpen: () => void;
6
+ onClear: (e: React.MouseEvent<HTMLElement>) => void;
7
+ hasValue: boolean;
8
+ } & Pick<AutocompleteProps, 'clearText' | 'closeText' | 'openText' | 'size' | 'disabled' | 'open' | 'disableClearButton' | 'disableShowChevron'>;
9
+ export declare const AutocompleteRenderRight: FC<AutocompleteRenderRightProps>;
10
+ export {};
@@ -0,0 +1,22 @@
1
+ import { __read } from "tslib";
2
+ import React from 'react';
3
+ import { ChevronDownIcon, ChevronUpIcon, CloseIcon } from '@ozen-ui/icons';
4
+ import { useFieldControl } from '../../../FieldControl';
5
+ import { IconButton } from '../../../IconButton';
6
+ import { cnAutocomplete } from '../../index';
7
+ export var AutocompleteRenderRight = function (_a) {
8
+ var disableClearButton = _a.disableClearButton, disableShowChevron = _a.disableShowChevron, clearText = _a.clearText, closeText = _a.closeText, openText = _a.openText, disabled = _a.disabled, hasValue = _a.hasValue, onClear = _a.onClear, onOpen = _a.onOpen, open = _a.open, size = _a.size;
9
+ var _b = __read(useFieldControl(), 1), _c = _b[0], focused = _c.focused, hovered = _c.hovered;
10
+ var isVisibleClearButton = !!(hovered || open || focused) && hasValue;
11
+ return (React.createElement("div", { className: cnAutocomplete('RenderRight') },
12
+ !disableClearButton && (React.createElement(IconButton, { type: "button", variant: "function", tabIndex: -1, onClick: function (e) {
13
+ e.preventDefault();
14
+ onClear === null || onClear === void 0 ? void 0 : onClear(e);
15
+ }, className: cnAutocomplete('ClearButton', {
16
+ visibility: isVisibleClearButton,
17
+ }), title: clearText, "aria-label": clearText, size: size, icon: CloseIcon, compressed: true })),
18
+ !disableShowChevron && (React.createElement(IconButton, { type: "button", variant: "ghost", tabIndex: -1, onClick: function (e) {
19
+ e.preventDefault();
20
+ onOpen();
21
+ }, disabled: disabled, title: open ? closeText : openText, "aria-label": open ? closeText : openText, size: size, icon: open ? ChevronUpIcon : ChevronDownIcon, compressed: true }))));
22
+ };
@@ -0,0 +1 @@
1
+ export * from './AutocompleteRenderRight';
@@ -0,0 +1 @@
1
+ export * from './AutocompleteRenderRight';
@@ -0,0 +1,3 @@
1
+ export * from './AutocompleteRenderRight';
2
+ export * from './AutocompleteNoOptions';
3
+ export * from './AutocompleteLoading';
@@ -0,0 +1,3 @@
1
+ export * from './AutocompleteRenderRight';
2
+ export * from './AutocompleteNoOptions';
3
+ export * from './AutocompleteLoading';
@@ -0,0 +1,10 @@
1
+ export declare const AUTOCOMPLETE_DEFAULT_DISABLED = false;
2
+ export declare const AUTOCOMPLETE_DEFAULT_REQUIRED = false;
3
+ export declare const AUTOCOMPLETE_DEFAULT_AUTOFOCUS = false;
4
+ export declare const AUTOCOMPLETE_DEFAULT_FULLWIDTH = false;
5
+ export declare const AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE = false;
6
+ export declare const AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON = false;
7
+ export declare const AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST = false;
8
+ export declare const AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT = false;
9
+ export declare const AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON = false;
10
+ export declare const AUTOCOMPLETE_DEFAULT_SIZE = "m";
@@ -0,0 +1,10 @@
1
+ export var AUTOCOMPLETE_DEFAULT_DISABLED = false;
2
+ export var AUTOCOMPLETE_DEFAULT_REQUIRED = false;
3
+ export var AUTOCOMPLETE_DEFAULT_AUTOFOCUS = false;
4
+ export var AUTOCOMPLETE_DEFAULT_FULLWIDTH = false;
5
+ export var AUTOCOMPLETE_DEFAULT_ALLOW_CUSTOM_VALUE = false;
6
+ export var AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_CHEVRON = false;
7
+ export var AUTOCOMPLETE_DEFAULT_DISABLE_SHOW_EMPTY_OPTIONS_LIST = false;
8
+ export var AUTOCOMPLETE_DEFAULT_DISABLE_CLOSE_ON_SELECT = false;
9
+ export var AUTOCOMPLETE_DEFAULT_DISABLE_CLEAR_BUTTON = false;
10
+ export var AUTOCOMPLETE_DEFAULT_SIZE = 'm';
@@ -0,0 +1,166 @@
1
+ /// <reference types="react" />
2
+ import type { AutocompleteDefaultOption, AutocompletePropGetOptionDisabled, AutocompletePropGetOptionKey, AutocompletePropGetOptionLabel, AutocompleteProps } from './types';
3
+ export declare const defaultGetOptionKey: AutocompletePropGetOptionKey<AutocompleteDefaultOption>;
4
+ export declare const defaultGetOptionLabel: AutocompletePropGetOptionLabel<AutocompleteDefaultOption>;
5
+ export declare const defaultGetOptionDisabled: AutocompletePropGetOptionDisabled<AutocompleteDefaultOption>;
6
+ export declare function withDefaultGetters<OPTION>(props: AutocompleteProps<OPTION>): ({
7
+ options: OPTION[];
8
+ size?: "s" | "m" | "l" | "2xs" | "xs" | undefined;
9
+ value?: import("./types").AutocompletePropValue<OPTION>;
10
+ defaultValue?: import("./types").AutocompletePropValue<OPTION>;
11
+ onChange?: ((e: KeyboardEvent | import("react").SyntheticEvent<Element, Event>, value: OPTION | null) => void) | undefined;
12
+ inputValue?: string | undefined;
13
+ onInputChange?: ((e: import("react").ChangeEvent<HTMLInputElement> | null, value: string) => void) | undefined;
14
+ renderInput?: import("./types").AutocompleteRenderInput | undefined;
15
+ renderOption?: import("./types").AutocompletePropRenderOption<OPTION> | undefined;
16
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION> | undefined;
17
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION> | undefined;
18
+ getOptionDisabled?: AutocompletePropGetOptionDisabled<OPTION> | undefined;
19
+ disableCloseOnSelect?: boolean | undefined;
20
+ allowCustomValue?: boolean | undefined;
21
+ loading?: boolean | undefined;
22
+ noOptionsText?: import("react").ReactNode;
23
+ clearText?: string | undefined;
24
+ openText?: string | undefined;
25
+ closeText?: string | undefined;
26
+ loadingText?: import("react").ReactNode;
27
+ onClose?: (() => void) | undefined;
28
+ onOpen?: (() => void) | undefined;
29
+ disableClearButton?: boolean | undefined;
30
+ searchFunction?: import("./types").AutocompleteSearchFunction<OPTION> | undefined;
31
+ disableShowEmptyOptionsList?: boolean | undefined;
32
+ disableShowChevron?: boolean | undefined;
33
+ dataListProps?: Partial<Omit<import("../DataList").DataListBaseProps, "onSelect" | "open" | "onClose" | "multiple" | "selected" | "anchorRef">> | undefined;
34
+ } & {
35
+ label?: string | undefined;
36
+ style?: import("react").CSSProperties | undefined;
37
+ className?: string | undefined;
38
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
39
+ autoFocus?: boolean | undefined;
40
+ placeholder?: string | undefined;
41
+ disabled?: boolean | undefined;
42
+ required?: boolean | undefined;
43
+ error?: boolean | undefined;
44
+ fullWidth?: boolean | undefined;
45
+ hint?: string | null | undefined;
46
+ renderLeft?: string | number | import("react").FC<import("react").SVGProps<SVGSVGElement> & {
47
+ color?: string | undefined;
48
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
49
+ } & {
50
+ size?: import("@ozen-ui/icons").IconSize | undefined;
51
+ }> | import("react").ReactElement<import("react").SVGProps<SVGSVGElement> & {
52
+ color?: string | undefined;
53
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
54
+ } & {
55
+ size?: import("@ozen-ui/icons").IconSize | undefined;
56
+ }, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("react").SVGProps<SVGSVGElement> & {
57
+ color?: string | undefined;
58
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
59
+ } & {
60
+ size?: import("@ozen-ui/icons").IconSize | undefined;
61
+ }, string | import("react").JSXElementConstructor<any>>) | undefined;
62
+ inputProps?: (Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
63
+ ref?: ((instance: HTMLInputElement | null) => void) | import("react").RefObject<HTMLInputElement> | null | undefined;
64
+ } & {
65
+ 'data-testid'?: string | undefined;
66
+ }) | undefined;
67
+ } & {
68
+ open?: boolean | undefined;
69
+ defaultOpen?: undefined;
70
+ } & (OPTION extends {
71
+ label: string;
72
+ } ? Record<string, unknown> : {
73
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION> | undefined;
74
+ }) & (OPTION extends {
75
+ id: string | number;
76
+ } ? Record<string, unknown> : {
77
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION> | undefined;
78
+ }) & (OPTION extends {
79
+ id: boolean | undefined;
80
+ } ? Record<string, unknown> : {
81
+ getOptionDisabled?: AutocompletePropGetOptionKey<OPTION> | undefined;
82
+ }) & {
83
+ getOptionLabel: AutocompletePropGetOptionLabel<AutocompleteDefaultOption> | AutocompletePropGetOptionLabel<OPTION>;
84
+ getOptionKey: AutocompletePropGetOptionKey<AutocompleteDefaultOption> | AutocompletePropGetOptionKey<OPTION>;
85
+ getOptionDisabled: AutocompletePropGetOptionDisabled<AutocompleteDefaultOption> | AutocompletePropGetOptionDisabled<OPTION>;
86
+ }) | ({
87
+ options: OPTION[];
88
+ size?: "s" | "m" | "l" | "2xs" | "xs" | undefined;
89
+ value?: import("./types").AutocompletePropValue<OPTION>;
90
+ defaultValue?: import("./types").AutocompletePropValue<OPTION>;
91
+ onChange?: ((e: KeyboardEvent | import("react").SyntheticEvent<Element, Event>, value: OPTION | null) => void) | undefined;
92
+ inputValue?: string | undefined;
93
+ onInputChange?: ((e: import("react").ChangeEvent<HTMLInputElement> | null, value: string) => void) | undefined;
94
+ renderInput?: import("./types").AutocompleteRenderInput | undefined;
95
+ renderOption?: import("./types").AutocompletePropRenderOption<OPTION> | undefined;
96
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION> | undefined;
97
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION> | undefined;
98
+ getOptionDisabled?: AutocompletePropGetOptionDisabled<OPTION> | undefined;
99
+ disableCloseOnSelect?: boolean | undefined;
100
+ allowCustomValue?: boolean | undefined;
101
+ loading?: boolean | undefined;
102
+ noOptionsText?: import("react").ReactNode;
103
+ clearText?: string | undefined;
104
+ openText?: string | undefined;
105
+ closeText?: string | undefined;
106
+ loadingText?: import("react").ReactNode;
107
+ onClose?: (() => void) | undefined;
108
+ onOpen?: (() => void) | undefined;
109
+ disableClearButton?: boolean | undefined;
110
+ searchFunction?: import("./types").AutocompleteSearchFunction<OPTION> | undefined;
111
+ disableShowEmptyOptionsList?: boolean | undefined;
112
+ disableShowChevron?: boolean | undefined;
113
+ dataListProps?: Partial<Omit<import("../DataList").DataListBaseProps, "onSelect" | "open" | "onClose" | "multiple" | "selected" | "anchorRef">> | undefined;
114
+ } & {
115
+ label?: string | undefined;
116
+ style?: import("react").CSSProperties | undefined;
117
+ className?: string | undefined;
118
+ onKeyDown?: import("react").KeyboardEventHandler<HTMLDivElement> | undefined;
119
+ autoFocus?: boolean | undefined;
120
+ placeholder?: string | undefined;
121
+ disabled?: boolean | undefined;
122
+ required?: boolean | undefined;
123
+ error?: boolean | undefined;
124
+ fullWidth?: boolean | undefined;
125
+ hint?: string | null | undefined;
126
+ renderLeft?: string | number | import("react").FC<import("react").SVGProps<SVGSVGElement> & {
127
+ color?: string | undefined;
128
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
129
+ } & {
130
+ size?: import("@ozen-ui/icons").IconSize | undefined;
131
+ }> | import("react").ReactElement<import("react").SVGProps<SVGSVGElement> & {
132
+ color?: string | undefined;
133
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
134
+ } & {
135
+ size?: import("@ozen-ui/icons").IconSize | undefined;
136
+ }, string | import("react").JSXElementConstructor<any>> | (() => import("react").ReactElement<import("react").SVGProps<SVGSVGElement> & {
137
+ color?: string | undefined;
138
+ ref?: import("react").Ref<SVGSVGElement> | undefined;
139
+ } & {
140
+ size?: import("@ozen-ui/icons").IconSize | undefined;
141
+ }, string | import("react").JSXElementConstructor<any>>) | undefined;
142
+ inputProps?: (Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
143
+ ref?: ((instance: HTMLInputElement | null) => void) | import("react").RefObject<HTMLInputElement> | null | undefined;
144
+ } & {
145
+ 'data-testid'?: string | undefined;
146
+ }) | undefined;
147
+ } & {
148
+ open?: undefined;
149
+ defaultOpen?: boolean | undefined;
150
+ } & (OPTION extends {
151
+ label: string;
152
+ } ? Record<string, unknown> : {
153
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION> | undefined;
154
+ }) & (OPTION extends {
155
+ id: string | number;
156
+ } ? Record<string, unknown> : {
157
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION> | undefined;
158
+ }) & (OPTION extends {
159
+ id: boolean | undefined;
160
+ } ? Record<string, unknown> : {
161
+ getOptionDisabled?: AutocompletePropGetOptionKey<OPTION> | undefined;
162
+ }) & {
163
+ getOptionLabel: AutocompletePropGetOptionLabel<AutocompleteDefaultOption> | AutocompletePropGetOptionLabel<OPTION>;
164
+ getOptionKey: AutocompletePropGetOptionKey<AutocompleteDefaultOption> | AutocompletePropGetOptionKey<OPTION>;
165
+ getOptionDisabled: AutocompletePropGetOptionDisabled<AutocompleteDefaultOption> | AutocompletePropGetOptionDisabled<OPTION>;
166
+ });
@@ -0,0 +1,7 @@
1
+ import { __assign } from "tslib";
2
+ export var defaultGetOptionKey = function (option) { var _a; return (_a = option.id) !== null && _a !== void 0 ? _a : option; };
3
+ export var defaultGetOptionLabel = function (option) { var _a; return (_a = option.label) !== null && _a !== void 0 ? _a : option; };
4
+ export var defaultGetOptionDisabled = function (option) { var _a; return (_a = option.disabled) !== null && _a !== void 0 ? _a : false; };
5
+ export function withDefaultGetters(props) {
6
+ return __assign(__assign({}, props), { getOptionLabel: props.getOptionLabel || defaultGetOptionLabel, getOptionKey: props.getOptionKey || defaultGetOptionKey, getOptionDisabled: props.getOptionDisabled || defaultGetOptionDisabled });
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Autocomplete';
2
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ export * from './Autocomplete';
2
+ export * from './types';
@@ -0,0 +1,105 @@
1
+ import type { SyntheticEvent, ChangeEvent, ReactElement, ReactNode } from 'react';
2
+ import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
3
+ import type { DataListBaseProps } from '../DataList';
4
+ import type { InputProps } from '../Input';
5
+ export type AutocompleteRenderOptionProps<OPTION> = {
6
+ option: OPTION;
7
+ selected: boolean;
8
+ };
9
+ export type AutocompletePropValue<OPTION> = OPTION | null | undefined;
10
+ export type AutocompletePropGetOptionLabel<OPTION> = (option: OPTION) => string;
11
+ export type AutocompletePropGetOptionKey<OPTION> = (option: OPTION) => string | number;
12
+ export type AutocompletePropRenderValue<OPTION> = (value: OPTION) => ReactNode | null;
13
+ export type AutocompletePropGetOptionDisabled<OPTION> = (option: OPTION) => boolean | undefined;
14
+ export type AutocompletePropRenderOption<OPTION> = (props: AutocompleteRenderOptionProps<OPTION>) => ReactElement | null;
15
+ export type AutocompleteDefaultOption = {
16
+ id: string | number;
17
+ label: string;
18
+ disabled?: boolean;
19
+ };
20
+ export type AutocompleteSearchFunction<OPTION> = (options: OPTION[], searchValue: string) => OPTION[];
21
+ export type AutocompleteRenderInput = (props: InputProps) => ReactNode;
22
+ type AutocompleteOpenControlledProps = {
23
+ /** Текущее состояние списка. Если `true`, список отображается. */
24
+ open?: boolean;
25
+ /** Состояние открытие по умолчанию (неконтролируемый компонент) */
26
+ defaultOpen?: never;
27
+ };
28
+ type AutocompleteOpenUncontrolledProps = {
29
+ /** Текущее состояние списка. Если `true`, список отображается. */
30
+ open?: never;
31
+ /** Состояние открытие по умолчанию (неконтролируемый компонент) */
32
+ defaultOpen?: boolean;
33
+ };
34
+ type AutocompleteInputProps = Pick<InputProps, 'placeholder' | 'autoFocus' | 'fullWidth' | 'disabled' | 'label' | 'required' | 'style' | 'error' | 'hint' | 'renderLeft' | 'className' | 'inputProps' | 'onKeyDown'>;
35
+ type AutocompleteDataListProps = Partial<Omit<DataListBaseProps, 'onClose' | 'open' | 'anchorRef' | 'multiple' | 'selected' | 'onSelect'>>;
36
+ export type AutocompleteProps<OPTION = AutocompleteDefaultOption> = {
37
+ /** Список вариантов выбора (опции) */
38
+ options: OPTION[];
39
+ /** Размер */
40
+ size?: FormElementSizeVariant;
41
+ /** Выбранное значение опции */
42
+ value?: AutocompletePropValue<OPTION>;
43
+ /** Выбранное значение опции по умолчанию */
44
+ defaultValue?: AutocompletePropValue<OPTION>;
45
+ /** Функция обратного вызова, которая будет вызвана при выборе значения */
46
+ onChange?: (e: SyntheticEvent | KeyboardEvent, value: OPTION | null) => void;
47
+ /** Введённое значение в текстовом поле */
48
+ inputValue?: string;
49
+ /** Функция обратного вызова, которая будет вызвана при вводе значения с клавиатуры */
50
+ onInputChange?: (e: ChangeEvent<HTMLInputElement> | null, value: string) => void;
51
+ /** Функция для кастомизации текстового поля */
52
+ renderInput?: AutocompleteRenderInput;
53
+ /** Функция для кастомизации отображения опции */
54
+ renderOption?: AutocompletePropRenderOption<OPTION>;
55
+ /** Функция для определения названия элемента */
56
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION>;
57
+ /** Функция для определения уникального ключа элемента */
58
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION>;
59
+ /** Функция для определения заблокированного элемента */
60
+ getOptionDisabled?: AutocompletePropGetOptionDisabled<OPTION>;
61
+ /** Если {true} не закрывает выпадающий список при выборе опции */
62
+ disableCloseOnSelect?: boolean;
63
+ /** Если {true} позволяет вводить кастомное значение в текстовом поле */
64
+ allowCustomValue?: boolean;
65
+ /** Если {true} отображает статус загрузки (при условии отсутствующих опций) */
66
+ loading?: boolean;
67
+ /** Текст компонента при отсутствующих опций */
68
+ noOptionsText?: ReactNode;
69
+ /** Текст для кнопки очистки поля */
70
+ clearText?: string;
71
+ /** Текст для кнопки открытия выпадающего списка */
72
+ openText?: string;
73
+ /** Текст для кнопки закрытия выпадающего списка */
74
+ closeText?: string;
75
+ /** Текст компонента в состоянии загрузки */
76
+ loadingText?: ReactNode;
77
+ /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает закрытие */
78
+ onClose?: () => void;
79
+ /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает открытие */
80
+ onOpen?: () => void;
81
+ /** Если {true}, то не отображает кнопку закрытия */
82
+ disableClearButton?: boolean;
83
+ /** Функция поиска */
84
+ searchFunction?: AutocompleteSearchFunction<OPTION>;
85
+ /** Если {true} не показывает список с отсутствующими опциями */
86
+ disableShowEmptyOptionsList?: boolean;
87
+ /** Если {true} скрывает кнопку раскрытия/скрытия списка */
88
+ disableShowChevron?: boolean;
89
+ /** Свойства компонента DataList */
90
+ dataListProps?: AutocompleteDataListProps;
91
+ } & AutocompleteInputProps & (AutocompleteOpenControlledProps | AutocompleteOpenUncontrolledProps) & (OPTION extends {
92
+ label: AutocompleteDefaultOption['label'];
93
+ } ? Record<string, unknown> : {
94
+ getOptionLabel?: AutocompletePropGetOptionLabel<OPTION>;
95
+ }) & (OPTION extends {
96
+ id: AutocompleteDefaultOption['id'];
97
+ } ? Record<string, unknown> : {
98
+ getOptionKey?: AutocompletePropGetOptionKey<OPTION>;
99
+ }) & (OPTION extends {
100
+ id: AutocompleteDefaultOption['disabled'];
101
+ } ? Record<string, unknown> : {
102
+ getOptionDisabled?: AutocompletePropGetOptionKey<OPTION>;
103
+ });
104
+ export type AutocompleteComponent = <OPTION = AutocompleteDefaultOption>(props: AutocompleteProps<OPTION>) => ReactElement | null;
105
+ export {};
@@ -0,0 +1 @@
1
+ export {};