@astral/ui 4.92.3 → 4.94.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/components/AsyncAutocomplete/AsyncAutocomplete.d.ts +1 -0
- package/components/AsyncAutocomplete/types.d.ts +5 -0
- package/components/AsyncAutocomplete/useLogic/useLogic.d.ts +1 -1
- package/components/AsyncAutocomplete/useLogic/useLogic.js +13 -4
- package/components/BottomDrawer/index.d.ts +1 -1
- package/components/BottomDrawer/index.js +1 -1
- package/components/ClickAwayListener/ClickAwayListener.d.ts +1 -1
- package/components/ClickAwayListener/ClickAwayListener.js +8 -2
- package/components/Radio/Radio.js +1 -1
- package/components/Radio/constants.d.ts +3 -0
- package/components/Radio/constants.js +3 -0
- package/components/Radio/index.d.ts +1 -1
- package/components/Radio/index.js +1 -1
- package/components/Radio/styles.js +9 -9
- package/components/Tree/MultipleTreeList/MultipleTreeList.js +2 -2
- package/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +4 -7
- package/components/Tree/MultipleTreeList/TreeItem/styles.d.ts +1 -17
- package/components/Tree/MultipleTreeList/TreeItem/styles.js +19 -2
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +4 -1
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +8 -2
- package/components/Tree/MultipleTreeList/styles.d.ts +4 -0
- package/components/Tree/MultipleTreeList/styles.js +25 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanel.d.ts +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanel.js +11 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/MobileSlidePanelContent.d.ts +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/MobileSlidePanelContent.js +50 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/styles.d.ts +404 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/styles.js +172 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/types.d.ts +11 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/types.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.d.ts +3 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.js +3 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/useDelayedUnmount.d.ts +11 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/useDelayedUnmount.js +18 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/usePanelHeader.d.ts +24 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/usePanelHeader.js +50 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/useRegisterClose.d.ts +13 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/useRegisterClose.js +17 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.d.ts +19 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.js +39 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContext.d.ts +13 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContext.js +6 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/MobileSlidePanelContextProvider.d.ts +7 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/MobileSlidePanelContextProvider.js +12 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/index.d.ts +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/index.js +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/constants.d.ts +11 -0
- package/components/Tree/TreeItem/MobileSlidePanel/constants.js +12 -0
- package/components/Tree/TreeItem/MobileSlidePanel/index.d.ts +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/index.js +2 -0
- package/components/Tree/TreeItem/MobileSlidePanel/types.d.ts +49 -0
- package/components/Tree/TreeItem/MobileSlidePanel/types.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.d.ts +14 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.js +62 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/index.d.ts +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/index.js +1 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/useLogic.d.ts +9 -0
- package/components/Tree/TreeItem/MobileSlidePanel/useLogic/useLogic.js +11 -0
- package/components/Tree/TreeItem/TreeItem.d.ts +2 -1
- package/components/Tree/TreeItem/TreeItem.js +49 -9
- package/components/Tree/TreeItem/constants.d.ts +9 -0
- package/components/Tree/TreeItem/constants.js +9 -0
- package/components/Tree/TreeItem/styles.d.ts +4 -13
- package/components/Tree/TreeItem/styles.js +153 -39
- package/components/Tree/TreeItem/types.d.ts +18 -0
- package/components/Tree/TreeItem/useLogic/useLogic.d.ts +21 -7
- package/components/Tree/TreeItem/useLogic/useLogic.js +40 -2
- package/components/Tree/TreeList/TreeItem/TreeItem.js +5 -5
- package/components/Tree/TreeList/TreeItem/styles.d.ts +19 -0
- package/components/Tree/TreeList/TreeItem/styles.js +36 -0
- package/components/Tree/TreeList/TreeItem/useLogic/useLogic.d.ts +6 -0
- package/components/Tree/TreeList/TreeItem/useLogic/useLogic.js +11 -0
- package/components/Tree/TreeList/TreeList.js +2 -2
- package/components/Tree/TreeList/styles.d.ts +4 -0
- package/components/Tree/TreeList/styles.js +26 -0
- package/components/TreeAsyncAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/components/TreeAsyncAutocomplete/OptionsModal/OptionsModal.js +2 -3
- package/components/TreeAsyncAutocomplete/OptionsModal/styles.d.ts +17 -0
- package/components/TreeAsyncAutocomplete/OptionsModal/styles.js +75 -5
- package/components/TreeAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/components/TreeAutocomplete/OptionsModal/OptionsModal.js +2 -3
- package/components/TreeAutocomplete/OptionsModal/styles.d.ts +17 -0
- package/components/TreeAutocomplete/OptionsModal/styles.js +36 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +5 -9
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +35 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +96 -5
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +17 -2
- package/components/TreeLikeAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/components/TreeLikeAutocomplete/OptionsModal/OptionsModal.js +5 -6
- package/components/TreeLikeAutocomplete/OptionsModal/styles.d.ts +27 -0
- package/components/TreeLikeAutocomplete/OptionsModal/styles.js +44 -1
- package/components/TreeLikeAutocomplete/OptionsModal/useLogic/useLogic.d.ts +1 -0
- package/components/TreeLikeAutocomplete/OptionsModal/useLogic/useLogic.js +14 -1
- package/components/TreeLikeList/TreeItem/TreeItem.js +11 -4
- package/components/TreeLikeList/TreeItem/styles.d.ts +14 -17
- package/components/TreeLikeList/TreeItem/styles.js +48 -1
- package/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +8 -2
- package/components/TreeLikeList/TreeItem/useLogic/useLogic.js +35 -13
- package/components/TreeLikeList/TreeLikeList.js +2 -2
- package/components/TreeLikeList/styles.d.ts +4 -0
- package/components/TreeLikeList/styles.js +25 -0
- package/components/useAsyncOptions/faker.d.ts +3 -0
- package/components/useAsyncOptions/faker.js +3 -0
- package/components/useAsyncOptions/index.d.ts +1 -0
- package/components/useAsyncOptions/index.js +1 -0
- package/components/useAsyncOptions/public.d.ts +1 -0
- package/components/useAsyncOptions/public.js +1 -0
- package/components/useAsyncOptions/types.d.ts +7 -0
- package/components/useAsyncOptions/types.js +1 -0
- package/components/useAsyncOptions/useAsyncOptions.d.ts +8 -1
- package/components/useAsyncOptions/useAsyncOptions.js +22 -3
- package/node/components/AsyncAutocomplete/AsyncAutocomplete.d.ts +1 -0
- package/node/components/AsyncAutocomplete/types.d.ts +5 -0
- package/node/components/AsyncAutocomplete/useLogic/useLogic.d.ts +1 -1
- package/node/components/AsyncAutocomplete/useLogic/useLogic.js +13 -4
- package/node/components/BottomDrawer/index.d.ts +1 -1
- package/node/components/BottomDrawer/index.js +3 -1
- package/node/components/ClickAwayListener/ClickAwayListener.d.ts +1 -1
- package/node/components/ClickAwayListener/ClickAwayListener.js +8 -2
- package/node/components/Radio/Radio.js +1 -1
- package/node/components/Radio/constants.d.ts +3 -0
- package/node/components/Radio/constants.js +4 -1
- package/node/components/Radio/index.d.ts +1 -1
- package/node/components/Radio/index.js +3 -1
- package/node/components/Radio/styles.js +8 -8
- package/node/components/Tree/MultipleTreeList/MultipleTreeList.js +1 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +4 -7
- package/node/components/Tree/MultipleTreeList/TreeItem/styles.d.ts +1 -17
- package/node/components/Tree/MultipleTreeList/TreeItem/styles.js +18 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +4 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +8 -2
- package/node/components/Tree/MultipleTreeList/styles.d.ts +4 -0
- package/node/components/Tree/MultipleTreeList/styles.js +26 -1
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanel.d.ts +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanel.js +15 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/MobileSlidePanelContent.d.ts +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/MobileSlidePanelContent.js +54 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/styles.d.ts +404 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/styles.js +175 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/types.d.ts +11 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/types.js +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.d.ts +3 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.js +19 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/useDelayedUnmount.d.ts +11 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount/useDelayedUnmount.js +22 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/usePanelHeader.d.ts +24 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/usePanelHeader/usePanelHeader.js +54 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/useRegisterClose.d.ts +13 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useRegisterClose/useRegisterClose.js +21 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.d.ts +19 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.js +43 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContext.d.ts +13 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContext.js +9 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/MobileSlidePanelContextProvider.d.ts +7 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/MobileSlidePanelContextProvider.js +16 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContextProvider/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/index.d.ts +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/index.js +18 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/constants.d.ts +11 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/constants.js +15 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/index.d.ts +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/index.js +18 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/types.d.ts +49 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/types.js +2 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.d.ts +14 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.js +66 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/index.d.ts +1 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/index.js +17 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/useLogic.d.ts +9 -0
- package/node/components/Tree/TreeItem/MobileSlidePanel/useLogic/useLogic.js +15 -0
- package/node/components/Tree/TreeItem/TreeItem.d.ts +2 -1
- package/node/components/Tree/TreeItem/TreeItem.js +48 -9
- package/node/components/Tree/TreeItem/constants.d.ts +9 -0
- package/node/components/Tree/TreeItem/constants.js +10 -1
- package/node/components/Tree/TreeItem/styles.d.ts +4 -13
- package/node/components/Tree/TreeItem/styles.js +153 -39
- package/node/components/Tree/TreeItem/types.d.ts +18 -0
- package/node/components/Tree/TreeItem/useLogic/useLogic.d.ts +21 -7
- package/node/components/Tree/TreeItem/useLogic/useLogic.js +39 -1
- package/node/components/Tree/TreeList/TreeItem/TreeItem.js +4 -4
- package/node/components/Tree/TreeList/TreeItem/styles.d.ts +19 -0
- package/node/components/Tree/TreeList/TreeItem/styles.js +60 -1
- package/node/components/Tree/TreeList/TreeItem/useLogic/useLogic.d.ts +6 -0
- package/node/components/Tree/TreeList/TreeItem/useLogic/useLogic.js +11 -0
- package/node/components/Tree/TreeList/TreeList.js +1 -1
- package/node/components/Tree/TreeList/styles.d.ts +4 -0
- package/node/components/Tree/TreeList/styles.js +27 -1
- package/node/components/TreeAsyncAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/node/components/TreeAsyncAutocomplete/OptionsModal/OptionsModal.js +1 -2
- package/node/components/TreeAsyncAutocomplete/OptionsModal/styles.d.ts +17 -0
- package/node/components/TreeAsyncAutocomplete/OptionsModal/styles.js +76 -6
- package/node/components/TreeAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/node/components/TreeAutocomplete/OptionsModal/OptionsModal.js +1 -2
- package/node/components/TreeAutocomplete/OptionsModal/styles.d.ts +17 -0
- package/node/components/TreeAutocomplete/OptionsModal/styles.js +37 -1
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +3 -7
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +35 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +97 -6
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +17 -2
- package/node/components/TreeLikeAutocomplete/OptionsModal/NoData/styles.js +5 -0
- package/node/components/TreeLikeAutocomplete/OptionsModal/OptionsModal.js +3 -4
- package/node/components/TreeLikeAutocomplete/OptionsModal/styles.d.ts +27 -0
- package/node/components/TreeLikeAutocomplete/OptionsModal/styles.js +45 -2
- package/node/components/TreeLikeAutocomplete/OptionsModal/useLogic/useLogic.d.ts +1 -0
- package/node/components/TreeLikeAutocomplete/OptionsModal/useLogic/useLogic.js +14 -1
- package/node/components/TreeLikeList/TreeItem/TreeItem.js +9 -2
- package/node/components/TreeLikeList/TreeItem/styles.d.ts +14 -17
- package/node/components/TreeLikeList/TreeItem/styles.js +48 -1
- package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +8 -2
- package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.js +34 -12
- package/node/components/TreeLikeList/TreeLikeList.js +1 -1
- package/node/components/TreeLikeList/styles.d.ts +4 -0
- package/node/components/TreeLikeList/styles.js +26 -1
- package/node/components/useAsyncOptions/faker.d.ts +3 -0
- package/node/components/useAsyncOptions/faker.js +9 -0
- package/node/components/useAsyncOptions/index.d.ts +1 -0
- package/node/components/useAsyncOptions/index.js +1 -0
- package/node/components/useAsyncOptions/public.d.ts +1 -0
- package/node/components/useAsyncOptions/public.js +1 -0
- package/node/components/useAsyncOptions/types.d.ts +7 -0
- package/node/components/useAsyncOptions/types.js +2 -0
- package/node/components/useAsyncOptions/useAsyncOptions.d.ts +8 -1
- package/node/components/useAsyncOptions/useAsyncOptions.js +22 -3
- package/package.json +1 -1
- package/components/AsyncAutocomplete/faker.d.ts +0 -2
- package/components/AsyncAutocomplete/faker.js +0 -38
- package/node/components/AsyncAutocomplete/faker.d.ts +0 -2
- package/node/components/AsyncAutocomplete/faker.js +0 -45
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelHeader';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelHeader';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type MouseEvent } from 'react';
|
|
2
|
+
import { type MobileSlidePanelContextProps } from '../../../../MobileSlidePanelContext';
|
|
3
|
+
import { type MobilePanelHeader } from '../../../../types';
|
|
4
|
+
type UsePanelHeaderParams = MobilePanelHeader & {
|
|
5
|
+
id: string;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
activeHeader?: MobilePanelHeader | null;
|
|
8
|
+
setHeader?: MobileSlidePanelContextProps['setHeader'];
|
|
9
|
+
removeHeader?: MobileSlidePanelContextProps['removeHeader'];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Публикует заголовок слоя в стек и снимает его при закрытии.
|
|
13
|
+
*/
|
|
14
|
+
export declare const usePanelHeader: ({ id, isOpen, activeHeader, setHeader, removeHeader, parentLabel, parentNote, parentControl, parentAdditionalContent, isParentSelected, isParentDisabled, onParentClick, }: UsePanelHeaderParams) => {
|
|
15
|
+
handleParentClick: (event: MouseEvent<HTMLDivElement>) => void;
|
|
16
|
+
parentLabel?: import("react").ReactNode;
|
|
17
|
+
parentNote?: import("react").ReactNode;
|
|
18
|
+
parentControl?: import("react").ReactNode;
|
|
19
|
+
parentAdditionalContent?: import("react").ReactNode;
|
|
20
|
+
isParentSelected?: boolean | undefined;
|
|
21
|
+
isParentDisabled?: boolean | undefined;
|
|
22
|
+
onParentClick?: ((event: import("react").SyntheticEvent<Element, Event>) => void) | undefined;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { useLayoutEffect, useMemo } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Публикует заголовок слоя в стек и снимает его при закрытии.
|
|
4
|
+
*/
|
|
5
|
+
export const usePanelHeader = ({ id, isOpen, activeHeader, setHeader, removeHeader, parentLabel, parentNote, parentControl, parentAdditionalContent, isParentSelected, isParentDisabled, onParentClick, }) => {
|
|
6
|
+
const localHeader = useMemo(() => ({
|
|
7
|
+
parentLabel,
|
|
8
|
+
parentNote,
|
|
9
|
+
parentControl,
|
|
10
|
+
parentAdditionalContent,
|
|
11
|
+
isParentSelected,
|
|
12
|
+
isParentDisabled,
|
|
13
|
+
onParentClick,
|
|
14
|
+
}), [
|
|
15
|
+
parentLabel,
|
|
16
|
+
parentNote,
|
|
17
|
+
parentControl,
|
|
18
|
+
parentAdditionalContent,
|
|
19
|
+
isParentSelected,
|
|
20
|
+
isParentDisabled,
|
|
21
|
+
onParentClick,
|
|
22
|
+
]);
|
|
23
|
+
const displayedHeader = activeHeader ?? localHeader;
|
|
24
|
+
const { isParentDisabled: isDisplayedParentDisabled, onParentClick: onDisplayedParentClick, } = displayedHeader;
|
|
25
|
+
const handleParentClick = (event) => {
|
|
26
|
+
if (isDisplayedParentDisabled) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
onDisplayedParentClick?.(event);
|
|
30
|
+
};
|
|
31
|
+
useLayoutEffect(() => {
|
|
32
|
+
if (!setHeader || !isOpen) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
setHeader(id, localHeader);
|
|
36
|
+
}, [setHeader, isOpen, id, localHeader]);
|
|
37
|
+
// Второй useLayoutEffect нужен, чтобы изменение localHeader не повлияло на cleanup функцию
|
|
38
|
+
useLayoutEffect(() => {
|
|
39
|
+
if (!removeHeader || !isOpen) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return () => {
|
|
43
|
+
removeHeader(id);
|
|
44
|
+
};
|
|
45
|
+
}, [removeHeader, isOpen, id]);
|
|
46
|
+
return {
|
|
47
|
+
...displayedHeader,
|
|
48
|
+
handleParentClick,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useRegisterClose';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useRegisterClose';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MouseEvent } from 'react';
|
|
2
|
+
import { type MobileSlidePanelContextProps } from '../../../../MobileSlidePanelContext';
|
|
3
|
+
type UseRegisterCloseParams = {
|
|
4
|
+
isMounted: boolean;
|
|
5
|
+
register?: MobileSlidePanelContextProps['register'];
|
|
6
|
+
onClose: (event: MouseEvent<HTMLElement>) => void;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Кладёт актуальный onClose в стек, не перерегистрируя слой при смене обработчика закрытия.
|
|
10
|
+
* Нужен, чтобы вложенность не ломалась: новый onClose не должен выталкивать слой в конец стека.
|
|
11
|
+
*/
|
|
12
|
+
export declare const useRegisterClose: ({ isMounted, register, onClose, }: UseRegisterCloseParams) => void;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Кладёт актуальный onClose в стек, не перерегистрируя слой при смене обработчика закрытия.
|
|
4
|
+
* Нужен, чтобы вложенность не ломалась: новый onClose не должен выталкивать слой в конец стека.
|
|
5
|
+
*/
|
|
6
|
+
export const useRegisterClose = ({ isMounted, register, onClose, }) => {
|
|
7
|
+
const onCloseRef = useRef(onClose);
|
|
8
|
+
onCloseRef.current = onClose;
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!isMounted || !register) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
return register((event) => {
|
|
14
|
+
onCloseRef.current(event);
|
|
15
|
+
});
|
|
16
|
+
}, [isMounted, register]);
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { type MobileSlidePanelContentProps } from '../types';
|
|
3
|
+
type UseLogicParams = MobileSlidePanelContentProps;
|
|
4
|
+
/**
|
|
5
|
+
* Собирает жизненный цикл панели: присутствие в DOM, закрытие и шапку стека.
|
|
6
|
+
*/
|
|
7
|
+
export declare const useLogic: ({ id, isOpen, onClose, activeHeader, parentLabel, parentNote, parentControl, parentAdditionalContent, isParentSelected, isParentDisabled, onParentClick, }: UseLogicParams) => {
|
|
8
|
+
handleParentClick: (event: import("react").MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
9
|
+
parentLabel?: import("react").ReactNode;
|
|
10
|
+
parentNote?: import("react").ReactNode;
|
|
11
|
+
parentControl?: import("react").ReactNode;
|
|
12
|
+
parentAdditionalContent?: import("react").ReactNode;
|
|
13
|
+
isParentSelected?: boolean | undefined;
|
|
14
|
+
isParentDisabled?: boolean | undefined;
|
|
15
|
+
onParentClick?: ((event: import("react").SyntheticEvent<Element, Event>) => void) | undefined;
|
|
16
|
+
isMobileMounted: boolean;
|
|
17
|
+
closeTop: ((event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) | undefined;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import { useTheme } from '../../../../../theme/hooks';
|
|
3
|
+
import { MobileSlidePanelContext } from '../../MobileSlidePanelContext';
|
|
4
|
+
import { useDelayedUnmount, usePanelHeader, useRegisterClose } from './hooks';
|
|
5
|
+
/**
|
|
6
|
+
* Собирает жизненный цикл панели: присутствие в DOM, закрытие и шапку стека.
|
|
7
|
+
*/
|
|
8
|
+
export const useLogic = ({ id, isOpen, onClose, activeHeader, parentLabel, parentNote, parentControl, parentAdditionalContent, isParentSelected, isParentDisabled, onParentClick, }) => {
|
|
9
|
+
const { transitions: { duration: { standard: transitionDuration }, }, } = useTheme();
|
|
10
|
+
const { register, closeTop, setHeader, removeHeader } = useContext(MobileSlidePanelContext) ?? {};
|
|
11
|
+
const { isMounted: isMobileMounted } = useDelayedUnmount({
|
|
12
|
+
isOpen,
|
|
13
|
+
duration: transitionDuration,
|
|
14
|
+
});
|
|
15
|
+
useRegisterClose({
|
|
16
|
+
isMounted: isMobileMounted,
|
|
17
|
+
register,
|
|
18
|
+
onClose,
|
|
19
|
+
});
|
|
20
|
+
const header = usePanelHeader({
|
|
21
|
+
id,
|
|
22
|
+
isOpen,
|
|
23
|
+
activeHeader,
|
|
24
|
+
setHeader,
|
|
25
|
+
removeHeader,
|
|
26
|
+
parentLabel,
|
|
27
|
+
parentNote,
|
|
28
|
+
parentControl,
|
|
29
|
+
parentAdditionalContent,
|
|
30
|
+
isParentSelected,
|
|
31
|
+
isParentDisabled,
|
|
32
|
+
onParentClick,
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
isMobileMounted,
|
|
36
|
+
closeTop,
|
|
37
|
+
...header,
|
|
38
|
+
};
|
|
39
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type MouseEvent } from 'react';
|
|
2
|
+
import { type MobilePanelHeader } from '../types';
|
|
3
|
+
export type MobileSlidePanelContextProps = {
|
|
4
|
+
register: (close: (event: MouseEvent<HTMLElement>) => void) => () => void;
|
|
5
|
+
closeTop: (event: MouseEvent<HTMLElement>) => void;
|
|
6
|
+
setHeader: (headerId: string, header: MobilePanelHeader) => void;
|
|
7
|
+
removeHeader: (headerId: string) => void;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Общий стек закрытия и заголовков вложенных мобильных панелей.
|
|
11
|
+
* Нужен, чтобы back и шапка всегда относились к верхнему слою, а не к каждому по отдельности.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MobileSlidePanelContext: import("react").Context<MobileSlidePanelContextProps | null>;
|
package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContext/MobileSlidePanelContext.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Общий стек закрытия и заголовков вложенных мобильных панелей.
|
|
4
|
+
* Нужен, чтобы back и шапка всегда относились к верхнему слою, а не к каждому по отдельности.
|
|
5
|
+
*/
|
|
6
|
+
export const MobileSlidePanelContext = createContext(null);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type MobileSlidePanelContextProps } from '../MobileSlidePanelContext';
|
|
3
|
+
type Props = MobileSlidePanelContextProps & {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export declare const MobileSlidePanelContextProvider: ({ children, register, closeTop, setHeader, removeHeader, }: Props) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { MobileSlidePanelContext, } from '../MobileSlidePanelContext';
|
|
4
|
+
export const MobileSlidePanelContextProvider = ({ children, register, closeTop, setHeader, removeHeader, }) => {
|
|
5
|
+
const contextValue = useMemo(() => ({
|
|
6
|
+
register,
|
|
7
|
+
closeTop,
|
|
8
|
+
setHeader,
|
|
9
|
+
removeHeader,
|
|
10
|
+
}), [register, closeTop, setHeader, removeHeader]);
|
|
11
|
+
return (_jsx(MobileSlidePanelContext.Provider, { value: contextValue, children: children }));
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobileSlidePanelContextProvider';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MobileSlidePanelContextProvider';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createUIKitClassname } from '../../../utils/createUIKitClassname';
|
|
2
|
+
export const mobileSlidePanelClassnames = {
|
|
3
|
+
root: createUIKitClassname('tree-item__mobile-panel'),
|
|
4
|
+
nested: createUIKitClassname('tree-item__mobile-panel_nested'),
|
|
5
|
+
content: createUIKitClassname('tree-item__mobile-panel-content'),
|
|
6
|
+
header: createUIKitClassname('tree-item__mobile-header'),
|
|
7
|
+
headerParent: createUIKitClassname('tree-item__mobile-header-parent'),
|
|
8
|
+
headerControl: createUIKitClassname('tree-item__mobile-header-control'),
|
|
9
|
+
headerAdditionalContent: createUIKitClassname('tree-item__mobile-header-additional-content'),
|
|
10
|
+
backButton: createUIKitClassname('tree-item__mobile-back-button'),
|
|
11
|
+
slidePanel: createUIKitClassname('tree-item__slide-panel'),
|
|
12
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type MouseEvent, type ReactNode, type SyntheticEvent } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Данные родителя для шапки мобильной панели.
|
|
4
|
+
*/
|
|
5
|
+
export type MobilePanelHeader = {
|
|
6
|
+
/**
|
|
7
|
+
* Заголовок родителя в шапке.
|
|
8
|
+
*/
|
|
9
|
+
parentLabel?: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Подзаголовок родителя в шапке.
|
|
12
|
+
*/
|
|
13
|
+
parentNote?: ReactNode;
|
|
14
|
+
parentControl?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Дополнительное содержимое под родителем в шапке.
|
|
17
|
+
*/
|
|
18
|
+
parentAdditionalContent?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Если `true`, родитель в шапке отображается как выбранный.
|
|
21
|
+
*/
|
|
22
|
+
isParentSelected?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Если `true`, клик по родителю в шапке недоступен.
|
|
25
|
+
*/
|
|
26
|
+
isParentDisabled?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Обработчик клика по родителю в шапке.
|
|
29
|
+
*/
|
|
30
|
+
onParentClick?: (event: SyntheticEvent) => void;
|
|
31
|
+
};
|
|
32
|
+
export type MobileSlidePanelProps = {
|
|
33
|
+
/**
|
|
34
|
+
* Идентификатор слоя.
|
|
35
|
+
*/
|
|
36
|
+
id: string;
|
|
37
|
+
/**
|
|
38
|
+
* Если `true`, панель открыта.
|
|
39
|
+
*/
|
|
40
|
+
isOpen: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Закрывает текущий слой панели.
|
|
43
|
+
*/
|
|
44
|
+
onClose: (event: MouseEvent<HTMLElement>) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Вложенные элементы дерева, отображаемые внутри панели.
|
|
47
|
+
*/
|
|
48
|
+
children?: ReactNode;
|
|
49
|
+
} & MobilePanelHeader;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelStack';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelStack';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelStack';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePanelStack';
|
package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type MouseEvent } from 'react';
|
|
2
|
+
import { type MobilePanelHeader } from '../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Хранит стеки закрытия и заголовков вложенных панелей.
|
|
5
|
+
* Нужен, чтобы общий UI (закрытие и шапка) всегда относился к верхнему уровню вложенности,
|
|
6
|
+
* а не к каждому по отдельности.
|
|
7
|
+
*/
|
|
8
|
+
export declare const usePanelStack: () => {
|
|
9
|
+
register: (close: (event: MouseEvent<HTMLElement>) => void) => () => void;
|
|
10
|
+
closeTop: (event: MouseEvent<HTMLElement>) => void;
|
|
11
|
+
setHeader: (headerId: string, header: MobilePanelHeader) => void;
|
|
12
|
+
removeHeader: (headerId: string) => void;
|
|
13
|
+
activeHeader: MobilePanelHeader | null;
|
|
14
|
+
};
|
package/components/Tree/TreeItem/MobileSlidePanel/useLogic/hooks/usePanelStack/usePanelStack.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useCallback, useRef, useState } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Хранит стеки закрытия и заголовков вложенных панелей.
|
|
4
|
+
* Нужен, чтобы общий UI (закрытие и шапка) всегда относился к верхнему уровню вложенности,
|
|
5
|
+
* а не к каждому по отдельности.
|
|
6
|
+
*/
|
|
7
|
+
export const usePanelStack = () => {
|
|
8
|
+
const stackRef = useRef([]);
|
|
9
|
+
const headersRef = useRef(new Map());
|
|
10
|
+
const headerOrderRef = useRef([]);
|
|
11
|
+
const [activeHeader, setActiveHeader] = useState(null);
|
|
12
|
+
/**
|
|
13
|
+
* Добавляет обработчик закрытия в стек и возвращает функцию снятия.
|
|
14
|
+
* Нужен, чтобы текущим считался последний зарегистрированный слой.
|
|
15
|
+
*/
|
|
16
|
+
const register = useCallback((close) => {
|
|
17
|
+
stackRef.current.push(close);
|
|
18
|
+
return () => {
|
|
19
|
+
stackRef.current = stackRef.current.filter((registeredClose) => registeredClose !== close);
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
/**
|
|
23
|
+
* Вызывает обработчик закрытия верхнего слоя.
|
|
24
|
+
* Нужен, чтобы снимать слои по одному, с конца стека.
|
|
25
|
+
*/
|
|
26
|
+
const closeTop = useCallback((event) => {
|
|
27
|
+
stackRef.current[stackRef.current.length - 1]?.(event);
|
|
28
|
+
}, []);
|
|
29
|
+
/**
|
|
30
|
+
* Записывает или обновляет заголовок слоя. Если слой верхний — публикует его.
|
|
31
|
+
* Нужен, чтобы общий заголовок отражал текущий слой без смены порядка стека
|
|
32
|
+
* при повторной записи того же id.
|
|
33
|
+
*/
|
|
34
|
+
const setHeader = useCallback((headerId, header) => {
|
|
35
|
+
const isNew = !headersRef.current.has(headerId);
|
|
36
|
+
headersRef.current.set(headerId, header);
|
|
37
|
+
if (isNew) {
|
|
38
|
+
headerOrderRef.current.push(headerId);
|
|
39
|
+
}
|
|
40
|
+
const topId = headerOrderRef.current[headerOrderRef.current.length - 1];
|
|
41
|
+
if (topId === headerId) {
|
|
42
|
+
setActiveHeader(header);
|
|
43
|
+
}
|
|
44
|
+
}, []);
|
|
45
|
+
/**
|
|
46
|
+
* Удаляет заголовок слоя и публикует предыдущий верхний.
|
|
47
|
+
* Нужен, чтобы заголовок следовал за разбором стека.
|
|
48
|
+
*/
|
|
49
|
+
const removeHeader = useCallback((headerId) => {
|
|
50
|
+
headersRef.current.delete(headerId);
|
|
51
|
+
headerOrderRef.current = headerOrderRef.current.filter((headerItemId) => headerItemId !== headerId);
|
|
52
|
+
const topId = headerOrderRef.current[headerOrderRef.current.length - 1];
|
|
53
|
+
setActiveHeader(topId ? (headersRef.current.get(topId) ?? null) : null);
|
|
54
|
+
}, []);
|
|
55
|
+
return {
|
|
56
|
+
register,
|
|
57
|
+
closeTop,
|
|
58
|
+
setHeader,
|
|
59
|
+
removeHeader,
|
|
60
|
+
activeHeader,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useLogic';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const useLogic: () => {
|
|
3
|
+
register: (close: (event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void) => () => void;
|
|
4
|
+
closeTop: (event: import("react").MouseEvent<HTMLElement, MouseEvent>) => void;
|
|
5
|
+
setHeader: (headerId: string, header: import("../types").MobilePanelHeader) => void;
|
|
6
|
+
removeHeader: (headerId: string) => void;
|
|
7
|
+
activeHeader: import("../types").MobilePanelHeader | null;
|
|
8
|
+
parentContext: import("../MobileSlidePanelContext").MobileSlidePanelContextProps | null;
|
|
9
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import { MobileSlidePanelContext } from '../MobileSlidePanelContext';
|
|
3
|
+
import { usePanelStack } from './hooks';
|
|
4
|
+
export const useLogic = () => {
|
|
5
|
+
const parentContext = useContext(MobileSlidePanelContext);
|
|
6
|
+
const panelStack = usePanelStack();
|
|
7
|
+
return {
|
|
8
|
+
parentContext,
|
|
9
|
+
...panelStack,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { type TreeItemProps } from './types';
|
|
2
|
-
export declare const TreeItem: (
|
|
3
|
+
export declare const TreeItem: import("react").ForwardRefExoticComponent<Omit<TreeItemProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
|
|
@@ -1,15 +1,55 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
3
|
import { Tooltip } from '../../Tooltip';
|
|
4
|
+
import { classNames } from '../../utils/classNames';
|
|
5
|
+
import { cva } from '../../utils/cva';
|
|
4
6
|
import { TOOLTIP_PLACEMENT, treeClassnames } from './constants';
|
|
5
|
-
import {
|
|
7
|
+
import { MobileSlidePanel } from './MobileSlidePanel';
|
|
8
|
+
import { ChevronIcon, CollapseButton, Item, ItemContent, ItemWrapper, Label, LabelWrapper, Note, StyledCollapse, } from './styles';
|
|
6
9
|
import { useLogic } from './useLogic';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const itemCva = cva(treeClassnames.item, {
|
|
11
|
+
variants: {
|
|
12
|
+
isOpen: {
|
|
13
|
+
true: treeClassnames.open,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const itemContentCva = cva(treeClassnames.itemContent, {
|
|
18
|
+
variants: {
|
|
19
|
+
isSelected: {
|
|
20
|
+
true: treeClassnames.selected,
|
|
21
|
+
},
|
|
22
|
+
isDisabled: {
|
|
23
|
+
true: treeClassnames.disabled,
|
|
24
|
+
},
|
|
25
|
+
hasNested: {
|
|
26
|
+
true: treeClassnames.hasNested,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const collapseButtonCva = cva(treeClassnames.collapseButton, {
|
|
31
|
+
variants: {
|
|
32
|
+
isNotBlockingExpandList: {
|
|
33
|
+
true: treeClassnames.notBlockingExpandList,
|
|
34
|
+
},
|
|
35
|
+
isOpen: {
|
|
36
|
+
true: treeClassnames.open,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
export const TreeItem = forwardRef((props, ref) => {
|
|
41
|
+
const { isOpen, isMobileOpen, isMobile, handleToggle, handleClose, itemProps, itemContentProps, tooltipProps, itemCssVars, mobileSlidePanelProps, } = useLogic(props);
|
|
42
|
+
const { id, prefixId, label, note, renderItem, children, className, isSelected, isDisabled = false, disabledReason, isDefaultExpanded, isForceExpanded, isNotBlockingExpandList = false, level = 0, component = 'div', onClick, mobileHeaderLabel, mobileHeaderControl, mobileHeaderAdditionalContent, onMobilePanelOpenChange, ...restProps } = props;
|
|
43
|
+
const renderCollapseButton = () => (_jsx(CollapseButton, { className: collapseButtonCva({
|
|
44
|
+
isNotBlockingExpandList,
|
|
45
|
+
isOpen,
|
|
46
|
+
}), disabled: !isNotBlockingExpandList && isDisabled, variant: "text", onClick: handleToggle, children: _jsx(ChevronIcon, {}) }));
|
|
11
47
|
if (children) {
|
|
12
|
-
return (_jsxs(Item, { ...restProps,
|
|
48
|
+
return (_jsxs(Item, { ...restProps, ref: ref, as: component, className: classNames(className, itemCva({ isOpen })), style: itemCssVars, ...itemProps, children: [_jsx(ItemContent, { ...itemContentProps, className: itemContentCva({
|
|
49
|
+
isSelected,
|
|
50
|
+
isDisabled,
|
|
51
|
+
hasNested: Boolean(children),
|
|
52
|
+
}), children: _jsx(Tooltip, { placement: TOOLTIP_PLACEMENT, ...tooltipProps, children: renderItem ? (_jsxs(LabelWrapper, { children: [renderCollapseButton(), renderItem({ label, note, id })] })) : (_jsxs(ItemWrapper, { children: [_jsxs(LabelWrapper, { children: [renderCollapseButton(), _jsx(Label, { component: "div", children: label })] }), note && (_jsx(Note, { className: treeClassnames.note, variant: "caption", color: "textSecondary", children: note }))] })) }) }), isMobile ? (_jsx(MobileSlidePanel, { isOpen: isMobileOpen, onClose: handleClose, ...mobileSlidePanelProps, children: children })) : (_jsx(StyledCollapse, { in: isOpen, unmountOnExit: true, children: children }))] }));
|
|
13
53
|
}
|
|
14
|
-
return (_jsx(Item, { ...restProps,
|
|
15
|
-
};
|
|
54
|
+
return (_jsx(Item, { ...restProps, ref: ref, as: component, className: classNames(className, itemCva({ isOpen })), style: itemCssVars, ...itemProps, children: _jsx(ItemContent, { ...itemContentProps, className: itemContentCva({ isSelected, isDisabled }), children: _jsx(Tooltip, { placement: TOOLTIP_PLACEMENT, ...tooltipProps, children: renderItem ? (_jsx(LabelWrapper, { children: renderItem({ label, note, id }) })) : (_jsxs(ItemWrapper, { children: [_jsx(LabelWrapper, { children: _jsx(Label, { component: "div", children: label }) }), note && (_jsx(Note, { className: treeClassnames.note, variant: "caption", color: "textSecondary", children: note }))] })) }) }) }));
|
|
55
|
+
});
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
export declare const COLLAPSE_BUTTON_WIDTH = "24px";
|
|
2
|
+
export declare const MOBILE_COLLAPSE_BUTTON_WIDTH = "72px";
|
|
2
3
|
export declare const TREE_LINE_WIDTH = "10px";
|
|
3
4
|
export declare const GAP_WIDTH = "4px";
|
|
4
5
|
export declare const HALF_PADDING_COLLAPSE_BUTTON_WIDTH = "14px";
|
|
5
6
|
export declare const TOOLTIP_PLACEMENT = "bottom-start";
|
|
6
7
|
export declare const treeClassnames: {
|
|
8
|
+
item: string;
|
|
9
|
+
itemContent: string;
|
|
7
10
|
note: string;
|
|
8
11
|
label: string;
|
|
12
|
+
collapseButton: string;
|
|
13
|
+
hasNested: string;
|
|
14
|
+
open: string;
|
|
15
|
+
disabled: string;
|
|
16
|
+
selected: string;
|
|
17
|
+
notBlockingExpandList: string;
|
|
9
18
|
};
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { createUIKitClassname } from '../../utils/createUIKitClassname';
|
|
2
2
|
export const COLLAPSE_BUTTON_WIDTH = '24px';
|
|
3
|
+
export const MOBILE_COLLAPSE_BUTTON_WIDTH = '72px';
|
|
3
4
|
export const TREE_LINE_WIDTH = '10px';
|
|
4
5
|
export const GAP_WIDTH = '4px';
|
|
5
6
|
export const HALF_PADDING_COLLAPSE_BUTTON_WIDTH = '14px';
|
|
6
7
|
export const TOOLTIP_PLACEMENT = 'bottom-start';
|
|
7
8
|
export const treeClassnames = {
|
|
9
|
+
item: createUIKitClassname('tree-item'),
|
|
10
|
+
itemContent: createUIKitClassname('tree-item__content'),
|
|
8
11
|
note: createUIKitClassname('tree-item__note'),
|
|
9
12
|
label: createUIKitClassname('tree-item__label'),
|
|
13
|
+
collapseButton: createUIKitClassname('tree-item__collapse-button'),
|
|
14
|
+
hasNested: createUIKitClassname('tree-item_has-nested'),
|
|
15
|
+
open: createUIKitClassname('tree-item_open'),
|
|
16
|
+
disabled: createUIKitClassname('tree-item_disabled'),
|
|
17
|
+
selected: createUIKitClassname('tree-item_selected'),
|
|
18
|
+
notBlockingExpandList: createUIKitClassname('tree-item_not-blocking-expand-list'),
|
|
10
19
|
};
|