@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/components/Items/BaseItem/BaseItem.js +1 -1
  4. package/dist/cjs/components/Items/BaseItem/styles.module.css +42 -0
  5. package/dist/cjs/components/Items/SearchItem/SearchItem.js +1 -1
  6. package/dist/cjs/components/Items/SimpleItem/utils.d.ts +1 -1
  7. package/dist/cjs/components/Items/SimpleItem/utils.js +1 -1
  8. package/dist/cjs/components/Items/styles.module.css +9 -0
  9. package/dist/cjs/components/Items/types.d.ts +2 -2
  10. package/dist/cjs/components/Items/utils.js +1 -1
  11. package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +1 -1
  12. package/dist/cjs/components/Lists/ListPrivate/styles.module.css +2 -3
  13. package/dist/cjs/components/Lists/hooks.d.ts +1 -1
  14. package/dist/cjs/components/Lists/hooks.js +2 -2
  15. package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
  16. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +1 -1
  17. package/dist/cjs/helperComponents/ItemContent/styles.module.css +45 -24
  18. package/dist/cjs/helperComponents/Separator/Separator.js +3 -4
  19. package/dist/cjs/helperComponents/Separator/styles.module.css +69 -49
  20. package/dist/cjs/style.css +167 -76
  21. package/dist/esm/components/Items/BaseItem/BaseItem.js +1 -1
  22. package/dist/esm/components/Items/BaseItem/styles.module.css +42 -0
  23. package/dist/esm/components/Items/SearchItem/SearchItem.js +1 -1
  24. package/dist/esm/components/Items/SimpleItem/utils.d.ts +1 -1
  25. package/dist/esm/components/Items/SimpleItem/utils.js +1 -1
  26. package/dist/esm/components/Items/styles.module.css +9 -0
  27. package/dist/esm/components/Items/types.d.ts +2 -2
  28. package/dist/esm/components/Items/utils.js +1 -1
  29. package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +1 -1
  30. package/dist/esm/components/Lists/ListPrivate/styles.module.css +2 -3
  31. package/dist/esm/components/Lists/hooks.d.ts +1 -1
  32. package/dist/esm/components/Lists/hooks.js +2 -2
  33. package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
  34. package/dist/esm/helperComponents/ItemContent/ItemContent.js +1 -1
  35. package/dist/esm/helperComponents/ItemContent/styles.module.css +45 -24
  36. package/dist/esm/helperComponents/Separator/Separator.js +3 -4
  37. package/dist/esm/helperComponents/Separator/styles.module.css +69 -49
  38. package/dist/esm/style.css +167 -76
  39. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  40. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  41. package/package.json +10 -10
  42. package/src/components/Items/BaseItem/BaseItem.tsx +17 -10
  43. package/src/components/Items/BaseItem/styles.module.scss +57 -4
  44. package/src/components/Items/SearchItem/SearchItem.tsx +1 -1
  45. package/src/components/Items/SimpleItem/utils.ts +1 -1
  46. package/src/components/Items/styles.module.scss +10 -2
  47. package/src/components/Items/types.ts +3 -7
  48. package/src/components/Items/utils.ts +1 -1
  49. package/src/components/Lists/ListPrivate/ListPrivate.tsx +1 -1
  50. package/src/components/Lists/ListPrivate/styles.module.scss +5 -4
  51. package/src/components/Lists/hooks.ts +2 -2
  52. package/src/helperComponents/DesktopDroplist/DesktopDroplist.tsx +1 -1
  53. package/src/helperComponents/ItemContent/ItemContent.tsx +22 -20
  54. package/src/helperComponents/ItemContent/styles.module.scss +25 -15
  55. package/src/helperComponents/Separator/Separator.tsx +23 -22
  56. package/src/helperComponents/Separator/styles.module.scss +132 -101
  57. package/dist/cjs/helperComponents/Separator/constants.d.ts +0 -3
  58. package/dist/cjs/helperComponents/Separator/constants.js +0 -10
  59. package/dist/esm/helperComponents/Separator/constants.d.ts +0 -3
  60. package/dist/esm/helperComponents/Separator/constants.js +0 -7
  61. 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: гасим только Up/Down (навигация по списку), горизонтальные
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
- * на время переноса флаг не трогает: его ведёт стратегия `SortableContext`.
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
- * на время переноса флаг не трогает: его ведёт стратегия `SortableContext`.
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
- * Так же элемент пропадает из навигации с клавиатуры, и не может быть выбран (selection)
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` элемент выпадает из клавиатурной навигации наравне с `disabled`
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)) var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
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
- margin-bottom:var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
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.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.content, 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.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 }) }))] }));
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
- .content{
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
- .content[data-size=s]{
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-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px))) 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))) var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px))) 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)));
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
- .content[data-size=s] .headline{
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
- .content[data-size=s] .label{
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
- .content[data-size=s] .caption{
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
- .content[data-size=s] .description{
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
- .content[data-size=m]{
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-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px))) 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))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px))) 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)));
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
- .content[data-size=m] .headline{
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
- .content[data-size=m] .label{
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
- .content[data-size=m] .caption{
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
- .content[data-size=m] .description{
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
- .content[data-size=l]{
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-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px))) 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))) var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px))) 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)));
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
- .content[data-size=l] .headline{
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
- .content[data-size=l] .label{
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
- .content[data-size=l] .caption{
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
- .content[data-size=l] .description{
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
- .content[data-disabled] .label,
136
- .content[data-disabled] .description,
137
- .content[data-disabled] .caption{
138
- color:var(--sn-theme-color-available-version-textDisabled, var(--sn-brand-color-text-version-disabled, rgba(65, 66, 78, 0.3490196078)));
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, "data-weight": (divider && groupVariant) || undefined, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: 'function', appearance: 'neutral', size: constants_2.SELECT_BUTTON_SIZE_MAP[size], tabIndex: 0, "data-test-id": constants_1.TEST_IDS.bulkSelectButton, onClick: (e) => {
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
- }, [divider, groupVariant, selectButton, size, t]);
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.beforeContent, "aria-hidden": true, children: beforeContent })), (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.label, "data-group-variant": groupVariant, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate?.variant, text: label, maxLines: 1 }) }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.labelEnd, children: [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 }))] })] }));
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 }) }));