@astral/ui 4.4.0 → 4.5.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/Checkbox/Icon/Icon.js +1 -1
- package/components/Radio/Icon/Icon.js +1 -1
- package/components/SvgIcon/SvgIcon.js +1 -1
- package/components/Tree/MultipleTreeList/MultipleTreeList.d.ts +2 -2
- package/components/Tree/MultipleTreeList/MultipleTreeList.js +1 -1
- package/components/Tree/MultipleTreeList/TreeItem/TreeItem.d.ts +10 -6
- package/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +3 -2
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +3 -2
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +24 -18
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.d.ts +2 -1
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.js +2 -1
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +22 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +6 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.js +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.d.ts +5 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.js +14 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.d.ts +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.js +1 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.d.ts +3 -0
- package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.js +3 -0
- package/components/Tree/MultipleTreeList/types.d.ts +8 -4
- package/components/TreeAsyncAutocomplete/types.d.ts +14 -2
- package/components/TreeLikeAsyncAutocomplete/Input/Input.d.ts +3 -0
- package/components/TreeLikeAsyncAutocomplete/Input/Input.js +20 -0
- package/components/TreeLikeAsyncAutocomplete/Input/constants.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/constants.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/styles.d.ts +11 -0
- package/components/TreeLikeAsyncAutocomplete/Input/styles.js +27 -0
- package/components/TreeLikeAsyncAutocomplete/Input/types.d.ts +7 -0
- package/components/TreeLikeAsyncAutocomplete/Input/types.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.d.ts +18 -0
- package/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.js +50 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.d.ts +13 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.js +6 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.d.ts +5 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.js +10 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.d.ts +2 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.js +4 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.d.ts +5 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.js +8 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.d.ts +2 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.js +6 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.d.ts +5 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +8 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.d.ts +3 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +33 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.d.ts +2 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.js +6 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.d.ts +5 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.js +8 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +19 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +48 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/types.d.ts +69 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/types.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +27 -0
- package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +92 -0
- package/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.d.ts +3 -0
- package/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.js +9 -0
- package/components/TreeLikeAsyncAutocomplete/constants.d.ts +2 -0
- package/components/TreeLikeAsyncAutocomplete/constants.js +2 -0
- package/components/TreeLikeAsyncAutocomplete/index.d.ts +2 -0
- package/components/TreeLikeAsyncAutocomplete/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/types.d.ts +69 -0
- package/components/TreeLikeAsyncAutocomplete/types.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.d.ts +626 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.js +82 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.d.ts +3 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.js +12 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.js +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.d.ts +1 -0
- package/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.js +1 -0
- package/components/TreeLikeList/TreeItem/TreeItem.d.ts +3 -51
- package/components/TreeLikeList/TreeItem/TreeItem.js +3 -2
- package/components/TreeLikeList/TreeItem/types.d.ts +56 -0
- package/components/TreeLikeList/TreeItem/types.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +4 -3
- package/components/TreeLikeList/TreeItem/useLogic/useLogic.js +22 -13
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.d.ts +6 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.js +8 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.d.ts +6 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.js +15 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
- package/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
- package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +22 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.d.ts +5 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.js +10 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +6 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/index.d.ts +7 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/index.js +7 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.d.ts +5 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.js +10 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.d.ts +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.js +1 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.d.ts +5 -0
- package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.js +11 -0
- package/components/TreeLikeList/TreeLikeList.d.ts +2 -3
- package/components/TreeLikeList/TreeLikeList.js +1 -1
- package/components/TreeLikeList/index.d.ts +1 -0
- package/components/TreeLikeList/types.d.ts +8 -4
- package/components/TreeLikeList/useLogic/useLogic.d.ts +3 -3
- package/components/TreeLikeList/useLogic/useLogic.js +3 -2
- package/components/TreeLikeList/useLogic/utils/getChainsId/getChainsId.js +17 -10
- package/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.d.ts +13 -0
- package/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.js +13 -0
- package/hook-form/FormTreeLikeAsyncAutocomplete/index.d.ts +0 -0
- package/hook-form/FormTreeLikeAsyncAutocomplete/index.js +1 -0
- package/icons/FillSm/ArrowDFillSm.js +1 -1
- package/icons/FillSm/ArrowUpFillSm.js +1 -1
- package/icons/FillSm/CircleErrorFillSm.js +1 -1
- package/icons/FillSm/ClockFillSm.js +1 -1
- package/icons/FillSm/DislikeFillSm.js +1 -1
- package/icons/FillSm/ErrorFillSm.js +1 -1
- package/icons/FillSm/InfoFillSm.js +1 -1
- package/icons/FillSm/LikeFillSm.js +1 -1
- package/icons/FillSm/LocationFillSm.js +1 -1
- package/icons/FillSm/MailFillSm.js +1 -1
- package/icons/FillSm/PauseFillSm.js +1 -1
- package/icons/FillSm/PhoneFillSm.js +1 -1
- package/icons/FillSm/PitFillSm.js +1 -1
- package/icons/FillSm/PlayFillSm.js +1 -1
- package/icons/FillSm/RectangleFillSm.js +1 -1
- package/icons/FillSm/RoundFillSm.js +1 -1
- package/icons/FillSm/SentFillSm.js +1 -1
- package/icons/FillSm/SortDownFillSm.js +1 -1
- package/icons/FillSm/SortFillSm.js +1 -1
- package/icons/FillSm/SortUpFillSm.js +1 -1
- package/icons/FillSm/StarFillSm.js +1 -1
- package/icons/FillSm/SuccessFillSm.js +1 -1
- package/icons/FillSm/UpToDateFillSm.js +1 -1
- package/icons/FillSm/WarningFillSm.js +1 -1
- package/icons/OutlineSm/AddOutlineSm.js +1 -1
- package/icons/OutlineSm/AddSmOutlineSm.js +1 -1
- package/icons/OutlineSm/ArrowDwnOutlineSm.js +1 -1
- package/icons/OutlineSm/ArrowLOutlineSm.js +1 -1
- package/icons/OutlineSm/ArrowROutlineSm.js +1 -1
- package/icons/OutlineSm/ArrowUpOutlineSm.js +1 -1
- package/icons/OutlineSm/BlockOutlineSm.js +1 -1
- package/icons/OutlineSm/CheckOutlineSm.js +1 -1
- package/icons/OutlineSm/ClockOutlineSm.js +1 -1
- package/icons/OutlineSm/CopyOutlineSm.js +1 -1
- package/icons/OutlineSm/CrossOutlineSm.js +1 -1
- package/icons/OutlineSm/CrossSmOutlineSm.js +1 -1
- package/icons/OutlineSm/DislikeOutlineSm.js +1 -1
- package/icons/OutlineSm/DocumentOutlineSm.js +1 -1
- package/icons/OutlineSm/DocumentsOutlineSm.js +1 -1
- package/icons/OutlineSm/DotOutlineSm.js +1 -1
- package/icons/OutlineSm/DoubleCheckOutlineSm.js +1 -1
- package/icons/OutlineSm/DownloadVOutlineSm.js +1 -1
- package/icons/OutlineSm/EditOutlineSm.js +1 -1
- package/icons/OutlineSm/InfoOutlineSm.js +1 -1
- package/icons/OutlineSm/LikeOutlineSm.js +1 -1
- package/icons/OutlineSm/LoaderOutlineSm.js +1 -1
- package/icons/OutlineSm/MessageOutlineSm.js +1 -1
- package/icons/OutlineSm/OpenLinkOutlineSm.js +1 -1
- package/icons/OutlineSm/PageOutlineSm.js +1 -1
- package/icons/OutlineSm/ProfileOutlineSm.js +1 -1
- package/icons/OutlineSm/RefreshOutlineSm.js +1 -1
- package/icons/OutlineSm/RequestOutlineSm.js +1 -1
- package/icons/OutlineSm/RouteOutlineSm.js +1 -1
- package/icons/OutlineSm/SearchOutlineSm.js +1 -1
- package/icons/OutlineSm/SortingOutlineSm.js +1 -1
- package/icons/OutlineSm/SuccessOutlineSm.js +1 -1
- package/icons/OutlineSm/TransferOutlineSm.js +1 -1
- package/node/components/Checkbox/Icon/Icon.js +1 -1
- package/node/components/Radio/Icon/Icon.js +1 -1
- package/node/components/SvgIcon/SvgIcon.js +1 -1
- package/node/components/Tree/MultipleTreeList/MultipleTreeList.d.ts +2 -2
- package/node/components/Tree/MultipleTreeList/MultipleTreeList.js +1 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/TreeItem.d.ts +10 -6
- package/node/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +3 -2
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +3 -2
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +23 -17
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.d.ts +2 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.js +2 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +26 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +17 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +10 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.js +17 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.d.ts +5 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.js +18 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.d.ts +1 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.js +17 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.d.ts +3 -0
- package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.js +7 -1
- package/node/components/Tree/MultipleTreeList/types.d.ts +8 -4
- package/node/components/TreeAsyncAutocomplete/types.d.ts +14 -2
- package/node/components/TreeLikeAsyncAutocomplete/Input/Input.d.ts +3 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/Input.js +23 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/constants.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/constants.js +4 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/styles.d.ts +11 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/styles.js +30 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/types.d.ts +7 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/types.js +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.d.ts +18 -0
- package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.js +54 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.d.ts +13 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.js +10 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.d.ts +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.js +13 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.d.ts +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.js +8 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.d.ts +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.js +11 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.d.ts +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.js +10 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.d.ts +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +11 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.d.ts +3 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +37 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.d.ts +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.js +10 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.d.ts +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.js +11 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.js +4 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +19 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +51 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/types.d.ts +69 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/types.js +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +27 -0
- package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +96 -0
- package/node/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.d.ts +3 -0
- package/node/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.js +12 -0
- package/node/components/TreeLikeAsyncAutocomplete/constants.d.ts +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/constants.js +5 -0
- package/node/components/TreeLikeAsyncAutocomplete/index.d.ts +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/types.d.ts +69 -0
- package/node/components/TreeLikeAsyncAutocomplete/types.js +2 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.d.ts +626 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.js +86 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.d.ts +3 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.js +16 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.js +17 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.d.ts +1 -0
- package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/TreeItem.d.ts +3 -51
- package/node/components/TreeLikeList/TreeItem/TreeItem.js +3 -2
- package/node/components/TreeLikeList/TreeItem/types.d.ts +56 -0
- package/node/components/TreeLikeList/TreeItem/types.js +2 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +4 -3
- package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.js +21 -12
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.d.ts +6 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.js +12 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.d.ts +6 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.js +19 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +26 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.d.ts +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.js +14 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +10 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.js +17 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/index.d.ts +7 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/index.js +15 -1
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.d.ts +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.js +14 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.d.ts +1 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.js +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.d.ts +5 -0
- package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.js +15 -0
- package/node/components/TreeLikeList/TreeLikeList.d.ts +2 -3
- package/node/components/TreeLikeList/TreeLikeList.js +1 -1
- package/node/components/TreeLikeList/index.d.ts +1 -0
- package/node/components/TreeLikeList/types.d.ts +8 -4
- package/node/components/TreeLikeList/useLogic/useLogic.d.ts +3 -3
- package/node/components/TreeLikeList/useLogic/useLogic.js +3 -2
- package/node/components/TreeLikeList/useLogic/utils/getChainsId/getChainsId.js +17 -10
- package/node/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.d.ts +13 -0
- package/node/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.js +17 -0
- package/node/hook-form/FormTreeLikeAsyncAutocomplete/index.d.ts +0 -0
- package/node/hook-form/FormTreeLikeAsyncAutocomplete/index.js +1 -0
- package/node/icons/FillSm/ArrowDFillSm.js +1 -1
- package/node/icons/FillSm/ArrowUpFillSm.js +1 -1
- package/node/icons/FillSm/CircleErrorFillSm.js +1 -1
- package/node/icons/FillSm/ClockFillSm.js +1 -1
- package/node/icons/FillSm/DislikeFillSm.js +1 -1
- package/node/icons/FillSm/ErrorFillSm.js +1 -1
- package/node/icons/FillSm/InfoFillSm.js +1 -1
- package/node/icons/FillSm/LikeFillSm.js +1 -1
- package/node/icons/FillSm/LocationFillSm.js +1 -1
- package/node/icons/FillSm/MailFillSm.js +1 -1
- package/node/icons/FillSm/PauseFillSm.js +1 -1
- package/node/icons/FillSm/PhoneFillSm.js +1 -1
- package/node/icons/FillSm/PitFillSm.js +1 -1
- package/node/icons/FillSm/PlayFillSm.js +1 -1
- package/node/icons/FillSm/RectangleFillSm.js +1 -1
- package/node/icons/FillSm/RoundFillSm.js +1 -1
- package/node/icons/FillSm/SentFillSm.js +1 -1
- package/node/icons/FillSm/SortDownFillSm.js +1 -1
- package/node/icons/FillSm/SortFillSm.js +1 -1
- package/node/icons/FillSm/SortUpFillSm.js +1 -1
- package/node/icons/FillSm/StarFillSm.js +1 -1
- package/node/icons/FillSm/SuccessFillSm.js +1 -1
- package/node/icons/FillSm/UpToDateFillSm.js +1 -1
- package/node/icons/FillSm/WarningFillSm.js +1 -1
- package/node/icons/OutlineSm/AddOutlineSm.js +1 -1
- package/node/icons/OutlineSm/AddSmOutlineSm.js +1 -1
- package/node/icons/OutlineSm/ArrowDwnOutlineSm.js +1 -1
- package/node/icons/OutlineSm/ArrowLOutlineSm.js +1 -1
- package/node/icons/OutlineSm/ArrowROutlineSm.js +1 -1
- package/node/icons/OutlineSm/ArrowUpOutlineSm.js +1 -1
- package/node/icons/OutlineSm/BlockOutlineSm.js +1 -1
- package/node/icons/OutlineSm/CheckOutlineSm.js +1 -1
- package/node/icons/OutlineSm/ClockOutlineSm.js +1 -1
- package/node/icons/OutlineSm/CopyOutlineSm.js +1 -1
- package/node/icons/OutlineSm/CrossOutlineSm.js +1 -1
- package/node/icons/OutlineSm/CrossSmOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DislikeOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DocumentOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DocumentsOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DotOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DoubleCheckOutlineSm.js +1 -1
- package/node/icons/OutlineSm/DownloadVOutlineSm.js +1 -1
- package/node/icons/OutlineSm/EditOutlineSm.js +1 -1
- package/node/icons/OutlineSm/InfoOutlineSm.js +1 -1
- package/node/icons/OutlineSm/LikeOutlineSm.js +1 -1
- package/node/icons/OutlineSm/LoaderOutlineSm.js +1 -1
- package/node/icons/OutlineSm/MessageOutlineSm.js +1 -1
- package/node/icons/OutlineSm/OpenLinkOutlineSm.js +1 -1
- package/node/icons/OutlineSm/PageOutlineSm.js +1 -1
- package/node/icons/OutlineSm/ProfileOutlineSm.js +1 -1
- package/node/icons/OutlineSm/RefreshOutlineSm.js +1 -1
- package/node/icons/OutlineSm/RequestOutlineSm.js +1 -1
- package/node/icons/OutlineSm/RouteOutlineSm.js +1 -1
- package/node/icons/OutlineSm/SearchOutlineSm.js +1 -1
- package/node/icons/OutlineSm/SortingOutlineSm.js +1 -1
- package/node/icons/OutlineSm/SuccessOutlineSm.js +1 -1
- package/node/icons/OutlineSm/TransferOutlineSm.js +1 -1
- package/package.json +15 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { useEffect, useState, } from 'react';
|
|
2
|
+
import { useAsyncOptions } from '../../hooks';
|
|
3
|
+
import { DEFAULT_DELAY_MS, DEFAULT_MIN_SEARCH_CHARACTERS } from '../constants';
|
|
4
|
+
export const useLogic = ({ onBlur, isError, value, isDisabled, fetchDelayMs = DEFAULT_DELAY_MS, fetchOptions, minSymbolsToFetch = DEFAULT_MIN_SEARCH_CHARACTERS, onDataLoadError, onChange, loadingErrorMsg, treeProps, dialogProps, onShowUserHint, ...restInputProps }) => {
|
|
5
|
+
const [isOpen, setOpen] = useState(false);
|
|
6
|
+
const [isLoadingModal, setIsLoadingModal] = useState(false);
|
|
7
|
+
const { options, isLoadingData, isLoadingError, onInputChange: propsOnInputChange, onOpen: propsOnOpen, onRetry: propsOnRetry, meta, } = useAsyncOptions({
|
|
8
|
+
fetchOptions,
|
|
9
|
+
fetchDelayMs,
|
|
10
|
+
minSymbolsToFetch,
|
|
11
|
+
onDataLoadError,
|
|
12
|
+
});
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!isLoadingData) {
|
|
15
|
+
setIsLoadingModal(false);
|
|
16
|
+
}
|
|
17
|
+
}, [isLoadingData]);
|
|
18
|
+
const onInputBlur = (event) => {
|
|
19
|
+
// Если произошла потеря фокуса, но открылась окно поиска элемента, то не вызываем onBlur, так как произойдет преждевременная валидация
|
|
20
|
+
if (!isOpen) {
|
|
21
|
+
onBlur?.(event);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const onOpen = () => {
|
|
25
|
+
if (minSymbolsToFetch === 0) {
|
|
26
|
+
setIsLoadingModal(true);
|
|
27
|
+
}
|
|
28
|
+
propsOnOpen('', undefined, true);
|
|
29
|
+
setOpen(true);
|
|
30
|
+
};
|
|
31
|
+
const onKeyDown = (event) => {
|
|
32
|
+
if (event.code === 'Enter') {
|
|
33
|
+
setOpen(true);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const onClose = (event) => {
|
|
37
|
+
onBlur?.(event);
|
|
38
|
+
setOpen(false);
|
|
39
|
+
};
|
|
40
|
+
const onRetry = (search = '') => {
|
|
41
|
+
setIsLoadingModal(true);
|
|
42
|
+
propsOnRetry(search);
|
|
43
|
+
};
|
|
44
|
+
const onInputChange = (search) => {
|
|
45
|
+
if (isLoadingError) {
|
|
46
|
+
setIsLoadingModal(true);
|
|
47
|
+
}
|
|
48
|
+
propsOnInputChange(search, 'input');
|
|
49
|
+
};
|
|
50
|
+
return {
|
|
51
|
+
inputProps: {
|
|
52
|
+
onBlur: onInputBlur,
|
|
53
|
+
onClick: onOpen,
|
|
54
|
+
onKeyDown,
|
|
55
|
+
error: isError,
|
|
56
|
+
disabled: isDisabled,
|
|
57
|
+
value,
|
|
58
|
+
onChange,
|
|
59
|
+
...restInputProps,
|
|
60
|
+
},
|
|
61
|
+
optionsModalProps: {
|
|
62
|
+
isOpen,
|
|
63
|
+
initialValue: value,
|
|
64
|
+
meta,
|
|
65
|
+
isLoading: isLoadingData,
|
|
66
|
+
isLoadingError,
|
|
67
|
+
loadingErrorMsg,
|
|
68
|
+
treeProps,
|
|
69
|
+
dialogProps: {
|
|
70
|
+
...dialogProps,
|
|
71
|
+
onClose,
|
|
72
|
+
},
|
|
73
|
+
options,
|
|
74
|
+
onRetry,
|
|
75
|
+
onChange,
|
|
76
|
+
onInputChange,
|
|
77
|
+
isLoadingModal,
|
|
78
|
+
onShowUserHint,
|
|
79
|
+
minSymbolsToFetch,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
};
|
package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { TreeAsyncAutocompleteValue } from '../../../../TreeAsyncAutocomplete';
|
|
2
|
+
import type { TreeLikeAsyncAutocompleteValue } from '../../../types';
|
|
3
|
+
export declare const deepMultipleFind: (tree: TreeLikeAsyncAutocompleteValue, callback: (item: TreeAsyncAutocompleteValue) => boolean) => TreeLikeAsyncAutocompleteValue;
|
package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const deepMultipleFind = (tree, callback) => {
|
|
2
|
+
const result = [];
|
|
3
|
+
for (const item of tree) {
|
|
4
|
+
if (callback(item)) {
|
|
5
|
+
result.push(item);
|
|
6
|
+
}
|
|
7
|
+
if (item.children) {
|
|
8
|
+
result.push(...deepMultipleFind(item.children, callback));
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './deepMultipleFind';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './deepMultipleFind';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { deepMultipleFind } from './deepMultipleFind';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { deepMultipleFind } from './deepMultipleFind';
|
|
@@ -1,52 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import type { TreeListData } from '../../Tree';
|
|
1
|
+
/// <reference types="react" />
|
|
3
2
|
import type { MultipleValue } from '../types';
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
disabledReason?: string;
|
|
7
|
-
};
|
|
8
|
-
export type TreeItemProps = TreeListData & {
|
|
9
|
-
/**
|
|
10
|
-
* Выбранные значения
|
|
11
|
-
*/
|
|
12
|
-
value?: MultipleValue;
|
|
13
|
-
/**
|
|
14
|
-
* Уникальный префикс для идентификаторов в рамках дерева
|
|
15
|
-
*/
|
|
16
|
-
prefixId?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Render-props, позволяет более гибко настраивать содержимое item
|
|
19
|
-
*/
|
|
20
|
-
renderItem?: FunctionComponent<Omit<TreeListData, 'children'>>;
|
|
21
|
-
/**
|
|
22
|
-
* Уровень вложенности в дереве
|
|
23
|
-
*/
|
|
24
|
-
level: number;
|
|
25
|
-
/**
|
|
26
|
-
* Если true, при выборе родителя будет возможность выбора дочерних элементов
|
|
27
|
-
*/
|
|
28
|
-
isConfirmChildrenSelection?: boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Если true, то дерево будет раскрыто по умолчанию
|
|
31
|
-
* @default false
|
|
32
|
-
*/
|
|
33
|
-
isInitialExpanded?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Уровень раскрытия дерева по умолчанию, при isExpanded=true
|
|
36
|
-
*/
|
|
37
|
-
expandedLevel: number;
|
|
38
|
-
/**
|
|
39
|
-
* Цепочки идентификаторов до выбранных элементов дерева
|
|
40
|
-
*/
|
|
41
|
-
chainsToSelectedItem?: MultipleValue[];
|
|
42
|
-
/**
|
|
43
|
-
* Список `value` элементов дерева, которые не доступны для взаимодействия
|
|
44
|
-
*/
|
|
45
|
-
disabledItems?: FormatDisableItem[];
|
|
46
|
-
/**
|
|
47
|
-
* Функция, которая запускается при выборе item
|
|
48
|
-
*/
|
|
49
|
-
onChange: (value: MultipleValue) => void;
|
|
50
|
-
};
|
|
51
|
-
export declare const TreeItem: (props: TreeItemProps) => JSX.Element;
|
|
52
|
-
export {};
|
|
3
|
+
import type { TreeItemProps } from './types';
|
|
4
|
+
export declare const TreeItem: <TValue extends MultipleValue = string[]>(props: TreeItemProps<TValue>) => JSX.Element;
|
|
@@ -5,9 +5,10 @@ import { List, PopoverContent, StyledCheckbox, StyledTooltip, StyledTreeItem, }
|
|
|
5
5
|
import { useLogic } from './useLogic';
|
|
6
6
|
export const TreeItem = (props) => {
|
|
7
7
|
const { isSelected, isDefaultExpanded, disabledReason, isDisabled, nextLevel, formControlLabelProps, tooltipProps, confirmChildrenButtonProps, handleChange, } = useLogic(props);
|
|
8
|
-
const {
|
|
8
|
+
const { item, prefixId, level, renderItem, value, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, onChange, isObjectMode, } = props;
|
|
9
|
+
const { id, label, note, children = [], options } = item;
|
|
9
10
|
if (children.length) {
|
|
10
|
-
return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDefaultExpanded: isDefaultExpanded, isForceExpanded: options?.isForceExpanded, disabledReason: disabledReason, isDisabled: isDisabled, note: renderItem ? null : note, isNotBlockingExpandList: true, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledTooltip, { arrow: false, placement: "right", leaveDelay: 250, title: _jsx(PopoverContent, { children: _jsx(Button, { variant: "light", ...confirmChildrenButtonProps, children: !isSelected ? 'Исключить дочерние' : 'Выбрать дочерние' }) }), ...tooltipProps, children: _jsx(StyledCheckbox, { checked: isSelected }) }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange, children: _jsx(List, { children: children.map((child) => (_jsx(TreeItem, { prefixId: prefixId,
|
|
11
|
+
return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDefaultExpanded: isDefaultExpanded, isForceExpanded: options?.isForceExpanded, disabledReason: disabledReason, isDisabled: isDisabled, note: renderItem ? null : note, isNotBlockingExpandList: true, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledTooltip, { arrow: false, placement: "right", leaveDelay: 250, title: _jsx(PopoverContent, { children: _jsx(Button, { variant: "light", ...confirmChildrenButtonProps, children: !isSelected ? 'Исключить дочерние' : 'Выбрать дочерние' }) }), ...tooltipProps, children: _jsx(StyledCheckbox, { checked: isSelected }) }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange, children: _jsx(List, { children: children.map((child) => (_jsx(TreeItem, { isObjectMode: isObjectMode, prefixId: prefixId, item: child, renderItem: renderItem, level: nextLevel, isConfirmChildrenSelection: isConfirmChildrenSelection, isInitialExpanded: isInitialExpanded, expandedLevel: expandedLevel, chainsToSelectedItem: chainsToSelectedItem, disabledItems: disabledItems, value: value, onChange: onChange }, child.id))) }) }));
|
|
11
12
|
}
|
|
12
13
|
return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDisabled: isDisabled, disabledReason: disabledReason, note: renderItem ? null : note, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledCheckbox, { checked: isSelected }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange }));
|
|
13
14
|
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { FunctionComponent } from 'react';
|
|
2
|
+
import type { TreeListData } from '../../Tree';
|
|
3
|
+
import type { MultipleValue } from '../types';
|
|
4
|
+
type FormatDisableItem = {
|
|
5
|
+
id: string;
|
|
6
|
+
disabledReason?: string;
|
|
7
|
+
};
|
|
8
|
+
export type TreeItemProps<TValue extends MultipleValue = string[]> = {
|
|
9
|
+
item: TreeListData;
|
|
10
|
+
/**
|
|
11
|
+
* Выбранные значения
|
|
12
|
+
*/
|
|
13
|
+
value?: TValue;
|
|
14
|
+
/**
|
|
15
|
+
* Уникальный префикс для идентификаторов в рамках дерева
|
|
16
|
+
*/
|
|
17
|
+
prefixId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Render-props, позволяет более гибко настраивать содержимое item
|
|
20
|
+
*/
|
|
21
|
+
renderItem?: FunctionComponent<Omit<TreeListData, 'children'>>;
|
|
22
|
+
/**
|
|
23
|
+
* Уровень вложенности в дереве
|
|
24
|
+
*/
|
|
25
|
+
level: number;
|
|
26
|
+
/**
|
|
27
|
+
* Если true, при выборе родителя будет возможность выбора дочерних элементов
|
|
28
|
+
*/
|
|
29
|
+
isConfirmChildrenSelection?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Если true, то дерево будет раскрыто по умолчанию
|
|
32
|
+
* @default false
|
|
33
|
+
*/
|
|
34
|
+
isInitialExpanded?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Уровень раскрытия дерева по умолчанию, при isExpanded=true
|
|
37
|
+
*/
|
|
38
|
+
expandedLevel: number;
|
|
39
|
+
/**
|
|
40
|
+
* Цепочки идентификаторов до выбранных элементов дерева
|
|
41
|
+
*/
|
|
42
|
+
chainsToSelectedItem?: string[][];
|
|
43
|
+
/**
|
|
44
|
+
* Список `value` элементов дерева, которые не доступны для взаимодействия
|
|
45
|
+
*/
|
|
46
|
+
disabledItems?: FormatDisableItem[];
|
|
47
|
+
/**
|
|
48
|
+
* Функция, которая запускается при выборе item
|
|
49
|
+
*/
|
|
50
|
+
onChange: (value: TValue) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Переключает компонент в режим работы с объектами а не с id элементов
|
|
53
|
+
*/
|
|
54
|
+
isObjectMode?: boolean;
|
|
55
|
+
};
|
|
56
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type SyntheticEvent } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
type
|
|
4
|
-
|
|
2
|
+
import type { MultipleValue } from '../../types';
|
|
3
|
+
import type { TreeItemProps } from '../types';
|
|
4
|
+
type UseLogicProps<TValue extends MultipleValue = string[]> = TreeItemProps<TValue>;
|
|
5
|
+
export declare const useLogic: <TValue extends MultipleValue = string[]>({ item, value, level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, onChange, isObjectMode, }: UseLogicProps<TValue>) => {
|
|
5
6
|
isSelected: boolean;
|
|
6
7
|
isDefaultExpanded: boolean | undefined;
|
|
7
8
|
isDisabled: boolean;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useToggle } from '../../../hooks';
|
|
3
|
-
import { checkIsSelected, getAllChildrenId } from './utils';
|
|
4
|
-
export const useLogic = ({
|
|
3
|
+
import { addItem, addItemsByIds, checkIsSelected, getAllChildrenId, getCurrentValueIds, removeItem, removeItemsByIds, } from './utils';
|
|
4
|
+
export const useLogic = ({ item, value = [], level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem = [], disabledItems, onChange, isObjectMode, }) => {
|
|
5
|
+
const { id, children } = item;
|
|
5
6
|
const [isTooltipOpen, openTooltip, closeTooltip] = useToggle();
|
|
6
7
|
const childrenIds = useMemo(() => getAllChildrenId(children, disabledItems), [children, disabledItems]);
|
|
7
8
|
const isSelected = checkIsSelected(value, id);
|
|
8
|
-
const flatChainsToSelectedItem = useMemo(() => chainsToSelectedItem?.reduce((acc, chain) =>
|
|
9
|
+
const flatChainsToSelectedItem = useMemo(() => chainsToSelectedItem?.reduce((acc, chain) => acc.concat(chain), []), [chainsToSelectedItem]);
|
|
9
10
|
const isDefaultExpanded = flatChainsToSelectedItem?.includes(id) ||
|
|
10
11
|
(isInitialExpanded && level <= expandedLevel - 1);
|
|
11
|
-
const disabledItem = disabledItems?.find((
|
|
12
|
+
const disabledItem = disabledItems?.find((formatDisableItem) => formatDisableItem.id === id);
|
|
12
13
|
const isDisabled = Boolean(disabledItem);
|
|
13
14
|
const disabledReason = disabledItem?.disabledReason;
|
|
14
15
|
const nextLevel = level + 1;
|
|
@@ -16,29 +17,37 @@ export const useLogic = ({ id, value = [], children, level, isConfirmChildrenSel
|
|
|
16
17
|
if (isDisabled) {
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
20
|
+
const currentValueIds = getCurrentValueIds(value);
|
|
19
21
|
// Сбрасываем значение
|
|
20
|
-
if (
|
|
21
|
-
const hasSelectedChildren =
|
|
22
|
-
// Если нет включенных дочерних элементов, то не предлагаем их выключить
|
|
22
|
+
if (currentValueIds.includes(id)) {
|
|
23
|
+
const hasSelectedChildren = childrenIds.some((childrenId) => currentValueIds.includes(childrenId));
|
|
23
24
|
if (isConfirmChildrenSelection && hasSelectedChildren) {
|
|
24
25
|
openTooltip();
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
const newValue = removeItem(value, id);
|
|
28
|
+
return onChange(newValue);
|
|
27
29
|
}
|
|
28
30
|
// Добавляем новый элемент
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const newValue = addItem(value, item, isObjectMode);
|
|
32
|
+
onChange(newValue);
|
|
33
|
+
const isAllChildrenSelected = childrenIds.every((childrenId) => currentValueIds.includes(childrenId));
|
|
32
34
|
if (isConfirmChildrenSelection && !isAllChildrenSelected) {
|
|
33
35
|
openTooltip();
|
|
34
36
|
}
|
|
35
37
|
};
|
|
36
38
|
const handleConfirmChildrenSelection = () => {
|
|
39
|
+
const currentValueIds = getCurrentValueIds(value);
|
|
37
40
|
if (isSelected) {
|
|
38
|
-
|
|
41
|
+
// Элемент выбран - выбираем все дочерние элементы
|
|
42
|
+
const idsToAdd = childrenIds.filter((childrenId) => !currentValueIds.includes(childrenId));
|
|
43
|
+
const newValue = addItemsByIds(value, idsToAdd, children, isObjectMode);
|
|
44
|
+
onChange(newValue);
|
|
39
45
|
}
|
|
40
46
|
else {
|
|
41
|
-
|
|
47
|
+
// Элемент не выбран - исключаем все дочерние элементы
|
|
48
|
+
const idsToRemove = childrenIds.filter((childrenId) => currentValueIds.includes(childrenId));
|
|
49
|
+
const newValue = removeItemsByIds(value, idsToRemove);
|
|
50
|
+
onChange(newValue);
|
|
42
51
|
}
|
|
43
52
|
closeTooltip();
|
|
44
53
|
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TreeListData } from '../../../../../Tree';
|
|
2
|
+
import type { MultipleValue } from '../../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Добавляет элемент в value
|
|
5
|
+
*/
|
|
6
|
+
export declare const addItem: <TValue extends MultipleValue = string[]>(value: TValue, item: TreeListData, isObjectMode?: boolean) => TValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addItem } from './addItem';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addItem } from './addItem';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TreeListData } from '../../../../../Tree';
|
|
2
|
+
import type { MultipleValue } from '../../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* Добавляет элементы в value по массиву id
|
|
5
|
+
*/
|
|
6
|
+
export declare const addItemsByIds: <TValue extends MultipleValue = string[]>(value: TValue, idsToAdd: string[], children: TreeListData[] | undefined, isObjectMode?: boolean) => TValue;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { findObjectsByIds } from '../findObjectsByIds';
|
|
2
|
+
/**
|
|
3
|
+
* Добавляет элементы в value по массиву id
|
|
4
|
+
*/
|
|
5
|
+
export const addItemsByIds = (value, idsToAdd, children, isObjectMode) => {
|
|
6
|
+
if (idsToAdd.length === 0) {
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
const currentValue = value || [];
|
|
10
|
+
if (isObjectMode) {
|
|
11
|
+
const objectsToAdd = findObjectsByIds(children || [], idsToAdd);
|
|
12
|
+
return [...currentValue, ...objectsToAdd];
|
|
13
|
+
}
|
|
14
|
+
return [...currentValue, ...idsToAdd];
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addItemsByIds } from './addItemsByIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { addItemsByIds } from './addItemsByIds';
|
package/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { MultipleValue } from '../../../../types';
|
|
2
|
+
export declare const checkIsSelected: <TValue extends MultipleValue = string[]>(value: TValue, optionId: string) => boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { getIdFromValue } from '../getIdFromValue';
|
|
1
2
|
export const checkIsSelected = (value, optionId) => {
|
|
2
3
|
if (!value || !value.length) {
|
|
3
4
|
return false;
|
|
4
5
|
}
|
|
5
|
-
return value.
|
|
6
|
+
return value.some((item) => getIdFromValue(item) === optionId);
|
|
6
7
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Находит объекты TreeListData в дереве по массиву ID
|
|
3
|
+
*/
|
|
4
|
+
export const findObjectsByIds = (nodes, ids) => {
|
|
5
|
+
if (!ids.length) {
|
|
6
|
+
return [];
|
|
7
|
+
}
|
|
8
|
+
// Создаем Map для быстрого поиска объектов по ID
|
|
9
|
+
const idToObjectMap = new Map();
|
|
10
|
+
const traverse = (items) => {
|
|
11
|
+
for (const item of items) {
|
|
12
|
+
idToObjectMap.set(item.id, item);
|
|
13
|
+
if (item.children) {
|
|
14
|
+
traverse(item.children);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
traverse(nodes);
|
|
19
|
+
return ids
|
|
20
|
+
.map((id) => idToObjectMap.get(id))
|
|
21
|
+
.filter((obj) => obj !== undefined);
|
|
22
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { findObjectsByIds } from './findObjectsByIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { findObjectsByIds } from './findObjectsByIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCurrentValueIds } from './getCurrentValueIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getCurrentValueIds } from './getCurrentValueIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getIdFromValue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getIdFromValue';
|
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
export { checkIsSelected } from './checkIsSelected';
|
|
2
2
|
export { getAllChildrenId } from './getAllChildrenId';
|
|
3
|
+
export { getIdFromValue } from './getIdFromValue';
|
|
4
|
+
export { findObjectsByIds } from './findObjectsByIds';
|
|
5
|
+
export { getCurrentValueIds } from './getCurrentValueIds';
|
|
6
|
+
export { removeItemsByIds } from './removeItemsByIds';
|
|
7
|
+
export { addItemsByIds } from './addItemsByIds';
|
|
8
|
+
export { removeItem } from './removeItem';
|
|
9
|
+
export { addItem } from './addItem';
|
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
export { checkIsSelected } from './checkIsSelected';
|
|
2
2
|
export { getAllChildrenId } from './getAllChildrenId';
|
|
3
|
+
export { getIdFromValue } from './getIdFromValue';
|
|
4
|
+
export { findObjectsByIds } from './findObjectsByIds';
|
|
5
|
+
export { getCurrentValueIds } from './getCurrentValueIds';
|
|
6
|
+
export { removeItemsByIds } from './removeItemsByIds';
|
|
7
|
+
export { addItemsByIds } from './addItemsByIds';
|
|
8
|
+
export { removeItem } from './removeItem';
|
|
9
|
+
export { addItem } from './addItem';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { removeItem } from './removeItem';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { removeItem } from './removeItem';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getIdFromValue } from '../getIdFromValue';
|
|
2
|
+
/**
|
|
3
|
+
* Удаляет элемент из value по id
|
|
4
|
+
*/
|
|
5
|
+
export const removeItem = (value, idToRemove) => {
|
|
6
|
+
if (!value) {
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
return value.filter((treeItem) => getIdFromValue(treeItem) !== idToRemove);
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { removeItemsByIds } from './removeItemsByIds';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { removeItemsByIds } from './removeItemsByIds';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { getIdFromValue } from '../getIdFromValue';
|
|
2
|
+
/**
|
|
3
|
+
* Удаляет элементы из value по массиву id
|
|
4
|
+
*/
|
|
5
|
+
export const removeItemsByIds = (value, idsToRemove) => {
|
|
6
|
+
if (!value || idsToRemove.length === 0) {
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
const idsSet = new Set(idsToRemove);
|
|
10
|
+
return value.filter((treeItem) => !idsSet.has(getIdFromValue(treeItem)));
|
|
11
|
+
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
export declare const TreeLikeList: (props: TreeLikeListProps) => JSX.Element;
|
|
2
|
+
import type { MultipleValue, TreeLikeListProps } from './types';
|
|
3
|
+
export declare const TreeLikeList: <TValue extends MultipleValue = string[]>(props: TreeLikeListProps<TValue>) => JSX.Element;
|
|
@@ -6,5 +6,5 @@ const INITIAL_LEVEL = 0;
|
|
|
6
6
|
export const TreeLikeList = (props) => {
|
|
7
7
|
const { listProps, itemProps } = useLogic(props);
|
|
8
8
|
const { data, className, expandedLevel = 10, disabledItems, ...restProps } = props;
|
|
9
|
-
return (_jsx(List, { className: className, ...listProps, children: data.map((item) => (_jsx(TreeItem, {
|
|
9
|
+
return (_jsx(List, { className: className, ...listProps, children: data.map((item) => (_jsx(TreeItem, { item: item, level: INITIAL_LEVEL, expandedLevel: expandedLevel, ...itemProps, ...restProps }, item.id))) }));
|
|
10
10
|
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { type FunctionComponent } from 'react';
|
|
2
2
|
import type { TreeListData } from '../Tree';
|
|
3
|
-
export type MultipleValue = string[] | undefined;
|
|
3
|
+
export type MultipleValue = TreeListData[] | string[] | undefined;
|
|
4
4
|
export type DisabledItemValue = string | {
|
|
5
5
|
id: string;
|
|
6
6
|
disabledReason?: string;
|
|
7
7
|
};
|
|
8
|
-
export type TreeLikeListProps = {
|
|
8
|
+
export type TreeLikeListProps<TValue extends MultipleValue = string[]> = {
|
|
9
9
|
/**
|
|
10
10
|
* Выбранные значения
|
|
11
11
|
*/
|
|
12
|
-
value?:
|
|
12
|
+
value?: TValue;
|
|
13
13
|
/**
|
|
14
14
|
* Данные, которые необходимо отобразить в виде дерева.
|
|
15
15
|
*/
|
|
@@ -43,5 +43,9 @@ export type TreeLikeListProps = {
|
|
|
43
43
|
/**
|
|
44
44
|
* Функция, которая запускается при изменении состояния.
|
|
45
45
|
*/
|
|
46
|
-
onChange: (value:
|
|
46
|
+
onChange: (value: TValue) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Переключает компонент в режим работы с объектами а не с id элементов
|
|
49
|
+
*/
|
|
50
|
+
isObjectMode?: boolean;
|
|
47
51
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
3
|
-
type UseLogicParams = TreeLikeListProps
|
|
4
|
-
export declare const useLogic: ({ data, value, disabledItems }: UseLogicParams) => {
|
|
2
|
+
import type { MultipleValue, TreeLikeListProps } from '../types';
|
|
3
|
+
type UseLogicParams<TValue extends MultipleValue = string[]> = TreeLikeListProps<TValue>;
|
|
4
|
+
export declare const useLogic: <TValue extends MultipleValue = string[]>({ data, value, disabledItems, }: UseLogicParams<TValue>) => {
|
|
5
5
|
listProps: {
|
|
6
6
|
ref: import("react").RefObject<HTMLUListElement>;
|
|
7
7
|
};
|