@cloud-ru/ds-list 2.0.1 → 2.0.2-preview-7f6a91d6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +18 -18
- 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/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 }) }));
|