@cloud-ru/ds-list 1.0.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/CHANGELOG.md +8 -0
- package/LICENSE +201 -0
- package/README.md +1413 -0
- package/dist/cjs/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
- package/dist/cjs/components/Items/AccordionItem/AccordionItem.js +37 -0
- package/dist/cjs/components/Items/AccordionItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/AccordionItem/index.js +17 -0
- package/dist/cjs/components/Items/BaseItem/BaseItem.d.ts +24 -0
- package/dist/cjs/components/Items/BaseItem/BaseItem.js +118 -0
- package/dist/cjs/components/Items/BaseItem/constants.d.ts +3 -0
- package/dist/cjs/components/Items/BaseItem/constants.js +8 -0
- package/dist/cjs/components/Items/BaseItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/BaseItem/index.js +17 -0
- package/dist/cjs/components/Items/BaseItem/styles.module.css +312 -0
- package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
- package/dist/cjs/components/Items/GroupSelectItem/GroupSelectItem.js +22 -0
- package/dist/cjs/components/Items/GroupSelectItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/GroupSelectItem/index.js +17 -0
- package/dist/cjs/components/Items/NextListItem/NextListItem.d.ts +2 -0
- package/dist/cjs/components/Items/NextListItem/NextListItem.js +71 -0
- package/dist/cjs/components/Items/NextListItem/constants.d.ts +2 -0
- package/dist/cjs/components/Items/NextListItem/constants.js +13 -0
- package/dist/cjs/components/Items/NextListItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/NextListItem/index.js +17 -0
- package/dist/cjs/components/Items/NextListItem/types.d.ts +4 -0
- package/dist/cjs/components/Items/NextListItem/types.js +2 -0
- package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
- package/dist/cjs/components/Items/PinGroupItem/PinGroupItem.js +27 -0
- package/dist/cjs/components/Items/PinGroupItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/PinGroupItem/index.js +17 -0
- package/dist/cjs/components/Items/PinGroupItem/styles.module.css +12 -0
- package/dist/cjs/components/Items/SearchItem/SearchItem.d.ts +17 -0
- package/dist/cjs/components/Items/SearchItem/SearchItem.js +28 -0
- package/dist/cjs/components/Items/SearchItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/SearchItem/index.js +17 -0
- package/dist/cjs/components/Items/SearchItem/styles.module.css +13 -0
- package/dist/cjs/components/Items/SimpleItem/components/DragHandle/DragHandle.d.ts +7 -0
- package/dist/cjs/components/Items/SimpleItem/components/DragHandle/DragHandle.js +20 -0
- package/dist/cjs/components/Items/SimpleItem/components/DragHandle/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/DragHandle/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.d.ts +2 -0
- package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.js +9 -0
- package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/OverlayDragHandle/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.d.ts +19 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.js +52 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlock/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.d.ts +15 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.js +19 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/SimpleItem.d.ts +11 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/SimpleItem.js +48 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItem/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.d.ts +15 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.js +19 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/index.d.ts +1 -0
- package/dist/cjs/components/Items/SimpleItem/components/SimpleItemOverlay/index.js +17 -0
- package/dist/cjs/components/Items/SimpleItem/components/index.d.ts +4 -0
- package/dist/cjs/components/Items/SimpleItem/components/index.js +20 -0
- package/dist/cjs/components/Items/SimpleItem/constants.d.ts +7 -0
- package/dist/cjs/components/Items/SimpleItem/constants.js +9 -0
- package/dist/cjs/components/Items/SimpleItem/index.d.ts +2 -0
- package/dist/cjs/components/Items/SimpleItem/index.js +18 -0
- package/dist/cjs/components/Items/SimpleItem/styles.module.css +96 -0
- package/dist/cjs/components/Items/SimpleItem/types.d.ts +3 -0
- package/dist/cjs/components/Items/SimpleItem/types.js +2 -0
- package/dist/cjs/components/Items/SimpleItem/utils.d.ts +6 -0
- package/dist/cjs/components/Items/SimpleItem/utils.js +11 -0
- package/dist/cjs/components/Items/hooks.d.ts +23 -0
- package/dist/cjs/components/Items/hooks.js +130 -0
- package/dist/cjs/components/Items/index.d.ts +5 -0
- package/dist/cjs/components/Items/index.js +21 -0
- package/dist/cjs/components/Items/styles.module.css +168 -0
- package/dist/cjs/components/Items/types.d.ts +168 -0
- package/dist/cjs/components/Items/types.js +2 -0
- package/dist/cjs/components/Items/utils.d.ts +52 -0
- package/dist/cjs/components/Items/utils.js +218 -0
- package/dist/cjs/components/Lists/Droplist/DropList.d.ts +21 -0
- package/dist/cjs/components/Lists/Droplist/DropList.js +36 -0
- package/dist/cjs/components/Lists/Droplist/constants.d.ts +8 -0
- package/dist/cjs/components/Lists/Droplist/constants.js +10 -0
- package/dist/cjs/components/Lists/Droplist/index.d.ts +1 -0
- package/dist/cjs/components/Lists/Droplist/index.js +17 -0
- package/dist/cjs/components/Lists/List/List.d.ts +61 -0
- package/dist/cjs/components/Lists/List/List.js +62 -0
- package/dist/cjs/components/Lists/List/index.d.ts +1 -0
- package/dist/cjs/components/Lists/List/index.js +17 -0
- package/dist/cjs/components/Lists/ListPrivate/ListPrivate.d.ts +18 -0
- package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +301 -0
- package/dist/cjs/components/Lists/ListPrivate/constants.d.ts +7 -0
- package/dist/cjs/components/Lists/ListPrivate/constants.js +19 -0
- package/dist/cjs/components/Lists/ListPrivate/index.d.ts +1 -0
- package/dist/cjs/components/Lists/ListPrivate/index.js +17 -0
- package/dist/cjs/components/Lists/ListPrivate/styles.module.css +80 -0
- package/dist/cjs/components/Lists/contexts/CollapseProvider.d.ts +17 -0
- package/dist/cjs/components/Lists/contexts/CollapseProvider.js +10 -0
- package/dist/cjs/components/Lists/contexts/FocusListProvider.d.ts +9 -0
- package/dist/cjs/components/Lists/contexts/FocusListProvider.js +9 -0
- package/dist/cjs/components/Lists/contexts/NewListProvider.d.ts +33 -0
- package/dist/cjs/components/Lists/contexts/NewListProvider.js +23 -0
- package/dist/cjs/components/Lists/contexts/OpenListProvider.d.ts +6 -0
- package/dist/cjs/components/Lists/contexts/OpenListProvider.js +10 -0
- package/dist/cjs/components/Lists/contexts/SelectionProvider.d.ts +74 -0
- package/dist/cjs/components/Lists/contexts/SelectionProvider.js +90 -0
- package/dist/cjs/components/Lists/contexts/index.d.ts +5 -0
- package/dist/cjs/components/Lists/contexts/index.js +21 -0
- package/dist/cjs/components/Lists/hooks.d.ts +83 -0
- package/dist/cjs/components/Lists/hooks.js +242 -0
- package/dist/cjs/components/Lists/index.d.ts +5 -0
- package/dist/cjs/components/Lists/index.js +21 -0
- package/dist/cjs/components/Lists/styles.module.css +65 -0
- package/dist/cjs/components/Lists/types.d.ts +200 -0
- package/dist/cjs/components/Lists/types.js +2 -0
- package/dist/cjs/components/Lists/utils.d.ts +8 -0
- package/dist/cjs/components/Lists/utils.js +31 -0
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.js +18 -0
- package/dist/cjs/constants.d.ts +48 -0
- package/dist/cjs/constants.js +51 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +15 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/index.d.ts +1 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/index.js +17 -0
- package/dist/cjs/helperComponents/CollapseBlockPrivate/styles.module.css +27 -0
- package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.d.ts +7 -0
- package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.js +142 -0
- package/dist/cjs/helperComponents/DesktopDroplist/index.d.ts +1 -0
- package/dist/cjs/helperComponents/DesktopDroplist/index.js +17 -0
- package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
- package/dist/cjs/helperComponents/HiddenTabButton/HiddenTabButton.js +20 -0
- package/dist/cjs/helperComponents/HiddenTabButton/index.d.ts +1 -0
- package/dist/cjs/helperComponents/HiddenTabButton/index.js +17 -0
- package/dist/cjs/helperComponents/HiddenTabButton/styles.module.css +9 -0
- package/dist/cjs/helperComponents/ItemContent/ItemContent.d.ts +17 -0
- package/dist/cjs/helperComponents/ItemContent/ItemContent.js +27 -0
- package/dist/cjs/helperComponents/ItemContent/index.d.ts +1 -0
- package/dist/cjs/helperComponents/ItemContent/index.js +17 -0
- package/dist/cjs/helperComponents/ItemContent/styles.module.css +139 -0
- package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.d.ts +16 -0
- package/dist/cjs/helperComponents/ListEmptyState/ListEmptyState.js +25 -0
- package/dist/cjs/helperComponents/ListEmptyState/hooks.d.ts +10 -0
- package/dist/cjs/helperComponents/ListEmptyState/hooks.js +30 -0
- package/dist/cjs/helperComponents/ListEmptyState/index.d.ts +2 -0
- package/dist/cjs/helperComponents/ListEmptyState/index.js +20 -0
- package/dist/cjs/helperComponents/ListEmptyState/styles.module.css +8 -0
- package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.d.ts +9 -0
- package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.js +143 -0
- package/dist/cjs/helperComponents/MobileDroplist/MobileDroplist.module.css +16 -0
- package/dist/cjs/helperComponents/MobileDroplist/index.d.ts +1 -0
- package/dist/cjs/helperComponents/MobileDroplist/index.js +17 -0
- package/dist/cjs/helperComponents/MobileDroplist/utils.d.ts +11 -0
- package/dist/cjs/helperComponents/MobileDroplist/utils.js +65 -0
- package/dist/cjs/helperComponents/Separator/Separator.d.ts +20 -0
- package/dist/cjs/helperComponents/Separator/Separator.js +40 -0
- package/dist/cjs/helperComponents/Separator/constants.d.ts +3 -0
- package/dist/cjs/helperComponents/Separator/constants.js +10 -0
- package/dist/cjs/helperComponents/Separator/index.d.ts +1 -0
- package/dist/cjs/helperComponents/Separator/index.js +17 -0
- package/dist/cjs/helperComponents/Separator/styles.module.css +168 -0
- package/dist/cjs/helperComponents/index.d.ts +5 -0
- package/dist/cjs/helperComponents/index.js +21 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/locale/index.d.ts +79 -0
- package/dist/cjs/locale/index.js +44 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/style.css +1113 -0
- package/dist/cjs/types.d.ts +38 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils.d.ts +18 -0
- package/dist/cjs/utils.js +26 -0
- package/dist/esm/components/Items/AccordionItem/AccordionItem.d.ts +4 -0
- package/dist/esm/components/Items/AccordionItem/AccordionItem.js +34 -0
- package/dist/esm/components/Items/AccordionItem/index.d.ts +1 -0
- package/dist/esm/components/Items/AccordionItem/index.js +1 -0
- package/dist/esm/components/Items/BaseItem/BaseItem.d.ts +24 -0
- package/dist/esm/components/Items/BaseItem/BaseItem.js +112 -0
- package/dist/esm/components/Items/BaseItem/constants.d.ts +3 -0
- package/dist/esm/components/Items/BaseItem/constants.js +5 -0
- package/dist/esm/components/Items/BaseItem/index.d.ts +1 -0
- package/dist/esm/components/Items/BaseItem/index.js +1 -0
- package/dist/esm/components/Items/BaseItem/styles.module.css +312 -0
- package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.d.ts +4 -0
- package/dist/esm/components/Items/GroupSelectItem/GroupSelectItem.js +19 -0
- package/dist/esm/components/Items/GroupSelectItem/index.d.ts +1 -0
- package/dist/esm/components/Items/GroupSelectItem/index.js +1 -0
- package/dist/esm/components/Items/NextListItem/NextListItem.d.ts +2 -0
- package/dist/esm/components/Items/NextListItem/NextListItem.js +68 -0
- package/dist/esm/components/Items/NextListItem/constants.d.ts +2 -0
- package/dist/esm/components/Items/NextListItem/constants.js +10 -0
- package/dist/esm/components/Items/NextListItem/index.d.ts +1 -0
- package/dist/esm/components/Items/NextListItem/index.js +1 -0
- package/dist/esm/components/Items/NextListItem/types.d.ts +4 -0
- package/dist/esm/components/Items/NextListItem/types.js +1 -0
- package/dist/esm/components/Items/PinGroupItem/PinGroupItem.d.ts +7 -0
- package/dist/esm/components/Items/PinGroupItem/PinGroupItem.js +20 -0
- package/dist/esm/components/Items/PinGroupItem/index.d.ts +1 -0
- package/dist/esm/components/Items/PinGroupItem/index.js +1 -0
- package/dist/esm/components/Items/PinGroupItem/styles.module.css +12 -0
- package/dist/esm/components/Items/SearchItem/SearchItem.d.ts +17 -0
- package/dist/esm/components/Items/SearchItem/SearchItem.js +22 -0
- package/dist/esm/components/Items/SearchItem/index.d.ts +1 -0
- package/dist/esm/components/Items/SearchItem/index.js +1 -0
- package/dist/esm/components/Items/SearchItem/styles.module.css +13 -0
- package/dist/esm/components/Items/SimpleItem/components/DragHandle/DragHandle.d.ts +7 -0
- package/dist/esm/components/Items/SimpleItem/components/DragHandle/DragHandle.js +14 -0
- package/dist/esm/components/Items/SimpleItem/components/DragHandle/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/DragHandle/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.d.ts +2 -0
- package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.js +6 -0
- package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.d.ts +19 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.js +46 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.d.ts +15 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.js +13 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItem/SimpleItem.d.ts +11 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItem/SimpleItem.js +42 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItem/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItem/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.d.ts +15 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.js +13 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/index.d.ts +1 -0
- package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/index.js +1 -0
- package/dist/esm/components/Items/SimpleItem/components/index.d.ts +4 -0
- package/dist/esm/components/Items/SimpleItem/components/index.js +4 -0
- package/dist/esm/components/Items/SimpleItem/constants.d.ts +7 -0
- package/dist/esm/components/Items/SimpleItem/constants.js +6 -0
- package/dist/esm/components/Items/SimpleItem/index.d.ts +2 -0
- package/dist/esm/components/Items/SimpleItem/index.js +2 -0
- package/dist/esm/components/Items/SimpleItem/styles.module.css +96 -0
- package/dist/esm/components/Items/SimpleItem/types.d.ts +3 -0
- package/dist/esm/components/Items/SimpleItem/types.js +1 -0
- package/dist/esm/components/Items/SimpleItem/utils.d.ts +6 -0
- package/dist/esm/components/Items/SimpleItem/utils.js +8 -0
- package/dist/esm/components/Items/hooks.d.ts +23 -0
- package/dist/esm/components/Items/hooks.js +125 -0
- package/dist/esm/components/Items/index.d.ts +5 -0
- package/dist/esm/components/Items/index.js +5 -0
- package/dist/esm/components/Items/styles.module.css +168 -0
- package/dist/esm/components/Items/types.d.ts +168 -0
- package/dist/esm/components/Items/types.js +1 -0
- package/dist/esm/components/Items/utils.d.ts +52 -0
- package/dist/esm/components/Items/utils.js +203 -0
- package/dist/esm/components/Lists/Droplist/DropList.d.ts +21 -0
- package/dist/esm/components/Lists/Droplist/DropList.js +32 -0
- package/dist/esm/components/Lists/Droplist/constants.d.ts +8 -0
- package/dist/esm/components/Lists/Droplist/constants.js +7 -0
- package/dist/esm/components/Lists/Droplist/index.d.ts +1 -0
- package/dist/esm/components/Lists/Droplist/index.js +1 -0
- package/dist/esm/components/Lists/List/List.d.ts +61 -0
- package/dist/esm/components/Lists/List/List.js +56 -0
- package/dist/esm/components/Lists/List/index.d.ts +1 -0
- package/dist/esm/components/Lists/List/index.js +1 -0
- package/dist/esm/components/Lists/ListPrivate/ListPrivate.d.ts +18 -0
- package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +295 -0
- package/dist/esm/components/Lists/ListPrivate/constants.d.ts +7 -0
- package/dist/esm/components/Lists/ListPrivate/constants.js +16 -0
- package/dist/esm/components/Lists/ListPrivate/index.d.ts +1 -0
- package/dist/esm/components/Lists/ListPrivate/index.js +1 -0
- package/dist/esm/components/Lists/ListPrivate/styles.module.css +80 -0
- package/dist/esm/components/Lists/contexts/CollapseProvider.d.ts +17 -0
- package/dist/esm/components/Lists/contexts/CollapseProvider.js +5 -0
- package/dist/esm/components/Lists/contexts/FocusListProvider.d.ts +9 -0
- package/dist/esm/components/Lists/contexts/FocusListProvider.js +5 -0
- package/dist/esm/components/Lists/contexts/NewListProvider.d.ts +33 -0
- package/dist/esm/components/Lists/contexts/NewListProvider.js +18 -0
- package/dist/esm/components/Lists/contexts/OpenListProvider.d.ts +6 -0
- package/dist/esm/components/Lists/contexts/OpenListProvider.js +6 -0
- package/dist/esm/components/Lists/contexts/SelectionProvider.d.ts +74 -0
- package/dist/esm/components/Lists/contexts/SelectionProvider.js +83 -0
- package/dist/esm/components/Lists/contexts/index.d.ts +5 -0
- package/dist/esm/components/Lists/contexts/index.js +5 -0
- package/dist/esm/components/Lists/hooks.d.ts +83 -0
- package/dist/esm/components/Lists/hooks.js +238 -0
- package/dist/esm/components/Lists/index.d.ts +5 -0
- package/dist/esm/components/Lists/index.js +5 -0
- package/dist/esm/components/Lists/styles.module.css +65 -0
- package/dist/esm/components/Lists/types.d.ts +200 -0
- package/dist/esm/components/Lists/types.js +1 -0
- package/dist/esm/components/Lists/utils.d.ts +8 -0
- package/dist/esm/components/Lists/utils.js +28 -0
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/constants.d.ts +48 -0
- package/dist/esm/constants.js +48 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.d.ts +9 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.js +9 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/index.d.ts +1 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/index.js +1 -0
- package/dist/esm/helperComponents/CollapseBlockPrivate/styles.module.css +27 -0
- package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.d.ts +7 -0
- package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.js +136 -0
- package/dist/esm/helperComponents/DesktopDroplist/index.d.ts +1 -0
- package/dist/esm/helperComponents/DesktopDroplist/index.js +1 -0
- package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.d.ts +7 -0
- package/dist/esm/helperComponents/HiddenTabButton/HiddenTabButton.js +14 -0
- package/dist/esm/helperComponents/HiddenTabButton/index.d.ts +1 -0
- package/dist/esm/helperComponents/HiddenTabButton/index.js +1 -0
- package/dist/esm/helperComponents/HiddenTabButton/styles.module.css +9 -0
- package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +17 -0
- package/dist/esm/helperComponents/ItemContent/ItemContent.js +21 -0
- package/dist/esm/helperComponents/ItemContent/index.d.ts +1 -0
- package/dist/esm/helperComponents/ItemContent/index.js +1 -0
- package/dist/esm/helperComponents/ItemContent/styles.module.css +139 -0
- package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.d.ts +16 -0
- package/dist/esm/helperComponents/ListEmptyState/ListEmptyState.js +19 -0
- package/dist/esm/helperComponents/ListEmptyState/hooks.d.ts +10 -0
- package/dist/esm/helperComponents/ListEmptyState/hooks.js +27 -0
- package/dist/esm/helperComponents/ListEmptyState/index.d.ts +2 -0
- package/dist/esm/helperComponents/ListEmptyState/index.js +2 -0
- package/dist/esm/helperComponents/ListEmptyState/styles.module.css +8 -0
- package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.d.ts +9 -0
- package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.js +137 -0
- package/dist/esm/helperComponents/MobileDroplist/MobileDroplist.module.css +16 -0
- package/dist/esm/helperComponents/MobileDroplist/index.d.ts +1 -0
- package/dist/esm/helperComponents/MobileDroplist/index.js +1 -0
- package/dist/esm/helperComponents/MobileDroplist/utils.d.ts +11 -0
- package/dist/esm/helperComponents/MobileDroplist/utils.js +61 -0
- package/dist/esm/helperComponents/Separator/Separator.d.ts +20 -0
- package/dist/esm/helperComponents/Separator/Separator.js +34 -0
- package/dist/esm/helperComponents/Separator/constants.d.ts +3 -0
- package/dist/esm/helperComponents/Separator/constants.js +7 -0
- package/dist/esm/helperComponents/Separator/index.d.ts +1 -0
- package/dist/esm/helperComponents/Separator/index.js +1 -0
- package/dist/esm/helperComponents/Separator/styles.module.css +168 -0
- package/dist/esm/helperComponents/index.d.ts +5 -0
- package/dist/esm/helperComponents/index.js +5 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/locale/index.d.ts +79 -0
- package/dist/esm/locale/index.js +41 -0
- package/dist/esm/style.css +1113 -0
- package/dist/esm/types.d.ts +38 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils.d.ts +18 -0
- package/dist/esm/utils.js +19 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +70 -0
- package/src/_iconSizes.scss +7 -0
- package/src/components/Items/AccordionItem/AccordionItem.tsx +79 -0
- package/src/components/Items/AccordionItem/index.ts +1 -0
- package/src/components/Items/BaseItem/BaseItem.tsx +274 -0
- package/src/components/Items/BaseItem/constants.ts +9 -0
- package/src/components/Items/BaseItem/index.ts +1 -0
- package/src/components/Items/BaseItem/styles.module.scss +330 -0
- package/src/components/Items/GroupSelectItem/GroupSelectItem.tsx +48 -0
- package/src/components/Items/GroupSelectItem/index.ts +1 -0
- package/src/components/Items/NextListItem/NextListItem.tsx +157 -0
- package/src/components/Items/NextListItem/constants.ts +12 -0
- package/src/components/Items/NextListItem/index.ts +1 -0
- package/src/components/Items/NextListItem/types.ts +3 -0
- package/src/components/Items/PinGroupItem/PinGroupItem.tsx +38 -0
- package/src/components/Items/PinGroupItem/index.ts +1 -0
- package/src/components/Items/PinGroupItem/styles.module.scss +14 -0
- package/src/components/Items/SearchItem/SearchItem.tsx +55 -0
- package/src/components/Items/SearchItem/index.ts +1 -0
- package/src/components/Items/SearchItem/styles.module.scss +26 -0
- package/src/components/Items/SimpleItem/components/DragHandle/DragHandle.tsx +27 -0
- package/src/components/Items/SimpleItem/components/DragHandle/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.tsx +6 -0
- package/src/components/Items/SimpleItem/components/OverlayDragHandle/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.tsx +87 -0
- package/src/components/Items/SimpleItem/components/SimpleGroupBlock/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/SimpleGroupBlockOverlay.tsx +33 -0
- package/src/components/Items/SimpleItem/components/SimpleGroupBlockOverlay/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/SimpleItem/SimpleItem.tsx +70 -0
- package/src/components/Items/SimpleItem/components/SimpleItem/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.tsx +26 -0
- package/src/components/Items/SimpleItem/components/SimpleItemOverlay/index.ts +1 -0
- package/src/components/Items/SimpleItem/components/index.ts +4 -0
- package/src/components/Items/SimpleItem/constants.ts +8 -0
- package/src/components/Items/SimpleItem/index.ts +2 -0
- package/src/components/Items/SimpleItem/styles.module.scss +149 -0
- package/src/components/Items/SimpleItem/types.ts +7 -0
- package/src/components/Items/SimpleItem/utils.ts +8 -0
- package/src/components/Items/hooks.tsx +233 -0
- package/src/components/Items/index.ts +5 -0
- package/src/components/Items/styles.module.scss +107 -0
- package/src/components/Items/types.ts +203 -0
- package/src/components/Items/utils.ts +302 -0
- package/src/components/Lists/Droplist/DropList.tsx +62 -0
- package/src/components/Lists/Droplist/constants.ts +11 -0
- package/src/components/Lists/Droplist/index.ts +1 -0
- package/src/components/Lists/List/List.tsx +155 -0
- package/src/components/Lists/List/index.ts +1 -0
- package/src/components/Lists/ListPrivate/ListPrivate.tsx +560 -0
- package/src/components/Lists/ListPrivate/constants.ts +22 -0
- package/src/components/Lists/ListPrivate/index.ts +1 -0
- package/src/components/Lists/ListPrivate/styles.module.scss +90 -0
- package/src/components/Lists/contexts/CollapseProvider.tsx +22 -0
- package/src/components/Lists/contexts/FocusListProvider.tsx +15 -0
- package/src/components/Lists/contexts/NewListProvider.tsx +76 -0
- package/src/components/Lists/contexts/OpenListProvider.tsx +13 -0
- package/src/components/Lists/contexts/SelectionProvider.tsx +214 -0
- package/src/components/Lists/contexts/index.ts +5 -0
- package/src/components/Lists/hooks.ts +351 -0
- package/src/components/Lists/index.ts +5 -0
- package/src/components/Lists/styles.module.scss +95 -0
- package/src/components/Lists/types.ts +231 -0
- package/src/components/Lists/utils.ts +32 -0
- package/src/components/index.ts +2 -0
- package/src/constants.ts +53 -0
- package/src/helperComponents/CollapseBlockPrivate/CollapseBlockPrivate.tsx +32 -0
- package/src/helperComponents/CollapseBlockPrivate/index.ts +1 -0
- package/src/helperComponents/CollapseBlockPrivate/styles.module.scss +32 -0
- package/src/helperComponents/DesktopDroplist/DesktopDroplist.tsx +313 -0
- package/src/helperComponents/DesktopDroplist/index.ts +1 -0
- package/src/helperComponents/HiddenTabButton/HiddenTabButton.tsx +35 -0
- package/src/helperComponents/HiddenTabButton/index.ts +1 -0
- package/src/helperComponents/HiddenTabButton/styles.module.scss +11 -0
- package/src/helperComponents/ItemContent/ItemContent.tsx +80 -0
- package/src/helperComponents/ItemContent/index.ts +1 -0
- package/src/helperComponents/ItemContent/styles.module.scss +100 -0
- package/src/helperComponents/ListEmptyState/ListEmptyState.tsx +52 -0
- package/src/helperComponents/ListEmptyState/hooks.ts +42 -0
- package/src/helperComponents/ListEmptyState/index.ts +2 -0
- package/src/helperComponents/ListEmptyState/styles.module.scss +11 -0
- package/src/helperComponents/MobileDroplist/MobileDroplist.module.scss +25 -0
- package/src/helperComponents/MobileDroplist/MobileDroplist.tsx +230 -0
- package/src/helperComponents/MobileDroplist/index.ts +1 -0
- package/src/helperComponents/MobileDroplist/utils.tsx +76 -0
- package/src/helperComponents/Separator/Separator.tsx +115 -0
- package/src/helperComponents/Separator/constants.ts +11 -0
- package/src/helperComponents/Separator/index.ts +1 -0
- package/src/helperComponents/Separator/styles.module.scss +255 -0
- package/src/helperComponents/index.ts +5 -0
- package/src/index.ts +19 -0
- package/src/locale/index.ts +45 -0
- package/src/types.ts +44 -0
- package/src/utils.ts +26 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { NextListItemProps } from './types.js';
|
|
2
|
+
export declare function NextListItem({ items, placement, id, scroll, scrollRef, disabled, onSublistOpenChanged, allChildIds, loading, dataError, dataFiltered, focusId, untouchableScrollbars, ...option }: NextListItemProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Dropdown } from '@cloud-ru/ds-dropdown';
|
|
3
|
+
import { ChevronRightSVG } from '@cloud-ru/ds-icons/interface/system';
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
5
|
+
import { ITEM_PREFIXES } from '../../../constants.js';
|
|
6
|
+
import { useCollapseContext, useFocusListContext, useNewListContext, useSelectionContext } from '../../Lists/contexts/index.js';
|
|
7
|
+
import { ListPrivate } from '../../Lists/ListPrivate/index.js';
|
|
8
|
+
import { BaseItem } from '../BaseItem/index.js';
|
|
9
|
+
import { useGroupItemSelection } from '../hooks.js';
|
|
10
|
+
import { extractActiveItems, isNextListItem } from '../utils.js';
|
|
11
|
+
import { FALLBACK_PLACEMENTS } from './constants.js';
|
|
12
|
+
export function NextListItem({ items, placement = 'right-start', id, scroll, scrollRef, disabled, onSublistOpenChanged, allChildIds, loading = false, dataError = false, dataFiltered = false, focusId = id, untouchableScrollbars = false, ...option }) {
|
|
13
|
+
const { flattenItems, focusFlattenItems, virtualized } = useNewListContext();
|
|
14
|
+
const { value, isSelectionSingle, isSelectionMultiple } = useSelectionContext();
|
|
15
|
+
const { openCollapseItems = [] } = useCollapseContext();
|
|
16
|
+
const item = flattenItems[id];
|
|
17
|
+
const { ids, expandedIds } = useMemo(() => {
|
|
18
|
+
const { ids, expandedIds } = extractActiveItems({
|
|
19
|
+
focusCloseChildIds: items,
|
|
20
|
+
focusFlattenItems,
|
|
21
|
+
openCollapseItems,
|
|
22
|
+
isSelectionMultiple,
|
|
23
|
+
});
|
|
24
|
+
return { ids, expandedIds: expandedIds.concat([id]) };
|
|
25
|
+
}, [focusFlattenItems, id, isSelectionMultiple, items, openCollapseItems]);
|
|
26
|
+
const { handleListKeyDownFactory, activeItemId, forceUpdateActiveItemId } = useFocusListContext();
|
|
27
|
+
const [open, setOpen] = useState();
|
|
28
|
+
const handleListKeyDown = useCallback((e) => {
|
|
29
|
+
handleListKeyDownFactory(ids, expandedIds)(e);
|
|
30
|
+
if (e.key === 'ArrowLeft') {
|
|
31
|
+
forceUpdateActiveItemId?.(focusId);
|
|
32
|
+
setOpen(false);
|
|
33
|
+
e.stopPropagation();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}, [handleListKeyDownFactory, ids, expandedIds, forceUpdateActiveItemId, focusId]);
|
|
37
|
+
const { indeterminate, checked: checkedProp, handleOnSelect, } = useGroupItemSelection({
|
|
38
|
+
items: isNextListItem(item) ? item.items : [],
|
|
39
|
+
id,
|
|
40
|
+
disabled,
|
|
41
|
+
allChildIds,
|
|
42
|
+
});
|
|
43
|
+
const handleOutsideClick = useCallback(() => {
|
|
44
|
+
forceUpdateActiveItemId?.(ITEM_PREFIXES.dropFocus);
|
|
45
|
+
setOpen(false);
|
|
46
|
+
return true;
|
|
47
|
+
}, [forceUpdateActiveItemId]);
|
|
48
|
+
const isOpen = useMemo(() => Boolean(!disabled && activeItemId && focusFlattenItems[focusId]?.allChildIds.includes(activeItemId)), [activeItemId, disabled, focusFlattenItems, focusId]);
|
|
49
|
+
const checked = Boolean((indeterminate && !open && isSelectionSingle && value && allChildIds.includes(value)) ||
|
|
50
|
+
(isSelectionMultiple && checkedProp));
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
setOpen(open => open && isOpen);
|
|
53
|
+
}, [isOpen]);
|
|
54
|
+
const listRef = useRef(null);
|
|
55
|
+
const openSublist = useCallback(() => {
|
|
56
|
+
setOpen(true);
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
listRef.current?.focus();
|
|
59
|
+
}, 0);
|
|
60
|
+
}, []);
|
|
61
|
+
return (_jsx(Dropdown, { outsideClick: handleOutsideClick, fallbackPlacements: FALLBACK_PLACEMENTS, bodyPadding: false, content: _jsx(ListPrivate, { onKeyDown: handleListKeyDown, items: items, nested: true, scroll: scroll, virtualized: virtualized, tabIndex: 0, ref: listRef, onFocus: e => {
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
forceUpdateActiveItemId?.(ids[0]);
|
|
64
|
+
}, scrollRef: scrollRef, limitedScrollHeight: true, untouchableScrollbars: untouchableScrollbars, loading: loading, dataError: dataError, dataFiltered: dataFiltered }), trigger: 'hover', open: isOpen || open, onOpenChange: value => {
|
|
65
|
+
setOpen(value);
|
|
66
|
+
onSublistOpenChanged?.(value, id);
|
|
67
|
+
}, placement: placement, widthStrategy: 'auto', children: _jsx(BaseItem, { ...option, disabled: disabled, open: isOpen || open, expandIcon: _jsx(ChevronRightSVG, {}), id: id, isParentNode: true, indeterminate: indeterminate, checked: checked, onOpenNestedList: openSublist, onExpandIconClick: openSublist, onSelect: handleOnSelect }) }));
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './NextListItem.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './NextListItem.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export declare function PinTopGroupItem({ children }: {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
5
|
+
export declare function PinBottomGroupItem({ children }: {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Divider, VARIANT } from '@cloud-ru/ds-divider';
|
|
3
|
+
import cn from 'classnames';
|
|
4
|
+
import { TEST_IDS } from '../../../constants.js';
|
|
5
|
+
import { useNewListContext } from '../../Lists/contexts/index.js';
|
|
6
|
+
import styles from './styles.module.css';
|
|
7
|
+
export function PinTopGroupItem({ children }) {
|
|
8
|
+
const { size = 'm' } = useNewListContext();
|
|
9
|
+
if (!children) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return (_jsxs("div", { className: cn(styles.pinTopItem), "data-size": size, "data-test-id": TEST_IDS.pinTopGroupItem, children: [_jsx("div", { children: children }), _jsx(Divider, { variant: VARIANT.Regular })] }));
|
|
13
|
+
}
|
|
14
|
+
export function PinBottomGroupItem({ children }) {
|
|
15
|
+
const { size = 'm' } = useNewListContext();
|
|
16
|
+
if (!children) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return (_jsxs("div", { className: cn(styles.pinBottomItem), "data-size": size, "data-test-id": TEST_IDS.pinBottomGroupItem, children: [_jsx(Divider, { variant: VARIANT.Regular }), _jsx("div", { children: children })] }));
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PinGroupItem.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './PinGroupItem.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FocusEvent, KeyboardEvent, RefObject } from 'react';
|
|
2
|
+
import { SearchState } from '../../../types.js';
|
|
3
|
+
export type SearchItemProps = {
|
|
4
|
+
search?: SearchState;
|
|
5
|
+
itemRef?: RefObject<HTMLElement>;
|
|
6
|
+
/**
|
|
7
|
+
* Доп. обработчик клавиш навигации по списку. Нужен, когда поле поиска вынесено
|
|
8
|
+
* из `<ul>` в шапку dropdown (topBar) и события клавиатуры больше не всплывают
|
|
9
|
+
* на `<ul>`-onKeyDown — DropList передаёт сюда `handleListKeyDown` (factory).
|
|
10
|
+
*/
|
|
11
|
+
onNavKeyDown?(e: KeyboardEvent<HTMLElement>): void;
|
|
12
|
+
/** onFocus поля (синхронизация активного item, когда search вне `<ul>`). */
|
|
13
|
+
onFocus?(e: FocusEvent<HTMLInputElement>): void;
|
|
14
|
+
/** Рендер для шапки dropdown — без `.listItem`-обёртки. */
|
|
15
|
+
inTopBar?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare function SearchItem({ search, itemRef, onNavKeyDown, onFocus, inTopBar }: SearchItemProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { SearchPrivate } from '@cloud-ru/ds-search-private';
|
|
3
|
+
import { preventScrollOnVerticalArrows } from '@cloud-ru/ds-utils';
|
|
4
|
+
import { ITEM_PREFIXES, TEST_IDS } from '../../../constants.js';
|
|
5
|
+
import { stopPropagation } from '../../../utils.js';
|
|
6
|
+
import { useNewListContext } from '../../Lists/contexts/index.js';
|
|
7
|
+
import styles from './styles.module.css';
|
|
8
|
+
export function SearchItem({ search, itemRef, onNavKeyDown, onFocus, inTopBar }) {
|
|
9
|
+
// Размер поиска следует за размером айтемов списка (size из контекста), а не фиксирован 's'.
|
|
10
|
+
const { firstItemId, size = 'm' } = useNewListContext();
|
|
11
|
+
const handleKeyDown = (e) => {
|
|
12
|
+
// Поиск — текстовый input: гасим только Up/Down (навигация по списку), горизонтальные
|
|
13
|
+
// стрелки оставляем каретке.
|
|
14
|
+
preventScrollOnVerticalArrows(e);
|
|
15
|
+
search?.onKeyDown?.(e);
|
|
16
|
+
onNavKeyDown?.(e);
|
|
17
|
+
};
|
|
18
|
+
if (!search) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return (_jsx("div", { className: styles.searchItem, "data-in-top-bar": inTopBar || undefined, "data-test-id": TEST_IDS.searchItem, children: _jsx(SearchPrivate, { size: size, tabIndex: ITEM_PREFIXES.search === firstItemId ? 0 : -1, onKeyDown: handleKeyDown, onFocus: onFocus ?? stopPropagation, ...search, ref: itemRef }) }));
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SearchItem.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SearchItem.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
.searchItem{
|
|
2
|
+
display:flex;
|
|
3
|
+
align-items:center;
|
|
4
|
+
box-sizing:border-box;
|
|
5
|
+
width:100%;
|
|
6
|
+
min-height:var(--sn-field-anatomy-size-s-fieldContainer-minHeight, var(--sn-density-size-s, var(--sn-primitive-dimension-48, 48px)));
|
|
7
|
+
padding:var(--sn-field-anatomy-size-s-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px))) var(--sn-field-anatomy-size-s-fieldContainer-paddingRight, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-primitive-dimension-12, 12px))) var(--sn-field-anatomy-size-s-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px))) var(--sn-field-anatomy-size-s-fieldContainer-paddingLeft, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-primitive-dimension-12, 12px)));
|
|
8
|
+
}
|
|
9
|
+
.searchItem:focus-within, .searchItem:focus-visible{
|
|
10
|
+
max-width:100%;
|
|
11
|
+
outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
|
|
12
|
+
outline-offset:calc(0px - var(--sn-primitive-strokeWeight-strokeSemiBold, 2px));
|
|
13
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Ручка drag&drop строки/заголовка reorder-режима: кнопка с иконкой, `aria-label` и `data-test-id`.
|
|
4
|
+
* Живой вариант получает sortable-пропы `@dnd-kit` (`attributes`/`listeners`, `onMouseDown`/`onClick`,
|
|
5
|
+
* `NO_DRAG_ATTRIBUTE`) через `...rest`; статичная копия для `DragOverlay` — `OverlayDragHandle`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function DragHandle(props: ButtonHTMLAttributes<HTMLButtonElement>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DragDropSVG } from '@cloud-ru/ds-icons/interface/system';
|
|
3
|
+
import { TEST_IDS } from '../../../../../constants.js';
|
|
4
|
+
import { listLocale } from '../../../../../locale/index.js';
|
|
5
|
+
import styles from '../../styles.module.css';
|
|
6
|
+
/**
|
|
7
|
+
* Ручка drag&drop строки/заголовка reorder-режима: кнопка с иконкой, `aria-label` и `data-test-id`.
|
|
8
|
+
* Живой вариант получает sortable-пропы `@dnd-kit` (`attributes`/`listeners`, `onMouseDown`/`onClick`,
|
|
9
|
+
* `NO_DRAG_ATTRIBUTE`) через `...rest`; статичная копия для `DragOverlay` — `OverlayDragHandle`.
|
|
10
|
+
*/
|
|
11
|
+
export function DragHandle(props) {
|
|
12
|
+
const { t } = listLocale.useTranslations();
|
|
13
|
+
return (_jsx("button", { type: 'button', "aria-label": t('list.dragHandle'), "data-test-id": TEST_IDS.dragHandle, className: styles.dragHandle, ...props, children: _jsx(DragDropSVG, {}) }));
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DragHandle.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './DragHandle.js';
|
package/dist/esm/components/Items/SimpleItem/components/OverlayDragHandle/OverlayDragHandle.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DragHandle } from '../DragHandle/index.js';
|
|
3
|
+
/** Статичная ручка для копий строк/заголовков в `DragOverlay` (без sortable-обработчиков). */
|
|
4
|
+
export function OverlayDragHandle() {
|
|
5
|
+
return _jsx(DragHandle, { tabIndex: -1 });
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './OverlayDragHandle.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './OverlayDragHandle.js';
|
package/dist/esm/components/Items/SimpleItem/components/SimpleGroupBlock/SimpleGroupBlock.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ItemId } from '../../../types.js';
|
|
3
|
+
import { GroupHeaderContent } from '../../types.js';
|
|
4
|
+
export type SimpleGroupBlockProps = GroupHeaderContent & {
|
|
5
|
+
/** Идентификатор группы — sortable identity для перестановки групп между собой. */
|
|
6
|
+
id: ItemId;
|
|
7
|
+
/** Id сортируемых строк группы для вложенного `SortableContext` (переупорядочивание строк внутри группы). */
|
|
8
|
+
rowIds: ItemId[];
|
|
9
|
+
/** Отрисованные строки группы (`SimpleItem`). */
|
|
10
|
+
children: ReactNode;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Сортируемый блок группы reorder-режима: заголовок с ручкой `@dnd-kit` + строки группы во
|
|
14
|
+
* вложенном `SortableContext`. Перетаскивается **вся группа целиком** (заголовок и строки едут
|
|
15
|
+
* вместе), потому что `useSortable` висит на контейнере блока. Строки при этом переставляются
|
|
16
|
+
* внутри своей группы (собственный `SortableContext`). Копию заголовка на время перетаскивания группы
|
|
17
|
+
* рендерит `SimpleGroupBlockOverlay` в `DragOverlay`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function SimpleGroupBlock({ id, rowIds, children, ...separatorProps }: SimpleGroupBlockProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useDndContext } from '@dnd-kit/core';
|
|
3
|
+
import { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
4
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
5
|
+
import { NO_DRAG_ATTRIBUTE } from '@cloud-ru/ds-bottom-sheet';
|
|
6
|
+
import { Separator } from '../../../../../helperComponents/index.js';
|
|
7
|
+
import { stopPropagation } from '../../../../../utils.js';
|
|
8
|
+
import { useNewListContext } from '../../../../Lists/contexts/index.js';
|
|
9
|
+
import { REORDER_TOP_LEVEL } from '../../constants.js';
|
|
10
|
+
import styles from '../../styles.module.css';
|
|
11
|
+
import { animateLayoutChanges } from '../../utils.js';
|
|
12
|
+
import { DragHandle } from '../DragHandle/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Сортируемый блок группы reorder-режима: заголовок с ручкой `@dnd-kit` + строки группы во
|
|
15
|
+
* вложенном `SortableContext`. Перетаскивается **вся группа целиком** (заголовок и строки едут
|
|
16
|
+
* вместе), потому что `useSortable` висит на контейнере блока. Строки при этом переставляются
|
|
17
|
+
* внутри своей группы (собственный `SortableContext`). Копию заголовка на время перетаскивания группы
|
|
18
|
+
* рендерит `SimpleGroupBlockOverlay` в `DragOverlay`.
|
|
19
|
+
*/
|
|
20
|
+
export function SimpleGroupBlock({ id, rowIds, children, ...separatorProps }) {
|
|
21
|
+
const { size = 'm' } = useNewListContext();
|
|
22
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
23
|
+
id,
|
|
24
|
+
// Группа — «брат» строк верхнего уровня: тот же контейнер, что и у строк без группы.
|
|
25
|
+
data: { container: REORDER_TOP_LEVEL },
|
|
26
|
+
animateLayoutChanges,
|
|
27
|
+
});
|
|
28
|
+
// Идёт ли переупорядочивание строки этой группы (а не самой группы). Оно жёстко ограничено
|
|
29
|
+
// своим контейнером (`container === id` в `data` строки, см. `SimpleItem`), поэтому границы
|
|
30
|
+
// блока группы подсвечиваются — видно, что строка не выходит за пределы группы, а не «сломалась».
|
|
31
|
+
const { active } = useDndContext();
|
|
32
|
+
const activeContainer = active?.data.current?.container;
|
|
33
|
+
const isReorderingWithinGroup = active != null && active.id !== id && activeContainer === id;
|
|
34
|
+
const style = {
|
|
35
|
+
transform: CSS.Translate.toString(transform),
|
|
36
|
+
transition,
|
|
37
|
+
};
|
|
38
|
+
const { onMouseDown, ...restListeners } = listeners || {};
|
|
39
|
+
const handleMouseDown = (e) => {
|
|
40
|
+
stopPropagation(e);
|
|
41
|
+
onMouseDown?.(e);
|
|
42
|
+
};
|
|
43
|
+
return (_jsxs("div", { ref: setNodeRef, style: style, className: styles.groupBlock, "data-dragging": isDragging || undefined, "data-reorder-boundary": isReorderingWithinGroup || undefined, children: [_jsxs("div", { className: styles.groupHeader, "data-size": size, children: [_jsx(DragHandle
|
|
44
|
+
// Pointer-жест не доходит до BottomSheet: иначе vertical drag одновременно закрывает sheet.
|
|
45
|
+
, { [NO_DRAG_ATTRIBUTE]: '', ...attributes, ...restListeners, onMouseDown: handleMouseDown, onClick: stopPropagation }), _jsx(Separator, { ...separatorProps })] }), _jsx(SortableContext, { items: rowIds, strategy: verticalListSortingStrategy, children: children })] }));
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleGroupBlock.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleGroupBlock.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Size } from '../../../../../types.js';
|
|
2
|
+
import { FlattenSimpleItem } from '../../../types.js';
|
|
3
|
+
import { GroupHeaderContent } from '../../types.js';
|
|
4
|
+
export type SimpleGroupBlockOverlayProps = GroupHeaderContent & {
|
|
5
|
+
/** Размер списка — заголовок повторяет левую раскладку строки (`padding-left` + ручка + `gap`). */
|
|
6
|
+
size?: Size;
|
|
7
|
+
/** Строки группы: копия блока рендерится целиком, вместе с ними. */
|
|
8
|
+
rows: FlattenSimpleItem[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Статичная копия блока группы для `DragOverlay` (без `useSortable`): заголовок + строки группы.
|
|
12
|
+
* Блок рендерится целиком, чтобы копия совпадала по размеру с перетаскиваемым блоком — `DragOverlay`
|
|
13
|
+
* подгоняет обёртку под размеры активного узла (весь блок), поэтому одним заголовком её не заполнить.
|
|
14
|
+
*/
|
|
15
|
+
export declare function SimpleGroupBlockOverlay({ size, rows, ...separatorProps }: SimpleGroupBlockOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Separator } from '../../../../../helperComponents/index.js';
|
|
3
|
+
import styles from '../../styles.module.css';
|
|
4
|
+
import { OverlayDragHandle } from '../OverlayDragHandle/index.js';
|
|
5
|
+
import { SimpleItemOverlay } from '../SimpleItemOverlay/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Статичная копия блока группы для `DragOverlay` (без `useSortable`): заголовок + строки группы.
|
|
8
|
+
* Блок рендерится целиком, чтобы копия совпадала по размеру с перетаскиваемым блоком — `DragOverlay`
|
|
9
|
+
* подгоняет обёртку под размеры активного узла (весь блок), поэтому одним заголовком её не заполнить.
|
|
10
|
+
*/
|
|
11
|
+
export function SimpleGroupBlockOverlay({ size, rows, ...separatorProps }) {
|
|
12
|
+
return (_jsxs("div", { className: styles.groupBlock, "data-overlay": true, children: [_jsxs("div", { className: styles.groupHeader, "data-size": size, children: [_jsx(OverlayDragHandle, {}), _jsx(Separator, { ...separatorProps })] }), rows.map(row => (_jsx(SimpleItemOverlay, { ...row, bare: true }, row.id)))] }));
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleGroupBlockOverlay.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleGroupBlockOverlay.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FlattenSimpleItem, ItemId } from '../../../types.js';
|
|
2
|
+
type SimpleItemProps = FlattenSimpleItem & {
|
|
3
|
+
/** Id группы-родителя (если строка внутри группы) — уходит в `data` `useSortable` (kind=row). */
|
|
4
|
+
groupId?: ItemId;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Листовая сортируемая строка `List`/`Droplist` в reorder-режиме (проп `onItemsReorder`):
|
|
8
|
+
* `BaseItem` + ручка `@dnd-kit` слева. Группировку задаёт `SimpleGroupItem` уровнем выше.
|
|
9
|
+
*/
|
|
10
|
+
export declare function SimpleItem({ id, disabled, groupId, ...option }: SimpleItemProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
3
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
4
|
+
import { NO_DRAG_ATTRIBUTE } from '@cloud-ru/ds-bottom-sheet';
|
|
5
|
+
import { stopPropagation } from '../../../../../utils.js';
|
|
6
|
+
import { BaseItem } from '../../../BaseItem/index.js';
|
|
7
|
+
import { REORDER_TOP_LEVEL } from '../../constants.js';
|
|
8
|
+
import styles from '../../styles.module.css';
|
|
9
|
+
import { animateLayoutChanges } from '../../utils.js';
|
|
10
|
+
import { DragHandle } from '../DragHandle/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Листовая сортируемая строка `List`/`Droplist` в reorder-режиме (проп `onItemsReorder`):
|
|
13
|
+
* `BaseItem` + ручка `@dnd-kit` слева. Группировку задаёт `SimpleGroupItem` уровнем выше.
|
|
14
|
+
*/
|
|
15
|
+
// `option` несёт и служебные поля flatten-модели (`items`/`allChildIds`) — `BaseItem` их не знает
|
|
16
|
+
// и отбрасывает через `extractSupportProps`, в DOM они не попадают.
|
|
17
|
+
export function SimpleItem({ id, disabled, groupId, ...option }) {
|
|
18
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
|
19
|
+
id,
|
|
20
|
+
// `disabled` на строке отключает `Switch` и клик (`BaseItem`), но не переупорядочивание:
|
|
21
|
+
// ручка всегда активна.
|
|
22
|
+
// `container` читает кастомный `collisionDetection` в `ListPrivate`: drop разрешён только внутри
|
|
23
|
+
// одного контейнера. Строка без группы (`groupId` пуст) лежит в общем контейнере верхнего уровня
|
|
24
|
+
// вместе с группами (можно менять местами строку и группу); строка группы — в контейнере группы.
|
|
25
|
+
data: { container: groupId ?? REORDER_TOP_LEVEL },
|
|
26
|
+
animateLayoutChanges,
|
|
27
|
+
});
|
|
28
|
+
const style = {
|
|
29
|
+
// Только трансляция без scale: иначе `@dnd-kit` подмешивает scaleY (`adjustScale`) и короткая
|
|
30
|
+
// строка растягивается под высоту соседа. `CSS.Translate` даёт `translate3d` без scale.
|
|
31
|
+
transform: CSS.Translate.toString(transform),
|
|
32
|
+
transition,
|
|
33
|
+
};
|
|
34
|
+
const { onMouseDown, ...restListeners } = listeners || {};
|
|
35
|
+
const handleMouseDown = (e) => {
|
|
36
|
+
stopPropagation(e);
|
|
37
|
+
onMouseDown?.(e);
|
|
38
|
+
};
|
|
39
|
+
return (_jsx("div", { ref: setNodeRef, style: style, className: styles.item, "data-dragging": isDragging || undefined, children: _jsx(BaseItem, { ...option, id: id, disabled: disabled, dragHandle: _jsx(DragHandle
|
|
40
|
+
// Pointer-жест не доходит до BottomSheet: иначе vertical drag одновременно закрывает sheet.
|
|
41
|
+
, { [NO_DRAG_ATTRIBUTE]: '', ...attributes, ...restListeners, onMouseDown: handleMouseDown, onClick: stopPropagation }) }) }));
|
|
42
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleItem.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleItem.js';
|
package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FlattenSimpleItem } from '../../../types.js';
|
|
2
|
+
export type SimpleItemOverlayProps = FlattenSimpleItem & {
|
|
3
|
+
/**
|
|
4
|
+
* Строка внутри копии блока группы (`SimpleGroupBlockOverlay`): поверхность и тень несёт сам
|
|
5
|
+
* блок, поэтому у строки их не дублируем.
|
|
6
|
+
*/
|
|
7
|
+
bare?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Презентационная копия строки для `DragOverlay` (`@dnd-kit`). Рендерится в портале над всей
|
|
11
|
+
* страницей и едет за курсором, поэтому строку не режет `overflow: hidden` контейнера `List`
|
|
12
|
+
* (см. [visual-regression] клиппинг). В отличие от `SimpleItem`, не вызывает `useSortable` —
|
|
13
|
+
* это неинтерактивный снимок: ручка и содержимое статичны, перетаскивание ведёт исходная строка.
|
|
14
|
+
*/
|
|
15
|
+
export declare function SimpleItemOverlay({ bare, ...item }: SimpleItemOverlayProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/esm/components/Items/SimpleItem/components/SimpleItemOverlay/SimpleItemOverlay.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { BaseItem } from '../../../BaseItem/index.js';
|
|
3
|
+
import styles from '../../styles.module.css';
|
|
4
|
+
import { OverlayDragHandle } from '../OverlayDragHandle/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Презентационная копия строки для `DragOverlay` (`@dnd-kit`). Рендерится в портале над всей
|
|
7
|
+
* страницей и едет за курсором, поэтому строку не режет `overflow: hidden` контейнера `List`
|
|
8
|
+
* (см. [visual-regression] клиппинг). В отличие от `SimpleItem`, не вызывает `useSortable` —
|
|
9
|
+
* это неинтерактивный снимок: ручка и содержимое статичны, перетаскивание ведёт исходная строка.
|
|
10
|
+
*/
|
|
11
|
+
export function SimpleItemOverlay({ bare, ...item }) {
|
|
12
|
+
return (_jsx("div", { className: styles.item, "data-overlay": bare ? undefined : true, children: _jsx(BaseItem, { ...item, dragHandle: _jsx(OverlayDragHandle, {}) }) }));
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleItemOverlay.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SimpleItemOverlay.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ItemId } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Sortable-контейнер верхнего уровня reorder-режима. Строки без группы и сами группы лежат в одном
|
|
4
|
+
* контейнере (переставляются как «братья»), строки внутри группы — в контейнере со `id` группы.
|
|
5
|
+
* Кастомный `collisionDetection` в `ListPrivate` пускает drop только в пределах одного контейнера.
|
|
6
|
+
*/
|
|
7
|
+
export declare const REORDER_TOP_LEVEL: ItemId;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sortable-контейнер верхнего уровня reorder-режима. Строки без группы и сами группы лежат в одном
|
|
3
|
+
* контейнере (переставляются как «братья»), строки внутри группы — в контейнере со `id` группы.
|
|
4
|
+
* Кастомный `collisionDetection` в `ListPrivate` пускает drop только в пределах одного контейнера.
|
|
5
|
+
*/
|
|
6
|
+
export const REORDER_TOP_LEVEL = '__reorder-top-level__';
|