@ozen-ui/kit 0.75.0 → 0.76.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 (78) hide show
  1. package/StepperVertical/package.json +5 -0
  2. package/__inner__/cjs/components/Autocomplete/helper.d.ts +1 -1
  3. package/__inner__/cjs/components/Autocomplete/types.d.ts +1 -1
  4. package/__inner__/cjs/components/DataList/types.d.ts +1 -1
  5. package/__inner__/cjs/components/Select/Select.css +10 -1
  6. package/__inner__/cjs/components/Select/Select.d.ts +0 -1
  7. package/__inner__/cjs/components/Select/Select.js +40 -10
  8. package/__inner__/cjs/components/Select/SelectContext.d.ts +21 -0
  9. package/__inner__/cjs/components/Select/SelectContext.js +29 -0
  10. package/__inner__/cjs/components/Select/classNames.d.ts +1 -0
  11. package/__inner__/cjs/components/Select/classNames.js +5 -0
  12. package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.js +14 -15
  13. package/__inner__/cjs/components/Select/components/SelectInput/types.d.ts +0 -22
  14. package/__inner__/cjs/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +3 -3
  15. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
  16. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +42 -0
  17. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
  18. package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.js +4 -0
  19. package/__inner__/cjs/components/Select/components/index.d.ts +1 -0
  20. package/__inner__/cjs/components/Select/components/index.js +1 -0
  21. package/__inner__/cjs/components/Select/constants.d.ts +3 -0
  22. package/__inner__/cjs/components/Select/constants.js +8 -1
  23. package/__inner__/cjs/components/Select/entities/index.d.ts +2 -0
  24. package/__inner__/cjs/components/Select/entities/index.js +5 -0
  25. package/__inner__/cjs/components/Select/entities/onClear.d.ts +2 -0
  26. package/__inner__/cjs/components/Select/entities/onClear.js +2 -0
  27. package/__inner__/cjs/components/Select/entities/render.d.ts +6 -0
  28. package/__inner__/cjs/components/Select/entities/render.js +4 -0
  29. package/__inner__/cjs/components/Select/index.d.ts +1 -0
  30. package/__inner__/cjs/components/Select/index.js +1 -0
  31. package/__inner__/cjs/components/Select/types.d.ts +30 -5
  32. package/__inner__/cjs/components/Select/types.js +3 -0
  33. package/__inner__/cjs/locale/locale.js +9 -0
  34. package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
  35. package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.js +47 -0
  36. package/__inner__/cjs/utils/array/generatePermutations/index.d.ts +1 -0
  37. package/__inner__/cjs/utils/array/generatePermutations/index.js +4 -0
  38. package/__inner__/cjs/utils/array/index.d.ts +1 -0
  39. package/__inner__/cjs/utils/array/index.js +1 -0
  40. package/__inner__/esm/components/Autocomplete/helper.d.ts +1 -1
  41. package/__inner__/esm/components/Autocomplete/types.d.ts +1 -1
  42. package/__inner__/esm/components/DataList/types.d.ts +1 -1
  43. package/__inner__/esm/components/Select/Select.css +10 -1
  44. package/__inner__/esm/components/Select/Select.d.ts +0 -1
  45. package/__inner__/esm/components/Select/Select.js +40 -10
  46. package/__inner__/esm/components/Select/SelectContext.d.ts +21 -0
  47. package/__inner__/esm/components/Select/SelectContext.js +25 -0
  48. package/__inner__/esm/components/Select/classNames.d.ts +1 -0
  49. package/__inner__/esm/components/Select/classNames.js +2 -0
  50. package/__inner__/esm/components/Select/components/SelectInput/SelectInput.js +7 -8
  51. package/__inner__/esm/components/Select/components/SelectInput/types.d.ts +0 -22
  52. package/__inner__/esm/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +1 -1
  53. package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
  54. package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +38 -0
  55. package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
  56. package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.js +1 -0
  57. package/__inner__/esm/components/Select/components/index.d.ts +1 -0
  58. package/__inner__/esm/components/Select/components/index.js +1 -0
  59. package/__inner__/esm/components/Select/constants.d.ts +3 -0
  60. package/__inner__/esm/components/Select/constants.js +7 -0
  61. package/__inner__/esm/components/Select/entities/index.d.ts +2 -0
  62. package/__inner__/esm/components/Select/entities/index.js +2 -0
  63. package/__inner__/esm/components/Select/entities/onClear.d.ts +2 -0
  64. package/__inner__/esm/components/Select/entities/onClear.js +1 -0
  65. package/__inner__/esm/components/Select/entities/render.d.ts +6 -0
  66. package/__inner__/esm/components/Select/entities/render.js +1 -0
  67. package/__inner__/esm/components/Select/index.d.ts +1 -0
  68. package/__inner__/esm/components/Select/index.js +1 -0
  69. package/__inner__/esm/components/Select/types.d.ts +30 -5
  70. package/__inner__/esm/components/Select/types.js +2 -1
  71. package/__inner__/esm/locale/locale.js +9 -0
  72. package/__inner__/esm/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
  73. package/__inner__/esm/utils/array/generatePermutations/generatePermutations.js +43 -0
  74. package/__inner__/esm/utils/array/generatePermutations/index.d.ts +1 -0
  75. package/__inner__/esm/utils/array/generatePermutations/index.js +1 -0
  76. package/__inner__/esm/utils/array/index.d.ts +1 -0
  77. package/__inner__/esm/utils/array/index.js +1 -0
  78. package/package.json +4 -4
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/components/StepperVertical/index.js",
3
+ "module": "../__inner__/esm/components/StepperVertical/index.js",
4
+ "types": "../__inner__/esm/components/StepperVertical/index.d.ts"
5
+ }
@@ -9,7 +9,7 @@ export declare function withDefaultGetters<OPTION>(props: AutocompleteProps<OPTI
9
9
  defaultValue?: import("./types").AutocompletePropValue<OPTION>;
10
10
  open?: boolean;
11
11
  defaultOpen?: boolean;
12
- onChange?: ((e: import("react").SyntheticEvent | KeyboardEvent, value: OPTION | null) => void) | undefined;
12
+ onChange?: ((e: import("react").SyntheticEvent | KeyboardEvent | MouseEvent, value: OPTION | null) => void) | undefined;
13
13
  inputValue?: string;
14
14
  onInputChange?: (e: import("react").ChangeEvent<HTMLInputElement> | null, value: string) => void;
15
15
  renderInput?: import("./types").AutocompleteRenderInput;
@@ -35,7 +35,7 @@ export type AutocompleteProps<OPTION = AutocompleteDefaultOption> = {
35
35
  /** Состояние открытие по умолчанию (неконтролируемый компонент) */
36
36
  defaultOpen?: boolean;
37
37
  /** Функция обратного вызова, которая будет вызвана при выборе значения */
38
- onChange?: (e: SyntheticEvent | KeyboardEvent, value: OPTION | null) => void;
38
+ onChange?: (e: SyntheticEvent | KeyboardEvent | MouseEvent, value: OPTION | null) => void;
39
39
  /** Введённое значение в текстовом поле */
40
40
  inputValue?: string;
41
41
  /** Функция обратного вызова, которая будет вызвана при вводе значения с клавиатуры */
@@ -12,7 +12,7 @@ export type DataListPayload<MULTIPLE extends boolean> = {
12
12
  name?: string;
13
13
  value: DataListSelected<MULTIPLE>;
14
14
  };
15
- export type DataListOnSelect<MULTIPLE extends boolean> = (event: SyntheticEvent | KeyboardEvent, payload: DataListPayload<MULTIPLE>) => void;
15
+ export type DataListOnSelect<MULTIPLE extends boolean> = (event: SyntheticEvent | KeyboardEvent | MouseEvent, payload: DataListPayload<MULTIPLE>) => void;
16
16
  export type DataListBaseProps<MULTIPLE extends boolean = false> = {
17
17
  /** Имя списка */
18
18
  name?: string;
@@ -79,10 +79,19 @@
79
79
  }
80
80
 
81
81
  .Select-RenderLeft,
82
- .Select-RenderRight {
82
+ .Select-RenderRight_nonInteractive {
83
83
  pointer-events: none;
84
84
  }
85
85
 
86
+ .Select-ClearIcon {
87
+ visibility: hidden;
88
+ transition: visibility var(--transition-default);
89
+ }
90
+
91
+ .Select-ClearIcon_visibility {
92
+ visibility: visible;
93
+ }
94
+
86
95
  .Select-DropDownIcon {
87
96
  display: flex;
88
97
  align-items: center;
@@ -1,4 +1,3 @@
1
1
  import './Select.css';
2
2
  import type { SelectComponent } from './types';
3
- export declare const cnSelect: import("@bem-react/classname").ClassNameFormatter;
4
3
  export declare const Select: SelectComponent;
@@ -1,42 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Select = exports.cnSelect = void 0;
3
+ exports.Select = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("./Select.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
+ var logger_1 = require("@ozen-ui/logger");
7
8
  var react_is_1 = require("react-is");
8
9
  var useControlled_1 = require("../../hooks/useControlled");
10
+ var useDevEffect_1 = require("../../hooks/useDevEffect");
9
11
  var useMultiRef_1 = require("../../hooks/useMultiRef");
10
12
  var useThemeProps_1 = require("../../hooks/useThemeProps");
11
- var classname_1 = require("../../utils/classname");
13
+ var utils_1 = require("../../utils");
12
14
  var isKeys_1 = require("../../utils/isKeys");
13
15
  var isString_1 = require("../../utils/isString");
14
16
  var DataList_1 = require("../DataList");
15
17
  var components_1 = require("./components");
16
18
  var constants_1 = require("./constants");
17
19
  var helpers_1 = require("./helpers");
18
- exports.cnSelect = (0, classname_1.cn)('Select');
20
+ var SelectContext_1 = require("./SelectContext");
19
21
  var SelectRender = function (inProps, ref) {
20
22
  var props = (0, useThemeProps_1.useThemeProps)({
21
23
  props: inProps,
22
24
  name: 'Select',
23
25
  });
24
- var _a = props.size, size = _a === void 0 ? constants_1.SELECT_DEFAULT_SIZE : _a, _b = props.autoFocus, autoFocus = _b === void 0 ? constants_1.SELECT_DEFAULT_AUTO_FOCUS : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? constants_1.SELECT_DEFAULT_FULL_WIDTH : _c, _d = props.disabled, disabled = _d === void 0 ? constants_1.SELECT_DEFAULT_DISABLED : _d, _e = props.required, required = _e === void 0 ? constants_1.SELECT_DEFAULT_REQUIRED : _e, _f = props.multiline, multiline = _f === void 0 ? constants_1.SELECT_DEFAULT_MULTILINE : _f, _g = props.defaultOpen, defaultOpen = _g === void 0 ? constants_1.SELECT_DEFAULT_DEFAULT_OPEN : _g, valueProp = props.value, defaultValue = props.defaultValue, onChange = props.onChange, renderValueProp = props.renderValue, children = props.children, onClick = props.onClick, onKeyDown = props.onKeyDown, menuProps = props.menuProps, dataListPropsProp = props.dataListProps, bodyProps = props.bodyProps, bodyRefProp = props.bodyRef, onCloseProp = props.onClose, onOpenProp = props.onOpen, openProp = props.open, multiple = props.multiple, other = tslib_1.__rest(props, ["size", "autoFocus", "fullWidth", "disabled", "required", "multiline", "defaultOpen", "value", "defaultValue", "onChange", "renderValue", "children", "onClick", "onKeyDown", "menuProps", "dataListProps", "bodyProps", "bodyRef", "onClose", "onOpen", "open", "multiple"]);
26
+ var _a = props.size, size = _a === void 0 ? constants_1.SELECT_DEFAULT_SIZE : _a, _b = props.autoFocus, autoFocus = _b === void 0 ? constants_1.SELECT_DEFAULT_AUTO_FOCUS : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? constants_1.SELECT_DEFAULT_FULL_WIDTH : _c, _d = props.disabled, disabled = _d === void 0 ? constants_1.SELECT_DEFAULT_DISABLED : _d, _e = props.required, required = _e === void 0 ? constants_1.SELECT_DEFAULT_REQUIRED : _e, _f = props.multiline, multiline = _f === void 0 ? constants_1.SELECT_DEFAULT_MULTILINE : _f, _g = props.defaultOpen, defaultOpen = _g === void 0 ? constants_1.SELECT_DEFAULT_DEFAULT_OPEN : _g, _h = props.renderRightLayout, renderRightLayout = _h === void 0 ? constants_1.SELECT_DEFAULT_RENDER_RIGHT_LAYOUT : _h, valueProp = props.value, defaultValue = props.defaultValue, onChange = props.onChange, renderValueProp = props.renderValue, children = props.children, onClick = props.onClick, onKeyDown = props.onKeyDown, menuProps = props.menuProps, dataListPropsProp = props.dataListProps, bodyProps = props.bodyProps, bodyRefProp = props.bodyRef, onCloseProp = props.onClose, onOpenProp = props.onOpen, openProp = props.open, multiple = props.multiple, _j = props.showClearButton, showClearButton = _j === void 0 ? constants_1.SELECT_DEFAULT_SHOW_CLEAR_BUTTON : _j, renderLeft = props.renderLeft, renderRight = props.renderRight, onClearProp = props.onClear, clearText = props.clearText, _k = props.error, error = _k === void 0 ? constants_1.SELECT_DEFAULT_ERROR : _k, other = tslib_1.__rest(props, ["size", "autoFocus", "fullWidth", "disabled", "required", "multiline", "defaultOpen", "renderRightLayout", "value", "defaultValue", "onChange", "renderValue", "children", "onClick", "onKeyDown", "menuProps", "dataListProps", "bodyProps", "bodyRef", "onClose", "onOpen", "open", "multiple", "showClearButton", "renderLeft", "renderRight", "onClear", "clearText", "error"]);
27
+ (0, useDevEffect_1.useDevEffect)(function () {
28
+ if (renderRightLayout.length !== new Set(renderRightLayout).size) {
29
+ logger_1.logger.error("\u0412 renderRightLayout [".concat(renderRightLayout.map(function (element) { return "\"".concat(element, "\""); }).join(', '), "] \u0435\u0441\u0442\u044C \u0434\u0443\u0431\u043B\u0438\u0440\u0443\u044E\u0449\u0438\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B, \u043F\u0435\u0440\u0435\u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u043F\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435."));
30
+ }
31
+ }, [renderRightLayout]);
25
32
  var bodyInnerRef = (0, react_1.useRef)(null);
26
33
  var bodyRef = (0, useMultiRef_1.useMultiRef)([(bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.ref) || bodyRefProp, bodyInnerRef]);
27
34
  var dataListProps = dataListPropsProp || menuProps;
28
- var _h = tslib_1.__read((0, useControlled_1.useControlled)({
35
+ var _l = tslib_1.__read((0, useControlled_1.useControlled)({
29
36
  value: valueProp,
30
37
  defaultValue: defaultValue,
31
38
  name: 'Select',
32
39
  state: 'value',
33
- }), 2), valueState = _h[0], setValueState = _h[1];
34
- var _j = tslib_1.__read((0, useControlled_1.useControlled)({
40
+ }), 2), valueState = _l[0], setValueState = _l[1];
41
+ var _m = tslib_1.__read((0, useControlled_1.useControlled)({
35
42
  value: openProp,
36
43
  defaultValue: defaultOpen,
37
44
  name: 'Select',
38
45
  state: 'open',
39
- }), 2), open = _j[0], setOpen = _j[1];
46
+ }), 2), open = _m[0], setOpen = _m[1];
40
47
  var currentLabel;
41
48
  var isNotSelectOption = function (child) { return !(0, react_1.isValidElement)(child) || child.type !== DataList_1.DataListOption; };
42
49
  var resolvedChildren = (0, react_is_1.isFragment)(children)
@@ -125,8 +132,16 @@ var SelectRender = function (inProps, ref) {
125
132
  return (params === null || params === void 0 ? void 0 : params.value) || '';
126
133
  return '';
127
134
  };
135
+ var onClear = function (event) {
136
+ setValueState(undefined);
137
+ onChange === null || onChange === void 0 ? void 0 : onChange(undefined, event);
138
+ onClearProp === null || onClearProp === void 0 ? void 0 : onClearProp(event);
139
+ };
128
140
  /** Представление значение элемента контроля */
129
141
  var renderValue = renderValueProp || renderDefaultValue;
142
+ var hasValue = (0, utils_1.isArray)(valueState)
143
+ ? valueState.length > 0
144
+ : (0, utils_1.isNotNil)(valueState);
130
145
  (0, react_1.useEffect)(function () {
131
146
  var _a;
132
147
  /** Устанавливает фокус на элементе контроля
@@ -141,8 +156,23 @@ var SelectRender = function (inProps, ref) {
141
156
  if (autoFocus)
142
157
  (_a = bodyInnerRef.current) === null || _a === void 0 ? void 0 : _a.focus();
143
158
  }, [autoFocus]);
144
- return (react_1.default.createElement(react_1.default.Fragment, null,
145
- react_1.default.createElement(components_1.SelectInput, tslib_1.__assign({ size: size, disabled: disabled, required: required, multiline: multiline, fullWidth: fullWidth }, other, { open: open, value: inputValue(), onClick: handleClick, onKeyDown: handleKeyDown, renderedValue: renderValue({
159
+ return (react_1.default.createElement(SelectContext_1.SelectContext.Provider, { value: {
160
+ open: open !== null && open !== void 0 ? open : false,
161
+ hasValue: hasValue,
162
+ size: size,
163
+ disabled: disabled,
164
+ renderRightLayout: renderRightLayout,
165
+ showClearButton: showClearButton,
166
+ fullWidth: fullWidth,
167
+ required: required,
168
+ multiline: multiline,
169
+ onClear: onClear,
170
+ clearText: clearText !== null && clearText !== void 0 ? clearText : '',
171
+ renderRight: renderRight,
172
+ renderLeft: renderLeft,
173
+ error: error,
174
+ } },
175
+ react_1.default.createElement(components_1.SelectInput, tslib_1.__assign({}, other, { value: inputValue(), onClick: handleClick, onKeyDown: handleKeyDown, renderedValue: renderValue({
146
176
  label: currentLabel,
147
177
  value: valueState,
148
178
  }), bodyProps: tslib_1.__assign(tslib_1.__assign({}, bodyProps), { ref: bodyRef }), ref: ref })),
@@ -0,0 +1,21 @@
1
+ import type { SelectOnClear, SelectRenderLeft, SelectRenderRight, SelectRenderRightLayout } from './entities';
2
+ import type { SelectPropSize } from './types';
3
+ export type SelectContextValue = {
4
+ renderRightLayout: SelectRenderRightLayout;
5
+ size: SelectPropSize;
6
+ open: boolean;
7
+ disabled: boolean;
8
+ hasValue: boolean;
9
+ onClear: SelectOnClear;
10
+ renderLeft: SelectRenderLeft;
11
+ renderRight: SelectRenderRight;
12
+ clearText: string;
13
+ showClearButton: boolean;
14
+ required: boolean;
15
+ multiline: boolean;
16
+ fullWidth: boolean;
17
+ error: boolean;
18
+ };
19
+ export declare const SelectContextDefaultValue: SelectContextValue;
20
+ export declare const SelectContext: import("react").Context<SelectContextValue>;
21
+ export declare const useSelectContext: () => SelectContextValue;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSelectContext = exports.SelectContext = exports.SelectContextDefaultValue = void 0;
4
+ var react_1 = require("react");
5
+ var environment_1 = require("../../constants/environment");
6
+ var constants_1 = require("./constants");
7
+ exports.SelectContextDefaultValue = {
8
+ renderRightLayout: constants_1.SELECT_DEFAULT_RENDER_RIGHT_LAYOUT,
9
+ disabled: constants_1.SELECT_DEFAULT_DISABLED,
10
+ size: constants_1.SELECT_DEFAULT_SIZE,
11
+ open: constants_1.SELECT_DEFAULT_DEFAULT_OPEN,
12
+ hasValue: false,
13
+ onClear: function () { },
14
+ clearText: '',
15
+ renderLeft: undefined,
16
+ renderRight: undefined,
17
+ showClearButton: constants_1.SELECT_DEFAULT_SHOW_CLEAR_BUTTON,
18
+ required: constants_1.SELECT_DEFAULT_REQUIRED,
19
+ multiline: constants_1.SELECT_DEFAULT_MULTILINE,
20
+ fullWidth: constants_1.SELECT_DEFAULT_FULL_WIDTH,
21
+ error: false,
22
+ };
23
+ exports.SelectContext = (0, react_1.createContext)(exports.SelectContextDefaultValue);
24
+ var useSelectContext = function () { return (0, react_1.useContext)(exports.SelectContext); };
25
+ exports.useSelectContext = useSelectContext;
26
+ // Именованный провайдер
27
+ if (environment_1.isDev) {
28
+ exports.SelectContext.displayName = 'SelectContext';
29
+ }
@@ -0,0 +1 @@
1
+ export declare const cnSelect: import("@bem-react/classname").ClassNameFormatter;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cnSelect = void 0;
4
+ var utils_1 = require("../../utils");
5
+ exports.cnSelect = (0, utils_1.cn)('Select');
@@ -4,20 +4,20 @@ exports.SelectInput = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("../../Select.css");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
- var classnames_1 = require("@bem-react/classnames");
8
- var icons_1 = require("@ozen-ui/icons");
9
7
  var useBoolean_1 = require("../../../../hooks/useBoolean");
10
8
  var FieldControl_1 = require("../../../FieldControl");
11
9
  var FieldHint_1 = require("../../../FieldHint");
12
10
  var FieldIcon_1 = require("../../../FieldIcon");
13
11
  var FieldLabel_1 = require("../../../FieldLabel");
14
12
  var Fieldset_1 = require("../../../Fieldset");
15
- var constants_1 = require("../../constants");
16
- var index_1 = require("../../index");
13
+ var classNames_1 = require("../../classNames");
14
+ var SelectContext_1 = require("../../SelectContext");
17
15
  var SelectInputContextConsumer_1 = require("../SelectInputContextConsumer");
16
+ var SelectInputRenderRight_1 = require("../SelectInputRenderRight");
18
17
  exports.SelectInput = (0, react_1.forwardRef)(function (_a, ref) {
19
- var _b = _a.size, size = _b === void 0 ? constants_1.SELECT_DEFAULT_SIZE : _b, _c = _a.multiline, multiline = _c === void 0 ? constants_1.SELECT_DEFAULT_MULTILINE : _c, open = _a.open, label = _a.label, error = _a.error, id = _a.id, name = _a.name, renderLeft = _a.renderLeft, renderRight = _a.renderRight, renderedValue = _a.renderedValue, fullWidth = _a.fullWidth, disabled = _a.disabled, hint = _a.hint, required = _a.required, className = _a.className, inputProps = _a.inputProps, valueProp = _a.value, placeholderProp = _a.placeholder, defaultValue = _a.defaultValue, onFocus = _a.onFocus, onBlur = _a.onBlur, onClick = _a.onClick, onKeyDown = _a.onKeyDown, labelProps = _a.labelProps, fieldProps = _a.fieldProps, hintProps = _a.hintProps, labelRef = _a.labelRef, inputRef = _a.inputRef, fieldRef = _a.fieldRef, bodyProps = _a.bodyProps, other = tslib_1.__rest(_a, ["size", "multiline", "open", "label", "error", "id", "name", "renderLeft", "renderRight", "renderedValue", "fullWidth", "disabled", "hint", "required", "className", "inputProps", "value", "placeholder", "defaultValue", "onFocus", "onBlur", "onClick", "onKeyDown", "labelProps", "fieldProps", "hintProps", "labelRef", "inputRef", "fieldRef", "bodyProps"]);
20
- var _d = tslib_1.__read((0, useBoolean_1.useBoolean)(), 2), focused = _d[0], _e = _d[1], on = _e.on, off = _e.off;
18
+ var label = _a.label, id = _a.id, name = _a.name, renderedValue = _a.renderedValue, hint = _a.hint, className = _a.className, inputProps = _a.inputProps, valueProp = _a.value, placeholderProp = _a.placeholder, defaultValue = _a.defaultValue, onFocus = _a.onFocus, onBlur = _a.onBlur, onClick = _a.onClick, onKeyDown = _a.onKeyDown, labelProps = _a.labelProps, fieldProps = _a.fieldProps, hintProps = _a.hintProps, labelRef = _a.labelRef, inputRef = _a.inputRef, fieldRef = _a.fieldRef, bodyProps = _a.bodyProps, other = tslib_1.__rest(_a, ["label", "id", "name", "renderedValue", "hint", "className", "inputProps", "value", "placeholder", "defaultValue", "onFocus", "onBlur", "onClick", "onKeyDown", "labelProps", "fieldProps", "hintProps", "labelRef", "inputRef", "fieldRef", "bodyProps"]);
19
+ var _b = (0, SelectContext_1.useSelectContext)(), open = _b.open, required = _b.required, disabled = _b.disabled, fullWidth = _b.fullWidth, renderLeft = _b.renderLeft, multiline = _b.multiline, size = _b.size, error = _b.error;
20
+ var _c = tslib_1.__read((0, useBoolean_1.useBoolean)(), 2), focused = _c[0], _d = _c[1], on = _d.on, off = _d.off;
21
21
  var filled = !!valueProp || valueProp === 0;
22
22
  var handleFocus = (0, react_1.useCallback)(function (e) {
23
23
  on();
@@ -27,16 +27,15 @@ exports.SelectInput = (0, react_1.forwardRef)(function (_a, ref) {
27
27
  off();
28
28
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
29
29
  }, [onBlur]);
30
- return (react_1.default.createElement(FieldControl_1.FieldControl, tslib_1.__assign({ size: size, error: error, filled: filled, focused: focused, disabled: disabled, required: required, fullWidth: fullWidth }, other, { ref: ref, className: (0, index_1.cnSelect)({ multiline: multiline }, [className]) }),
31
- react_1.default.createElement("div", tslib_1.__assign({ role: "button", "aria-expanded": open, "aria-haspopup": "listbox" }, bodyProps, { onClick: onClick, onBlur: handleBlur, onKeyDown: onKeyDown, onFocus: handleFocus, tabIndex: disabled ? -1 : 0, className: (0, index_1.cnSelect)('Body', [bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.className]) }),
32
- react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderLeft, className: (0, index_1.cnSelect)('RenderLeft') }),
33
- react_1.default.createElement("div", { className: (0, index_1.cnSelect)('FieldContainer') },
34
- react_1.default.createElement("div", { className: (0, index_1.cnSelect)('HiddenLabel'), "aria-hidden": true }, label),
35
- react_1.default.createElement(FieldLabel_1.FieldLabel, tslib_1.__assign({}, labelProps, { className: (0, index_1.cnSelect)('Label', [labelProps === null || labelProps === void 0 ? void 0 : labelProps.className]), ref: (labelProps === null || labelProps === void 0 ? void 0 : labelProps.ref) || labelRef }), label),
30
+ return (react_1.default.createElement(FieldControl_1.FieldControl, tslib_1.__assign({ size: size, error: error, filled: filled, focused: focused, disabled: disabled, required: required, fullWidth: fullWidth }, other, { ref: ref, className: (0, classNames_1.cnSelect)({ multiline: multiline }, [className]) }),
31
+ react_1.default.createElement("div", tslib_1.__assign({ role: "button", "aria-expanded": open, "aria-haspopup": "listbox" }, bodyProps, { onClick: onClick, onBlur: handleBlur, onKeyDown: onKeyDown, onFocus: handleFocus, tabIndex: disabled ? -1 : 0, className: (0, classNames_1.cnSelect)('Body', [bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.className]) }),
32
+ react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderLeft, className: (0, classNames_1.cnSelect)('RenderLeft') }),
33
+ react_1.default.createElement("div", { className: (0, classNames_1.cnSelect)('FieldContainer') },
34
+ react_1.default.createElement("div", { className: (0, classNames_1.cnSelect)('HiddenLabel'), "aria-hidden": true }, label),
35
+ react_1.default.createElement(FieldLabel_1.FieldLabel, tslib_1.__assign({}, labelProps, { className: (0, classNames_1.cnSelect)('Label', [labelProps === null || labelProps === void 0 ? void 0 : labelProps.className]), ref: (labelProps === null || labelProps === void 0 ? void 0 : labelProps.ref) || labelRef }), label),
36
36
  react_1.default.createElement(SelectInputContextConsumer_1.SelectInputContextConsumer, { id: id, name: name, value: valueProp, fieldProps: fieldProps, inputProps: inputProps, defaultValue: defaultValue, renderedValue: renderedValue, placeholder: placeholderProp, fieldRef: (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.ref) || fieldRef, inputRef: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.ref) || inputRef })),
37
- react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderRight, className: (0, index_1.cnSelect)('RenderRight') }),
38
- react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: icons_1.ChevronDownIcon, className: (0, classnames_1.classnames)((0, index_1.cnSelect)('RenderRight'), (0, index_1.cnSelect)('DropDownIcon', { open: open })) }),
39
- react_1.default.createElement(Fieldset_1.Fieldset, { className: (0, index_1.cnSelect)('Fieldset') })),
37
+ react_1.default.createElement(SelectInputRenderRight_1.SelectInputRenderRight, null),
38
+ react_1.default.createElement(Fieldset_1.Fieldset, { className: (0, classNames_1.cnSelect)('Fieldset') })),
40
39
  react_1.default.createElement(FieldHint_1.FieldHint, tslib_1.__assign({}, hintProps), hint)));
41
40
  });
42
41
  exports.SelectInput.displayName = 'SelectInput';
@@ -1,10 +1,7 @@
1
1
  import type { ComponentPropsWithRef, ComponentRef, ReactNode, Ref } from 'react';
2
2
  import type { ExtendableComponentPropsWithRef } from '../../../../types/ExtendableComponentPropsWithRef';
3
- import type { FormElementSizeVariant } from '../../../../types/FormElementSizeVariant';
4
3
  import type { FieldHintProps } from '../../../FieldHint';
5
- import type { FieldIconProps } from '../../../FieldIcon';
6
4
  import type { FieldLabelProps } from '../../../FieldLabel';
7
- export type SelectInputSizeVariant = FormElementSizeVariant;
8
5
  type LabelProps = FieldLabelProps;
9
6
  type HintProps = FieldHintProps;
10
7
  type InputProps = ComponentPropsWithRef<'input'> & {
@@ -46,31 +43,14 @@ export type SelectInputProps = ExtendableComponentPropsWithRef<{
46
43
  name?: string;
47
44
  /** Лейбл */
48
45
  label?: string;
49
- /** Размер компонента */
50
- size?: SelectInputSizeVariant;
51
46
  /** Подсказка. Отображается, когда вариант не выбран */
52
47
  placeholder?: string;
53
48
  /** Если `true` устанавливает автофокус */
54
49
  autoFocus?: boolean;
55
- /** Если `true` переводит поле в состояние ошибки */
56
- error?: boolean;
57
- /** Если `true` растягивает поле на всю ширину */
58
- fullWidth?: boolean;
59
50
  /** Дополнительное описание к полю */
60
51
  hint?: string | null | undefined;
61
- /** Если `true` делает элемент неактивным */
62
- disabled?: boolean;
63
- /** Если `true` делает элемент обязательным к заполнению */
64
- required?: boolean;
65
52
  /** Если `true` отключает обводку */
66
53
  disableStroke?: boolean;
67
- /** Если `true` предотвращает сокращение текста в значении и
68
- * задает гибкую высоту контейнера компонента */
69
- multiline?: boolean;
70
- /** Текст или иконка слева */
71
- renderLeft?: FieldIconProps['icon'];
72
- /** Текст или иконка справа */
73
- renderRight?: FieldIconProps['icon'];
74
54
  /** Значение для отображения */
75
55
  renderedValue?: ReactNode;
76
56
  /** Выбранное значение */
@@ -87,8 +67,6 @@ export type SelectInputProps = ExtendableComponentPropsWithRef<{
87
67
  bodyProps?: BodyProps;
88
68
  /** Cвойства FieldHint */
89
69
  hintProps?: Omit<HintProps, 'children'>;
90
- /** Признак раскрытого списка */
91
- open?: boolean;
92
70
  /** Идентификатор компонента для тестов */
93
71
  'data-testid'?: string;
94
72
  /** Содержимое компонента */
@@ -4,7 +4,7 @@ exports.SelectInputContextConsumer = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var react_1 = tslib_1.__importDefault(require("react"));
6
6
  var FieldControl_1 = require("../../../FieldControl");
7
- var index_1 = require("../../index");
7
+ var classNames_1 = require("../../classNames");
8
8
  var SelectInputContextConsumer = function (_a) {
9
9
  var id = _a.id, name = _a.name, _b = _a.value, valueProp = _b === void 0 ? '' : _b, placeholderProp = _a.placeholder, defaultValue = _a.defaultValue, inputProps = _a.inputProps, inputRef = _a.inputRef, fieldRef = _a.fieldRef, fieldProps = _a.fieldProps, renderedValue = _a.renderedValue;
10
10
  var context = (0, FieldControl_1.useFieldControl)();
@@ -13,9 +13,9 @@ var SelectInputContextConsumer = function (_a) {
13
13
  var hasLabel = !!label;
14
14
  var placeholder = (focused || !hasLabel) && !valueProp && (react_1.default.createElement("span", null, placeholderProp));
15
15
  return (react_1.default.createElement(react_1.default.Fragment, null,
16
- react_1.default.createElement("div", tslib_1.__assign({}, fieldProps, { className: (0, index_1.cnSelect)('Field', { filled: filled, asPlaceholder: !!placeholder }, [
16
+ react_1.default.createElement("div", tslib_1.__assign({}, fieldProps, { className: (0, classNames_1.cnSelect)('Field', { filled: filled, asPlaceholder: !!placeholder }, [
17
17
  fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.className,
18
18
  ]), ref: fieldRef }), placeholder || renderedValue),
19
- react_1.default.createElement("input", tslib_1.__assign({ id: id, name: name, defaultValue: defaultValue, value: valueProp, disabled: disabled, required: required, tabIndex: -1, "aria-hidden": true, readOnly: true }, inputProps, { className: (0, index_1.cnSelect)('Input', [inputProps === null || inputProps === void 0 ? void 0 : inputProps.className]), ref: inputRef }))));
19
+ react_1.default.createElement("input", tslib_1.__assign({ id: id, name: name, defaultValue: defaultValue, value: valueProp, disabled: disabled, required: required, tabIndex: -1, "aria-hidden": true, readOnly: true }, inputProps, { className: (0, classNames_1.cnSelect)('Input', [inputProps === null || inputProps === void 0 ? void 0 : inputProps.className]), ref: inputRef }))));
20
20
  };
21
21
  exports.SelectInputContextConsumer = SelectInputContextConsumer;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SelectInputRenderRight: () => React.JSX.Element;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectInputRenderRight = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var classnames_1 = require("@bem-react/classnames");
7
+ var icons_1 = require("@ozen-ui/icons");
8
+ var FieldControl_1 = require("../../../FieldControl");
9
+ var FieldIcon_1 = require("../../../FieldIcon");
10
+ var IconButtonNext_1 = require("../../../IconButtonNext");
11
+ var classNames_1 = require("../../classNames");
12
+ var SelectContext_1 = require("../../SelectContext");
13
+ var SelectInputRenderRight = function () {
14
+ var _a = tslib_1.__read((0, FieldControl_1.useFieldControl)(), 1), _b = _a[0], focused = _b.focused, hovered = _b.hovered;
15
+ var _c = (0, SelectContext_1.useSelectContext)(), hasValue = _c.hasValue, open = _c.open, onClear = _c.onClear, renderRight = _c.renderRight, clearText = _c.clearText, renderRightLayout = _c.renderRightLayout, showClearButton = _c.showClearButton, size = _c.size;
16
+ var isVisibleClearButton = !!(hovered || open || focused) && hasValue;
17
+ var clearButton = (react_1.default.createElement(IconButtonNext_1.IconButton, { key: "clear", tabIndex: -1, size: size, variant: "function", icon: icons_1.CrossIcon, title: clearText, "aria-label": clearText, onClick: function (event) {
18
+ event.preventDefault();
19
+ event.stopPropagation();
20
+ onClear === null || onClear === void 0 ? void 0 : onClear(event);
21
+ }, className: (0, classnames_1.classnames)((0, classNames_1.cnSelect)('RenderRight'), (0, classNames_1.cnSelect)('ClearIcon', {
22
+ visibility: isVisibleClearButton,
23
+ })), compressed: true }));
24
+ return (react_1.default.createElement(react_1.default.Fragment, null,
25
+ showClearButton && !isVisibleClearButton && clearButton,
26
+ renderRightLayout.map(function (element) {
27
+ if (element === 'suffix') {
28
+ return (react_1.default.createElement(FieldIcon_1.FieldIcon, { key: element, icon: renderRight, className: (0, classnames_1.classnames)((0, classNames_1.cnSelect)('RenderRight', { nonInteractive: true }), (0, classNames_1.cnSelect)('Suffix')) }));
29
+ }
30
+ if (element === 'clear') {
31
+ if (!isVisibleClearButton || !showClearButton) {
32
+ return null;
33
+ }
34
+ return clearButton;
35
+ }
36
+ if (element === 'chevron') {
37
+ return (react_1.default.createElement(FieldIcon_1.FieldIcon, { key: element, icon: icons_1.ChevronDownIcon, className: (0, classnames_1.classnames)((0, classNames_1.cnSelect)('RenderRight', { nonInteractive: true }), (0, classNames_1.cnSelect)('DropDownIcon', { open: open })) }));
38
+ }
39
+ throw new Error("\u042D\u043B\u0435\u043C\u0435\u043D\u0442 \"".concat(element, "\" \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 renderRight."));
40
+ })));
41
+ };
42
+ exports.SelectInputRenderRight = SelectInputRenderRight;
@@ -0,0 +1 @@
1
+ export * from './SelectInputRenderRight';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./SelectInputRenderRight"), exports);
@@ -1 +1,2 @@
1
1
  export * from './SelectInput';
2
+ export * from './SelectInputRenderRight';
@@ -2,3 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./SelectInput"), exports);
5
+ tslib_1.__exportStar(require("./SelectInputRenderRight"), exports);
@@ -5,3 +5,6 @@ export declare const SELECT_DEFAULT_REQUIRED = false;
5
5
  export declare const SELECT_DEFAULT_MULTILINE = false;
6
6
  export declare const SELECT_DEFAULT_DEFAULT_OPEN = false;
7
7
  export declare const SELECT_DEFAULT_SIZE = "m";
8
+ export declare const SELECT_DEFAULT_ERROR = false;
9
+ export declare const SELECT_DEFAULT_RENDER_RIGHT_LAYOUT: ("clear" | "suffix" | "chevron")[];
10
+ export declare const SELECT_DEFAULT_SHOW_CLEAR_BUTTON = false;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SELECT_DEFAULT_SIZE = exports.SELECT_DEFAULT_DEFAULT_OPEN = exports.SELECT_DEFAULT_MULTILINE = exports.SELECT_DEFAULT_REQUIRED = exports.SELECT_DEFAULT_DISABLED = exports.SELECT_DEFAULT_FULL_WIDTH = exports.SELECT_DEFAULT_AUTO_FOCUS = void 0;
3
+ exports.SELECT_DEFAULT_SHOW_CLEAR_BUTTON = exports.SELECT_DEFAULT_RENDER_RIGHT_LAYOUT = exports.SELECT_DEFAULT_ERROR = exports.SELECT_DEFAULT_SIZE = exports.SELECT_DEFAULT_DEFAULT_OPEN = exports.SELECT_DEFAULT_MULTILINE = exports.SELECT_DEFAULT_REQUIRED = exports.SELECT_DEFAULT_DISABLED = exports.SELECT_DEFAULT_FULL_WIDTH = exports.SELECT_DEFAULT_AUTO_FOCUS = void 0;
4
4
  exports.SELECT_DEFAULT_AUTO_FOCUS = false;
5
5
  exports.SELECT_DEFAULT_FULL_WIDTH = false;
6
6
  exports.SELECT_DEFAULT_DISABLED = false;
@@ -8,3 +8,10 @@ exports.SELECT_DEFAULT_REQUIRED = false;
8
8
  exports.SELECT_DEFAULT_MULTILINE = false;
9
9
  exports.SELECT_DEFAULT_DEFAULT_OPEN = false;
10
10
  exports.SELECT_DEFAULT_SIZE = 'm';
11
+ exports.SELECT_DEFAULT_ERROR = false;
12
+ exports.SELECT_DEFAULT_RENDER_RIGHT_LAYOUT = [
13
+ 'suffix',
14
+ 'clear',
15
+ 'chevron',
16
+ ];
17
+ exports.SELECT_DEFAULT_SHOW_CLEAR_BUTTON = false;
@@ -0,0 +1,2 @@
1
+ export * from './onClear';
2
+ export * from './render';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./onClear"), exports);
5
+ tslib_1.__exportStar(require("./render"), exports);
@@ -0,0 +1,2 @@
1
+ import type { MouseEvent } from 'react';
2
+ export type SelectOnClear = (event: MouseEvent<HTMLElement>) => void;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import type { FieldIconProps } from '../../FieldIcon';
2
+ export declare const selectRenderRightElement: readonly ["suffix", "clear", "chevron"];
3
+ export type SelectRenderRightElement = (typeof selectRenderRightElement)[number];
4
+ export type SelectRenderRightLayout = SelectRenderRightElement[];
5
+ export type SelectRenderLeft = FieldIconProps['icon'];
6
+ export type SelectRenderRight = FieldIconProps['icon'];
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectRenderRightElement = void 0;
4
+ exports.selectRenderRightElement = ['suffix', 'clear', 'chevron'];
@@ -1,4 +1,5 @@
1
1
  export { DataListOption as Option } from '../DataList';
2
2
  export { ListItemText as OptionItemText, ListItemIcon as OptionItemIcon, } from '../List';
3
+ export * from './classNames';
3
4
  export * from './Select';
4
5
  export * from './types';
@@ -7,5 +7,6 @@ Object.defineProperty(exports, "Option", { enumerable: true, get: function () {
7
7
  var List_1 = require("../List");
8
8
  Object.defineProperty(exports, "OptionItemText", { enumerable: true, get: function () { return List_1.ListItemText; } });
9
9
  Object.defineProperty(exports, "OptionItemIcon", { enumerable: true, get: function () { return List_1.ListItemIcon; } });
10
+ tslib_1.__exportStar(require("./classNames"), exports);
10
11
  tslib_1.__exportStar(require("./Select"), exports);
11
12
  tslib_1.__exportStar(require("./types"), exports);
@@ -1,13 +1,14 @@
1
1
  import type { ReactElement, ReactNode, SyntheticEvent } from 'react';
2
- import type { ExtendableComponentPropsWithRef } from '../../types/ExtendableComponentPropsWithRef';
3
- import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
2
+ import type { ExtendableComponentPropsWithRef } from '../../types';
4
3
  import type { WithDisplayName } from '../../types/react';
5
4
  import type { DataListBaseProps, DataListOptionProps, DataListSelected } from '../DataList';
6
5
  import type { SelectInputProps, SelectInputRef } from './components';
7
- export type SelectPropSize = FormElementSizeVariant;
6
+ import type { SelectOnClear, SelectRenderLeft, SelectRenderRight, SelectRenderRightLayout } from './entities';
7
+ export declare const selectSizeVariant: readonly ["2xs", "xs", "s", "m", "l"];
8
+ export type SelectPropSize = (typeof selectSizeVariant)[number];
8
9
  export type SelectLabel<MULTIPLE extends boolean = false> = (MULTIPLE extends true ? DataListOptionProps['label'][] : DataListOptionProps['label']) | undefined;
9
10
  export type SelectPropValue<MULTIPLE extends boolean = false> = DataListSelected<MULTIPLE>;
10
- export type SelectPropOnChange<MULTIPLE extends boolean = false> = (value: SelectPropValue<MULTIPLE>, e: SyntheticEvent | KeyboardEvent) => void;
11
+ export type SelectPropOnChange<MULTIPLE extends boolean = false> = (value: SelectPropValue<MULTIPLE>, e: SyntheticEvent | KeyboardEvent | MouseEvent) => void;
11
12
  export type SelectedOption<MULTIPLE extends boolean = false> = {
12
13
  label?: SelectLabel<MULTIPLE>;
13
14
  value?: SelectPropValue<MULTIPLE>;
@@ -60,6 +61,30 @@ export type SelectProps<MULTIPLE extends boolean = false> = ExtendableComponentP
60
61
  renderValue?: SelectPropRenderValue<MULTIPLE>;
61
62
  /** Содержимое компонента */
62
63
  children?: ReactNode;
64
+ /** Layout правой части инпута.
65
+ * Определяет порядок и наличие элементов */
66
+ renderRightLayout?: SelectRenderRightLayout;
67
+ /** Функция обратного вызова, которая вызывается при очистке значения поля */
68
+ onClear?: SelectOnClear;
69
+ /** Текст для кнопки очистки поля */
70
+ clearText?: string;
71
+ /** Если `true`, то отображает кнопку закрытия */
72
+ showClearButton?: boolean;
73
+ /** Текст или иконка слева */
74
+ renderLeft?: SelectRenderLeft;
75
+ /** Текст или иконка справа */
76
+ renderRight?: SelectRenderRight;
77
+ /** Если `true` растягивает поле на всю ширину */
78
+ fullWidth?: boolean;
79
+ /** Если `true` предотвращает сокращение текста в значении и
80
+ * задает гибкую высоту контейнера компонента */
81
+ multiline?: boolean;
82
+ /** Если `true` делает элемент неактивным */
83
+ disabled?: boolean;
84
+ /** Если `true` делает элемент обязательным к заполнению */
85
+ required?: boolean;
86
+ /** Если `true` переводит поле в состояние ошибки */
87
+ error?: boolean;
63
88
  /** Свойства компонента DataList */
64
89
  dataListProps?: Partial<Omit<DataListBaseProps<MULTIPLE>, 'onClose' | 'open' | 'anchorRef' | 'multiple' | 'selected' | 'onSelect'>>;
65
90
  /** Функция обратного вызова, которая будет вызвана когда компонент запрашивает закрытие */
@@ -70,6 +95,6 @@ export type SelectProps<MULTIPLE extends boolean = false> = ExtendableComponentP
70
95
  multiple?: MULTIPLE;
71
96
  /** Идентификатор компонента для тестов */
72
97
  'data-testid'?: string;
73
- } & Pick<SelectInputProps, 'id' | 'name' | 'label' | 'placeholder' | 'disabled' | 'required' | 'disableStroke' | 'error' | 'hint' | 'fullWidth' | 'renderLeft' | 'renderRight' | 'multiline' | 'inputProps' | 'labelProps' | 'hintProps' | 'bodyProps' | 'inputRef' | 'labelRef' | 'bodyRef'> & SelectPropsDeprecated<MULTIPLE>, 'div'>;
98
+ } & Pick<SelectInputProps, 'id' | 'name' | 'label' | 'placeholder' | 'disableStroke' | 'hint' | 'inputProps' | 'labelProps' | 'hintProps' | 'bodyProps' | 'inputRef' | 'labelRef' | 'bodyRef'> & SelectPropsDeprecated<MULTIPLE>, 'div'>;
74
99
  export type SelectComponent = WithDisplayName<(<MULTIPLE extends boolean = false>(props: SelectProps<MULTIPLE>) => ReactElement | null)>;
75
100
  export {};
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectSizeVariant = void 0;
4
+ var types_1 = require("../../types");
5
+ exports.selectSizeVariant = types_1.formElementSizeVariant;
@@ -104,6 +104,9 @@ exports.ruRU = {
104
104
  return parts.join('.');
105
105
  },
106
106
  },
107
+ Select: {
108
+ clearText: 'Очистить',
109
+ },
107
110
  },
108
111
  };
109
112
  exports.kkKZ = {
@@ -208,6 +211,9 @@ exports.kkKZ = {
208
211
  return parts.join('.');
209
212
  },
210
213
  },
214
+ Select: {
215
+ clearText: 'Тазалау',
216
+ },
211
217
  },
212
218
  };
213
219
  exports.enUS = {
@@ -313,5 +319,8 @@ exports.enUS = {
313
319
  return parts.join('.');
314
320
  },
315
321
  },
322
+ Select: {
323
+ clearText: 'Clear',
324
+ },
316
325
  },
317
326
  };
@@ -0,0 +1 @@
1
+ export declare const generatePermutations: <Item>(array: Item[] | Readonly<Item[]>, withSubsetSizes?: boolean) => Item[][];