@cloud-ru/ds-list 2.0.1 → 2.0.2
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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/dist/cjs/components/Items/BaseItem/BaseItem.js +1 -1
- package/dist/cjs/components/Items/BaseItem/styles.module.css +42 -0
- package/dist/cjs/components/Items/SearchItem/SearchItem.js +1 -1
- package/dist/cjs/components/Items/SimpleItem/utils.d.ts +1 -1
- package/dist/cjs/components/Items/SimpleItem/utils.js +1 -1
- package/dist/cjs/components/Items/styles.module.css +9 -0
- package/dist/cjs/components/Items/types.d.ts +2 -2
- package/dist/cjs/components/Items/utils.js +1 -1
- package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +1 -1
- package/dist/cjs/components/Lists/ListPrivate/styles.module.css +2 -3
- package/dist/cjs/components/Lists/hooks.d.ts +1 -1
- package/dist/cjs/components/Lists/hooks.js +2 -2
- package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
- package/dist/cjs/helperComponents/ItemContent/ItemContent.js +1 -1
- package/dist/cjs/helperComponents/ItemContent/styles.module.css +45 -24
- package/dist/cjs/helperComponents/Separator/Separator.js +3 -4
- package/dist/cjs/helperComponents/Separator/styles.module.css +69 -49
- package/dist/cjs/style.css +167 -76
- package/dist/esm/components/Items/BaseItem/BaseItem.js +1 -1
- package/dist/esm/components/Items/BaseItem/styles.module.css +42 -0
- package/dist/esm/components/Items/SearchItem/SearchItem.js +1 -1
- package/dist/esm/components/Items/SimpleItem/utils.d.ts +1 -1
- package/dist/esm/components/Items/SimpleItem/utils.js +1 -1
- package/dist/esm/components/Items/styles.module.css +9 -0
- package/dist/esm/components/Items/types.d.ts +2 -2
- package/dist/esm/components/Items/utils.js +1 -1
- package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +1 -1
- package/dist/esm/components/Lists/ListPrivate/styles.module.css +2 -3
- package/dist/esm/components/Lists/hooks.d.ts +1 -1
- package/dist/esm/components/Lists/hooks.js +2 -2
- package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
- package/dist/esm/helperComponents/ItemContent/ItemContent.js +1 -1
- package/dist/esm/helperComponents/ItemContent/styles.module.css +45 -24
- package/dist/esm/helperComponents/Separator/Separator.js +3 -4
- package/dist/esm/helperComponents/Separator/styles.module.css +69 -49
- package/dist/esm/style.css +167 -76
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/components/Items/BaseItem/BaseItem.tsx +17 -10
- package/src/components/Items/BaseItem/styles.module.scss +57 -4
- package/src/components/Items/SearchItem/SearchItem.tsx +1 -1
- package/src/components/Items/SimpleItem/utils.ts +1 -1
- package/src/components/Items/styles.module.scss +10 -2
- package/src/components/Items/types.ts +3 -7
- package/src/components/Items/utils.ts +1 -1
- package/src/components/Lists/ListPrivate/ListPrivate.tsx +1 -1
- package/src/components/Lists/ListPrivate/styles.module.scss +5 -4
- package/src/components/Lists/hooks.ts +2 -2
- package/src/helperComponents/DesktopDroplist/DesktopDroplist.tsx +1 -1
- package/src/helperComponents/ItemContent/ItemContent.tsx +22 -20
- package/src/helperComponents/ItemContent/styles.module.scss +25 -15
- package/src/helperComponents/Separator/Separator.tsx +23 -22
- package/src/helperComponents/Separator/styles.module.scss +132 -101
- package/dist/cjs/helperComponents/Separator/constants.d.ts +0 -3
- package/dist/cjs/helperComponents/Separator/constants.js +0 -10
- package/dist/esm/helperComponents/Separator/constants.d.ts +0 -3
- package/dist/esm/helperComponents/Separator/constants.js +0 -7
- package/src/helperComponents/Separator/constants.ts +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 2.0.2 (2026-08-27)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **FF-8868:** align list DOM structure and spacing with the Figma master ([8b10c5d](https://github.com/cloud-ru-tech/snack-v2/commit/8b10c5d09ca5eed1e2eb0629e8fa14d20bc5e1b6))
|
|
11
|
+
|
|
6
12
|
## 2.0.1 (2026-08-27)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @ds/list
|
package/README.md
CHANGED
|
@@ -920,7 +920,7 @@ export function DroplistWithHeader() {
|
|
|
920
920
|
| `content` | `ItemContent` | — | Основной контент айтема |
|
|
921
921
|
| `data-test-id` | `string \| undefined` | — | |
|
|
922
922
|
| `disabled` | `boolean \| undefined` | — | Флаг неактивности элемента |
|
|
923
|
-
| `hidden` | `boolean \| undefined` | — | Скрыть элемент из списка (не рендерится и
|
|
923
|
+
| `hidden` | `boolean \| undefined` | — | Скрыть элемент из списка (не рендерится и исключается из навигации) |
|
|
924
924
|
| `id` | `ItemId` | — | Уникальный идентификатор |
|
|
925
925
|
| `itemRef` | `RefObject<HTMLElement> \| undefined` | — | Ссылка на DOM-элемент айтема |
|
|
926
926
|
| `itemWrapRender` | `((item: ReactNode) => ReactNode) \| undefined` | — | Рендер-обёртка вокруг айтема (например, для проксирования в `Tooltip`/`Link`) |
|
|
@@ -111,7 +111,7 @@ function BaseItem({ beforeContent, afterContent, content, onClick, onMouseDown,
|
|
|
111
111
|
const stateLayerState = isSelectionSingle && isChecked && !switchProp && !isParentNode
|
|
112
112
|
? 'activatedOnBackground'
|
|
113
113
|
: 'emptyNeutralOnBackground';
|
|
114
|
-
const itemJSX = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.itemWrapper, styles_module_scss_2.default.innerWrapper, className), "data-inactive": inactive || undefined, "data-disabled": disabled || undefined, "data-variant": mode || undefined, "data-checked": (isParentNode && isChecked) || (!isParentNode && isChecked && !switchProp) || undefined, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.stateLayer, "aria-hidden": true, "data-state": stateLayerState }), (0, jsx_runtime_1.jsxs)("li", { "data-type": 'outside', role: 'menuitem', "data-test-id": props['data-test-id'] || `${constants_1.TEST_IDS.baseItem}_${id}`, ref: itemRef, className: (0, classnames_1.default)(styles_module_scss_1.default.listItem, styles_module_scss_2.default.droplistItem), "data-size": size, onClick: handleItemClick, onMouseDown: handleItemMouseDown, tabIndex: firstItemId && id === focusFlattenItems[firstItemId]?.originalId ? 0 : -1, "data-non-pointer": (inactive && !onClick) || undefined, "data-variant": mode || undefined, "data-open": open || undefined, "aria-expanded": isParentNode ? Boolean(open) : undefined, onKeyDown: handleItemKeyDown, onFocus: handleItemFocus, style: { '--level': level }, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, "data-checked": (isParentNode && (indeterminate || isChecked)) || (isChecked && !switchProp) || undefined, children: [dragHandle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.dragHandle, children: dragHandle }), !switchProp && isSelectionSingle && marker && !isParentNode && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.markerContainer, "data-test-id": constants_1.TEST_IDS.baseItemMarker })), !switchProp && isSelectionMultiple && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.checkbox, children: (0, jsx_runtime_1.jsx)(toggles_1.Checkbox, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, tabIndex: -1, onChange: isParentNode ? handleCheckboxChange : undefined, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemCheckbox, onClick: handleCheckboxClick, indeterminate: indeterminate }) })), beforeContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.beforeContent, children: beforeContent }), contentNode, afterContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.afterContent, children: afterContent }), switchProp && interactive && ((0, jsx_runtime_1.jsx)(toggles_1.Switch, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemSwitch, showIcon: showSwitchIcon })), !switchProp && expandIcon && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.groupIndicator, "data-open": open || undefined, "data-test-id": constants_1.TEST_IDS.groupIndicator, "aria-hidden": true, children: expandIcon }))] })] }));
|
|
114
|
+
const itemJSX = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.itemWrapper, styles_module_scss_2.default.innerWrapper, className), "data-size": size, "data-inactive": inactive || undefined, "data-disabled": disabled || undefined, "data-variant": mode || undefined, "data-checked": (isParentNode && isChecked) || (!isParentNode && isChecked && !switchProp) || undefined, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.stateLayer, "aria-hidden": true, "data-state": stateLayerState }), (0, jsx_runtime_1.jsxs)("li", { "data-type": 'outside', role: 'menuitem', "data-test-id": props['data-test-id'] || `${constants_1.TEST_IDS.baseItem}_${id}`, ref: itemRef, className: (0, classnames_1.default)(styles_module_scss_1.default.listItem, styles_module_scss_2.default.droplistItem), "data-size": size, onClick: handleItemClick, onMouseDown: handleItemMouseDown, tabIndex: firstItemId && id === focusFlattenItems[firstItemId]?.originalId ? 0 : -1, "data-non-pointer": (inactive && !onClick) || undefined, "data-variant": mode || undefined, "data-open": open || undefined, "aria-expanded": isParentNode ? Boolean(open) : undefined, onKeyDown: handleItemKeyDown, onFocus: handleItemFocus, style: { '--level': level }, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, "data-checked": (isParentNode && (indeterminate || isChecked)) || (isChecked && !switchProp) || undefined, children: [dragHandle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.dragHandle, children: dragHandle }), !switchProp && isSelectionSingle && marker && !isParentNode && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.markerContainer, "data-test-id": constants_1.TEST_IDS.baseItemMarker })), !switchProp && isSelectionMultiple && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.checkbox, children: (0, jsx_runtime_1.jsx)(toggles_1.Checkbox, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, tabIndex: -1, onChange: isParentNode ? handleCheckboxChange : undefined, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemCheckbox, onClick: handleCheckboxClick, indeterminate: indeterminate }) })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_2.default.contentWrapper, children: [beforeContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.beforeContent, children: beforeContent }), contentNode, afterContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.afterContent, children: afterContent })] }), switchProp && interactive && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.switchWrapper, children: (0, jsx_runtime_1.jsx)(toggles_1.Switch, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemSwitch, showIcon: showSwitchIcon }) })), !switchProp && expandIcon && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.groupIndicator, "data-open": open || undefined, "data-test-id": constants_1.TEST_IDS.groupIndicator, "aria-hidden": true, children: expandIcon }))] })] }));
|
|
115
115
|
if (!itemWrapRender) {
|
|
116
116
|
return itemJSX;
|
|
117
117
|
}
|
|
@@ -117,6 +117,14 @@
|
|
|
117
117
|
padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
|
|
118
118
|
padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
|
|
119
119
|
}
|
|
120
|
+
.droplistItem[data-size=s] .afterContent > svg{
|
|
121
|
+
max-width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
|
|
122
|
+
max-height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
|
|
123
|
+
}
|
|
124
|
+
.droplistItem[data-size=s] .switchWrapper{
|
|
125
|
+
padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
|
|
126
|
+
padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
|
|
127
|
+
}
|
|
120
128
|
.droplistItem[data-size=s] .groupIndicator{
|
|
121
129
|
width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
|
|
122
130
|
height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
|
|
@@ -160,6 +168,14 @@
|
|
|
160
168
|
padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
161
169
|
padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
162
170
|
}
|
|
171
|
+
.droplistItem[data-size=m] .afterContent > svg{
|
|
172
|
+
max-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
173
|
+
max-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
174
|
+
}
|
|
175
|
+
.droplistItem[data-size=m] .switchWrapper{
|
|
176
|
+
padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
177
|
+
padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
178
|
+
}
|
|
163
179
|
.droplistItem[data-size=m] .groupIndicator{
|
|
164
180
|
width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
165
181
|
height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
@@ -203,6 +219,14 @@
|
|
|
203
219
|
padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
|
|
204
220
|
padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
|
|
205
221
|
}
|
|
222
|
+
.droplistItem[data-size=l] .afterContent > svg{
|
|
223
|
+
max-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
224
|
+
max-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
225
|
+
}
|
|
226
|
+
.droplistItem[data-size=l] .switchWrapper{
|
|
227
|
+
padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
|
|
228
|
+
padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
|
|
229
|
+
}
|
|
206
230
|
.droplistItem[data-size=l] .groupIndicator{
|
|
207
231
|
width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
208
232
|
height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
|
|
@@ -244,6 +268,9 @@
|
|
|
244
268
|
.innerWrapper[data-has-checked] .droplistItem:focus-visible, .innerWrapper[data-checked] .droplistItem:focus-visible{
|
|
245
269
|
outline-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
|
|
246
270
|
}
|
|
271
|
+
.innerWrapper[data-has-checked][data-disabled] .markerContainer, .innerWrapper[data-checked][data-disabled] .markerContainer{
|
|
272
|
+
opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
|
|
273
|
+
}
|
|
247
274
|
.innerWrapper[data-has-checked][data-disabled] .markerContainer::before, .innerWrapper[data-checked][data-disabled] .markerContainer::before{
|
|
248
275
|
background-color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
|
|
249
276
|
}
|
|
@@ -253,4 +280,19 @@
|
|
|
253
280
|
flex-grow:1;
|
|
254
281
|
flex-shrink:1;
|
|
255
282
|
box-sizing:border-box;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.switchWrapper{
|
|
286
|
+
display:flex;
|
|
287
|
+
flex-shrink:0;
|
|
288
|
+
align-items:center;
|
|
289
|
+
box-sizing:content-box;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.contentWrapper{
|
|
293
|
+
display:flex;
|
|
294
|
+
flex-grow:1;
|
|
295
|
+
flex-shrink:1;
|
|
296
|
+
align-items:flex-start;
|
|
297
|
+
min-width:0;
|
|
256
298
|
}
|
|
@@ -15,7 +15,7 @@ function SearchItem({ search, itemRef, onNavKeyDown, onFocus, inTopBar }) {
|
|
|
15
15
|
// Размер поиска следует за размером айтемов списка (size из контекста), а не фиксирован 's'.
|
|
16
16
|
const { firstItemId, size = 'm' } = (0, contexts_1.useNewListContext)();
|
|
17
17
|
const handleKeyDown = (e) => {
|
|
18
|
-
// Поиск — текстовый input:
|
|
18
|
+
// Поиск — текстовый input: перехватываются только Up/Down (навигация по списку), горизонтальные
|
|
19
19
|
// стрелки оставляем каретке.
|
|
20
20
|
(0, utils_1.preventScrollOnVerticalArrows)(e);
|
|
21
21
|
search?.onKeyDown?.(e);
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Отключает FLIP-анимацию перестановки после отпускания (общий контракт `SimpleItem` и `SimpleGroupBlock`).
|
|
3
3
|
* Порядок применяется синхронно через `onItemsReorder`; без флага `@dnd-kit` доигрывает `transform 200ms`
|
|
4
4
|
* из старого слота в новый — отпущенная строка дёргается обратно и уезжает на место. Расступание соседей
|
|
5
|
-
* на время переноса флаг не
|
|
5
|
+
* на время переноса флаг не изменяется: его ведёт стратегия `SortableContext`.
|
|
6
6
|
*/
|
|
7
7
|
export declare function animateLayoutChanges(): boolean;
|
|
@@ -5,7 +5,7 @@ exports.animateLayoutChanges = animateLayoutChanges;
|
|
|
5
5
|
* Отключает FLIP-анимацию перестановки после отпускания (общий контракт `SimpleItem` и `SimpleGroupBlock`).
|
|
6
6
|
* Порядок применяется синхронно через `onItemsReorder`; без флага `@dnd-kit` доигрывает `transform 200ms`
|
|
7
7
|
* из старого слота в новый — отпущенная строка дёргается обратно и уезжает на место. Расступание соседей
|
|
8
|
-
* на время переноса флаг не
|
|
8
|
+
* на время переноса флаг не изменяется: его ведёт стратегия `SortableContext`.
|
|
9
9
|
*/
|
|
10
10
|
function animateLayoutChanges() {
|
|
11
11
|
return false;
|
|
@@ -93,6 +93,15 @@
|
|
|
93
93
|
.itemWrapper[data-loading] .stateLayer[data-state=emptyDarkOnAccent], .itemWrapper:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent], .itemWrapper[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent]{
|
|
94
94
|
background:var(--sn-theme-color-material-stateLayer-darkOnAccent-pressed-filled, rgba(0, 0, 0, 0.1215686275));
|
|
95
95
|
}
|
|
96
|
+
.itemWrapper[data-size=s]{
|
|
97
|
+
border-radius:var(--sn-list-anatomy-size-s-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
|
|
98
|
+
}
|
|
99
|
+
.itemWrapper[data-size=m]{
|
|
100
|
+
border-radius:var(--sn-list-anatomy-size-m-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
|
|
101
|
+
}
|
|
102
|
+
.itemWrapper[data-size=l]{
|
|
103
|
+
border-radius:var(--sn-list-anatomy-size-l-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-l, var(--sn-primitive-dimension-0, 0px)));
|
|
104
|
+
}
|
|
96
105
|
.itemWrapper[data-disabled], .itemWrapper:disabled{
|
|
97
106
|
cursor:not-allowed;
|
|
98
107
|
background-color:transparent;
|
|
@@ -36,7 +36,7 @@ export type BaseItem = WithSupportProps<{
|
|
|
36
36
|
id?: ItemId;
|
|
37
37
|
/** Флаг неактивности элемента */
|
|
38
38
|
disabled?: boolean;
|
|
39
|
-
/** Скрыть элемент из списка (не рендерится и
|
|
39
|
+
/** Скрыть элемент из списка (не рендерится и исключается из навигации) */
|
|
40
40
|
hidden?: boolean;
|
|
41
41
|
/** Ссылка на DOM-элемент айтема */
|
|
42
42
|
itemRef?: RefObject<HTMLElement>;
|
|
@@ -45,7 +45,7 @@ export type BaseItem = WithSupportProps<{
|
|
|
45
45
|
/**
|
|
46
46
|
* Флаг отображения отключения реакции на любое css состояние (hover/focus и тд)
|
|
47
47
|
* <br>
|
|
48
|
-
*
|
|
48
|
+
* Также элемент исключается из навигации с клавиатуры и не может быть выбран (selection)
|
|
49
49
|
*/
|
|
50
50
|
inactive?: boolean;
|
|
51
51
|
/**
|
|
@@ -95,7 +95,7 @@ function kindFlattenItems({ items, prefix, parentId, sortable }) {
|
|
|
95
95
|
key: itemId,
|
|
96
96
|
originalId: itemId,
|
|
97
97
|
id: autoId,
|
|
98
|
-
// `inactive` элемент
|
|
98
|
+
// `inactive` элемент исключается из клавиатурной навигации наравне с `disabled`
|
|
99
99
|
// (см. JSDoc `BaseItem.inactive`). Гейтит только nav/bulk-select через
|
|
100
100
|
// `extractActiveItems`; рендерный `disabled` в `flattenItems` остаётся исходным.
|
|
101
101
|
disabled: item.disabled || item.inactive,
|
|
@@ -55,7 +55,7 @@ exports.ListPrivate = (0, react_1.forwardRef)(({ items, pinTop, pinBottom, onKey
|
|
|
55
55
|
// типов (`ListProps`), здесь рантайм-зеркало на случай прямого использования `ListPrivate`.
|
|
56
56
|
const virtualized = virtualizedProp && !onDragEnd;
|
|
57
57
|
const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.MouseSensor, draggingOptions), (0, core_1.useSensor)(core_1.TouchSensor, {}), (0, core_1.useSensor)(core_1.KeyboardSensor, { coordinateGetter: sortable_1.sortableKeyboardCoordinates }));
|
|
58
|
-
// Id перетаскиваемой строки — для рендера её копии в `DragOverlay`. Копия
|
|
58
|
+
// Id перетаскиваемой строки — для рендера её копии в `DragOverlay`. Копия рендерится в портале
|
|
59
59
|
// над страницей и не режется `overflow: hidden` контейнера `List` (сама строка на время
|
|
60
60
|
// переноса уступает место — её слот пустеет). `null`, когда перетаскивание не идёт.
|
|
61
61
|
const [activeDragId, setActiveDragId] = (0, react_1.useState)(null);
|
|
@@ -54,11 +54,10 @@
|
|
|
54
54
|
flex-direction:column;
|
|
55
55
|
gap:var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-gap, var(--sn-primitive-dimension-4, 4px));
|
|
56
56
|
box-sizing:border-box;
|
|
57
|
-
padding:0 var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-paddingHorizontal, var(--sn-primitive-dimension-8, 8px))
|
|
57
|
+
padding:0 var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-paddingHorizontal, var(--sn-primitive-dimension-8, 8px));
|
|
58
58
|
}
|
|
59
59
|
.header[data-divider]{
|
|
60
|
-
|
|
61
|
-
padding-bottom:var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-paddingHorizontal, var(--sn-primitive-dimension-8, 8px));
|
|
60
|
+
padding-bottom:var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
|
|
62
61
|
border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
|
|
63
62
|
}
|
|
64
63
|
|
|
@@ -23,7 +23,7 @@ type UseListItemsModelProps = {
|
|
|
23
23
|
* Единая модель данных списка для `List` и `Droplist`: collapse-состояние,
|
|
24
24
|
* плоские карты айтемов (`flattenItems` / `focusFlattenItems`) и производный
|
|
25
25
|
* порядок навигации (`ids` / `expandedIds`). Оба компонента собирают одну и ту же
|
|
26
|
-
* структуру, поэтому она
|
|
26
|
+
* структуру, поэтому она собрана в одном хуке — расхождение между списком и дроплистом
|
|
27
27
|
* физически невозможно.
|
|
28
28
|
*/
|
|
29
29
|
export declare function useListItemsModel({ items: itemsProp, pinTop: pinTopProp, pinBottom: pinBottomProp, search, collapse, selectionMode, footerActiveElementsRefs, onItemsReorder, }: UseListItemsModelProps): {
|
|
@@ -26,7 +26,7 @@ function focusReturnTarget(el) {
|
|
|
26
26
|
* Единая модель данных списка для `List` и `Droplist`: collapse-состояние,
|
|
27
27
|
* плоские карты айтемов (`flattenItems` / `focusFlattenItems`) и производный
|
|
28
28
|
* порядок навигации (`ids` / `expandedIds`). Оба компонента собирают одну и ту же
|
|
29
|
-
* структуру, поэтому она
|
|
29
|
+
* структуру, поэтому она собрана в одном хуке — расхождение между списком и дроплистом
|
|
30
30
|
* физически невозможно.
|
|
31
31
|
*/
|
|
32
32
|
function useListItemsModel({ items: itemsProp, pinTop: pinTopProp, pinBottom: pinBottomProp, search, collapse, selectionMode, footerActiveElementsRefs, onItemsReorder, }) {
|
|
@@ -135,7 +135,7 @@ function useNewKeyboardNavigation({ mainRef, btnRef, focusFlattenItems, keyboard
|
|
|
135
135
|
activeItemIdRef.current = defaultActiveItemId;
|
|
136
136
|
}, [defaultActiveItemId]);
|
|
137
137
|
const handleListKeyDownFactory = (0, react_1.useCallback)((ids, expandedIds) => (e) => {
|
|
138
|
-
// Стрелки навигации по списку
|
|
138
|
+
// Стрелки навигации по списку перехватываются централизованно — иначе нативное поведение скроллит
|
|
139
139
|
// страницу (элементы — кнопки/li, не текст, поэтому безопасны все четыре стрелки).
|
|
140
140
|
(0, utils_1.preventScrollOnArrowKeys)(e);
|
|
141
141
|
switch (e.key) {
|
|
@@ -71,7 +71,7 @@ function DesktopDroplist({ items: itemsProp, search, pinBottom: pinBottomProp =
|
|
|
71
71
|
}
|
|
72
72
|
}, []);
|
|
73
73
|
const onKeyDown = (0, react_1.useCallback)((e, cb) => {
|
|
74
|
-
// Up/Down открывают/закрывают дроплист —
|
|
74
|
+
// Up/Down открывают/закрывают дроплист — их нативный скролл страницы подавляется. Только
|
|
75
75
|
// вертикальные: триггером может быть текстовое поле, где Left/Right двигают каретку.
|
|
76
76
|
(0, utils_1.preventScrollOnVerticalArrows)(e);
|
|
77
77
|
if (e.key === 'ArrowDown') {
|
|
@@ -23,5 +23,5 @@ function ItemContent({ truncate: truncateProp, caption, description, label, clas
|
|
|
23
23
|
...DEFAULT_TRUNCATE,
|
|
24
24
|
...truncateProp,
|
|
25
25
|
}), [truncateProp]);
|
|
26
|
-
return ((0, jsx_runtime_1.
|
|
26
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.textWrapper, className), ...(0, utils_1.extractSupportProps)(rest), "data-size": size ?? 's', "data-disabled": disabled || undefined, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.textContent, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.label, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate.variant, text: String(label), maxLines: truncate.label, "data-test-id": constants_1.TEST_IDS.baseItemLabel }) }), caption && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.caption, children: caption })] }), description && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.description, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { text: description, maxLines: truncate.description, "data-test-id": constants_1.TEST_IDS.baseItemDescription }) }))] }) }));
|
|
27
27
|
}
|
|
@@ -22,23 +22,27 @@
|
|
|
22
22
|
color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.
|
|
25
|
+
.textWrapper{
|
|
26
26
|
overflow:hidden;
|
|
27
27
|
display:flex;
|
|
28
|
-
flex-direction:column;
|
|
29
28
|
flex-grow:1;
|
|
30
29
|
flex-shrink:1;
|
|
31
30
|
box-sizing:border-box;
|
|
32
31
|
}
|
|
33
|
-
.
|
|
32
|
+
.textWrapper[data-size=s]{
|
|
33
|
+
padding-top:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px)));
|
|
34
|
+
padding-bottom:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px)));
|
|
35
|
+
}
|
|
36
|
+
.textWrapper[data-size=s] .textContent{
|
|
34
37
|
gap:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-0, 0));
|
|
35
|
-
padding:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-
|
|
38
|
+
padding-right:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
|
|
39
|
+
padding-left:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
|
|
36
40
|
}
|
|
37
|
-
.
|
|
41
|
+
.textWrapper[data-size=s] .headline{
|
|
38
42
|
gap:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
|
|
39
43
|
min-height:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by12, 16px));
|
|
40
44
|
}
|
|
41
|
-
.
|
|
45
|
+
.textWrapper[data-size=s] .label{
|
|
42
46
|
font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
43
47
|
font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
44
48
|
line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
|
|
@@ -48,7 +52,7 @@
|
|
|
48
52
|
display:flex;
|
|
49
53
|
align-items:center;
|
|
50
54
|
}
|
|
51
|
-
.
|
|
55
|
+
.textWrapper[data-size=s] .caption{
|
|
52
56
|
font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
53
57
|
font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
54
58
|
line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
|
|
@@ -56,7 +60,7 @@
|
|
|
56
60
|
letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
57
61
|
paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
|
|
58
62
|
}
|
|
59
|
-
.
|
|
63
|
+
.textWrapper[data-size=s] .description{
|
|
60
64
|
font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
61
65
|
font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
62
66
|
line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
|
|
@@ -64,15 +68,20 @@
|
|
|
64
68
|
letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
65
69
|
paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
|
|
66
70
|
}
|
|
67
|
-
.
|
|
71
|
+
.textWrapper[data-size=m]{
|
|
72
|
+
padding-top:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
73
|
+
padding-bottom:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px)));
|
|
74
|
+
}
|
|
75
|
+
.textWrapper[data-size=m] .textContent{
|
|
68
76
|
gap:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-0, 0));
|
|
69
|
-
padding:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-
|
|
77
|
+
padding-right:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
|
|
78
|
+
padding-left:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
|
|
70
79
|
}
|
|
71
|
-
.
|
|
80
|
+
.textWrapper[data-size=m] .headline{
|
|
72
81
|
gap:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
|
|
73
82
|
min-height:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by14, 20px));
|
|
74
83
|
}
|
|
75
|
-
.
|
|
84
|
+
.textWrapper[data-size=m] .label{
|
|
76
85
|
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
77
86
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
78
87
|
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
|
|
@@ -82,7 +91,7 @@
|
|
|
82
91
|
display:flex;
|
|
83
92
|
align-items:center;
|
|
84
93
|
}
|
|
85
|
-
.
|
|
94
|
+
.textWrapper[data-size=m] .caption{
|
|
86
95
|
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
87
96
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
88
97
|
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
|
|
@@ -90,7 +99,7 @@
|
|
|
90
99
|
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
91
100
|
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
92
101
|
}
|
|
93
|
-
.
|
|
102
|
+
.textWrapper[data-size=m] .description{
|
|
94
103
|
font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
95
104
|
font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
96
105
|
line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
|
|
@@ -98,15 +107,20 @@
|
|
|
98
107
|
letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
99
108
|
paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
|
|
100
109
|
}
|
|
101
|
-
.
|
|
110
|
+
.textWrapper[data-size=l]{
|
|
111
|
+
padding-top:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px)));
|
|
112
|
+
padding-bottom:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px)));
|
|
113
|
+
}
|
|
114
|
+
.textWrapper[data-size=l] .textContent{
|
|
102
115
|
gap:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-2, 2px));
|
|
103
|
-
padding:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-
|
|
116
|
+
padding-right:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
|
|
117
|
+
padding-left:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
|
|
104
118
|
}
|
|
105
|
-
.
|
|
119
|
+
.textWrapper[data-size=l] .headline{
|
|
106
120
|
gap:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
|
|
107
121
|
min-height:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by16, 24px));
|
|
108
122
|
}
|
|
109
|
-
.
|
|
123
|
+
.textWrapper[data-size=l] .label{
|
|
110
124
|
font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
111
125
|
font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
112
126
|
line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
|
|
@@ -116,7 +130,7 @@
|
|
|
116
130
|
display:flex;
|
|
117
131
|
align-items:center;
|
|
118
132
|
}
|
|
119
|
-
.
|
|
133
|
+
.textWrapper[data-size=l] .caption{
|
|
120
134
|
font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
121
135
|
font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
122
136
|
line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
|
|
@@ -124,7 +138,7 @@
|
|
|
124
138
|
letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
125
139
|
paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
|
|
126
140
|
}
|
|
127
|
-
.
|
|
141
|
+
.textWrapper[data-size=l] .description{
|
|
128
142
|
font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
|
|
129
143
|
font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
|
|
130
144
|
line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
|
|
@@ -132,8 +146,15 @@
|
|
|
132
146
|
letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
|
|
133
147
|
paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
|
|
134
148
|
}
|
|
135
|
-
.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
149
|
+
.textWrapper[data-disabled]{
|
|
150
|
+
opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.textContent{
|
|
154
|
+
overflow:hidden;
|
|
155
|
+
display:flex;
|
|
156
|
+
flex-direction:column;
|
|
157
|
+
flex-grow:1;
|
|
158
|
+
flex-shrink:1;
|
|
159
|
+
box-sizing:border-box;
|
|
139
160
|
}
|
|
@@ -13,7 +13,6 @@ const contexts_1 = require("../../components/Lists/contexts");
|
|
|
13
13
|
const constants_1 = require("../../constants");
|
|
14
14
|
const locale_1 = require("../../locale");
|
|
15
15
|
const utils_1 = require("../../utils");
|
|
16
|
-
const constants_2 = require("./constants");
|
|
17
16
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
18
17
|
function Separator({ label, beforeContent, truncate, divider, groupVariant = 'subtitleTertiary', selectButton, }) {
|
|
19
18
|
const { size = 'm' } = (0, contexts_1.useNewListContext)();
|
|
@@ -24,14 +23,14 @@ function Separator({ label, beforeContent, truncate, divider, groupVariant = 'su
|
|
|
24
23
|
return null;
|
|
25
24
|
}
|
|
26
25
|
const { onClick, checked, itemRef, label } = selectButton;
|
|
27
|
-
return ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.selectButton, "data-size": size,
|
|
26
|
+
return ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.selectButton, "data-size": size, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: 'function', appearance: 'neutral', size: size, tabIndex: 0, "data-test-id": constants_1.TEST_IDS.bulkSelectButton, onClick: (e) => {
|
|
28
27
|
onClick?.(e);
|
|
29
28
|
e.preventDefault();
|
|
30
29
|
e.stopPropagation();
|
|
31
30
|
}, onFocus: utils_1.stopPropagation, innerRef: itemRef, label: label ?? (checked ? t('groupSelectButton.reset') : t('groupSelectButton.select')) }) }));
|
|
32
|
-
}, [
|
|
31
|
+
}, [selectButton, size, t]);
|
|
33
32
|
if (label) {
|
|
34
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.separatorWithLabel, "data-size": size, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, style: { '--level': level }, children: [beforeContent && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.
|
|
33
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.separatorWithLabel, "data-size": size, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, style: { '--level': level }, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.contentWrapper, children: [beforeContent && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.centeredWrapper, "aria-hidden": true, children: beforeContent })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.textWrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.textContent, children: (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.headline, "data-group-variant": groupVariant, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate?.variant, text: label, maxLines: 1 }) }) }), selectButtonJSX] })] }), divider && ((0, jsx_runtime_1.jsx)(divider_1.Divider, { className: styles_module_scss_1.default.divider, variant: groupVariant === 'subtitle' ? divider_1.VARIANT.Regular : divider_1.VARIANT.Thin }))] }));
|
|
35
34
|
}
|
|
36
35
|
if (divider) {
|
|
37
36
|
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.separatorWithoutLabel, "data-size": size, children: (0, jsx_runtime_1.jsx)(divider_1.Divider, { variant: divider_1.VARIANT.Regular }) }));
|