@ozen-ui/kit 0.16.1 → 0.17.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/__inner__/cjs/components/DataList/DataList.css +19 -46
- package/__inner__/cjs/components/DataList/DataList.js +101 -40
- package/__inner__/cjs/components/DataList/components/DataListCheckIcon/DataListCheckIcon.css +13 -0
- package/__inner__/cjs/components/{Select/components/SelectCheckIcon/SelectCheckIcon.d.ts → DataList/components/DataListCheckIcon/DataListCheckIcon.d.ts} +2 -2
- package/__inner__/cjs/components/DataList/components/DataListCheckIcon/DataListCheckIcon.js +16 -0
- package/__inner__/cjs/components/DataList/components/DataListCheckIcon/index.d.ts +1 -0
- package/__inner__/cjs/components/DataList/components/DataListCheckIcon/index.js +4 -0
- package/__inner__/cjs/components/DataList/components/DataListOption/DataListOption.css +20 -0
- package/__inner__/{esm/components/DataList/components → cjs/components/DataList/components/DataListOption}/DataListOption.d.ts +15 -4
- package/__inner__/cjs/components/DataList/components/DataListOption/DataListOption.js +39 -0
- package/__inner__/cjs/components/DataList/components/DataListOption/index.d.ts +1 -0
- package/__inner__/cjs/components/{Select/components/SelectCheckIcon → DataList/components/DataListOption}/index.js +1 -1
- package/__inner__/cjs/components/DataList/constants.d.ts +1 -0
- package/__inner__/cjs/components/DataList/constants.js +3 -1
- package/__inner__/cjs/components/DataList/helpers/index.d.ts +4 -0
- package/__inner__/cjs/components/DataList/helpers/index.js +7 -0
- package/__inner__/cjs/components/DataList/helpers/lastSelectedValue.d.ts +1 -0
- package/__inner__/cjs/components/DataList/helpers/lastSelectedValue.js +8 -0
- package/__inner__/cjs/components/DataList/helpers/types.d.ts +10 -0
- package/__inner__/cjs/components/DataList/helpers/types.js +7 -0
- package/__inner__/cjs/components/DataList/helpers/useDataListNavigation.d.ts +23 -0
- package/__inner__/cjs/components/DataList/helpers/useDataListNavigation.js +85 -0
- package/__inner__/cjs/components/DataList/helpers/useScrollContainerToElement.d.ts +3 -0
- package/__inner__/cjs/components/DataList/helpers/useScrollContainerToElement.js +15 -0
- package/__inner__/cjs/components/DataList/types.d.ts +3 -4
- package/__inner__/cjs/components/DataList/types.js +0 -5
- package/__inner__/cjs/components/FieldControl/FieldControl.js +1 -0
- package/__inner__/cjs/components/Input/Input.js +1 -1
- package/__inner__/cjs/components/Input/types.d.ts +3 -2
- package/__inner__/cjs/components/Select/Select.css +33 -128
- package/__inner__/cjs/components/Select/Select.d.ts +2 -3
- package/__inner__/cjs/components/Select/Select.js +92 -80
- package/__inner__/cjs/components/Select/components/SelectConsumer/SelectInputConsumer.d.ts +5 -0
- package/__inner__/cjs/components/Select/components/SelectConsumer/SelectInputConsumer.js +21 -0
- package/__inner__/cjs/components/Select/components/SelectConsumer/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/components/SelectConsumer/index.js +4 -0
- package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.d.ts +1 -72
- package/__inner__/cjs/components/Select/components/SelectInput/SelectInput.js +23 -22
- package/__inner__/cjs/components/Select/components/SelectInput/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/components/SelectInput/index.js +1 -0
- package/__inner__/cjs/components/Select/components/SelectInput/types.d.ts +89 -0
- package/__inner__/cjs/components/Select/components/SelectInput/types.js +2 -0
- package/__inner__/cjs/components/Select/components/index.d.ts +0 -1
- package/__inner__/cjs/components/Select/components/index.js +0 -1
- package/__inner__/cjs/components/Select/constants.d.ts +1 -1
- package/__inner__/cjs/components/Select/constants.js +2 -2
- package/__inner__/cjs/components/Select/helpers/index.d.ts +1 -0
- package/__inner__/cjs/components/Select/helpers/index.js +4 -0
- package/__inner__/cjs/components/Select/helpers/types.d.ts +8 -0
- package/__inner__/cjs/components/Select/helpers/types.js +7 -0
- package/__inner__/cjs/components/Select/index.d.ts +2 -1
- package/__inner__/cjs/components/Select/index.js +5 -4
- package/__inner__/cjs/components/Select/types.d.ts +31 -18
- package/__inner__/cjs/components/Textarea/Textarea.js +1 -1
- package/__inner__/cjs/components/Textarea/types.d.ts +2 -2
- package/__inner__/cjs/utils/scrollContainerToElement.d.ts +3 -4
- package/__inner__/esm/components/DataList/DataList.css +19 -46
- package/__inner__/esm/components/DataList/DataList.js +101 -40
- package/__inner__/esm/components/DataList/components/DataListCheckIcon/DataListCheckIcon.css +13 -0
- package/__inner__/esm/components/{Select/components/SelectCheckIcon/SelectCheckIcon.d.ts → DataList/components/DataListCheckIcon/DataListCheckIcon.d.ts} +2 -2
- package/__inner__/esm/components/DataList/components/DataListCheckIcon/DataListCheckIcon.js +11 -0
- package/__inner__/esm/components/DataList/components/DataListCheckIcon/index.d.ts +1 -0
- package/__inner__/esm/components/DataList/components/DataListCheckIcon/index.js +1 -0
- package/__inner__/esm/components/DataList/components/DataListOption/DataListOption.css +20 -0
- package/__inner__/{cjs/components/DataList/components → esm/components/DataList/components/DataListOption}/DataListOption.d.ts +15 -4
- package/__inner__/esm/components/DataList/components/DataListOption/DataListOption.js +36 -0
- package/__inner__/esm/components/DataList/components/DataListOption/index.d.ts +1 -0
- package/__inner__/esm/components/DataList/components/DataListOption/index.js +1 -0
- package/__inner__/esm/components/DataList/constants.d.ts +1 -0
- package/__inner__/esm/components/DataList/constants.js +2 -0
- package/__inner__/esm/components/DataList/helpers/index.d.ts +4 -0
- package/__inner__/esm/components/DataList/helpers/index.js +4 -0
- package/__inner__/esm/components/DataList/helpers/lastSelectedValue.d.ts +1 -0
- package/__inner__/esm/components/DataList/helpers/lastSelectedValue.js +4 -0
- package/__inner__/esm/components/DataList/helpers/types.d.ts +10 -0
- package/__inner__/esm/components/DataList/helpers/types.js +2 -0
- package/__inner__/esm/components/DataList/helpers/useDataListNavigation.d.ts +23 -0
- package/__inner__/esm/components/DataList/helpers/useDataListNavigation.js +81 -0
- package/__inner__/esm/components/DataList/helpers/useScrollContainerToElement.d.ts +3 -0
- package/__inner__/esm/components/DataList/helpers/useScrollContainerToElement.js +11 -0
- package/__inner__/esm/components/DataList/types.d.ts +3 -4
- package/__inner__/esm/components/DataList/types.js +1 -2
- package/__inner__/esm/components/FieldControl/FieldControl.js +1 -0
- package/__inner__/esm/components/Input/Input.js +1 -1
- package/__inner__/esm/components/Input/types.d.ts +3 -2
- package/__inner__/esm/components/Select/Select.css +33 -128
- package/__inner__/esm/components/Select/Select.d.ts +2 -3
- package/__inner__/esm/components/Select/Select.js +96 -84
- package/__inner__/esm/components/Select/components/SelectConsumer/SelectInputConsumer.d.ts +5 -0
- package/__inner__/esm/components/Select/components/SelectConsumer/SelectInputConsumer.js +17 -0
- package/__inner__/esm/components/Select/components/SelectConsumer/index.d.ts +1 -0
- package/__inner__/esm/components/Select/components/SelectConsumer/index.js +1 -0
- package/__inner__/esm/components/Select/components/SelectInput/SelectInput.d.ts +1 -72
- package/__inner__/esm/components/Select/components/SelectInput/SelectInput.js +25 -24
- package/__inner__/esm/components/Select/components/SelectInput/index.d.ts +1 -0
- package/__inner__/esm/components/Select/components/SelectInput/index.js +1 -0
- package/__inner__/esm/components/Select/components/SelectInput/types.d.ts +89 -0
- package/__inner__/esm/components/Select/components/SelectInput/types.js +1 -0
- package/__inner__/esm/components/Select/components/index.d.ts +0 -1
- package/__inner__/esm/components/Select/components/index.js +0 -1
- package/__inner__/esm/components/Select/constants.d.ts +1 -1
- package/__inner__/esm/components/Select/constants.js +1 -1
- package/__inner__/esm/components/Select/helpers/index.d.ts +1 -0
- package/__inner__/esm/components/Select/helpers/index.js +1 -0
- package/__inner__/esm/components/Select/helpers/types.d.ts +8 -0
- package/__inner__/esm/components/Select/helpers/types.js +2 -0
- package/__inner__/esm/components/Select/index.d.ts +2 -1
- package/__inner__/esm/components/Select/index.js +2 -1
- package/__inner__/esm/components/Select/types.d.ts +31 -18
- package/__inner__/esm/components/Textarea/Textarea.js +1 -1
- package/__inner__/esm/components/Textarea/types.d.ts +2 -2
- package/__inner__/esm/utils/scrollContainerToElement.d.ts +3 -4
- package/package.json +1 -1
- package/__inner__/cjs/components/DataList/DataListProvider.d.ts +0 -16
- package/__inner__/cjs/components/DataList/DataListProvider.js +0 -11
- package/__inner__/cjs/components/DataList/components/DataListOption.js +0 -40
- package/__inner__/cjs/components/DataList/useDataListNavigation.d.ts +0 -23
- package/__inner__/cjs/components/DataList/useDataListNavigation.js +0 -109
- package/__inner__/cjs/components/Select/components/SelectCheckIcon/SelectCheckIcon.css +0 -13
- package/__inner__/cjs/components/Select/components/SelectCheckIcon/SelectCheckIcon.js +0 -14
- package/__inner__/cjs/components/Select/components/SelectCheckIcon/index.d.ts +0 -1
- package/__inner__/esm/components/DataList/DataListProvider.d.ts +0 -16
- package/__inner__/esm/components/DataList/DataListProvider.js +0 -7
- package/__inner__/esm/components/DataList/components/DataListOption.js +0 -37
- package/__inner__/esm/components/DataList/useDataListNavigation.d.ts +0 -23
- package/__inner__/esm/components/DataList/useDataListNavigation.js +0 -105
- package/__inner__/esm/components/Select/components/SelectCheckIcon/SelectCheckIcon.css +0 -13
- package/__inner__/esm/components/Select/components/SelectCheckIcon/SelectCheckIcon.js +0 -9
- package/__inner__/esm/components/Select/components/SelectCheckIcon/index.d.ts +0 -1
- package/__inner__/esm/components/Select/components/SelectCheckIcon/index.js +0 -1
|
@@ -1,75 +1,4 @@
|
|
|
1
1
|
import '../../Select.css';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import type {
|
|
4
|
-
import type { FormElementSizeVariant } from '../../../../types/FormElementSizeVariant';
|
|
5
|
-
import { type FieldIconProps } from '../../../FieldIcon';
|
|
6
|
-
import { type FieldLabelProps } from '../../../FieldLabel';
|
|
7
|
-
export type SelectInputSizeVariant = FormElementSizeVariant;
|
|
8
|
-
type DivElement = HTMLAttributes<HTMLDivElement>;
|
|
9
|
-
type InputElement = InputHTMLAttributes<HTMLInputElement>;
|
|
10
|
-
export type SelectInputProps = {
|
|
11
|
-
/** Атрибут id для элемента input */
|
|
12
|
-
id?: string;
|
|
13
|
-
/** Атрибут name для элемента input */
|
|
14
|
-
name?: string;
|
|
15
|
-
/** Лейбл */
|
|
16
|
-
label?: string;
|
|
17
|
-
/** Размер компонента */
|
|
18
|
-
size?: SelectInputSizeVariant;
|
|
19
|
-
/** Подсказка. Отображается, когда вариант не выбран */
|
|
20
|
-
placeholder?: string;
|
|
21
|
-
/** Если {true} устанавливает автофокус */
|
|
22
|
-
autoFocus?: boolean;
|
|
23
|
-
/** Если {true} переводит поле в состояние ошибки */
|
|
24
|
-
error?: boolean;
|
|
25
|
-
/** Если {true} растягивает поле на всю ширину */
|
|
26
|
-
fullWidth?: boolean;
|
|
27
|
-
/** Дополнительное описание к полю */
|
|
28
|
-
hint?: string | null | undefined;
|
|
29
|
-
/** Если {true} делает элемент неактивным */
|
|
30
|
-
disabled?: boolean;
|
|
31
|
-
/** Если {true} делает элемент обязательным к заполнению */
|
|
32
|
-
required?: boolean;
|
|
33
|
-
/** Признак визуального состояния компонента с фокусом */
|
|
34
|
-
focused?: boolean;
|
|
35
|
-
/** Если {true} предотвращает сокращение текста в значении и
|
|
36
|
-
* задает гибкую высоту контейнера компонента */
|
|
37
|
-
multiline?: boolean;
|
|
38
|
-
/** Текст или иконка слева */
|
|
39
|
-
renderLeft?: FieldIconProps['icon'];
|
|
40
|
-
/** Текст или иконка справа */
|
|
41
|
-
renderRight?: FieldIconProps['icon'];
|
|
42
|
-
/** Значение для отображения */
|
|
43
|
-
renderedValue?: React.ReactNode;
|
|
44
|
-
/** Выбранное значение */
|
|
45
|
-
value?: InputElement['value'];
|
|
46
|
-
/** Значение умолчанию (неконтролируемый компонент) */
|
|
47
|
-
defaultValue?: InputElement['defaultValue'];
|
|
48
|
-
/** Ссылка на Field */
|
|
49
|
-
fieldRef?: Ref<HTMLDivElement>;
|
|
50
|
-
/** Свойства Field */
|
|
51
|
-
fieldProps?: DivElement & {
|
|
52
|
-
'data-testid'?: string;
|
|
53
|
-
};
|
|
54
|
-
/** Ссылка на элемент input */
|
|
55
|
-
inputRef?: Ref<HTMLInputElement>;
|
|
56
|
-
/** Свойства элемента input */
|
|
57
|
-
inputProps?: InputElement & {
|
|
58
|
-
'data-testid'?: string;
|
|
59
|
-
};
|
|
60
|
-
/** Ссылка на FieldLabel */
|
|
61
|
-
labelRef?: FieldLabelProps['ref'];
|
|
62
|
-
/** Свойства FieldLabel */
|
|
63
|
-
labelProps?: FieldLabelProps;
|
|
64
|
-
/** Ссылка на Body */
|
|
65
|
-
bodyRef?: Ref<HTMLDivElement>;
|
|
66
|
-
/** Свойства Body */
|
|
67
|
-
bodyProps?: DivElement;
|
|
68
|
-
/** Ссылка на корневой DOM-элемент компонента */
|
|
69
|
-
ref?: Ref<HTMLDivElement>;
|
|
70
|
-
open?: boolean;
|
|
71
|
-
'data-testid'?: string;
|
|
72
|
-
children?: never;
|
|
73
|
-
} & Omit<HTMLAttributes<HTMLDivElement>, 'value' | 'defaultValue' | 'onChange'>;
|
|
3
|
+
import type { SelectInputProps } from './types';
|
|
74
4
|
export declare const SelectInput: React.ForwardRefExoticComponent<Omit<SelectInputProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
75
|
-
export {};
|
|
@@ -6,37 +6,38 @@ require("../../Select.css");
|
|
|
6
6
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
7
|
var classnames_1 = require("@bem-react/classnames");
|
|
8
8
|
var icons_1 = require("@ozen-ui/icons");
|
|
9
|
-
var
|
|
9
|
+
var useBoolean_1 = require("../../../../hooks/useBoolean");
|
|
10
|
+
var FieldControl_1 = require("../../../FieldControl");
|
|
10
11
|
var FieldHint_1 = require("../../../FieldHint");
|
|
11
12
|
var FieldIcon_1 = require("../../../FieldIcon");
|
|
12
13
|
var FieldLabel_1 = require("../../../FieldLabel");
|
|
13
14
|
var Fieldset_1 = require("../../../Fieldset");
|
|
15
|
+
var constants_1 = require("../../constants");
|
|
14
16
|
var index_1 = require("../../index");
|
|
17
|
+
var SelectConsumer_1 = require("../SelectConsumer");
|
|
15
18
|
exports.SelectInput = (0, react_1.forwardRef)(function (_a, ref) {
|
|
16
|
-
var _b = _a.size, size = _b === void 0 ?
|
|
17
|
-
var
|
|
18
|
-
var filled =
|
|
19
|
-
var
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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, 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", "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;
|
|
21
|
+
var filled = !!valueProp || valueProp === 0;
|
|
22
|
+
var handleFocus = (0, react_1.useCallback)(function (e) {
|
|
23
|
+
on();
|
|
24
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
|
|
25
|
+
}, [onFocus]);
|
|
26
|
+
var handleBlur = (0, react_1.useCallback)(function (e) {
|
|
27
|
+
off();
|
|
28
|
+
onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
|
|
29
|
+
}, [onBlur]);
|
|
30
|
+
return (react_1.default.createElement(FieldControl_1.FieldControl, tslib_1.__assign({ error: error, size: size, filled: filled, focused: focused, disabled: disabled, fullWidth: fullWidth, required: required }, other, { className: (0, index_1.cnSelect)({
|
|
28
31
|
multiline: multiline,
|
|
29
|
-
focused: focused,
|
|
30
32
|
}, [className]), ref: ref }),
|
|
31
|
-
react_1.default.createElement("div", tslib_1.__assign({
|
|
32
|
-
react_1.default.createElement(FieldIcon_1.FieldIcon, { className: (0, index_1.cnSelect)('RenderLeft')
|
|
33
|
+
react_1.default.createElement("div", tslib_1.__assign({ role: "button", "aria-haspopup": "listbox", "aria-expanded": open }, bodyProps, { onClick: onClick, onKeyDown: onKeyDown, tabIndex: disabled ? -1 : 0, onFocus: handleFocus, onBlur: handleBlur, className: (0, index_1.cnSelect)('Body', [bodyProps === null || bodyProps === void 0 ? void 0 : bodyProps.className]) }),
|
|
34
|
+
react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderLeft, className: (0, index_1.cnSelect)('RenderLeft') }),
|
|
33
35
|
react_1.default.createElement("div", { className: (0, index_1.cnSelect)('FieldContainer') },
|
|
34
|
-
|
|
35
|
-
react_1.default.createElement(
|
|
36
|
-
|
|
37
|
-
react_1.default.createElement(FieldIcon_1.FieldIcon, { className: (0, index_1.cnSelect)('RenderRight'),
|
|
38
|
-
react_1.default.createElement(FieldIcon_1.FieldIcon, { className: (0, classnames_1.classnames)((0, index_1.cnSelect)('RenderRight'), (0, index_1.cnSelect)('DropDownIcon', { open: open })), icon: icons_1.ChevronDownIcon, size: size }),
|
|
36
|
+
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),
|
|
37
|
+
react_1.default.createElement(SelectConsumer_1.SelectInputConsumer, { id: id, name: name, value: valueProp, defaultValue: defaultValue, placeholder: placeholderProp, fieldProps: fieldProps, inputProps: inputProps, fieldRef: (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.ref) || fieldRef, inputRef: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.ref) || inputRef, renderedValue: renderedValue })),
|
|
38
|
+
react_1.default.createElement(FieldIcon_1.FieldIcon, { icon: renderRight, className: (0, index_1.cnSelect)('RenderRight') }),
|
|
39
|
+
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
40
|
react_1.default.createElement(Fieldset_1.Fieldset, { className: (0, index_1.cnSelect)('Fieldset') })),
|
|
40
|
-
react_1.default.createElement(FieldHint_1.FieldHint,
|
|
41
|
+
react_1.default.createElement(FieldHint_1.FieldHint, null, hint)));
|
|
41
42
|
});
|
|
42
43
|
exports.SelectInput.displayName = 'SelectInput';
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { Ref, ReactNode, ComponentPropsWithRef } from 'react';
|
|
2
|
+
import type { FormElementSizeVariant } from '../../../../types/FormElementSizeVariant';
|
|
3
|
+
import type { FieldIconProps } from '../../../FieldIcon';
|
|
4
|
+
import type { FieldLabelProps } from '../../../FieldLabel';
|
|
5
|
+
export type SelectInputSizeVariant = FormElementSizeVariant;
|
|
6
|
+
type LabelProps = FieldLabelProps;
|
|
7
|
+
type InputProps = ComponentPropsWithRef<'input'> & {
|
|
8
|
+
'data-testid'?: string;
|
|
9
|
+
};
|
|
10
|
+
type BodyProps = ComponentPropsWithRef<'div'> & {
|
|
11
|
+
'data-testid'?: string;
|
|
12
|
+
};
|
|
13
|
+
type FieldProps = ComponentPropsWithRef<'div'> & {
|
|
14
|
+
'data-testid'?: string;
|
|
15
|
+
};
|
|
16
|
+
type SelectInputPropsDeprecated = {
|
|
17
|
+
/**
|
|
18
|
+
* Ссылка на Field
|
|
19
|
+
* @deprecated Используйте fieldProps.ref
|
|
20
|
+
* */
|
|
21
|
+
fieldRef?: Ref<HTMLDivElement>;
|
|
22
|
+
/**
|
|
23
|
+
* Ссылка на элемент input
|
|
24
|
+
* @deprecated Используйте inputProps.ref
|
|
25
|
+
* */
|
|
26
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
27
|
+
/**
|
|
28
|
+
* Ссылка на FieldLabel
|
|
29
|
+
* @deprecated Используйте labelProps.ref
|
|
30
|
+
* */
|
|
31
|
+
labelRef?: FieldLabelProps['ref'];
|
|
32
|
+
/**
|
|
33
|
+
* Ссылка на Body
|
|
34
|
+
* @deprecated Используйте bodyProps.ref
|
|
35
|
+
* */
|
|
36
|
+
bodyRef?: Ref<HTMLDivElement>;
|
|
37
|
+
};
|
|
38
|
+
export type SelectInputProps = Omit<ComponentPropsWithRef<'div'>, 'value' | 'defaultValue' | 'onChange'> & {
|
|
39
|
+
/** Атрибут id для элемента input */
|
|
40
|
+
id?: string;
|
|
41
|
+
/** Атрибут name для элемента input */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Лейбл */
|
|
44
|
+
label?: string;
|
|
45
|
+
/** Размер компонента */
|
|
46
|
+
size?: SelectInputSizeVariant;
|
|
47
|
+
/** Подсказка. Отображается, когда вариант не выбран */
|
|
48
|
+
placeholder?: string;
|
|
49
|
+
/** Если {true} устанавливает автофокус */
|
|
50
|
+
autoFocus?: boolean;
|
|
51
|
+
/** Если {true} переводит поле в состояние ошибки */
|
|
52
|
+
error?: boolean;
|
|
53
|
+
/** Если {true} растягивает поле на всю ширину */
|
|
54
|
+
fullWidth?: boolean;
|
|
55
|
+
/** Дополнительное описание к полю */
|
|
56
|
+
hint?: string | null | undefined;
|
|
57
|
+
/** Если {true} делает элемент неактивным */
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
/** Если {true} делает элемент обязательным к заполнению */
|
|
60
|
+
required?: boolean;
|
|
61
|
+
/** Если {true} предотвращает сокращение текста в значении и
|
|
62
|
+
* задает гибкую высоту контейнера компонента */
|
|
63
|
+
multiline?: boolean;
|
|
64
|
+
/** Текст или иконка слева */
|
|
65
|
+
renderLeft?: FieldIconProps['icon'];
|
|
66
|
+
/** Текст или иконка справа */
|
|
67
|
+
renderRight?: FieldIconProps['icon'];
|
|
68
|
+
/** Значение для отображения */
|
|
69
|
+
renderedValue?: ReactNode;
|
|
70
|
+
/** Выбранное значение */
|
|
71
|
+
value?: InputProps['value'];
|
|
72
|
+
/** Значение умолчанию (неконтролируемый компонент) */
|
|
73
|
+
defaultValue?: InputProps['defaultValue'];
|
|
74
|
+
/** Свойства Field */
|
|
75
|
+
fieldProps?: FieldProps;
|
|
76
|
+
/** Свойства элемента input */
|
|
77
|
+
inputProps?: InputProps;
|
|
78
|
+
/** Свойства FieldLabel */
|
|
79
|
+
labelProps?: LabelProps;
|
|
80
|
+
/** Свойства Body */
|
|
81
|
+
bodyProps?: BodyProps;
|
|
82
|
+
/** Признак раскрытого списка */
|
|
83
|
+
open?: boolean;
|
|
84
|
+
/** Идентификатор компонента для тестов */
|
|
85
|
+
'data-testid'?: string;
|
|
86
|
+
/** Содержимое компонента */
|
|
87
|
+
children?: never;
|
|
88
|
+
} & SelectInputPropsDeprecated;
|
|
89
|
+
export {};
|
|
@@ -4,4 +4,4 @@ export declare const SELECT_DEFAULT_DISABLED = false;
|
|
|
4
4
|
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
|
-
export declare const
|
|
7
|
+
export declare const SELECT_DEFAULT_SIZE = "m";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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;
|
|
4
4
|
exports.SELECT_DEFAULT_AUTO_FOCUS = false;
|
|
5
5
|
exports.SELECT_DEFAULT_FULL_WIDTH = false;
|
|
6
6
|
exports.SELECT_DEFAULT_DISABLED = false;
|
|
7
7
|
exports.SELECT_DEFAULT_REQUIRED = false;
|
|
8
8
|
exports.SELECT_DEFAULT_MULTILINE = false;
|
|
9
9
|
exports.SELECT_DEFAULT_DEFAULT_OPEN = false;
|
|
10
|
-
exports.
|
|
10
|
+
exports.SELECT_DEFAULT_SIZE = 'm';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SelectPropLabel, SelectProps, SelectPropValue } from '../types';
|
|
2
|
+
export type SelectedParams<MULTIPLE extends boolean = false> = {
|
|
3
|
+
multiple: SelectProps<MULTIPLE>['multiple'];
|
|
4
|
+
value?: SelectPropValue<MULTIPLE>;
|
|
5
|
+
label?: SelectPropLabel<MULTIPLE>;
|
|
6
|
+
};
|
|
7
|
+
export declare const isMultipleParams: (params: SelectedParams<boolean>) => params is SelectedParams<true>;
|
|
8
|
+
export declare const isNotMultipleParams: (params: SelectedParams<boolean>) => params is SelectedParams<false>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNotMultipleParams = exports.isMultipleParams = void 0;
|
|
4
|
+
var isMultipleParams = function (params) { return !!params.multiple; };
|
|
5
|
+
exports.isMultipleParams = isMultipleParams;
|
|
6
|
+
var isNotMultipleParams = function (params) { return !params.multiple; };
|
|
7
|
+
exports.isNotMultipleParams = isNotMultipleParams;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { DataListOption as Option } from '../DataList';
|
|
2
|
+
export { ListItemText as OptionItemText, ListItemIcon as OptionItemIcon, } from '../List';
|
|
2
3
|
export * from './Select';
|
|
3
4
|
export * from './types';
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OptionItemIcon = exports.OptionItemText = exports.Option = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var
|
|
6
|
-
Object.defineProperty(exports, "Option", { enumerable: true, get: function () { return
|
|
7
|
-
|
|
8
|
-
Object.defineProperty(exports, "
|
|
5
|
+
var DataList_1 = require("../DataList");
|
|
6
|
+
Object.defineProperty(exports, "Option", { enumerable: true, get: function () { return DataList_1.DataListOption; } });
|
|
7
|
+
var List_1 = require("../List");
|
|
8
|
+
Object.defineProperty(exports, "OptionItemText", { enumerable: true, get: function () { return List_1.ListItemText; } });
|
|
9
|
+
Object.defineProperty(exports, "OptionItemIcon", { enumerable: true, get: function () { return List_1.ListItemIcon; } });
|
|
9
10
|
tslib_1.__exportStar(require("./Select"), exports);
|
|
10
11
|
tslib_1.__exportStar(require("./types"), exports);
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SyntheticEvent, ReactNode, ReactElement, ComponentPropsWithRef } from 'react';
|
|
2
2
|
import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
|
|
3
|
-
import type {
|
|
3
|
+
import type { DataListBaseProps, DataListSelected } from '../DataList';
|
|
4
4
|
import type { SelectInputProps } from './components';
|
|
5
5
|
export type SelectSizeVariant = FormElementSizeVariant;
|
|
6
|
-
export type
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
export type SelectLabel = string | number | undefined;
|
|
7
|
+
export type SelectPropLabel<MULTIPLE extends boolean> = (MULTIPLE extends true ? SelectLabel[] : SelectLabel) | undefined;
|
|
8
|
+
export type SelectValue = string | number | undefined;
|
|
9
|
+
export type SelectPropValue<MULTIPLE extends boolean> = DataListSelected<MULTIPLE>;
|
|
10
|
+
export type SelectedOptionProp<MULTIPLE extends boolean> = {
|
|
11
|
+
label?: SelectPropLabel<MULTIPLE>;
|
|
12
|
+
value?: SelectPropValue<MULTIPLE>;
|
|
11
13
|
};
|
|
12
|
-
export type SelectRenderValue = (option: SelectedOptionProp) => ReactNode | null;
|
|
14
|
+
export type SelectRenderValue<MULTIPLE extends boolean> = (option: SelectedOptionProp<MULTIPLE>) => ReactNode | null;
|
|
13
15
|
type SelectOpenControlledProps = {
|
|
14
16
|
/** Текущее состояние списка. Если `true`, список отображается. */
|
|
15
17
|
open?: boolean;
|
|
@@ -22,37 +24,48 @@ type SelectOpenUncontrolledProps = {
|
|
|
22
24
|
/** Состояние открытие по умолчанию (неконтролируемый компонент) */
|
|
23
25
|
defaultOpen: boolean;
|
|
24
26
|
};
|
|
25
|
-
type SelectControlledProps = {
|
|
27
|
+
type SelectControlledProps<MULTIPLE extends boolean = false> = {
|
|
26
28
|
/** Выбранное значение */
|
|
27
|
-
value?: SelectPropValue
|
|
29
|
+
value?: SelectPropValue<MULTIPLE>;
|
|
28
30
|
/** Обработчик события на изменение выбранного значения */
|
|
29
|
-
onChange?: (value: SelectPropValue
|
|
31
|
+
onChange?: (value: SelectPropValue<MULTIPLE>, e: SyntheticEvent | KeyboardEvent) => void;
|
|
30
32
|
/** Значение поля по умолчанию (неконтролируемый компонент) */
|
|
31
33
|
defaultValue?: never;
|
|
32
34
|
};
|
|
33
|
-
type SelectUncontrolledProps = {
|
|
35
|
+
type SelectUncontrolledProps<MULTIPLE extends boolean = false> = {
|
|
34
36
|
/** Значение поля по умолчанию (неконтролируемый компонент) */
|
|
35
|
-
defaultValue: SelectPropValue
|
|
37
|
+
defaultValue: SelectPropValue<MULTIPLE>;
|
|
36
38
|
/** Выбранное значение */
|
|
37
39
|
value?: never;
|
|
38
40
|
/** Обработчик события на изменение выбранного значения */
|
|
39
41
|
onChange?: never;
|
|
40
42
|
};
|
|
41
|
-
|
|
43
|
+
type SelectPropsDeprecated<MULTIPLE extends boolean = false> = {
|
|
44
|
+
/**
|
|
45
|
+
* Свойства компонента Menu
|
|
46
|
+
* @deprecated Используйте dataListProps
|
|
47
|
+
* */
|
|
48
|
+
menuProps?: Partial<Omit<DataListBaseProps<MULTIPLE>, 'onClose' | 'open' | 'anchorRef' | 'multiple' | 'selected' | 'onSelect'>>;
|
|
49
|
+
};
|
|
50
|
+
export type SelectProps<MULTIPLE extends boolean = false> = {
|
|
42
51
|
/** Если {true} устанавливает автофокус */
|
|
43
52
|
autoFocus?: boolean;
|
|
44
53
|
/** Размер компонента */
|
|
45
54
|
size?: SelectSizeVariant;
|
|
46
55
|
/** Рендер-функция для выбранного значения */
|
|
47
|
-
renderValue?: SelectRenderValue
|
|
56
|
+
renderValue?: SelectRenderValue<MULTIPLE>;
|
|
48
57
|
/** Содержимое компонента */
|
|
49
58
|
children?: ReactNode;
|
|
50
|
-
/** Свойства компонента
|
|
51
|
-
|
|
59
|
+
/** Свойства компонента DataList */
|
|
60
|
+
dataListProps?: Partial<Omit<DataListBaseProps<MULTIPLE>, 'onClose' | 'open' | 'anchorRef' | 'multiple' | 'selected' | 'onSelect'>>;
|
|
52
61
|
/** Функция обратного вызова, которая будет вызвана когда компонент запрашивает закрытие */
|
|
53
62
|
onClose?: () => void;
|
|
54
63
|
/** Функция обратного вызова, которая будет вызвана когда компонент запрашивает открытие */
|
|
55
64
|
onOpen?: () => void;
|
|
65
|
+
/** Если {true} из списка можно выбрать несколько вариантов */
|
|
66
|
+
multiple?: MULTIPLE;
|
|
67
|
+
/** Идентификатор компонента для тестов */
|
|
56
68
|
'data-testid'?: string;
|
|
57
|
-
} & Pick<SelectInputProps, 'id' | 'name' | '
|
|
69
|
+
} & Pick<SelectInputProps, 'id' | 'name' | 'label' | 'placeholder' | 'disabled' | 'required' | 'error' | 'hint' | 'fullWidth' | 'renderLeft' | 'renderRight' | 'multiline' | 'inputProps' | 'labelProps' | 'bodyProps' | 'inputRef' | 'labelRef' | 'bodyRef'> & Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'defaultValue'> & SelectPropsDeprecated<MULTIPLE> & (SelectControlledProps<MULTIPLE> | SelectUncontrolledProps<MULTIPLE>) & (SelectOpenControlledProps | SelectOpenUncontrolledProps);
|
|
70
|
+
export type SelectComponent = <MULTIPLE extends boolean = false>(props: SelectProps<MULTIPLE>) => ReactElement | null;
|
|
58
71
|
export {};
|
|
@@ -15,7 +15,7 @@ exports.Textarea = (0, react_1.forwardRef)(function (inProps, ref) {
|
|
|
15
15
|
props: inProps,
|
|
16
16
|
name: 'Textarea',
|
|
17
17
|
});
|
|
18
|
-
var _a = props.size, size = _a === void 0 ? constants_1.TEXTAREA_DEFAULT_SIZE : _a, autoFocus = props.autoFocus, maxLength = props.maxLength, expand = props.expand, placeholder = props.placeholder, id = props.id, name = props.name, error = props.error, fullWidth = props.fullWidth, cols = props.cols, rows = props.rows, className = props.className, label = props.label, hint = props.hint, value = props.value, defaultValue = props.defaultValue, onChange = props.onChange, required = props.required,
|
|
18
|
+
var _a = props.size, size = _a === void 0 ? constants_1.TEXTAREA_DEFAULT_SIZE : _a, autoFocus = props.autoFocus, maxLength = props.maxLength, expand = props.expand, placeholder = props.placeholder, id = props.id, name = props.name, error = props.error, fullWidth = props.fullWidth, cols = props.cols, rows = props.rows, className = props.className, label = props.label, hint = props.hint, value = props.value, defaultValue = props.defaultValue, onChange = props.onChange, required = props.required, disabled = props.disabled, textareaProps = props.textareaProps, labelProps = props.labelProps, labelRef = props.labelRef, textareaRef = props.textareaRef, other = tslib_1.__rest(props, ["size", "autoFocus", "maxLength", "expand", "placeholder", "id", "name", "error", "fullWidth", "cols", "rows", "className", "label", "hint", "value", "defaultValue", "onChange", "required", "disabled", "textareaProps", "labelProps", "labelRef", "textareaRef"]);
|
|
19
19
|
return (react_1.default.createElement(FieldControl_1.FieldControl, tslib_1.__assign({ size: size, error: error, disabled: disabled, required: required, fullWidth: fullWidth }, other, { className: (0, exports.cnTextarea)({
|
|
20
20
|
expand: expand,
|
|
21
21
|
}, [className]), ref: ref }),
|
|
@@ -7,13 +7,13 @@ export declare const textareaExpandVariant: readonly ["autoSize", "verticalResiz
|
|
|
7
7
|
export type TextareaExpandVariant = (typeof textareaExpandVariant)[number];
|
|
8
8
|
type TextareaPropsDeprecated = {
|
|
9
9
|
/**
|
|
10
|
-
* deprecated
|
|
11
10
|
* Ссылка на FieldLabel
|
|
11
|
+
* @deprecated Используйте labelProps.ref
|
|
12
12
|
* */
|
|
13
13
|
labelRef?: FieldLabelProps['ref'];
|
|
14
14
|
/**
|
|
15
|
-
* deprecated
|
|
16
15
|
* Ссылка на элемент textarea
|
|
16
|
+
* @deprecated Используйте textareaProps.ref
|
|
17
17
|
* */
|
|
18
18
|
textareaRef?: Ref<HTMLTextAreaElement>;
|
|
19
19
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
type ScrollContainerToElement = {
|
|
2
|
-
container?: HTMLElement;
|
|
3
|
-
element?: HTMLElement;
|
|
1
|
+
export type ScrollContainerToElement = {
|
|
2
|
+
container?: HTMLElement | null;
|
|
3
|
+
element?: HTMLElement | null;
|
|
4
4
|
behavior?: ScrollBehavior;
|
|
5
5
|
};
|
|
6
6
|
export declare function scrollContainerToElement({ container, element, behavior, }: ScrollContainerToElement): void;
|
|
7
|
-
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
.DataList
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
.DataList {
|
|
2
|
+
--scroll-bar-size: 12px;
|
|
3
|
+
}
|
|
4
|
+
.DataList::-webkit-scrollbar {
|
|
5
5
|
inline-size: var(--scroll-bar-size);
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
.DataList::-webkit-scrollbar-thumb {
|
|
8
8
|
background-color: var(--color-background-secondary);
|
|
9
9
|
border-radius: calc(var(--scroll-bar-size) / 2);
|
|
10
10
|
border: calc(var(--scroll-bar-size) / 4) solid transparent;
|
|
@@ -12,57 +12,30 @@
|
|
|
12
12
|
border-image: initial;
|
|
13
13
|
min-block-size: 24px;
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
.DataList
|
|
15
|
+
.DataList::-webkit-scrollbar-thumb:hover,
|
|
16
|
+
.DataList::-webkit-scrollbar-thumb:active {
|
|
17
17
|
border: calc(var(--scroll-bar-size) / 4) solid transparent;
|
|
18
18
|
background-clip: padding-box;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
.DataList::-webkit-scrollbar-thumb:hover {
|
|
21
21
|
background-color: var(--color-background-secondary-hover);
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
.DataList::-webkit-scrollbar-thumb:active {
|
|
24
24
|
background-color: var(--color-background-secondary-pressed);
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
.DataList::-webkit-scrollbar-corner {
|
|
27
27
|
background: transparent;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
.DataList {
|
|
30
|
+
overflow: hidden auto;
|
|
31
|
+
max-block-size: 40vb;
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
cursor: pointer;
|
|
35
|
-
}
|
|
36
|
-
.DataList-Option_focused {
|
|
37
|
-
box-shadow: inset var(--shadow-outline-focused);
|
|
38
|
-
}
|
|
39
|
-
.DataList-Option_highlighted {
|
|
40
|
-
background-color: var(--color-background-main-hover);
|
|
41
|
-
}
|
|
42
|
-
.DataList-Option_disabled {
|
|
43
|
-
cursor: not-allowed;
|
|
44
|
-
}
|
|
45
|
-
.DataList-Option_disabled .ListItemText-TextPrimary,
|
|
46
|
-
.DataList-Option_disabled .ListItemText-TextSecondary {
|
|
47
|
-
color: var(--color-content-tertiary);
|
|
48
|
-
}
|
|
49
|
-
.DataList-IconWrapper {
|
|
50
|
-
min-inline-size: var(--select-check-icon-size);
|
|
51
|
-
min-block-size: var(--select-check-icon-size);
|
|
52
|
-
display: flex;
|
|
53
|
-
}
|
|
54
|
-
.DataList-IconWrapper_size_s {
|
|
55
|
-
--select-check-icon-size: 16px;
|
|
56
|
-
}
|
|
57
|
-
.DataList-IconWrapper_size_m {
|
|
58
|
-
--select-check-icon-size: 24px;
|
|
59
|
-
}
|
|
60
|
-
.DataList_animation-enter {
|
|
33
|
+
.DataList-animation-enter {
|
|
61
34
|
opacity: 0;
|
|
62
35
|
transform: translate(0, calc(var(--space-s) * -1));
|
|
63
36
|
pointer-events: none;
|
|
64
37
|
}
|
|
65
|
-
.
|
|
38
|
+
.DataList-animation-enter-active {
|
|
66
39
|
opacity: 1;
|
|
67
40
|
transition:
|
|
68
41
|
opacity var(--transition-default),
|
|
@@ -70,16 +43,16 @@
|
|
|
70
43
|
transform: translate(0);
|
|
71
44
|
pointer-events: none;
|
|
72
45
|
}
|
|
73
|
-
.
|
|
46
|
+
.DataList-animation-enter-done {
|
|
74
47
|
opacity: 1;
|
|
75
48
|
transform: translate(0);
|
|
76
49
|
}
|
|
77
|
-
.
|
|
50
|
+
.DataList-animation-exit {
|
|
78
51
|
opacity: 1;
|
|
79
52
|
transform: translate(0);
|
|
80
53
|
pointer-events: none;
|
|
81
54
|
}
|
|
82
|
-
.
|
|
55
|
+
.DataList-animation-exit-active {
|
|
83
56
|
opacity: 0;
|
|
84
57
|
transition:
|
|
85
58
|
opacity var(--transition-default),
|
|
@@ -87,7 +60,7 @@
|
|
|
87
60
|
transform: translate(0, calc(var(--space-s) * -1));
|
|
88
61
|
pointer-events: none;
|
|
89
62
|
}
|
|
90
|
-
.
|
|
63
|
+
.DataList-animation-exit-done {
|
|
91
64
|
opacity: 0;
|
|
92
65
|
transform: translate(0, calc(var(--space-s) * -1));
|
|
93
66
|
pointer-events: none;
|