@sima-land/ui-nucleons 45.0.0-alpha.2 → 45.0.0-alpha.4
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/_internal/custom-scrollbar/index.d.ts +2 -2
- package/_internal/custom-scrollbar/index.js +37 -12
- package/arrow-button/arrow-button.module.scss +5 -5
- package/avatar/avatar.module.scss +3 -0
- package/avatar/index.js +4 -4
- package/avatar/utils.d.ts +1 -1
- package/avatar/utils.js +12 -10
- package/group-overflow/group-overflow.module.scss +24 -0
- package/group-overflow/index.d.ts +16 -0
- package/group-overflow/index.js +63 -0
- package/group-overflow/utils.d.ts +20 -0
- package/group-overflow/utils.js +74 -0
- package/hint/utils.d.ts +7 -3
- package/hint/utils.js +7 -5
- package/modal/index.d.ts +3 -1
- package/modal/index.js +2 -2
- package/package.json +1 -1
- package/styling/borders.d.ts +1 -0
- package/styling/borders.js +1 -0
- package/styling/colors.d.ts +5 -0
- package/styling/colors.js +5 -0
- package/styling/fonts.d.ts +3 -0
- package/styling/fonts.js +3 -0
- package/styling/shadows.d.ts +1 -0
- package/styling/shadows.js +1 -0
- package/styling/shapes.d.ts +2 -0
- package/styling/shapes.js +2 -0
- package/styling/sizes.d.ts +10 -0
- package/styling/sizes.js +10 -0
- package/styling/utils.d.ts +1 -0
- package/styling/utils.js +1 -0
- package/text-button/text-button.module.scss +1 -1
- package/top-bar/index.d.ts +1 -1
- package/top-bar/index.js +3 -1
- package/top-bar/types.d.ts +3 -3
- package/utils.scss +8 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CSSProperties, ReactNode, Ref } from 'react';
|
|
1
|
+
import { CSSProperties, ReactNode, Ref, UIEvent as ReactUIEvent } from 'react';
|
|
2
2
|
import { OverlayScrollbarsComponent, OverlayScrollbarsComponentProps } from 'overlayscrollbars-react';
|
|
3
3
|
import 'overlayscrollbars/css/OverlayScrollbars.css';
|
|
4
4
|
type Options = NonNullable<OverlayScrollbarsComponentProps['options']>;
|
|
@@ -32,7 +32,7 @@ export declare function CustomScrollbar({ osComponentRef, style, className, chil
|
|
|
32
32
|
* @param threshold Запас.
|
|
33
33
|
* @return Обработчик.
|
|
34
34
|
*/
|
|
35
|
-
export declare function
|
|
35
|
+
export declare function useFullScroll(callback: VoidFunction | undefined, threshold?: number): (event: UIEvent | ReactUIEvent | undefined) => void;
|
|
36
36
|
/**
|
|
37
37
|
* Получив OverlayScrollbarsComponent вернет элемент-viewport или null.
|
|
38
38
|
* @param component Экземпляр OverlayScrollbarsComponent.
|
|
@@ -1,14 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getViewport = exports.
|
|
7
|
-
const react_1 =
|
|
29
|
+
exports.getViewport = exports.useFullScroll = exports.CustomScrollbar = void 0;
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
8
31
|
const overlayscrollbars_react_1 = require("overlayscrollbars-react");
|
|
9
32
|
const bind_1 = __importDefault(require("classnames/bind"));
|
|
10
33
|
const custom_scrollbar_module_scss_1 = __importDefault(require("./custom-scrollbar.module.scss"));
|
|
11
34
|
require("overlayscrollbars/css/OverlayScrollbars.css");
|
|
35
|
+
const identity_1 = require("../../hooks/identity");
|
|
12
36
|
const cx = bind_1.default.bind(custom_scrollbar_module_scss_1.default);
|
|
13
37
|
/**
|
|
14
38
|
* Компонент блока с кастомными полосами прокрутки по гайдам.
|
|
@@ -16,13 +40,10 @@ const cx = bind_1.default.bind(custom_scrollbar_module_scss_1.default);
|
|
|
16
40
|
* @return Элемент.
|
|
17
41
|
*/
|
|
18
42
|
function CustomScrollbar({ osComponentRef, style, className, children, overflow, inFlexBox = false, onFullScroll, fullScrollThreshold, }) {
|
|
43
|
+
const onScrollStop = useFullScroll(onFullScroll, fullScrollThreshold);
|
|
19
44
|
return (react_1.default.createElement(overlayscrollbars_react_1.OverlayScrollbarsComponent, { ref: osComponentRef, style: style, className: cx('custom-scrollbar', className, { 'os-host-flexbox': inFlexBox }), options: {
|
|
20
45
|
overflowBehavior: overflow,
|
|
21
|
-
callbacks:
|
|
22
|
-
? {
|
|
23
|
-
onScrollStop: HandleFullScroll(onFullScroll, fullScrollThreshold),
|
|
24
|
-
}
|
|
25
|
-
: undefined,
|
|
46
|
+
callbacks: { onScrollStop },
|
|
26
47
|
} }, children));
|
|
27
48
|
}
|
|
28
49
|
exports.CustomScrollbar = CustomScrollbar;
|
|
@@ -32,15 +53,19 @@ exports.CustomScrollbar = CustomScrollbar;
|
|
|
32
53
|
* @param threshold Запас.
|
|
33
54
|
* @return Обработчик.
|
|
34
55
|
*/
|
|
35
|
-
function
|
|
36
|
-
|
|
56
|
+
function useFullScroll(callback, threshold = 16) {
|
|
57
|
+
const callbackRef = (0, identity_1.useIdentityRef)(callback);
|
|
58
|
+
// ВАЖНО: overlayscrollbars не реагирует на замену callback'а onScrollStop на undefined поэтому проверяем сами
|
|
59
|
+
const handleScrollStop = (0, react_1.useMemo)(() => (event) => {
|
|
60
|
+
var _a;
|
|
37
61
|
const el = event === null || event === void 0 ? void 0 : event.target;
|
|
38
62
|
el instanceof Element &&
|
|
39
63
|
el.scrollTop >= el.scrollHeight - el.clientHeight - threshold &&
|
|
40
|
-
|
|
41
|
-
};
|
|
64
|
+
((_a = callbackRef.current) === null || _a === void 0 ? void 0 : _a.call(callbackRef));
|
|
65
|
+
}, []);
|
|
66
|
+
return handleScrollStop;
|
|
42
67
|
}
|
|
43
|
-
exports.
|
|
68
|
+
exports.useFullScroll = useFullScroll;
|
|
44
69
|
/**
|
|
45
70
|
* Получив OverlayScrollbarsComponent вернет элемент-viewport или null.
|
|
46
71
|
* @param component Экземпляр OverlayScrollbarsComponent.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@use '../colors';
|
|
2
2
|
@use '../utils';
|
|
3
|
-
@
|
|
3
|
+
@use '../shadows';
|
|
4
4
|
|
|
5
5
|
.arrow-button {
|
|
6
6
|
@include utils.focus-visible;
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
&.size-s {
|
|
26
26
|
width: 32px;
|
|
27
27
|
height: 32px;
|
|
28
|
-
@
|
|
28
|
+
@include shadows.box-shadow('z2');
|
|
29
29
|
&:not(:disabled):hover {
|
|
30
|
-
@
|
|
30
|
+
@include shadows.box-shadow('z3');
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
&.size-l {
|
|
34
34
|
width: 56px;
|
|
35
35
|
height: 56px;
|
|
36
|
-
@
|
|
36
|
+
@include shadows.box-shadow('z3');
|
|
37
37
|
&:not(:disabled):hover {
|
|
38
|
-
@
|
|
38
|
+
@include shadows.box-shadow('z4');
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
package/avatar/index.js
CHANGED
|
@@ -28,13 +28,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.Avatar = void 0;
|
|
30
30
|
const react_1 = __importStar(require("react"));
|
|
31
|
-
const bind_1 = __importDefault(require("classnames/bind"));
|
|
32
31
|
const colors_1 = require("../colors");
|
|
33
|
-
const person_1 = __importDefault(require("@sima-land/ui-quarks/icons/24x24/Stroked/person"));
|
|
34
|
-
const avatar_module_scss_1 = __importDefault(require("./avatar.module.scss"));
|
|
35
32
|
const utils_1 = require("./utils");
|
|
36
33
|
const colors_2 = require("../styling/colors");
|
|
37
|
-
const
|
|
34
|
+
const person_1 = __importDefault(require("@sima-land/ui-quarks/icons/24x24/Stroked/person"));
|
|
35
|
+
const bind_1 = __importDefault(require("classnames/bind"));
|
|
36
|
+
const avatar_module_scss_1 = __importDefault(require("./avatar.module.scss"));
|
|
38
37
|
const SIZES = [40, 48, 56, 64, 72, 80, 104];
|
|
39
38
|
const ICON_SIZES = {
|
|
40
39
|
40: 16,
|
|
@@ -45,6 +44,7 @@ const ICON_SIZES = {
|
|
|
45
44
|
80: 24,
|
|
46
45
|
104: 24,
|
|
47
46
|
};
|
|
47
|
+
const cx = bind_1.default.bind(avatar_module_scss_1.default);
|
|
48
48
|
/**
|
|
49
49
|
* Компонент аватара.
|
|
50
50
|
* @param props Свойства компонента.
|
package/avatar/utils.d.ts
CHANGED
package/avatar/utils.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getMonogram = void 0;
|
|
4
|
-
const lodash_1 = require("lodash");
|
|
5
4
|
/**
|
|
6
5
|
* Формирует монограмму из переданной строки.
|
|
7
6
|
* @param value Переданная строка.
|
|
8
7
|
* @return Монограмма.
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
function getMonogram(value) {
|
|
10
|
+
if (typeof value === 'string') {
|
|
11
|
+
return value
|
|
12
|
+
.split(/\s+/g)
|
|
13
|
+
.slice(0, 2)
|
|
14
|
+
.map(s => s[0])
|
|
15
|
+
.reverse()
|
|
16
|
+
.join('')
|
|
17
|
+
.toUpperCase();
|
|
18
|
+
}
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
19
21
|
exports.getMonogram = getMonogram;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
.root {
|
|
2
|
+
display: inline-flex;
|
|
3
|
+
max-width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.items {
|
|
7
|
+
flex-shrink: 1;
|
|
8
|
+
overflow: hidden;
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
> * {
|
|
12
|
+
flex-shrink: 0;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
}
|
|
15
|
+
> *:not(:first-child) {
|
|
16
|
+
margin-left: var(--group-overflow-gap, 8px);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.more {
|
|
21
|
+
margin-left: var(--group-overflow-gap, 8px);
|
|
22
|
+
flex-grow: 0;
|
|
23
|
+
flex-shrink: 0;
|
|
24
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type RenderTail = (data: {
|
|
3
|
+
hiddenCount: number;
|
|
4
|
+
}) => ReactNode;
|
|
5
|
+
export interface GroupOverflowProps extends HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
/** Расстояние между элементами в пикселях. */
|
|
7
|
+
gap?: number;
|
|
8
|
+
/** Вернёт "замыкающий" элемент, который будет выведен по аналогии с многоточием для текста. */
|
|
9
|
+
tail?: RenderTail;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Группа со скрытием не влезающих элементов.
|
|
13
|
+
* @param props Свойства.
|
|
14
|
+
* @return Элемент.
|
|
15
|
+
*/
|
|
16
|
+
export declare function GroupOverflow({ children, className, style, gap, tail, ...restProps }: GroupOverflowProps): JSX.Element;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.GroupOverflow = void 0;
|
|
41
|
+
const react_1 = __importStar(require("react"));
|
|
42
|
+
const utils_1 = require("./utils");
|
|
43
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
44
|
+
const group_overflow_module_scss_1 = __importDefault(require("./group-overflow.module.scss"));
|
|
45
|
+
/**
|
|
46
|
+
* Группа со скрытием не влезающих элементов.
|
|
47
|
+
* @param props Свойства.
|
|
48
|
+
* @return Элемент.
|
|
49
|
+
*/
|
|
50
|
+
function GroupOverflow(_a) {
|
|
51
|
+
var { children, className, style, gap, tail } = _a, restProps = __rest(_a, ["children", "className", "style", "gap", "tail"]);
|
|
52
|
+
const ref = (0, react_1.useRef)(null);
|
|
53
|
+
const { state, start } = (0, utils_1.useItemsHide)(ref, el => { var _a; return (_a = el.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement; });
|
|
54
|
+
const total = react_1.Children.count(children);
|
|
55
|
+
return (react_1.default.createElement("div", Object.assign({ className: (0, classnames_1.default)(group_overflow_module_scss_1.default.root, className), style: typeof gap === 'number'
|
|
56
|
+
? Object.assign(Object.assign({}, style), { '--group-overflow-gap': `${gap}px` })
|
|
57
|
+
: style }, restProps),
|
|
58
|
+
react_1.default.createElement("div", { ref: ref, className: group_overflow_module_scss_1.default.items }, state === 'initial'
|
|
59
|
+
? react_1.Children.toArray(children)
|
|
60
|
+
: react_1.Children.toArray(children).slice(0, start)),
|
|
61
|
+
state !== 'initial' && start < total && tail && (react_1.default.createElement("div", { className: group_overflow_module_scss_1.default.more }, tail({ hiddenCount: total - start })))));
|
|
62
|
+
}
|
|
63
|
+
exports.GroupOverflow = GroupOverflow;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
type HideStatus = 'initial' | 'hidden' | 'hidden+more';
|
|
3
|
+
/**
|
|
4
|
+
* Хук состояния скрытия не влезающих элементов.
|
|
5
|
+
* @param ref Реф с контейнером.
|
|
6
|
+
* @param getParent Получив контейнер вернет элемент за изменением ширины которого надо следить.
|
|
7
|
+
* @return Состояние.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useItemsHide(ref: RefObject<HTMLElement>, getParent: (el: HTMLElement) => HTMLElement | null | undefined): {
|
|
10
|
+
state: HideStatus;
|
|
11
|
+
start: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Вернет индекс дочернего элемента, который не влез в контейнер по ширине.
|
|
15
|
+
* Работает только если все дочерние узлы размещены в одной строке (без переноса).
|
|
16
|
+
* @param element Контейнер.
|
|
17
|
+
* @return Индекс.
|
|
18
|
+
*/
|
|
19
|
+
export declare function defineHideStart(element: HTMLElement): number;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineHideStart = exports.useItemsHide = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const hooks_1 = require("../hooks");
|
|
6
|
+
/**
|
|
7
|
+
* Хук состояния скрытия не влезающих элементов.
|
|
8
|
+
* @param ref Реф с контейнером.
|
|
9
|
+
* @param getParent Получив контейнер вернет элемент за изменением ширины которого надо следить.
|
|
10
|
+
* @return Состояние.
|
|
11
|
+
*/
|
|
12
|
+
function useItemsHide(ref, getParent) {
|
|
13
|
+
const [state, setState] = (0, react_1.useState)('initial');
|
|
14
|
+
const [start, setStart] = (0, react_1.useState)(-1);
|
|
15
|
+
const calculateHideStart = (0, react_1.useCallback)((nextState) => {
|
|
16
|
+
if (ref.current) {
|
|
17
|
+
setStart(defineHideStart(ref.current));
|
|
18
|
+
setState(nextState);
|
|
19
|
+
}
|
|
20
|
+
}, [ref]);
|
|
21
|
+
// следим за изменениями размера **родительского** элемента
|
|
22
|
+
(0, hooks_1.useIsomorphicLayoutEffect)(() => {
|
|
23
|
+
if (!ref.current) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const parent = getParent(ref.current);
|
|
27
|
+
if (!parent) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const observer = new ResizeObserver(() => setState('initial'));
|
|
31
|
+
observer.observe(parent);
|
|
32
|
+
return () => observer.disconnect();
|
|
33
|
+
}, [ref]);
|
|
34
|
+
const lastStateRef = (0, react_1.useRef)(null);
|
|
35
|
+
// при каждом **внешнем** ререндере сбрасываем состояние
|
|
36
|
+
(0, hooks_1.useIsomorphicLayoutEffect)(() => {
|
|
37
|
+
if (state === lastStateRef.current) {
|
|
38
|
+
setStart(-1);
|
|
39
|
+
setState('initial');
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
lastStateRef.current = state;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
// меняем состояние по итогам рендера
|
|
46
|
+
(0, hooks_1.useIsomorphicLayoutEffect)(() => {
|
|
47
|
+
switch (state) {
|
|
48
|
+
case 'initial':
|
|
49
|
+
calculateHideStart('hidden');
|
|
50
|
+
break;
|
|
51
|
+
case 'hidden':
|
|
52
|
+
calculateHideStart('hidden+more');
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}, [state]);
|
|
56
|
+
return { state, start };
|
|
57
|
+
}
|
|
58
|
+
exports.useItemsHide = useItemsHide;
|
|
59
|
+
/**
|
|
60
|
+
* Вернет индекс дочернего элемента, который не влез в контейнер по ширине.
|
|
61
|
+
* Работает только если все дочерние узлы размещены в одной строке (без переноса).
|
|
62
|
+
* @param element Контейнер.
|
|
63
|
+
* @return Индекс.
|
|
64
|
+
*/
|
|
65
|
+
function defineHideStart(element) {
|
|
66
|
+
const limit = Math.floor(element.getBoundingClientRect().right);
|
|
67
|
+
for (const [index, item] of [...element.children].entries()) {
|
|
68
|
+
if (index > 0 && Math.floor(item.getBoundingClientRect().right) > limit) {
|
|
69
|
+
return index;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return element.children.length;
|
|
73
|
+
}
|
|
74
|
+
exports.defineHideStart = defineHideStart;
|
package/hint/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CSSProperties, Dispatch, MutableRefObject, SetStateAction } from 'react';
|
|
2
|
-
import { ExtendedRefs, ReferenceType, UseFloatingProps, UseFloatingReturn } from '@floating-ui/react';
|
|
2
|
+
import { ExtendedRefs, ReferenceType, UseFloatingProps, UseFloatingReturn, UseHoverProps } from '@floating-ui/react';
|
|
3
3
|
interface HintExtendedRefs<RT> extends ExtendedRefs<RT> {
|
|
4
4
|
setArrow: (el: HTMLElement | null) => void;
|
|
5
5
|
}
|
|
@@ -35,9 +35,10 @@ export declare function getArrowFloatingStyle({ placement, middlewareData, }: Pi
|
|
|
35
35
|
/**
|
|
36
36
|
* Показ всплывающего хинта при наведении.
|
|
37
37
|
* @param floating Результат вызова useFloating.
|
|
38
|
+
* @param props Пропсы для useHover.
|
|
38
39
|
* @return Опции для открывающего и всплывающего элемента.
|
|
39
40
|
*/
|
|
40
|
-
export declare function useHintOnHover(floating: Pick<UseFloatingReturn
|
|
41
|
+
export declare function useHintOnHover<RT extends ReferenceType = ReferenceType>(floating: Pick<UseFloatingReturn<RT>, 'context' | 'strategy' | 'placement' | 'x' | 'y' | 'middlewareData'>, props?: UseHoverProps<RT>): {
|
|
41
42
|
getReferenceProps: (userProps?: import("react").HTMLProps<Element> | undefined) => Record<string, unknown>;
|
|
42
43
|
getFloatingProps: (userProps?: import("react").HTMLProps<HTMLElement> | undefined) => Record<string, unknown>;
|
|
43
44
|
getItemProps: (userProps?: import("react").HTMLProps<HTMLElement> | undefined) => Record<string, unknown>;
|
|
@@ -55,7 +56,10 @@ export declare function useHintOnClick(floating: Pick<UseFloatingReturn, 'contex
|
|
|
55
56
|
/**
|
|
56
57
|
* Состояние хинта с автоматическим скрытием по таймауту.
|
|
57
58
|
* @param initialState Начальное состояние.
|
|
59
|
+
* @param options Опции.
|
|
58
60
|
* @return Результат вызова `useState`.
|
|
59
61
|
*/
|
|
60
|
-
export declare function useTempHintState(initialState: boolean
|
|
62
|
+
export declare function useTempHintState(initialState: boolean, { timeout }?: {
|
|
63
|
+
timeout?: number;
|
|
64
|
+
}): readonly [boolean, Dispatch<SetStateAction<boolean>>];
|
|
61
65
|
export {};
|
package/hint/utils.js
CHANGED
|
@@ -110,11 +110,12 @@ exports.getArrowFloatingStyle = getArrowFloatingStyle;
|
|
|
110
110
|
/**
|
|
111
111
|
* Показ всплывающего хинта при наведении.
|
|
112
112
|
* @param floating Результат вызова useFloating.
|
|
113
|
+
* @param props Пропсы для useHover.
|
|
113
114
|
* @return Опции для открывающего и всплывающего элемента.
|
|
114
115
|
*/
|
|
115
|
-
function useHintOnHover(floating) {
|
|
116
|
+
function useHintOnHover(floating, props) {
|
|
116
117
|
const style = useHintFloatingStyle(floating);
|
|
117
|
-
const hover = (0, react_2.useHover)(floating.context, {
|
|
118
|
+
const hover = (0, react_2.useHover)(floating.context, Object.assign({ handleClose: (0, react_2.safePolygon)() }, props));
|
|
118
119
|
return (0, react_2.useInteractions)([hover, { floating: { style } }]);
|
|
119
120
|
}
|
|
120
121
|
exports.useHintOnHover = useHintOnHover;
|
|
@@ -133,9 +134,10 @@ exports.useHintOnClick = useHintOnClick;
|
|
|
133
134
|
/**
|
|
134
135
|
* Состояние хинта с автоматическим скрытием по таймауту.
|
|
135
136
|
* @param initialState Начальное состояние.
|
|
137
|
+
* @param options Опции.
|
|
136
138
|
* @return Результат вызова `useState`.
|
|
137
139
|
*/
|
|
138
|
-
function useTempHintState(initialState) {
|
|
140
|
+
function useTempHintState(initialState, { timeout = 3000 } = {}) {
|
|
139
141
|
const [open, setOpen] = (0, react_1.useState)(initialState);
|
|
140
142
|
const timerRef = (0, react_1.useRef)(null);
|
|
141
143
|
const updateTimer = (0, react_1.useCallback)((value) => {
|
|
@@ -145,9 +147,9 @@ function useTempHintState(initialState) {
|
|
|
145
147
|
}
|
|
146
148
|
// запускаем новый таймер если надо
|
|
147
149
|
if (value) {
|
|
148
|
-
timerRef.current = window.setTimeout(() => setOpen(false),
|
|
150
|
+
timerRef.current = window.setTimeout(() => setOpen(false), timeout);
|
|
149
151
|
}
|
|
150
|
-
}, []);
|
|
152
|
+
}, [timeout]);
|
|
151
153
|
(0, react_1.useEffect)(() => {
|
|
152
154
|
updateTimer(open);
|
|
153
155
|
}, []);
|
package/modal/index.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface ModalProps extends WithPageScrollLock {
|
|
|
13
13
|
onClose?: () => void;
|
|
14
14
|
/** Размер окна. */
|
|
15
15
|
size?: ModalSize;
|
|
16
|
+
/** Нужно ли выводить заглушку вместо футера если он не задан. */
|
|
17
|
+
footerStub?: boolean;
|
|
16
18
|
/** Идентификатор для систем автоматизированного тестирования. */
|
|
17
19
|
'data-testid'?: string;
|
|
18
20
|
}
|
|
@@ -21,7 +23,7 @@ export interface ModalProps extends WithPageScrollLock {
|
|
|
21
23
|
* @param props Свойства.
|
|
22
24
|
* @return Элемент.
|
|
23
25
|
*/
|
|
24
|
-
export declare function Modal({ children, height, onClose, scrollDisableOptions, size, withScrollDisable, 'data-testid': testId, }: ModalProps): JSX.Element;
|
|
26
|
+
export declare function Modal({ children, height, onClose, scrollDisableOptions, size, footerStub, withScrollDisable, 'data-testid': testId, }: ModalProps): JSX.Element;
|
|
25
27
|
export declare namespace Modal {
|
|
26
28
|
var Header: typeof ModalHeader;
|
|
27
29
|
var Body: typeof ModalBody;
|
package/modal/index.js
CHANGED
|
@@ -19,7 +19,7 @@ const cx = bind_1.default.bind(modal_module_scss_1.default);
|
|
|
19
19
|
* @param props Свойства.
|
|
20
20
|
* @return Элемент.
|
|
21
21
|
*/
|
|
22
|
-
function Modal({ children, height, onClose, scrollDisableOptions, size = 'm', withScrollDisable = false, 'data-testid': testId = 'modal', }) {
|
|
22
|
+
function Modal({ children, height, onClose, scrollDisableOptions, size = 'm', footerStub = size !== 'fullscreen', withScrollDisable = false, 'data-testid': testId = 'modal', }) {
|
|
23
23
|
const overlayClickBind = (0, utils_2.useExactClick)(onClose);
|
|
24
24
|
const fullscreen = size === 'fullscreen';
|
|
25
25
|
const { header, content, footer, overlap } = (0, define_slots_1.defineSlots)(children, {
|
|
@@ -44,7 +44,7 @@ function Modal({ children, height, onClose, scrollDisableOptions, size = 'm', wi
|
|
|
44
44
|
header,
|
|
45
45
|
content,
|
|
46
46
|
footer,
|
|
47
|
-
!footer &&
|
|
47
|
+
!footer && footerStub && react_1.default.createElement("div", { className: cx('footer-stub') }),
|
|
48
48
|
overlap && (react_1.default.createElement("div", { className: cx('overlap-content'), "data-testid": 'modal:overlap' }, overlap))))));
|
|
49
49
|
}
|
|
50
50
|
exports.Modal = Modal;
|
package/package.json
CHANGED
package/styling/borders.d.ts
CHANGED
package/styling/borders.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.InnerBorder = void 0;
|
|
|
7
7
|
const bind_1 = __importDefault(require("classnames/bind"));
|
|
8
8
|
const borders_module_scss_1 = __importDefault(require("./borders.module.scss"));
|
|
9
9
|
const cx = bind_1.default.bind(borders_module_scss_1.default);
|
|
10
|
+
/** @deprecated */
|
|
10
11
|
exports.InnerBorder = {
|
|
11
12
|
y: cx('inner-border-y'),
|
|
12
13
|
top: cx('inner-border-top'),
|
package/styling/colors.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
/** @deprecated */
|
|
1
2
|
export declare const color: (value: "basic-blue" | "basic-gray87" | "basic-gray76" | "basic-gray66" | "basic-gray54" | "basic-gray38" | "basic-gray24" | "basic-gray12" | "basic-gray8" | "basic-gray4" | "basic-gray2" | "basic-white" | "additional-deep-red" | "additional-red" | "additional-light-red" | "additional-teal" | "additional-green" | "additional-light-green" | "additional-lime" | "additional-faded-green" | "additional-pink" | "additional-purple" | "additional-violet" | "additional-deep-purple" | "additional-electric-blue" | "additional-light-blue" | "additional-cyan" | "additional-sky" | "additional-deep-orange" | "additional-amber" | "additional-yellow" | "additional-gold" | "additional-brown" | "additional-blue-gray" | "additional-deep-blue" | "additional-dark-blue") => string | undefined;
|
|
3
|
+
/** @deprecated */
|
|
2
4
|
export declare const hoverColor: (value: "basic-blue" | "basic-gray87" | "basic-gray76" | "basic-gray66" | "basic-gray54" | "basic-gray38" | "basic-gray24" | "basic-gray12" | "basic-gray8" | "basic-gray4" | "basic-gray2" | "basic-white" | "additional-deep-red" | "additional-red" | "additional-light-red" | "additional-teal" | "additional-green" | "additional-light-green" | "additional-lime" | "additional-faded-green" | "additional-pink" | "additional-purple" | "additional-violet" | "additional-deep-purple" | "additional-electric-blue" | "additional-light-blue" | "additional-cyan" | "additional-sky" | "additional-deep-orange" | "additional-amber" | "additional-yellow" | "additional-gold" | "additional-brown" | "additional-blue-gray" | "additional-deep-blue" | "additional-dark-blue") => string | undefined;
|
|
5
|
+
/** @deprecated */
|
|
3
6
|
export declare const bgColor: (value: "basic-blue" | "basic-gray87" | "basic-gray76" | "basic-gray66" | "basic-gray54" | "basic-gray38" | "basic-gray24" | "basic-gray12" | "basic-gray8" | "basic-gray4" | "basic-gray2" | "basic-white" | "additional-deep-red" | "additional-red" | "additional-light-red" | "additional-teal" | "additional-green" | "additional-light-green" | "additional-lime" | "additional-faded-green" | "additional-pink" | "additional-purple" | "additional-violet" | "additional-deep-purple" | "additional-electric-blue" | "additional-light-blue" | "additional-cyan" | "additional-sky" | "additional-deep-orange" | "additional-amber" | "additional-yellow" | "additional-gold" | "additional-brown" | "additional-blue-gray" | "additional-deep-blue" | "additional-dark-blue") => string | undefined;
|
|
7
|
+
/** @deprecated */
|
|
4
8
|
export declare const stroke: (value: "basic-blue" | "basic-gray87" | "basic-gray76" | "basic-gray66" | "basic-gray54" | "basic-gray38" | "basic-gray24" | "basic-gray12" | "basic-gray8" | "basic-gray4" | "basic-gray2" | "basic-white" | "additional-deep-red" | "additional-red" | "additional-light-red" | "additional-teal" | "additional-green" | "additional-light-green" | "additional-lime" | "additional-faded-green" | "additional-pink" | "additional-purple" | "additional-violet" | "additional-deep-purple" | "additional-electric-blue" | "additional-light-blue" | "additional-cyan" | "additional-sky" | "additional-deep-orange" | "additional-amber" | "additional-yellow" | "additional-gold" | "additional-brown" | "additional-blue-gray" | "additional-deep-blue" | "additional-dark-blue") => string | undefined;
|
|
9
|
+
/** @deprecated */
|
|
5
10
|
export declare const fill: (value: "basic-blue" | "basic-gray87" | "basic-gray76" | "basic-gray66" | "basic-gray54" | "basic-gray38" | "basic-gray24" | "basic-gray12" | "basic-gray8" | "basic-gray4" | "basic-gray2" | "basic-white" | "additional-deep-red" | "additional-red" | "additional-light-red" | "additional-teal" | "additional-green" | "additional-light-green" | "additional-lime" | "additional-faded-green" | "additional-pink" | "additional-purple" | "additional-violet" | "additional-deep-purple" | "additional-electric-blue" | "additional-light-blue" | "additional-cyan" | "additional-sky" | "additional-deep-orange" | "additional-amber" | "additional-yellow" | "additional-gold" | "additional-brown" | "additional-blue-gray" | "additional-deep-blue" | "additional-dark-blue") => string | undefined;
|
package/styling/colors.js
CHANGED
|
@@ -8,8 +8,13 @@ const utils_1 = require("./utils");
|
|
|
8
8
|
const colors_1 = require("../colors");
|
|
9
9
|
const colors_module_scss_1 = __importDefault(require("./colors.module.scss"));
|
|
10
10
|
const isColorKey = colors_1.COLORS.has.bind(colors_1.COLORS);
|
|
11
|
+
/** @deprecated */
|
|
11
12
|
exports.color = (0, utils_1.ClassGetter)(colors_module_scss_1.default, isColorKey, 'color__');
|
|
13
|
+
/** @deprecated */
|
|
12
14
|
exports.hoverColor = (0, utils_1.ClassGetter)(colors_module_scss_1.default, isColorKey, 'hover-color__');
|
|
15
|
+
/** @deprecated */
|
|
13
16
|
exports.bgColor = (0, utils_1.ClassGetter)(colors_module_scss_1.default, isColorKey, 'bg-color__');
|
|
17
|
+
/** @deprecated */
|
|
14
18
|
exports.stroke = (0, utils_1.ClassGetter)(colors_module_scss_1.default, isColorKey, 'stroke__');
|
|
19
|
+
/** @deprecated */
|
|
15
20
|
exports.fill = (0, utils_1.ClassGetter)(colors_module_scss_1.default, isColorKey, 'fill__');
|
package/styling/fonts.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export type Weight = 400 | 600 | 700;
|
|
|
4
4
|
export declare const SIZES: Set<Size>;
|
|
5
5
|
export declare const LINE_HEIGHTS: Set<LineHeight>;
|
|
6
6
|
export declare const WEIGHTS: Set<Weight>;
|
|
7
|
+
/** @deprecated */
|
|
7
8
|
export declare const size: (value: Size) => string | undefined;
|
|
9
|
+
/** @deprecated */
|
|
8
10
|
export declare const lineHeight: (value: LineHeight) => string | undefined;
|
|
11
|
+
/** @deprecated */
|
|
9
12
|
export declare const weight: (value: Weight) => string | undefined;
|
package/styling/fonts.js
CHANGED
|
@@ -9,6 +9,9 @@ const fonts_module_scss_1 = __importDefault(require("./fonts.module.scss"));
|
|
|
9
9
|
exports.SIZES = new Set([12, 14, 16, 20, 24, 32, 48, 64]);
|
|
10
10
|
exports.LINE_HEIGHTS = new Set([16, 20, 24, 28, 32, 40, 60, 80]);
|
|
11
11
|
exports.WEIGHTS = new Set([400, 600, 700]);
|
|
12
|
+
/** @deprecated */
|
|
12
13
|
exports.size = (0, utils_1.ClassGetter)(fonts_module_scss_1.default, exports.SIZES.has.bind(exports.SIZES), 'size-');
|
|
14
|
+
/** @deprecated */
|
|
13
15
|
exports.lineHeight = (0, utils_1.ClassGetter)(fonts_module_scss_1.default, exports.LINE_HEIGHTS.has.bind(exports.LINE_HEIGHTS), 'line-height-');
|
|
16
|
+
/** @deprecated */
|
|
14
17
|
exports.weight = (0, utils_1.ClassGetter)(fonts_module_scss_1.default, exports.WEIGHTS.has.bind(exports.WEIGHTS), 'weight-');
|
package/styling/shadows.d.ts
CHANGED
package/styling/shadows.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BoxShadow = void 0;
|
|
7
7
|
const shadows_module_scss_1 = __importDefault(require("./shadows.module.scss"));
|
|
8
|
+
/** @deprecated */
|
|
8
9
|
exports.BoxShadow = {
|
|
9
10
|
z1: shadows_module_scss_1.default['shadow-z1'],
|
|
10
11
|
z2: shadows_module_scss_1.default['shadow-z2'],
|
package/styling/shapes.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @deprecated */
|
|
1
2
|
export declare const SmallRounds: {
|
|
2
3
|
all: string;
|
|
3
4
|
top: string;
|
|
@@ -9,6 +10,7 @@ export declare const SmallRounds: {
|
|
|
9
10
|
bottomLeft: string;
|
|
10
11
|
bottomRight: string;
|
|
11
12
|
};
|
|
13
|
+
/** @deprecated */
|
|
12
14
|
export declare const MediumRounds: {
|
|
13
15
|
all: string;
|
|
14
16
|
top: string;
|
package/styling/shapes.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.MediumRounds = exports.SmallRounds = void 0;
|
|
7
7
|
const shapes_module_scss_1 = __importDefault(require("./shapes.module.scss"));
|
|
8
|
+
/** @deprecated */
|
|
8
9
|
exports.SmallRounds = {
|
|
9
10
|
all: shapes_module_scss_1.default['rounds-sm__all'],
|
|
10
11
|
top: shapes_module_scss_1.default['rounds-sm__t'],
|
|
@@ -16,6 +17,7 @@ exports.SmallRounds = {
|
|
|
16
17
|
bottomLeft: shapes_module_scss_1.default['rounds-sm__b-l'],
|
|
17
18
|
bottomRight: shapes_module_scss_1.default['rounds-sm__b-r'],
|
|
18
19
|
};
|
|
20
|
+
/** @deprecated */
|
|
19
21
|
exports.MediumRounds = {
|
|
20
22
|
all: shapes_module_scss_1.default['rounds-md__all'],
|
|
21
23
|
top: shapes_module_scss_1.default['rounds-md__t'],
|
package/styling/sizes.d.ts
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Проверяет, является ли значение шагом дизайн-системы для внешних отступов.
|
|
3
|
+
* @deprecated
|
|
3
4
|
* @param value Значение.
|
|
4
5
|
* @return Результат.
|
|
5
6
|
*/
|
|
6
7
|
export declare const isMargin: (value: any) => boolean;
|
|
7
8
|
/**
|
|
8
9
|
* Проверяет, является ли значение шагом дизайн-системы для внутренних отступов.
|
|
10
|
+
* @deprecated
|
|
9
11
|
* @param value Значение.
|
|
10
12
|
* @return Результат.
|
|
11
13
|
*/
|
|
12
14
|
export declare const isPadding: (value: any) => boolean;
|
|
15
|
+
/** @deprecated */
|
|
13
16
|
export declare const marginTop: (value: any) => string | undefined;
|
|
17
|
+
/** @deprecated */
|
|
14
18
|
export declare const marginRight: (value: any) => string | undefined;
|
|
19
|
+
/** @deprecated */
|
|
15
20
|
export declare const marginBottom: (value: any) => string | undefined;
|
|
21
|
+
/** @deprecated */
|
|
16
22
|
export declare const marginLeft: (value: any) => string | undefined;
|
|
23
|
+
/** @deprecated */
|
|
17
24
|
export declare const paddingTop: (value: any) => string | undefined;
|
|
25
|
+
/** @deprecated */
|
|
18
26
|
export declare const paddingRight: (value: any) => string | undefined;
|
|
27
|
+
/** @deprecated */
|
|
19
28
|
export declare const paddingBottom: (value: any) => string | undefined;
|
|
29
|
+
/** @deprecated */
|
|
20
30
|
export declare const paddingLeft: (value: any) => string | undefined;
|
package/styling/sizes.js
CHANGED
|
@@ -8,6 +8,7 @@ const utils_1 = require("./utils");
|
|
|
8
8
|
const sizes_module_scss_1 = __importDefault(require("./sizes.module.scss"));
|
|
9
9
|
/**
|
|
10
10
|
* Проверяет, является ли значение шагом дизайн-системы для внешних отступов.
|
|
11
|
+
* @deprecated
|
|
11
12
|
* @param value Значение.
|
|
12
13
|
* @return Результат.
|
|
13
14
|
*/
|
|
@@ -15,16 +16,25 @@ const isMargin = (value) => Number.isInteger(value) && value >= -8 && value <= 3
|
|
|
15
16
|
exports.isMargin = isMargin;
|
|
16
17
|
/**
|
|
17
18
|
* Проверяет, является ли значение шагом дизайн-системы для внутренних отступов.
|
|
19
|
+
* @deprecated
|
|
18
20
|
* @param value Значение.
|
|
19
21
|
* @return Результат.
|
|
20
22
|
*/
|
|
21
23
|
const isPadding = (value) => Number.isInteger(value) && value >= 0 && value <= 32;
|
|
22
24
|
exports.isPadding = isPadding;
|
|
25
|
+
/** @deprecated */
|
|
23
26
|
exports.marginTop = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isMargin, 'M-t__');
|
|
27
|
+
/** @deprecated */
|
|
24
28
|
exports.marginRight = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isMargin, 'M-r__');
|
|
29
|
+
/** @deprecated */
|
|
25
30
|
exports.marginBottom = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isMargin, 'M-b__');
|
|
31
|
+
/** @deprecated */
|
|
26
32
|
exports.marginLeft = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isMargin, 'M-l__');
|
|
33
|
+
/** @deprecated */
|
|
27
34
|
exports.paddingTop = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isPadding, 'P-t__');
|
|
35
|
+
/** @deprecated */
|
|
28
36
|
exports.paddingRight = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isPadding, 'P-r__');
|
|
37
|
+
/** @deprecated */
|
|
29
38
|
exports.paddingBottom = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isPadding, 'P-b__');
|
|
39
|
+
/** @deprecated */
|
|
30
40
|
exports.paddingLeft = (0, utils_1.ClassGetter)(sizes_module_scss_1.default, exports.isPadding, 'P-l__');
|
package/styling/utils.d.ts
CHANGED
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
* @param isValidKey Функция проверки ключа для класса.
|
|
5
5
|
* @param [prefix=''] Префикс имени класса.
|
|
6
6
|
* @return Геттер CSS-класса.
|
|
7
|
+
* @deprecated
|
|
7
8
|
*/
|
|
8
9
|
export declare const ClassGetter: <T = string | number>(classes: Record<string, string>, isValidKey: (s: T) => boolean, prefix?: string) => (value: T) => string | undefined;
|
package/styling/utils.js
CHANGED
|
@@ -11,6 +11,7 @@ const bind_1 = __importDefault(require("classnames/bind"));
|
|
|
11
11
|
* @param isValidKey Функция проверки ключа для класса.
|
|
12
12
|
* @param [prefix=''] Префикс имени класса.
|
|
13
13
|
* @return Геттер CSS-класса.
|
|
14
|
+
* @deprecated
|
|
14
15
|
*/
|
|
15
16
|
const ClassGetter = (classes, isValidKey, prefix = '') => {
|
|
16
17
|
const cx = bind_1.default.bind(classes);
|
package/top-bar/index.d.ts
CHANGED
package/top-bar/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TOP_BAR_HEIGHT = exports.TopBar = void 0;
|
|
3
|
+
exports.TOP_BAR_HEIGHT = exports.TopBar = exports.navigationButtons = void 0;
|
|
4
|
+
var utils_1 = require("./utils");
|
|
5
|
+
Object.defineProperty(exports, "navigationButtons", { enumerable: true, get: function () { return utils_1.navigationButtons; } });
|
|
4
6
|
var top_bar_1 = require("./top-bar");
|
|
5
7
|
Object.defineProperty(exports, "TopBar", { enumerable: true, get: function () { return top_bar_1.TopBar; } });
|
|
6
8
|
Object.defineProperty(exports, "TOP_BAR_HEIGHT", { enumerable: true, get: function () { return top_bar_1.TOP_BAR_HEIGHT; } });
|
package/top-bar/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
2
|
export type TopBarSize = 's' | 'm' | 'xl';
|
|
3
3
|
export interface TopBarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
4
|
/** Иконка. */
|
|
@@ -21,9 +21,9 @@ export interface TopBarProps {
|
|
|
21
21
|
/** Размер. */
|
|
22
22
|
size?: TopBarSize | 'unset';
|
|
23
23
|
/** Подзаголовок. */
|
|
24
|
-
subtitle?:
|
|
24
|
+
subtitle?: ReactNode;
|
|
25
25
|
/** Заголовок. */
|
|
26
|
-
title?:
|
|
26
|
+
title?: ReactNode;
|
|
27
27
|
/** Нужна ли разделительная черта снизу. */
|
|
28
28
|
divided?: boolean;
|
|
29
29
|
/** Идентификатор для систем автоматизированного тестирования. */
|
package/utils.scss
CHANGED
|
@@ -72,11 +72,18 @@
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Добавляет стандартную визуальную подсветку состояния focus-visible.
|
|
77
|
+
*/
|
|
78
|
+
@mixin focus-visible-style() {
|
|
79
|
+
outline: 2px solid colors.$basic-blue;
|
|
80
|
+
}
|
|
81
|
+
|
|
75
82
|
/**
|
|
76
83
|
* Формирует стандартную визуальную подсветку для состояния focus-visible.
|
|
77
84
|
*/
|
|
78
85
|
@mixin focus-visible() {
|
|
79
86
|
&:focus-visible {
|
|
80
|
-
|
|
87
|
+
@include focus-visible-style;
|
|
81
88
|
}
|
|
82
89
|
}
|