@sima-land/ui-nucleons 45.0.0-alpha.26 → 45.0.0-alpha.27
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/accordion/accordion-provider.d.ts +17 -0
- package/accordion/accordion-provider.js +45 -0
- package/accordion/accordion-provider.js.map +1 -0
- package/accordion/accordion.d.ts +27 -0
- package/accordion/accordion.js +57 -0
- package/accordion/accordion.js.map +1 -0
- package/accordion/accordion.m.scss +86 -0
- package/accordion/index.d.ts +3 -0
- package/accordion/index.js +8 -0
- package/accordion/index.js.map +1 -0
- package/breakpoints.scss +8 -6
- package/package.json +2 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface ContextProps {
|
|
3
|
+
register: (groupId: string, setExpand: (expand: boolean) => void) => symbol;
|
|
4
|
+
unregister: (groupId: string, id: symbol) => void;
|
|
5
|
+
closeGroup: (groupId: string) => void;
|
|
6
|
+
}
|
|
7
|
+
interface Props {
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export declare const AccordionContext: import("react").Context<ContextProps>;
|
|
11
|
+
/**
|
|
12
|
+
* Провайдер обрабатывающий логику открытия аккордеонов внутри групп.
|
|
13
|
+
* @param props Пропсы.
|
|
14
|
+
* @return Элемент.
|
|
15
|
+
*/
|
|
16
|
+
export declare const AccordionProvider: ({ children }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccordionProvider = exports.AccordionContext = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
exports.AccordionContext = (0, react_1.createContext)({
|
|
7
|
+
register: () => Symbol(),
|
|
8
|
+
unregister: () => { },
|
|
9
|
+
closeGroup: () => { },
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Провайдер обрабатывающий логику открытия аккордеонов внутри групп.
|
|
13
|
+
* @param props Пропсы.
|
|
14
|
+
* @return Элемент.
|
|
15
|
+
*/
|
|
16
|
+
const AccordionProvider = ({ children }) => {
|
|
17
|
+
const [items, setItems] = (0, react_1.useState)({});
|
|
18
|
+
const register = (0, react_1.useCallback)((groupId, setExpand) => {
|
|
19
|
+
const item = {
|
|
20
|
+
setExpand,
|
|
21
|
+
id: Symbol(groupId),
|
|
22
|
+
};
|
|
23
|
+
setItems(registeredItems => ({
|
|
24
|
+
...registeredItems,
|
|
25
|
+
[groupId]: (registeredItems[groupId] || []).concat(item),
|
|
26
|
+
}));
|
|
27
|
+
return item.id;
|
|
28
|
+
}, []);
|
|
29
|
+
const unregister = (0, react_1.useCallback)((groupId, id) => {
|
|
30
|
+
setItems(registeredItems => {
|
|
31
|
+
registeredItems[groupId] = registeredItems[groupId].filter(item => item.id !== id);
|
|
32
|
+
if (registeredItems[groupId].length < 1)
|
|
33
|
+
delete registeredItems[groupId];
|
|
34
|
+
return registeredItems;
|
|
35
|
+
});
|
|
36
|
+
}, []);
|
|
37
|
+
const closeGroup = (0, react_1.useCallback)((groupId) => items[groupId]?.forEach(({ setExpand }) => setExpand(false)), [items]);
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)(exports.AccordionContext.Provider, { value: {
|
|
39
|
+
register,
|
|
40
|
+
unregister,
|
|
41
|
+
closeGroup,
|
|
42
|
+
}, children: children }));
|
|
43
|
+
};
|
|
44
|
+
exports.AccordionProvider = AccordionProvider;
|
|
45
|
+
//# sourceMappingURL=accordion-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion-provider.js","sourceRoot":"","sources":["../../src/accordion/accordion-provider.tsx"],"names":[],"mappings":";;;;AAAA,iCAAwE;AAiB3D,QAAA,gBAAgB,GAAG,IAAA,qBAAa,EAAe;IAC1D,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;IACpB,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC;CACrB,CAAC,CAAC;AAEH;;;;GAIG;AACI,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAS,EAAE,EAAE;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAA0B,EAAE,CAAC,CAAC;IAEhE,MAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,CAAC,OAAe,EAAE,SAAoC,EAAE,EAAE;QACrF,MAAM,IAAI,GAAG;YACX,SAAS;YACT,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;SACpB,CAAC;QACF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3B,GAAG,eAAe;YAClB,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;SACzD,CAAC,CAAC,CAAC;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,CAAC,OAAe,EAAE,EAAU,EAAE,EAAE;QAC7D,QAAQ,CAAC,eAAe,CAAC,EAAE;YACzB,eAAe,CAAC,OAAO,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;YACzE,OAAO,eAAe,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,IAAA,mBAAW,EAC5B,CAAC,OAAe,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EACjF,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,OAAO,CACL,uBAAC,wBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;YACL,QAAQ;YACR,UAAU;YACV,UAAU;SACX,YAEA,QAAQ,GACiB,CAC7B,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,iBAAiB,qBAuC5B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface Props {
|
|
3
|
+
/** Заголовок блока аккордеона. */
|
|
4
|
+
summary: string;
|
|
5
|
+
/** Тема оформления. */
|
|
6
|
+
theme?: 'light' | 'dark';
|
|
7
|
+
/** Описание. */
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Название группы аккордеона. */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** Первоначальное значение состояния открытия. */
|
|
12
|
+
open?: boolean;
|
|
13
|
+
/** Контент аккордеона при открытии. */
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
/** Внешний стиль компонента. */
|
|
16
|
+
className?: string;
|
|
17
|
+
/** Уровень заголовков. */
|
|
18
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
19
|
+
/** Обработчик переключения состояния аккордеона. */
|
|
20
|
+
onToggle?: (open: boolean) => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Аккордеон.
|
|
24
|
+
* @param props Пропсы компонента.
|
|
25
|
+
* @return Элемент.
|
|
26
|
+
*/
|
|
27
|
+
export declare const Accordion: ({ theme, open, name, summary, description, onToggle, className, children, level, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Accordion = void 0;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const accordion_m_scss_1 = __importDefault(require("./accordion.m.scss"));
|
|
10
|
+
const ArrowExpandDown_1 = __importDefault(require("@sima-land/ui-quarks/icons/16x16/Stroked/ArrowExpandDown"));
|
|
11
|
+
const bind_1 = __importDefault(require("classnames/bind"));
|
|
12
|
+
const accordion_provider_1 = require("./accordion-provider");
|
|
13
|
+
const context_1 = require("../context");
|
|
14
|
+
const cx = bind_1.default.bind(accordion_m_scss_1.default);
|
|
15
|
+
/**
|
|
16
|
+
* Аккордеон.
|
|
17
|
+
* @param props Пропсы компонента.
|
|
18
|
+
* @return Элемент.
|
|
19
|
+
*/
|
|
20
|
+
const Accordion = ({ theme = 'light', open = false, name, summary, description, onToggle, className, children, level = 4, }) => {
|
|
21
|
+
const container = (0, react_1.useRef)(null);
|
|
22
|
+
const { createResizeObserver } = (0, react_1.useContext)(context_1.ResizeObserverContext);
|
|
23
|
+
const { register, unregister, closeGroup } = (0, react_1.useContext)(accordion_provider_1.AccordionContext);
|
|
24
|
+
const [expanded, setExpand] = (0, react_1.useState)(open);
|
|
25
|
+
const [contentHeight, setContentHeight] = (0, react_1.useState)(0);
|
|
26
|
+
(0, react_1.useEffect)(() => {
|
|
27
|
+
if (name) {
|
|
28
|
+
const id = register(name, setExpand);
|
|
29
|
+
return () => unregister(name, id);
|
|
30
|
+
}
|
|
31
|
+
}, []);
|
|
32
|
+
(0, react_1.useEffect)(() => {
|
|
33
|
+
open && name && closeGroup(name);
|
|
34
|
+
setExpand(open);
|
|
35
|
+
}, [open]);
|
|
36
|
+
(0, react_1.useEffect)(() => {
|
|
37
|
+
const observer = createResizeObserver(() => setContentHeight(container.current?.scrollHeight || 0));
|
|
38
|
+
container.current && observer.observe(container.current);
|
|
39
|
+
return () => observer.disconnect();
|
|
40
|
+
}, [container.current, createResizeObserver]);
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: cx('root', {
|
|
42
|
+
expanded,
|
|
43
|
+
'theme-dark': theme === 'dark',
|
|
44
|
+
'theme-light': theme === 'light',
|
|
45
|
+
}, className), children: [(0, jsx_runtime_1.jsxs)("button", { type: 'button', "aria-expanded": expanded, "aria-controls": `section-${name}`, onClick: () => {
|
|
46
|
+
/**
|
|
47
|
+
* Порядовок вызовов и используемых данных важен, так как сначала всё закрываем, а потом открываем конкретный.
|
|
48
|
+
*/
|
|
49
|
+
name && closeGroup(name);
|
|
50
|
+
setExpand(!expanded);
|
|
51
|
+
onToggle?.(!expanded);
|
|
52
|
+
}, tabIndex: 0, className: accordion_m_scss_1.default.header, children: [(0, jsx_runtime_1.jsx)("span", { role: 'heading', "aria-level": level, className: accordion_m_scss_1.default.title, children: summary }), (0, jsx_runtime_1.jsx)(ArrowExpandDown_1.default, { className: accordion_m_scss_1.default.arrow })] }), (0, jsx_runtime_1.jsxs)("div", { className: accordion_m_scss_1.default.content, role: 'region', ref: container, style: {
|
|
53
|
+
maxHeight: expanded ? contentHeight : 0,
|
|
54
|
+
}, children: [children, description && (0, jsx_runtime_1.jsx)("span", { className: accordion_m_scss_1.default.description, children: description })] })] }));
|
|
55
|
+
};
|
|
56
|
+
exports.Accordion = Accordion;
|
|
57
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/accordion/accordion.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAA2E;AAC3E,0EAAwC;AACxC,+GAA0F;AAC1F,2DAAyC;AACzC,6DAAwD;AACxD,wCAAmD;AAEnD,MAAM,EAAE,GAAG,cAAU,CAAC,IAAI,CAAC,0BAAM,CAAC,CAAC;AAuBnC;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,EACxB,KAAK,GAAG,OAAO,EACf,IAAI,GAAG,KAAK,EACZ,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,KAAK,GAAG,CAAC,GACH,EAAE,EAAE;IACV,MAAM,SAAS,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAA,kBAAU,EAAC,+BAAqB,CAAC,CAAC;IACnE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EAAC,qCAAgB,CAAC,CAAC;IAC1E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEtD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,EAAE,CACzC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CACvD,CAAC;QACF,SAAS,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAE9C,OAAO,CACL,iCACE,SAAS,EAAE,EAAE,CACX,MAAM,EACN;YACE,QAAQ;YACR,YAAY,EAAE,KAAK,KAAK,MAAM;YAC9B,aAAa,EAAE,KAAK,KAAK,OAAO;SACjC,EACD,SAAS,CACV,aAED,oCACE,IAAI,EAAC,QAAQ,mBACE,QAAQ,mBACR,WAAW,IAAI,EAAE,EAChC,OAAO,EAAE,GAAG,EAAE;oBACZ;;uBAEG;oBACH,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;oBACzB,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACxB,CAAC,EACD,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,0BAAM,CAAC,MAAM,aAExB,iCAAM,IAAI,EAAC,SAAS,gBAAa,KAAK,EAAE,SAAS,EAAE,0BAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAI,EACtF,uBAAC,yBAAkB,IAAC,SAAS,EAAE,0BAAM,CAAC,KAAK,GAAI,IACxC,EACT,iCACE,SAAS,EAAE,0BAAM,CAAC,OAAO,EACzB,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,SAAS,EACd,KAAK,EAAE;oBACL,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;iBACxC,aAEA,QAAQ,EACR,WAAW,IAAI,iCAAM,SAAS,EAAE,0BAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAI,IAC1E,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAhFW,QAAA,SAAS,aAgFpB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
@use '../colors.scss';
|
|
2
|
+
|
|
3
|
+
.root {
|
|
4
|
+
width: 100%;
|
|
5
|
+
border-radius: 8px;
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
&.theme-light {
|
|
9
|
+
background-color: colors.$basic-gray4;
|
|
10
|
+
--text-color: #{colors.$basic-gray87};
|
|
11
|
+
--hover-header-color: #{colors.$basic-gray54};
|
|
12
|
+
--arrow-color: #{colors.$basic-gray87};
|
|
13
|
+
--border-focus-visible-color: #{colors.$basic-gray24};
|
|
14
|
+
}
|
|
15
|
+
&.theme-dark {
|
|
16
|
+
--text-color: #{colors.$basic-white};
|
|
17
|
+
--hover-header-color: #{colors.$basic-gray8};
|
|
18
|
+
--arrow-color: #{colors.$basic-gray8};
|
|
19
|
+
--border-focus-visible-color: #{colors.$basic-gray54};
|
|
20
|
+
background-color: colors.$basic-gray76;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.expanded {
|
|
25
|
+
.arrow {
|
|
26
|
+
transform: rotate(180deg);
|
|
27
|
+
}
|
|
28
|
+
.content {
|
|
29
|
+
padding: 0 16px;
|
|
30
|
+
margin-bottom: 16px;
|
|
31
|
+
}
|
|
32
|
+
.header:focus-visible {
|
|
33
|
+
border-radius: 8px 8px 0 0;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.title {
|
|
38
|
+
margin: 0;
|
|
39
|
+
color: var(--text-color);
|
|
40
|
+
font-size: 16px;
|
|
41
|
+
line-height: 24px;
|
|
42
|
+
font-weight: 600;
|
|
43
|
+
text-align: left;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.arrow {
|
|
47
|
+
fill: var(--arrow-color);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.header {
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: row;
|
|
53
|
+
padding: 16px;
|
|
54
|
+
justify-content: space-between;
|
|
55
|
+
align-items: center;
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
text-decoration: none;
|
|
58
|
+
border: none;
|
|
59
|
+
background: none;
|
|
60
|
+
width: 100%;
|
|
61
|
+
&:focus-visible {
|
|
62
|
+
outline: 1px solid var(--border-focus-visible-color);
|
|
63
|
+
border-radius: 8px;
|
|
64
|
+
}
|
|
65
|
+
&:hover {
|
|
66
|
+
.title {
|
|
67
|
+
color: var(--hover-header-color);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.content {
|
|
73
|
+
padding: 0 16px;
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
transition: max-height 200ms ease;
|
|
76
|
+
color: var(--text-color);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.description {
|
|
80
|
+
margin-top: 12px;
|
|
81
|
+
font-size: 12px;
|
|
82
|
+
line-height: 16px;
|
|
83
|
+
font-weight: 400;
|
|
84
|
+
display: inline-block;
|
|
85
|
+
color: colors.$basic-gray38;
|
|
86
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccordionProvider = exports.Accordion = void 0;
|
|
4
|
+
var accordion_1 = require("./accordion");
|
|
5
|
+
Object.defineProperty(exports, "Accordion", { enumerable: true, get: function () { return accordion_1.Accordion; } });
|
|
6
|
+
var accordion_provider_1 = require("./accordion-provider");
|
|
7
|
+
Object.defineProperty(exports, "AccordionProvider", { enumerable: true, get: function () { return accordion_provider_1.AccordionProvider; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/accordion/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA"}
|
package/breakpoints.scss
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
|
|
1
3
|
/* stylelint-disable length-zero-no-unit */
|
|
2
4
|
$map: (
|
|
3
5
|
// ВАЖНО: тут именно 0px а не 0 - в Safari нельзя использовать @media (min-width: 0)
|
|
@@ -20,22 +22,22 @@ $map: (
|
|
|
20
22
|
*/
|
|
21
23
|
|
|
22
24
|
@mixin greaterThanOrEqual($breakpoint) {
|
|
23
|
-
@if map
|
|
24
|
-
@media (min-width: map
|
|
25
|
+
@if map.has-key($map, $breakpoint) {
|
|
26
|
+
@media (min-width: map.get($map, $breakpoint)) {
|
|
25
27
|
@content;
|
|
26
28
|
}
|
|
27
29
|
} @else {
|
|
28
|
-
@warn 'No such breakpoint `#{$breakpoint}`. Available values: #{map
|
|
30
|
+
@warn 'No such breakpoint `#{$breakpoint}`. Available values: #{map.keys($map)}.';
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
@mixin lessThan($breakpoint) {
|
|
33
|
-
@if map
|
|
34
|
-
@media (max-width: (map
|
|
35
|
+
@if map.has-key($map, $breakpoint) {
|
|
36
|
+
@media (max-width: (map.get($map, $breakpoint) - 1px)) {
|
|
35
37
|
@content;
|
|
36
38
|
}
|
|
37
39
|
} @else {
|
|
38
|
-
@warn 'No such breakpoint `#{$breakpoint}`. Available values: #{map
|
|
40
|
+
@warn 'No such breakpoint `#{$breakpoint}`. Available values: #{map.keys($map)}.';
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sima-land/ui-nucleons",
|
|
3
3
|
"type": "commonjs",
|
|
4
|
-
"version": "45.0.0-alpha.
|
|
4
|
+
"version": "45.0.0-alpha.27",
|
|
5
5
|
"repository": "ssh://git@github.com:sima-land/ui-nucleons.git",
|
|
6
6
|
"author": "www.sima-land.ru team",
|
|
7
7
|
"license": "Apache-2.0",
|
|
@@ -87,6 +87,7 @@
|
|
|
87
87
|
"./arrow-button": "./arrow-button/index.js",
|
|
88
88
|
"./autocomplete": "./autocomplete/index.js",
|
|
89
89
|
"./avatar": "./avatar/index.js",
|
|
90
|
+
"./accordion": "./accordion/index.js",
|
|
90
91
|
"./base-input": "./base-input/index.js",
|
|
91
92
|
"./bottom-bar": "./bottom-bar/index.js",
|
|
92
93
|
"./bottom-bar/bottom-bar-util.scss": "./bottom-bar/bottom-bar-util.scss",
|