@cloud-ru/ds-list 2.2.6 → 2.2.7-preview-b163635c.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 CHANGED
@@ -990,6 +990,7 @@ export function DroplistWithHeader() {
990
990
  | `untouchableScrollbars` | `boolean` | — | Отключает возможность взаимодействовать со скролбарами мышью. |
991
991
  | `virtualized` | `boolean` | — | Включить виртуализацию элементов списка. Рекомендуется при количестве элементов от 1000. |
992
992
  | `widthStrategy` | `"auto"` \| `"eq"` \| `"gte"` | `auto` | Стратегия управления шириной контейнера поповера <br/> - `auto` - соответствует ширине контента, <br/> - `gte` - Great Than or Equal, равен ширине таргета или больше ее, если контент в поповере шире, <br/> - `eq` - Equal, строго равен ширине таргета. |
993
+ | `withDividers` | `boolean` | `true` | Тонкие линии между topBar↔body и body↔footer: разграничивают закреплённые шапку и подвал <br/> от прокручиваемого под ними содержимого. Передайте `false`, чтобы убрать обе линии. |
993
994
 
994
995
  ##### Related types
995
996
 
@@ -162,7 +162,7 @@ type DroplistMobileSlots = {
162
162
  * (список size `l` в `BottomSheet`), иначе — `DesktopDroplist` (анкорный popover). Mobile-слоты
163
163
  * применяются только на mobile.
164
164
  */
165
- export type DroplistProps = BaseDroplistProps & DroplistMobileSlots & Pick<BottomSheetProps, 'snapPoints'>;
165
+ export type DroplistProps = BaseDroplistProps & DroplistMobileSlots & Pick<BottomSheetProps, 'snapPoints' | 'withDividers'>;
166
166
  /**
167
167
  * Props адаптивного `ReorderableDroplist`: props `ReorderableList` + popover/mobile-обвязка
168
168
  * `Droplist`. Отдельный компонент по той же причине, что и `ReorderableList`.
@@ -174,7 +174,7 @@ export type DroplistImplProps = DesktopDroplistProps & DroplistMobileSlots;
174
174
  * @internal Props mobile-реализации (`BottomSheet`): реализация дроплиста без popover-пропов
175
175
  * + mobile-слоты.
176
176
  */
177
- export type MobileDroplistProps = Omit<DesktopDroplistProps, 'trigger' | 'placement' | 'widthStrategy' | 'triggerElemRef' | 'listRef' | 'triggerClassName'> & Pick<BottomSheetProps, 'snapPoints'> & DroplistMobileSlots;
177
+ export type MobileDroplistProps = Omit<DesktopDroplistProps, 'trigger' | 'placement' | 'widthStrategy' | 'triggerElemRef' | 'listRef' | 'triggerClassName'> & Pick<BottomSheetProps, 'snapPoints' | 'withDividers'> & DroplistMobileSlots;
178
178
  export type ListPrivateProps = Omit<ListImplProps, 'pinTop' | 'pinBottom' | 'items' | 'hasListInFocusChain' | 'onItemsReorder' | 'virtualized'> & {
179
179
  nested?: boolean;
180
180
  active?: boolean;
@@ -6,4 +6,4 @@ import { MobileDroplistProps } from '../../components/Lists/types';
6
6
  * вложенного списка, в шапке появляется его заголовок и кнопка «назад». Internal — наружу не реэкспортится;
7
7
  * рендерится адаптивным `Droplist` на `layoutType='mobile'`.
8
8
  */
9
- export declare function MobileDroplist({ items, selection, open: openProp, onOpenChange, children, search, label, actionButton, slotAfterTitle, onBackButtonClick, virtualized, closeDroplistOnItemClick, scroll, container, closeOnPopstate, size, snapPoints, footer, onItemsReorder, ...rest }: MobileDroplistProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function MobileDroplist({ items, selection, open: openProp, onOpenChange, children, search, label, actionButton, slotAfterTitle, onBackButtonClick, virtualized, closeDroplistOnItemClick, scroll, container, closeOnPopstate, size, snapPoints, footer, onItemsReorder, withDividers, ...rest }: MobileDroplistProps): import("react/jsx-runtime").JSX.Element;
@@ -25,7 +25,7 @@ function MobileDroplist({ items, selection, open: openProp, onOpenChange, childr
25
25
  // скроллятся вместе со списком). `header` + `headerDivider` / `footerDivider` НЕ деструктурируем —
26
26
  // они уходят в `...rest` на корневой `List` (он рендерит шапку и её divider).
27
27
  // `onItemsReorder` — только на корне: drill-down `next-list` ортогонален дереву `SimpleItem`.
28
- footer, onItemsReorder, ...rest }) {
28
+ footer, onItemsReorder, withDividers, ...rest }) {
29
29
  const portalContext = (0, portal_context_1.usePortalContext)();
30
30
  const scrollRef = (0, react_1.useRef)(null);
31
31
  const [open = false, setIsOpen] = (0, utils_1.useValueControl)({ value: openProp, onChange: onOpenChange });
@@ -143,6 +143,6 @@ footer, onItemsReorder, ...rest }) {
143
143
  container: container?.current ?? containerRef, open: isRoot ? open : true,
144
144
  // Dismiss (backdrop / swipe / Esc): на корне — закрыть весь droplist; глубже — вернуться на уровень вверх,
145
145
  // как ждёт пользователь на mobile (а не закрывать всю цепочку разом).
146
- onClose: isRoot ? handleClose : popLevel, withDividers: true, title: title, onBackButtonClick: handleBack, actionButton: isRoot ? actionButton : undefined, slotAfterTitle: isRoot ? slotAfterTitle : undefined, content: content, footer: isRoot ? footer : undefined, snapPoints: expanded ? [1] : snapPoints, closeOnPopstate: closeOnPopstate ?? true }, isRoot ? 'root' : String(item?.id ?? levelIndex)));
146
+ onClose: isRoot ? handleClose : popLevel, withDividers: withDividers, title: title, onBackButtonClick: handleBack, actionButton: isRoot ? actionButton : undefined, slotAfterTitle: isRoot ? slotAfterTitle : undefined, content: content, footer: isRoot ? footer : undefined, snapPoints: expanded ? bottom_sheet_1.SNAP_POINTS_PRESET.full : snapPoints, closeOnPopstate: closeOnPopstate ?? true }, isRoot ? 'root' : String(item?.id ?? levelIndex)));
147
147
  })] }));
148
148
  }
@@ -7,3 +7,4 @@ export { getDefaultItemId, getFooterItemId, getItemAutoId } from './utils';
7
7
  export * from './constants';
8
8
  export { setNonce } from '@cloud-ru/ds-scroll';
9
9
  export * from './locale';
10
+ export { SNAP_POINTS_PRESET } from '@cloud-ru/ds-bottom-sheet';
package/dist/cjs/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.setNonce = exports.getItemAutoId = exports.getFooterItemId = exports.getDefaultItemId = exports.NewListContextProvider = exports.kindFlattenItems = void 0;
17
+ exports.SNAP_POINTS_PRESET = exports.setNonce = exports.getItemAutoId = exports.getFooterItemId = exports.getDefaultItemId = exports.NewListContextProvider = exports.kindFlattenItems = void 0;
18
18
  __exportStar(require("./components"), exports);
19
19
  __exportStar(require("./types"), exports);
20
20
  var Items_1 = require("./components/Items");
@@ -35,3 +35,5 @@ __exportStar(require("./constants"), exports);
35
35
  var scroll_1 = require("@cloud-ru/ds-scroll");
36
36
  Object.defineProperty(exports, "setNonce", { enumerable: true, get: function () { return scroll_1.setNonce; } });
37
37
  __exportStar(require("./locale"), exports);
38
+ var bottom_sheet_1 = require("@cloud-ru/ds-bottom-sheet");
39
+ Object.defineProperty(exports, "SNAP_POINTS_PRESET", { enumerable: true, get: function () { return bottom_sheet_1.SNAP_POINTS_PRESET; } });
@@ -162,7 +162,7 @@ type DroplistMobileSlots = {
162
162
  * (список size `l` в `BottomSheet`), иначе — `DesktopDroplist` (анкорный popover). Mobile-слоты
163
163
  * применяются только на mobile.
164
164
  */
165
- export type DroplistProps = BaseDroplistProps & DroplistMobileSlots & Pick<BottomSheetProps, 'snapPoints'>;
165
+ export type DroplistProps = BaseDroplistProps & DroplistMobileSlots & Pick<BottomSheetProps, 'snapPoints' | 'withDividers'>;
166
166
  /**
167
167
  * Props адаптивного `ReorderableDroplist`: props `ReorderableList` + popover/mobile-обвязка
168
168
  * `Droplist`. Отдельный компонент по той же причине, что и `ReorderableList`.
@@ -174,7 +174,7 @@ export type DroplistImplProps = DesktopDroplistProps & DroplistMobileSlots;
174
174
  * @internal Props mobile-реализации (`BottomSheet`): реализация дроплиста без popover-пропов
175
175
  * + mobile-слоты.
176
176
  */
177
- export type MobileDroplistProps = Omit<DesktopDroplistProps, 'trigger' | 'placement' | 'widthStrategy' | 'triggerElemRef' | 'listRef' | 'triggerClassName'> & Pick<BottomSheetProps, 'snapPoints'> & DroplistMobileSlots;
177
+ export type MobileDroplistProps = Omit<DesktopDroplistProps, 'trigger' | 'placement' | 'widthStrategy' | 'triggerElemRef' | 'listRef' | 'triggerClassName'> & Pick<BottomSheetProps, 'snapPoints' | 'withDividers'> & DroplistMobileSlots;
178
178
  export type ListPrivateProps = Omit<ListImplProps, 'pinTop' | 'pinBottom' | 'items' | 'hasListInFocusChain' | 'onItemsReorder' | 'virtualized'> & {
179
179
  nested?: boolean;
180
180
  active?: boolean;
@@ -6,4 +6,4 @@ import { MobileDroplistProps } from '../../components/Lists/types.js';
6
6
  * вложенного списка, в шапке появляется его заголовок и кнопка «назад». Internal — наружу не реэкспортится;
7
7
  * рендерится адаптивным `Droplist` на `layoutType='mobile'`.
8
8
  */
9
- export declare function MobileDroplist({ items, selection, open: openProp, onOpenChange, children, search, label, actionButton, slotAfterTitle, onBackButtonClick, virtualized, closeDroplistOnItemClick, scroll, container, closeOnPopstate, size, snapPoints, footer, onItemsReorder, ...rest }: MobileDroplistProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare function MobileDroplist({ items, selection, open: openProp, onOpenChange, children, search, label, actionButton, slotAfterTitle, onBackButtonClick, virtualized, closeDroplistOnItemClick, scroll, container, closeOnPopstate, size, snapPoints, footer, onItemsReorder, withDividers, ...rest }: MobileDroplistProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { BottomSheet } from '@cloud-ru/ds-bottom-sheet';
2
+ import { BottomSheet, SNAP_POINTS_PRESET } from '@cloud-ru/ds-bottom-sheet';
3
3
  import { usePortalContext } from '@cloud-ru/ds-portal-context';
4
4
  import { useValueControl } from '@cloud-ru/ds-utils';
5
5
  import { cloneElement, isValidElement, useMemo, useRef, useState } from 'react';
@@ -19,7 +19,7 @@ export function MobileDroplist({ items, selection, open: openProp, onOpenChange,
19
19
  // скроллятся вместе со списком). `header` + `headerDivider` / `footerDivider` НЕ деструктурируем —
20
20
  // они уходят в `...rest` на корневой `List` (он рендерит шапку и её divider).
21
21
  // `onItemsReorder` — только на корне: drill-down `next-list` ортогонален дереву `SimpleItem`.
22
- footer, onItemsReorder, ...rest }) {
22
+ footer, onItemsReorder, withDividers, ...rest }) {
23
23
  const portalContext = usePortalContext();
24
24
  const scrollRef = useRef(null);
25
25
  const [open = false, setIsOpen] = useValueControl({ value: openProp, onChange: onOpenChange });
@@ -137,6 +137,6 @@ footer, onItemsReorder, ...rest }) {
137
137
  container: container?.current ?? containerRef, open: isRoot ? open : true,
138
138
  // Dismiss (backdrop / swipe / Esc): на корне — закрыть весь droplist; глубже — вернуться на уровень вверх,
139
139
  // как ждёт пользователь на mobile (а не закрывать всю цепочку разом).
140
- onClose: isRoot ? handleClose : popLevel, withDividers: true, title: title, onBackButtonClick: handleBack, actionButton: isRoot ? actionButton : undefined, slotAfterTitle: isRoot ? slotAfterTitle : undefined, content: content, footer: isRoot ? footer : undefined, snapPoints: expanded ? [1] : snapPoints, closeOnPopstate: closeOnPopstate ?? true }, isRoot ? 'root' : String(item?.id ?? levelIndex)));
140
+ onClose: isRoot ? handleClose : popLevel, withDividers: withDividers, title: title, onBackButtonClick: handleBack, actionButton: isRoot ? actionButton : undefined, slotAfterTitle: isRoot ? slotAfterTitle : undefined, content: content, footer: isRoot ? footer : undefined, snapPoints: expanded ? SNAP_POINTS_PRESET.full : snapPoints, closeOnPopstate: closeOnPopstate ?? true }, isRoot ? 'root' : String(item?.id ?? levelIndex)));
141
141
  })] }));
142
142
  }
@@ -7,3 +7,4 @@ export { getDefaultItemId, getFooterItemId, getItemAutoId } from './utils.js';
7
7
  export * from './constants.js';
8
8
  export { setNonce } from '@cloud-ru/ds-scroll';
9
9
  export * from './locale/index.js';
10
+ export { SNAP_POINTS_PRESET } from '@cloud-ru/ds-bottom-sheet';
package/dist/esm/index.js CHANGED
@@ -12,3 +12,4 @@ export { getDefaultItemId, getFooterItemId, getItemAutoId } from './utils.js';
12
12
  export * from './constants.js';
13
13
  export { setNonce } from '@cloud-ru/ds-scroll';
14
14
  export * from './locale/index.js';
15
+ export { SNAP_POINTS_PRESET } from '@cloud-ru/ds-bottom-sheet';