@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.
- package/StepperVertical/package.json +5 -0
- package/__inner__/cjs/components/Autocomplete/helper.d.ts +1 -1
- package/__inner__/cjs/components/Autocomplete/types.d.ts +1 -1
- package/__inner__/cjs/components/DataList/types.d.ts +1 -1
- package/__inner__/cjs/components/Select/Select.css +10 -1
- package/__inner__/cjs/components/Select/Select.d.ts +0 -1
- package/__inner__/cjs/components/Select/Select.js +40 -10
- package/__inner__/cjs/components/Select/SelectContext.d.ts +21 -0
- package/__inner__/cjs/components/Select/SelectContext.js +29 -0
- package/__inner__/cjs/components/Select/classNames.d.ts +1 -0
- package/__inner__/cjs/components/Select/classNames.js +5 -0
- package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.js +14 -15
- package/__inner__/cjs/components/Select/components/SelectInput/types.d.ts +0 -22
- package/__inner__/cjs/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +3 -3
- package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
- package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +42 -0
- package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/components/SelectInputRenderRight/index.js +4 -0
- package/__inner__/cjs/components/Select/components/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/components/index.js +1 -0
- package/__inner__/cjs/components/Select/constants.d.ts +3 -0
- package/__inner__/cjs/components/Select/constants.js +8 -1
- package/__inner__/cjs/components/Select/entities/index.d.ts +2 -0
- package/__inner__/cjs/components/Select/entities/index.js +5 -0
- package/__inner__/cjs/components/Select/entities/onClear.d.ts +2 -0
- package/__inner__/cjs/components/Select/entities/onClear.js +2 -0
- package/__inner__/cjs/components/Select/entities/render.d.ts +6 -0
- package/__inner__/cjs/components/Select/entities/render.js +4 -0
- package/__inner__/cjs/components/Select/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/index.js +1 -0
- package/__inner__/cjs/components/Select/types.d.ts +30 -5
- package/__inner__/cjs/components/Select/types.js +3 -0
- package/__inner__/cjs/locale/locale.js +9 -0
- package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
- package/__inner__/cjs/utils/array/generatePermutations/generatePermutations.js +47 -0
- package/__inner__/cjs/utils/array/generatePermutations/index.d.ts +1 -0
- package/__inner__/cjs/utils/array/generatePermutations/index.js +4 -0
- package/__inner__/cjs/utils/array/index.d.ts +1 -0
- package/__inner__/cjs/utils/array/index.js +1 -0
- package/__inner__/esm/components/Autocomplete/helper.d.ts +1 -1
- package/__inner__/esm/components/Autocomplete/types.d.ts +1 -1
- package/__inner__/esm/components/DataList/types.d.ts +1 -1
- package/__inner__/esm/components/Select/Select.css +10 -1
- package/__inner__/esm/components/Select/Select.d.ts +0 -1
- package/__inner__/esm/components/Select/Select.js +40 -10
- package/__inner__/esm/components/Select/SelectContext.d.ts +21 -0
- package/__inner__/esm/components/Select/SelectContext.js +25 -0
- package/__inner__/esm/components/Select/classNames.d.ts +1 -0
- package/__inner__/esm/components/Select/classNames.js +2 -0
- package/__inner__/esm/components/Select/components/SelectInput/SelectInput.js +7 -8
- package/__inner__/esm/components/Select/components/SelectInput/types.d.ts +0 -22
- package/__inner__/esm/components/Select/components/SelectInputContextConsumer/SelectInputContextConsumer.js +1 -1
- package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.d.ts +2 -0
- package/__inner__/esm/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js +38 -0
- package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.d.ts +1 -0
- package/__inner__/esm/components/Select/components/SelectInputRenderRight/index.js +1 -0
- package/__inner__/esm/components/Select/components/index.d.ts +1 -0
- package/__inner__/esm/components/Select/components/index.js +1 -0
- package/__inner__/esm/components/Select/constants.d.ts +3 -0
- package/__inner__/esm/components/Select/constants.js +7 -0
- package/__inner__/esm/components/Select/entities/index.d.ts +2 -0
- package/__inner__/esm/components/Select/entities/index.js +2 -0
- package/__inner__/esm/components/Select/entities/onClear.d.ts +2 -0
- package/__inner__/esm/components/Select/entities/onClear.js +1 -0
- package/__inner__/esm/components/Select/entities/render.d.ts +6 -0
- package/__inner__/esm/components/Select/entities/render.js +1 -0
- package/__inner__/esm/components/Select/index.d.ts +1 -0
- package/__inner__/esm/components/Select/index.js +1 -0
- package/__inner__/esm/components/Select/types.d.ts +30 -5
- package/__inner__/esm/components/Select/types.js +2 -1
- package/__inner__/esm/locale/locale.js +9 -0
- package/__inner__/esm/utils/array/generatePermutations/generatePermutations.d.ts +1 -0
- package/__inner__/esm/utils/array/generatePermutations/generatePermutations.js +43 -0
- package/__inner__/esm/utils/array/generatePermutations/index.d.ts +1 -0
- package/__inner__/esm/utils/array/generatePermutations/index.js +1 -0
- package/__inner__/esm/utils/array/index.d.ts +1 -0
- package/__inner__/esm/utils/array/index.js +1 -0
- package/package.json +4 -4
|
@@ -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-
|
|
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,42 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Select =
|
|
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
|
|
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
|
-
|
|
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
|
|
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 =
|
|
34
|
-
var
|
|
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 =
|
|
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(
|
|
145
|
-
|
|
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;
|
|
@@ -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
|
|
16
|
-
var
|
|
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
|
|
20
|
-
var
|
|
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,
|
|
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,
|
|
32
|
-
react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderLeft, className: (0,
|
|
33
|
-
react_1.default.createElement("div", { className: (0,
|
|
34
|
-
react_1.default.createElement("div", { className: (0,
|
|
35
|
-
react_1.default.createElement(FieldLabel_1.FieldLabel, tslib_1.__assign({}, labelProps, { className: (0,
|
|
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(
|
|
38
|
-
react_1.default.createElement(
|
|
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
|
|
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,
|
|
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,
|
|
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;
|
package/__inner__/cjs/components/Select/components/SelectInputRenderRight/SelectInputRenderRight.js
ADDED
|
@@ -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';
|
|
@@ -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,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'];
|
|
@@ -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
|
|
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
|
-
|
|
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' | '
|
|
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 {};
|
|
@@ -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[][];
|