@ozen-ui/kit 0.18.0 → 0.20.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/ChipNext/package.json +5 -0
- package/__inner__/cjs/components/Avatar/Avatar.css +28 -25
- package/__inner__/cjs/components/Avatar/Avatar.d.ts +3 -3
- package/__inner__/cjs/components/Avatar/Avatar.js +15 -27
- package/__inner__/cjs/components/Avatar/utils.d.ts +6 -0
- package/__inner__/cjs/components/Avatar/utils.js +26 -0
- package/__inner__/cjs/components/Button/Button.d.ts +5 -5
- package/__inner__/cjs/components/Button/Button.js +12 -3
- package/__inner__/cjs/components/Chip/Chip.d.ts +3 -0
- package/__inner__/cjs/components/Chip/Chip.js +3 -0
- package/__inner__/cjs/components/ChipNext/Chip.css +108 -0
- package/__inner__/cjs/components/ChipNext/Chip.d.ts +42 -0
- package/__inner__/cjs/components/ChipNext/Chip.js +46 -0
- package/__inner__/cjs/components/ChipNext/constants.d.ts +4 -0
- package/__inner__/cjs/components/ChipNext/constants.js +7 -0
- package/__inner__/cjs/components/ChipNext/index.d.ts +1 -0
- package/__inner__/cjs/components/ChipNext/index.js +4 -0
- package/__inner__/cjs/components/FieldIcon/FieldIcon.d.ts +4 -7
- package/__inner__/cjs/components/FieldIcon/FieldIcon.js +5 -21
- package/__inner__/cjs/components/Grid/Grid.css +18 -0
- package/__inner__/cjs/components/Grid/Grid.d.ts +8 -0
- package/__inner__/cjs/components/Grid/Grid.js +12 -3
- package/__inner__/cjs/components/Modal/Modal.js +3 -7
- package/__inner__/cjs/components/Popover/Popover.js +1 -5
- package/__inner__/cjs/components/Table/components/TableRow/TableRow.css +6 -1
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +2 -2
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDark.css +1 -1
- package/__inner__/cjs/components/ThemeProvider/_color/Theme_color_ozenDefault.css +1 -1
- package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
- package/__inner__/cjs/utils/renderContent/index.d.ts +1 -0
- package/__inner__/cjs/utils/renderContent/index.js +4 -0
- package/__inner__/cjs/utils/renderContent/renderContent.d.ts +6 -0
- package/__inner__/cjs/utils/renderContent/renderContent.js +29 -0
- package/__inner__/esm/components/Avatar/Avatar.css +28 -25
- package/__inner__/esm/components/Avatar/Avatar.d.ts +3 -3
- package/__inner__/esm/components/Avatar/Avatar.js +14 -26
- package/__inner__/esm/components/Avatar/utils.d.ts +6 -0
- package/__inner__/esm/components/Avatar/utils.js +22 -0
- package/__inner__/esm/components/Button/Button.d.ts +5 -5
- package/__inner__/esm/components/Button/Button.js +12 -3
- package/__inner__/esm/components/Chip/Chip.d.ts +3 -0
- package/__inner__/esm/components/Chip/Chip.js +3 -0
- package/__inner__/esm/components/ChipNext/Chip.css +108 -0
- package/__inner__/esm/components/ChipNext/Chip.d.ts +42 -0
- package/__inner__/esm/components/ChipNext/Chip.js +43 -0
- package/__inner__/esm/components/ChipNext/constants.d.ts +4 -0
- package/__inner__/esm/components/ChipNext/constants.js +4 -0
- package/__inner__/esm/components/ChipNext/index.d.ts +1 -0
- package/__inner__/esm/components/ChipNext/index.js +1 -0
- package/__inner__/esm/components/FieldIcon/FieldIcon.d.ts +4 -7
- package/__inner__/esm/components/FieldIcon/FieldIcon.js +5 -21
- package/__inner__/esm/components/Grid/Grid.css +18 -0
- package/__inner__/esm/components/Grid/Grid.d.ts +8 -0
- package/__inner__/esm/components/Grid/Grid.js +11 -2
- package/__inner__/esm/components/Modal/Modal.js +3 -7
- package/__inner__/esm/components/Popover/Popover.js +1 -5
- package/__inner__/esm/components/Table/components/TableRow/TableRow.css +6 -1
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_bBusinessDefault.css +2 -2
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDark.css +1 -1
- package/__inner__/esm/components/ThemeProvider/_color/Theme_color_ozenDefault.css +1 -1
- package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
- package/__inner__/esm/utils/renderContent/index.d.ts +1 -0
- package/__inner__/esm/utils/renderContent/index.js +1 -0
- package/__inner__/esm/utils/renderContent/renderContent.d.ts +6 -0
- package/__inner__/esm/utils/renderContent/renderContent.js +25 -0
- package/package.json +1 -1
|
@@ -4,31 +4,12 @@ exports.FieldIcon = exports.cnFieldIcon = exports.FIELD_ICON_DEFAULT_TAG = void
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
require("./FieldIcon.css");
|
|
6
6
|
var react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
-
var react_is_1 = require("react-is");
|
|
8
7
|
var classname_1 = require("../../utils/classname");
|
|
9
8
|
var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement");
|
|
9
|
+
var renderContent_1 = require("../../utils/renderContent");
|
|
10
10
|
var FieldControl_1 = require("../FieldControl");
|
|
11
11
|
exports.FIELD_ICON_DEFAULT_TAG = 'div';
|
|
12
12
|
exports.cnFieldIcon = (0, classname_1.cn)('FieldIcon');
|
|
13
|
-
// TODO: взять за основу для всех рендер-функций
|
|
14
|
-
var resolveChildren = function (content, size) {
|
|
15
|
-
if (typeof content === 'string') {
|
|
16
|
-
return content;
|
|
17
|
-
}
|
|
18
|
-
if ((0, react_is_1.isElement)(content)) {
|
|
19
|
-
return react_1.default.cloneElement(content, {
|
|
20
|
-
size: content.props.size || (size && (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size)),
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
if (typeof content === 'function' && !react_1.default.isValidElement(content)) {
|
|
24
|
-
return content({ size: size && (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size) });
|
|
25
|
-
}
|
|
26
|
-
if ((0, react_is_1.isValidElementType)(content)) {
|
|
27
|
-
var Content = content;
|
|
28
|
-
return react_1.default.createElement(Content, { size: size && (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size) });
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
};
|
|
32
13
|
exports.FieldIcon = (0, react_1.forwardRef)(function (_a, ref) {
|
|
33
14
|
var icon = _a.icon, className = _a.className, sizeProp = _a.size, other = tslib_1.__rest(_a, ["icon", "className", "size"]);
|
|
34
15
|
var context = (0, react_1.useContext)(FieldControl_1.FieldControlContext);
|
|
@@ -43,6 +24,9 @@ exports.FieldIcon = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
43
24
|
size = fieldControl.size;
|
|
44
25
|
}
|
|
45
26
|
}
|
|
46
|
-
return (react_1.default.createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldIcon)({ size: size }, [className]) }, other, { ref: ref }),
|
|
27
|
+
return (react_1.default.createElement(Tag, tslib_1.__assign({ className: (0, exports.cnFieldIcon)({ size: size }, [className]) }, other, { ref: ref }), (0, renderContent_1.renderContent)({
|
|
28
|
+
content: icon,
|
|
29
|
+
props: { size: size && (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size) },
|
|
30
|
+
})));
|
|
47
31
|
});
|
|
48
32
|
exports.FieldIcon.displayName = 'FieldIcon';
|
|
@@ -158,6 +158,24 @@
|
|
|
158
158
|
.Grid_rowGap_8xl {
|
|
159
159
|
grid-row-gap: var(--space-8xl);
|
|
160
160
|
}
|
|
161
|
+
.Grid_align_start {
|
|
162
|
+
align-items: start;
|
|
163
|
+
}
|
|
164
|
+
.Grid_align_end {
|
|
165
|
+
align-items: end;
|
|
166
|
+
}
|
|
167
|
+
.Grid_align_center {
|
|
168
|
+
align-items: center;
|
|
169
|
+
}
|
|
170
|
+
.Grid_justify_start {
|
|
171
|
+
justify-items: start;
|
|
172
|
+
}
|
|
173
|
+
.Grid_justify_end {
|
|
174
|
+
justify-items: end;
|
|
175
|
+
}
|
|
176
|
+
.Grid_justify_center {
|
|
177
|
+
justify-items: center;
|
|
178
|
+
}
|
|
161
179
|
@media (min-width: 0) {
|
|
162
180
|
.Grid_gap_xs_0 {
|
|
163
181
|
grid-gap: 0;
|
|
@@ -5,6 +5,10 @@ export declare const gridColsVariant: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1
|
|
|
5
5
|
export type GridColsVariant = (typeof gridColsVariant)[number];
|
|
6
6
|
export declare const gridGapVariant: readonly ["0", "xs", "s", "m", "l", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "7xl", "8xl"];
|
|
7
7
|
export type GridGapVariant = (typeof gridGapVariant)[number];
|
|
8
|
+
export declare const gridAlignVariant: readonly ["start", "end", "center"];
|
|
9
|
+
export declare const gridJustifyVariant: readonly ["start", "end", "center"];
|
|
10
|
+
export type GridAlignVariant = (typeof gridAlignVariant)[number];
|
|
11
|
+
export type GridJustifyVariant = (typeof gridJustifyVariant)[number];
|
|
8
12
|
export declare const cnGrid: import("@bem-react/classname").ClassNameFormatter;
|
|
9
13
|
export type GridProps = {
|
|
10
14
|
/** Количество колонок в сетке */
|
|
@@ -15,6 +19,10 @@ export type GridProps = {
|
|
|
15
19
|
colGap?: ResponsiveValue<GridGapVariant>;
|
|
16
20
|
/** Отступы вокруг строки */
|
|
17
21
|
rowGap?: ResponsiveValue<GridGapVariant>;
|
|
22
|
+
/** Выравнивание */
|
|
23
|
+
align?: GridAlignVariant;
|
|
24
|
+
/** Пространство между элементами */
|
|
25
|
+
justify?: GridJustifyVariant;
|
|
18
26
|
/** Содержимое компонента */
|
|
19
27
|
children?: ReactNode;
|
|
20
28
|
/** Дополнительные СSS-классы */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Grid = exports.cnGrid = exports.gridGapVariant = exports.gridColsVariant = void 0;
|
|
3
|
+
exports.Grid = exports.cnGrid = exports.gridJustifyVariant = exports.gridAlignVariant = exports.gridGapVariant = exports.gridColsVariant = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
require("./Grid.css");
|
|
6
6
|
var react_1 = tslib_1.__importDefault(require("react"));
|
|
@@ -26,13 +26,22 @@ exports.gridGapVariant = [
|
|
|
26
26
|
'7xl',
|
|
27
27
|
'8xl',
|
|
28
28
|
];
|
|
29
|
+
exports.gridAlignVariant = ['start', 'end', 'center'];
|
|
30
|
+
exports.gridJustifyVariant = ['start', 'end', 'center'];
|
|
29
31
|
exports.cnGrid = (0, classname_1.cn)('Grid');
|
|
30
32
|
exports.Grid = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
|
|
31
33
|
var props = (0, useThemeProps_1.useThemeProps)({
|
|
32
34
|
props: inProps,
|
|
33
35
|
name: 'Grid',
|
|
34
36
|
});
|
|
35
|
-
var _a = props.cols, cols = _a === void 0 ? constants_1.GRID_DEFAULT_COLS : _a, _b = props.gap, gap = _b === void 0 ? constants_1.GRID_DEFAULT_GAP : _b, _c = props.as, Tag = _c === void 0 ? constants_1.GRID_DEFAULT_TAG : _c, colGap = props.colGap, rowGap = props.rowGap, children = props.children, className = props.className, other = tslib_1.__rest(props, ["cols", "gap", "as", "colGap", "rowGap", "children", "className"]);
|
|
36
|
-
return (react_1.default.createElement(Tag, tslib_1.__assign({ className: (0, classnames_1.classnames)((0, exports.cnGrid)({}), (0, useGrid_1.useGenerateGridModsCn)(exports.cnGrid, {
|
|
37
|
+
var _a = props.cols, cols = _a === void 0 ? constants_1.GRID_DEFAULT_COLS : _a, _b = props.gap, gap = _b === void 0 ? constants_1.GRID_DEFAULT_GAP : _b, _c = props.as, Tag = _c === void 0 ? constants_1.GRID_DEFAULT_TAG : _c, colGap = props.colGap, rowGap = props.rowGap, align = props.align, justify = props.justify, children = props.children, className = props.className, other = tslib_1.__rest(props, ["cols", "gap", "as", "colGap", "rowGap", "align", "justify", "children", "className"]);
|
|
38
|
+
return (react_1.default.createElement(Tag, tslib_1.__assign({ className: (0, classnames_1.classnames)((0, exports.cnGrid)({}), (0, useGrid_1.useGenerateGridModsCn)(exports.cnGrid, {
|
|
39
|
+
cols: cols,
|
|
40
|
+
gap: gap,
|
|
41
|
+
colGap: colGap,
|
|
42
|
+
rowGap: rowGap,
|
|
43
|
+
align: align,
|
|
44
|
+
justify: justify,
|
|
45
|
+
}), className) }, other, { ref: ref }), children));
|
|
37
46
|
});
|
|
38
47
|
exports.Grid.displayName = 'Grid';
|
|
@@ -22,7 +22,6 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
22
22
|
var hasBackdrop = !hideBackdrop;
|
|
23
23
|
var modalInnerRef = (0, react_1.useRef)(null);
|
|
24
24
|
var focusedElement = (0, react_1.useRef)(null);
|
|
25
|
-
var isClickOutSide = (0, react_1.useRef)(null);
|
|
26
25
|
var _h = tslib_1.__read((0, react_1.useState)(false), 2), openState = _h[0], setOpenState = _h[1];
|
|
27
26
|
var _j = tslib_1.__read((0, react_1.useState)(false), 2), opened = _j[0], setOpened = _j[1];
|
|
28
27
|
var _k = (0, index_1.useModalManager)(modalInnerRef, 1000, openState), isTop = _k.isTop, refsClickOutside = _k.refsClickOutside;
|
|
@@ -31,7 +30,6 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
31
30
|
modalInnerRef
|
|
32
31
|
], tslib_1.__read(refsClickOutside), false), tslib_1.__read((ignoreClickOutsideRefs || [])), false),
|
|
33
32
|
handler: function () {
|
|
34
|
-
isClickOutSide.current = true;
|
|
35
33
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
36
34
|
},
|
|
37
35
|
active: !disableClickOutside,
|
|
@@ -43,7 +41,6 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
43
41
|
// Сохраняем фокус активного элемента до момента открытия всплывающего окна
|
|
44
42
|
if (open) {
|
|
45
43
|
setOpened(true);
|
|
46
|
-
isClickOutSide.current = null;
|
|
47
44
|
focusedElement.current =
|
|
48
45
|
document.activeElement;
|
|
49
46
|
(_a = focusedElement.current) === null || _a === void 0 ? void 0 : _a.blur();
|
|
@@ -57,10 +54,9 @@ exports.Modal = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
57
54
|
var onExited = (0, react_1.useCallback)(function () {
|
|
58
55
|
var _a, _b;
|
|
59
56
|
// Возвращаем фокус активного элемента
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
57
|
+
if (((_a = modalInnerRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement)) ||
|
|
58
|
+
document.activeElement === document.body) {
|
|
59
|
+
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus({ preventScroll: true });
|
|
64
60
|
}
|
|
65
61
|
setOpened(false);
|
|
66
62
|
onExitedProp === null || onExitedProp === void 0 ? void 0 : onExitedProp();
|
|
@@ -23,7 +23,6 @@ exports.cnPopover = (0, classname_1.cn)('Popover');
|
|
|
23
23
|
exports.Popover = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)(function (inProps, ref) {
|
|
24
24
|
var props = (0, useThemeProps_1.useThemeProps)({ props: inProps, name: 'Popover' });
|
|
25
25
|
var _a = props.arrow, arrow = _a === void 0 ? constants_1.POPOVER_DEFAULT_ARROW : _a, _b = props.open, open = _b === void 0 ? constants_1.POPOVER_DEFAULT_OPEN : _b, _c = props.disableInteractive, disableInteractive = _c === void 0 ? constants_1.POPOVER_DEFAULT_DISABLE_INTERACTIVE : _c, _d = props.disableEnforceFocus, disableEnforceFocus = _d === void 0 ? constants_1.POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS : _d, _e = props.disableReturnFocus, disableReturnFocus = _e === void 0 ? constants_1.POPOVER_DEFAULT_DISABLE_RETURN_FOCUS : _e, _f = props.disableClickOutside, disableClickOutside = _f === void 0 ? constants_1.POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE : _f, _g = props.placement, placement = _g === void 0 ? constants_1.POPOVER_DEFAULT_PLACEMENT : _g, ignoreClickOutsideRefs = props.ignoreClickOutsideRefs, arrowProps = props.arrowProps, anchorRef = props.anchorRef, equalAnchorWidth = props.equalAnchorWidth, offset = props.offset, children = props.children, transitionProps = props.transitionProps, onClose = props.onClose, onEnter = props.onEnter, onEntered = props.onEntered, onExit = props.onExit, onExitedProp = props.onExited, className = props.className, position = props.position, style = props.style, setUpdate = props.setUpdate, _h = props.as, as = _h === void 0 ? constants_1.POPOVER_DEFAULT_TAG : _h, other = tslib_1.__rest(props, ["arrow", "open", "disableInteractive", "disableEnforceFocus", "disableReturnFocus", "disableClickOutside", "placement", "ignoreClickOutsideRefs", "arrowProps", "anchorRef", "equalAnchorWidth", "offset", "children", "transitionProps", "onClose", "onEnter", "onEntered", "onExit", "onExited", "className", "position", "style", "setUpdate", "as"]);
|
|
26
|
-
var isClickOutSide = (0, react_1.useRef)(null);
|
|
27
26
|
var _j = tslib_1.__read((0, react_1.useState)(false), 2), openState = _j[0], setOpenState = _j[1];
|
|
28
27
|
var focusedElement = (0, react_1.useRef)(null);
|
|
29
28
|
var popoverRef = (0, react_1.useRef)(null);
|
|
@@ -49,7 +48,6 @@ exports.Popover = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)
|
|
|
49
48
|
popoverRef
|
|
50
49
|
], tslib_1.__read(refsClickOutside), false), tslib_1.__read((anchorRef ? [anchorRef] : [])), false), tslib_1.__read((ignoreClickOutsideRefs || [])), false),
|
|
51
50
|
handler: function () {
|
|
52
|
-
isClickOutSide.current = true;
|
|
53
51
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
54
52
|
},
|
|
55
53
|
active: openState && !disableClickOutside,
|
|
@@ -58,10 +56,9 @@ exports.Popover = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)
|
|
|
58
56
|
var _a, _b;
|
|
59
57
|
// Возвращаем фокус активного элемента
|
|
60
58
|
if (!disableReturnFocus &&
|
|
61
|
-
!isClickOutSide.current &&
|
|
62
59
|
(((_a = popoverRef.current) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement)) ||
|
|
63
60
|
document.activeElement === document.body)) {
|
|
64
|
-
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
61
|
+
(_b = focusedElement.current) === null || _b === void 0 ? void 0 : _b.focus({ preventScroll: true });
|
|
65
62
|
}
|
|
66
63
|
onExitedProp === null || onExitedProp === void 0 ? void 0 : onExitedProp();
|
|
67
64
|
}, [onExitedProp]);
|
|
@@ -136,7 +133,6 @@ exports.Popover = (0, polymorphicComponentWithRef_1.polymorphicComponentWithRef)
|
|
|
136
133
|
var _a;
|
|
137
134
|
// Сохраняем фокус активного элемента до момента открытия всплывающего окна
|
|
138
135
|
if (open && !disableReturnFocus) {
|
|
139
|
-
isClickOutSide.current = null;
|
|
140
136
|
focusedElement.current =
|
|
141
137
|
document.activeElement;
|
|
142
138
|
(_a = focusedElement.current) === null || _a === void 0 ? void 0 : _a.blur();
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
.
|
|
1
|
+
.TableRow {
|
|
2
|
+
transition: background-color var(--transition-slow);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.TableRow_hover:hover {
|
|
2
6
|
outline: none;
|
|
3
7
|
background-color: var(--color-background-primary-hover);
|
|
4
8
|
}
|
|
9
|
+
|
|
5
10
|
.TableRow_hover:active,
|
|
6
11
|
.TableRow_selected {
|
|
7
12
|
outline: none;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
--color-content-primary-inverse: #fff;
|
|
30
30
|
--color-content-accent-main: #a0a0a0;
|
|
31
31
|
--color-accent-main: #181818;
|
|
32
|
-
--color-content-accent-primary: #
|
|
32
|
+
--color-content-accent-primary: #dcdcdc;
|
|
33
33
|
--color-accent-primary: #282828;
|
|
34
34
|
--color-content-accent-disabled: #606060;
|
|
35
35
|
--color-background-main: #fff;
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
--color-accent-tertiary-pressed: #686868;
|
|
125
125
|
--color-accent-disabled: #484848;
|
|
126
126
|
--color-accent-secondary-inverse: #808080;
|
|
127
|
-
--color-accent-main-inverse: #
|
|
127
|
+
--color-accent-main-inverse: #dcdcdc;
|
|
128
128
|
--color-additional-a1: #0b6abe;
|
|
129
129
|
--color-additional-a2: #1899e9;
|
|
130
130
|
--color-additional-a3: #b3f1ff;
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
--color-background-main-inverse: #f5f5f5;
|
|
31
31
|
--color-content-accent-main: #a0a0a0;
|
|
32
32
|
--color-accent-main: #181818;
|
|
33
|
-
--color-content-accent-primary: #
|
|
33
|
+
--color-content-accent-primary: #dcdcdc;
|
|
34
34
|
--color-accent-primary: #282828;
|
|
35
35
|
--color-content-accent-disabled: #606060;
|
|
36
36
|
--color-background-main-hover: #2c2c2c;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
--color-content-primary-inverse: #fff;
|
|
30
30
|
--color-content-accent-main: #a0a0a0;
|
|
31
31
|
--color-accent-main: #181818;
|
|
32
|
-
--color-content-accent-primary: #
|
|
32
|
+
--color-content-accent-primary: #dcdcdc;
|
|
33
33
|
--color-accent-primary: #282828;
|
|
34
34
|
--color-content-accent-disabled: #606060;
|
|
35
35
|
--color-background-main: #fff;
|
|
@@ -8,6 +8,7 @@ import type { CardProps } from '../Card';
|
|
|
8
8
|
import type { CheckboxProps } from '../Checkbox';
|
|
9
9
|
import type { CheckboxGroupProps } from '../CheckboxGroup';
|
|
10
10
|
import type { ChipProps } from '../Chip';
|
|
11
|
+
import type { ChipProps as ChiPropsNext } from '../ChipNext';
|
|
11
12
|
import type { CollapseProps } from '../Collapse';
|
|
12
13
|
import type { ContainerProps } from '../Container';
|
|
13
14
|
import type { DataListProps } from '../DataList';
|
|
@@ -69,6 +70,7 @@ export type Theme = {
|
|
|
69
70
|
Checkbox?: Partial<CheckboxProps>;
|
|
70
71
|
CheckboxGroup?: Partial<CheckboxGroupProps>;
|
|
71
72
|
Chip?: Partial<ChipProps>;
|
|
73
|
+
ChipNext?: Partial<ChiPropsNext>;
|
|
72
74
|
Collapse?: Partial<CollapseProps>;
|
|
73
75
|
Container?: Partial<ContainerProps>;
|
|
74
76
|
DataList?: Partial<DataListProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './renderContent';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FC, ReactElement, ReactNode } from 'react';
|
|
2
|
+
export type RenderContentType<Props extends object> = {
|
|
3
|
+
content?: string | number | FC<Props> | ReactElement<Props> | (() => ReactElement<Props>);
|
|
4
|
+
props?: Props;
|
|
5
|
+
};
|
|
6
|
+
export declare function renderContent<Props extends object>({ content, props, }: RenderContentType<Props>): ReactNode;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderContent = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
var react_is_1 = require("react-is");
|
|
7
|
+
var mergeDeep_1 = require("../../utils/mergeDeep");
|
|
8
|
+
function renderContent(_a) {
|
|
9
|
+
var content = _a.content, props = _a.props;
|
|
10
|
+
// primitives: string or number
|
|
11
|
+
if (typeof content === 'string' || typeof content === 'number') {
|
|
12
|
+
return content;
|
|
13
|
+
}
|
|
14
|
+
// react-element
|
|
15
|
+
if ((0, react_is_1.isElement)(content)) {
|
|
16
|
+
return (0, react_1.cloneElement)(content, (0, mergeDeep_1.mergeDeep)(props, content.props));
|
|
17
|
+
}
|
|
18
|
+
// render-function
|
|
19
|
+
if (typeof content === 'function' && !(0, react_1.isValidElement)(content)) {
|
|
20
|
+
return content(props);
|
|
21
|
+
}
|
|
22
|
+
// react-component
|
|
23
|
+
if ((0, react_is_1.isValidElementType)(content)) {
|
|
24
|
+
var Content = content;
|
|
25
|
+
return react_1.default.createElement(Content, tslib_1.__assign({}, props));
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
exports.renderContent = renderContent;
|
|
@@ -1,112 +1,115 @@
|
|
|
1
1
|
.Avatar {
|
|
2
2
|
--avatar-size: 100%;
|
|
3
|
+
--avatar-color: var(--color-content-action-on);
|
|
4
|
+
--avatar-bg-color: unset;
|
|
3
5
|
display: flex;
|
|
4
6
|
align-items: center;
|
|
5
7
|
justify-content: center;
|
|
6
8
|
flex-shrink: 0;
|
|
7
9
|
inline-size: var(--avatar-size);
|
|
8
10
|
block-size: var(--avatar-size);
|
|
11
|
+
color: var(--avatar-color);
|
|
12
|
+
background-color: var(--avatar-bg-color);
|
|
9
13
|
font-family: Roboto, sans-serif;
|
|
10
14
|
border-radius: 50%;
|
|
11
15
|
position: relative;
|
|
12
16
|
overflow: visible;
|
|
13
|
-
color: var(--color-content-action-on);
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
.Avatar_color_a1 {
|
|
17
|
-
|
|
20
|
+
--avatar-bg-color: var(--color-additional-a1);
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
.Avatar_color_a2 {
|
|
21
|
-
|
|
24
|
+
--avatar-bg-color: var(--color-additional-a2);
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
.Avatar_color_a3 {
|
|
25
|
-
|
|
28
|
+
--avatar-bg-color: var(--color-additional-a3);
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
.Avatar_color_b1 {
|
|
29
|
-
|
|
32
|
+
--avatar-bg-color: var(--color-additional-b1);
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
.Avatar_color_b2 {
|
|
33
|
-
|
|
36
|
+
--avatar-bg-color: var(--color-additional-b2);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
.Avatar_color_b3 {
|
|
37
|
-
|
|
40
|
+
--avatar-bg-color: var(--color-additional-b3);
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
.Avatar_color_c1 {
|
|
41
|
-
|
|
44
|
+
--avatar-bg-color: var(--color-additional-c1);
|
|
42
45
|
}
|
|
43
46
|
|
|
44
47
|
.Avatar_color_c2 {
|
|
45
|
-
|
|
48
|
+
--avatar-bg-color: var(--color-additional-c2);
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
.Avatar_color_c3 {
|
|
49
|
-
|
|
52
|
+
--avatar-bg-color: var(--color-additional-c3);
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
.Avatar_color_d1 {
|
|
53
|
-
|
|
56
|
+
--avatar-bg-color: var(--color-additional-d1);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
.Avatar_color_d2 {
|
|
57
|
-
|
|
60
|
+
--avatar-bg-color: var(--color-additional-d2);
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
.Avatar_color_d3 {
|
|
61
|
-
|
|
64
|
+
--avatar-bg-color: var(--color-additional-d3);
|
|
62
65
|
}
|
|
63
66
|
|
|
64
67
|
.Avatar_color_e1 {
|
|
65
|
-
|
|
68
|
+
--avatar-bg-color: var(--color-additional-e1);
|
|
66
69
|
}
|
|
67
70
|
|
|
68
71
|
.Avatar_color_e2 {
|
|
69
|
-
|
|
72
|
+
--avatar-bg-color: var(--color-additional-e2);
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
.Avatar_color_e3 {
|
|
73
|
-
|
|
76
|
+
--avatar-bg-color: var(--color-additional-e3);
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
.Avatar_color_f1 {
|
|
77
|
-
|
|
80
|
+
--avatar-bg-color: var(--color-additional-f1);
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
.Avatar_color_f2 {
|
|
81
|
-
|
|
84
|
+
--avatar-bg-color: var(--color-additional-f2);
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
.Avatar_color_f3 {
|
|
85
|
-
|
|
88
|
+
--avatar-bg-color: var(--color-additional-f3);
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
.Avatar_color_g1 {
|
|
89
|
-
|
|
92
|
+
--avatar-bg-color: var(--color-additional-g1);
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
.Avatar_color_g2 {
|
|
93
|
-
|
|
96
|
+
--avatar-bg-color: var(--color-additional-g2);
|
|
94
97
|
}
|
|
95
98
|
|
|
96
99
|
.Avatar_color_g3 {
|
|
97
|
-
|
|
100
|
+
--avatar-bg-color: var(--color-additional-g3);
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
.Avatar_color_h1 {
|
|
101
|
-
|
|
104
|
+
--avatar-bg-color: var(--color-additional-h1);
|
|
102
105
|
}
|
|
103
106
|
|
|
104
107
|
.Avatar_color_h2 {
|
|
105
|
-
|
|
108
|
+
--avatar-bg-color: var(--color-additional-h2);
|
|
106
109
|
}
|
|
107
110
|
|
|
108
111
|
.Avatar_color_h3 {
|
|
109
|
-
|
|
112
|
+
--avatar-bg-color: var(--color-additional-h3);
|
|
110
113
|
}
|
|
111
114
|
|
|
112
115
|
.Avatar-Image {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './Avatar.css';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import type { ComponentPropsWithRef, ComponentRef } from 'react';
|
|
3
|
+
import type { ComponentPropsWithRef, ComponentRef, ReactNode } from 'react';
|
|
4
4
|
import type { IndicatorProps } from '../Indicator';
|
|
5
5
|
export declare const avatarSizeVariant: readonly ["4xs", "3xs", "2xs", "xs", "s", "m", "l", "xl"];
|
|
6
6
|
export declare const avatarHueVariant: number[];
|
|
@@ -16,14 +16,14 @@ export type AvatarProps = {
|
|
|
16
16
|
/** Url изображения */
|
|
17
17
|
src?: string;
|
|
18
18
|
/** Имя пользователя */
|
|
19
|
-
name
|
|
19
|
+
name?: string;
|
|
20
20
|
/** Цветовой оттенок аватарки (при использовании без src) */
|
|
21
21
|
hue?: AvatarHueVariant;
|
|
22
22
|
/** Дополнительные СSS-классы */
|
|
23
23
|
className?: string;
|
|
24
24
|
/** Свойства компонента Indicator */
|
|
25
25
|
indicatorProps?: IndicatorProps;
|
|
26
|
-
children?:
|
|
26
|
+
children?: ReactNode;
|
|
27
27
|
} & ComponentPropsWithRef<typeof avatarEl>;
|
|
28
28
|
export declare const cnAvatar: import("@bem-react/classname").ClassNameFormatter;
|
|
29
29
|
export declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -7,6 +7,7 @@ import { cn } from '../../utils/classname';
|
|
|
7
7
|
import { Indicator } from '../Indicator';
|
|
8
8
|
import { AVATAR_DEFAULT_HUE, AVATAR_DEFAULT_ONLINE, AVATAR_DEFAULT_SIZE, } from './constants';
|
|
9
9
|
import { getHashNumber } from './get-hash-number';
|
|
10
|
+
import { matchSizeIndicatorToAvatar, getInitials } from './utils';
|
|
10
11
|
export var avatarSizeVariant = [
|
|
11
12
|
'4xs',
|
|
12
13
|
'3xs',
|
|
@@ -20,38 +21,25 @@ export var avatarSizeVariant = [
|
|
|
20
21
|
export var avatarHueVariant = [1, 2, 3];
|
|
21
22
|
var avatarEl = 'div';
|
|
22
23
|
export var cnAvatar = cn('Avatar');
|
|
23
|
-
var getInitials = function (name) {
|
|
24
|
-
var _a, _b, _c;
|
|
25
|
-
var parts = name.split(' ');
|
|
26
|
-
var initials;
|
|
27
|
-
if (parts.length === 1) {
|
|
28
|
-
initials = ((_a = parts[0]) === null || _a === void 0 ? void 0 : _a.charAt(0)) || '';
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
initials = ((_b = parts.shift()) !== null && _b !== void 0 ? _b : '').charAt(0) + ((_c = parts.pop()) !== null && _c !== void 0 ? _c : '').charAt(0);
|
|
32
|
-
}
|
|
33
|
-
return initials.toUpperCase();
|
|
34
|
-
};
|
|
35
|
-
var matchSizeIndicatorToAvatar = {
|
|
36
|
-
'4xs': 'xs',
|
|
37
|
-
'3xs': 'xs',
|
|
38
|
-
'2xs': 'xs',
|
|
39
|
-
xs: 's',
|
|
40
|
-
s: 's',
|
|
41
|
-
m: 's',
|
|
42
|
-
l: 'm',
|
|
43
|
-
xl: 'm',
|
|
44
|
-
};
|
|
45
24
|
export var Avatar = forwardRef(function (inProps, ref) {
|
|
46
25
|
var props = useThemeProps({ props: inProps, name: 'Avatar' });
|
|
47
|
-
var _a = props.size, size = _a === void 0 ? AVATAR_DEFAULT_SIZE : _a, _b = props.online, online = _b === void 0 ? AVATAR_DEFAULT_ONLINE : _b, _c = props.hue, hue = _c === void 0 ? AVATAR_DEFAULT_HUE : _c, src = props.src,
|
|
26
|
+
var _a = props.size, size = _a === void 0 ? AVATAR_DEFAULT_SIZE : _a, _b = props.online, online = _b === void 0 ? AVATAR_DEFAULT_ONLINE : _b, _c = props.hue, hue = _c === void 0 ? AVATAR_DEFAULT_HUE : _c, src = props.src, nameProp = props.name, className = props.className, indicatorProps = props.indicatorProps, children = props.children, other = __rest(props, ["size", "online", "hue", "src", "name", "className", "indicatorProps", "children"]);
|
|
27
|
+
var name = nameProp || '';
|
|
48
28
|
var _d = __read(useBoolean(!!src), 2), showImage = _d[0], off = _d[1].off;
|
|
49
29
|
var indicatorSize = matchSizeIndicatorToAvatar[size];
|
|
50
30
|
var colorShades = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
|
|
51
31
|
var color = "".concat(colorShades[getHashNumber(name, colorShades.length)]).concat(hue);
|
|
52
|
-
var
|
|
32
|
+
var renderContent = function () {
|
|
33
|
+
if (children) {
|
|
34
|
+
return children;
|
|
35
|
+
}
|
|
36
|
+
if (src && showImage) {
|
|
37
|
+
return (React.createElement("img", { src: src, alt: name, className: cnAvatar('Image'), onError: off }));
|
|
38
|
+
}
|
|
39
|
+
return getInitials(name);
|
|
40
|
+
};
|
|
53
41
|
return (React.createElement("div", __assign({ className: cnAvatar({ size: size, color: !showImage && color }, [className]) }, other, { ref: ref }),
|
|
54
|
-
|
|
55
|
-
online && (React.createElement(Indicator, __assign({ variant: "success", size: indicatorSize, className: cnAvatar('Online'
|
|
42
|
+
renderContent(),
|
|
43
|
+
online && (React.createElement(Indicator, __assign({ variant: "success", size: indicatorSize, border: true }, indicatorProps, { className: cnAvatar('Online', indicatorProps === null || indicatorProps === void 0 ? void 0 : indicatorProps.className) })))));
|
|
56
44
|
});
|
|
57
45
|
Avatar.displayName = 'Avatar';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IndicatorSizeVariant } from '../Indicator';
|
|
2
|
+
import type { AvatarSizeVariant } from './index';
|
|
3
|
+
export declare const getInitials: (name: string) => string;
|
|
4
|
+
export declare const matchSizeIndicatorToAvatar: {
|
|
5
|
+
[key in AvatarSizeVariant]: IndicatorSizeVariant;
|
|
6
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export var getInitials = function (name) {
|
|
2
|
+
var _a, _b, _c;
|
|
3
|
+
var parts = name.split(' ');
|
|
4
|
+
var initials;
|
|
5
|
+
if (parts.length === 1) {
|
|
6
|
+
initials = ((_a = parts[0]) === null || _a === void 0 ? void 0 : _a.charAt(0)) || '';
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
initials = ((_b = parts.shift()) !== null && _b !== void 0 ? _b : '').charAt(0) + ((_c = parts.pop()) !== null && _c !== void 0 ? _c : '').charAt(0);
|
|
10
|
+
}
|
|
11
|
+
return initials.toUpperCase();
|
|
12
|
+
};
|
|
13
|
+
export var matchSizeIndicatorToAvatar = {
|
|
14
|
+
'4xs': 'xs',
|
|
15
|
+
'3xs': 'xs',
|
|
16
|
+
'2xs': 'xs',
|
|
17
|
+
xs: 's',
|
|
18
|
+
s: 's',
|
|
19
|
+
m: 's',
|
|
20
|
+
l: 'm',
|
|
21
|
+
xl: 'm',
|
|
22
|
+
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import './Button.css';
|
|
2
|
-
import React from 'react';
|
|
3
2
|
import type { ReactNode, ElementType } from 'react';
|
|
4
3
|
import type { IconProps, IconSize } from '@ozen-ui/icons';
|
|
5
4
|
import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant';
|
|
6
5
|
import type { PolymorphicComponentPropsWithoutRef } from '../../utils/polymorphicComponentWithRef';
|
|
6
|
+
import type { RenderContentType } from '../../utils/renderContent';
|
|
7
7
|
import { BUTTON_DEFAULT_TAG } from './constants';
|
|
8
8
|
export declare const buttonVariant: readonly ["contained", "outlined", "ghost", "function"];
|
|
9
9
|
export declare const buttonColorVariant: readonly ["primary", "secondary", "warning", "error"];
|
|
10
10
|
export type ButtonVariant = (typeof buttonVariant)[number];
|
|
11
11
|
export type ButtonColorVariant = (typeof buttonColorVariant)[number];
|
|
12
|
-
export type
|
|
12
|
+
export type ButtonIcon = RenderContentType<IconProps & {
|
|
13
13
|
size?: IconSize;
|
|
14
|
-
}
|
|
14
|
+
}>['content'];
|
|
15
15
|
type ButtonBaseProps = {
|
|
16
16
|
/**
|
|
17
17
|
* Вариант отображения кнопки
|
|
@@ -37,9 +37,9 @@ type ButtonBaseProps = {
|
|
|
37
37
|
/** Дополнительные CSS-классы */
|
|
38
38
|
className?: string;
|
|
39
39
|
/** Иконка слева */
|
|
40
|
-
iconLeft?:
|
|
40
|
+
iconLeft?: ButtonIcon;
|
|
41
41
|
/** Иконка справа */
|
|
42
|
-
iconRight?:
|
|
42
|
+
iconRight?: ButtonIcon;
|
|
43
43
|
/** Если {true} растягивает кнопку на всю ширину родительского контейнера */
|
|
44
44
|
fullWidth?: boolean;
|
|
45
45
|
};
|