@jobber/components 4.92.0 → 5.0.1
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/dist/AnimatedPresence/{index.js → index.cjs} +1 -3
- package/dist/AnimatedPresence/index.mjs +4 -0
- package/dist/AnimatedPresence-C5We_sJS.js +98 -0
- package/dist/{AnimatedPresence-20a02aaa.js → AnimatedPresence-DlGX4YeU.js} +3 -7
- package/dist/AnimatedSwitcher/index.cjs +11 -0
- package/dist/AnimatedSwitcher/index.mjs +5 -0
- package/dist/{AnimatedSwitcher-3d45ec5d.js → AnimatedSwitcher-C5f61KU3.js} +4 -8
- package/dist/AnimatedSwitcher-CblJS560.js +90 -0
- package/dist/AtlantisContext/{index.js → index.cjs} +1 -3
- package/dist/AtlantisContext/index.mjs +2 -0
- package/dist/AtlantisContext-Dn6_XQmD.js +18 -0
- package/dist/Autocomplete/index.cjs +33 -0
- package/dist/Autocomplete/index.mjs +27 -0
- package/dist/Autocomplete-ByQH-FFs.js +190 -0
- package/dist/Autocomplete-Y7lm2-sL.js +192 -0
- package/dist/Avatar/index.cjs +12 -0
- package/dist/Avatar/index.mjs +6 -0
- package/dist/Avatar-BodBt4pN.js +69 -0
- package/dist/Avatar-SP_BUJLU.js +67 -0
- package/dist/Banner/components/BannerIcon/index.cjs +13 -0
- package/dist/Banner/components/BannerIcon/index.mjs +7 -0
- package/dist/Banner/index.cjs +23 -0
- package/dist/Banner/index.mjs +17 -0
- package/dist/Banner-CZv2-je-.js +81 -0
- package/dist/Banner-CuAIgZeC.js +79 -0
- package/dist/BannerIcon-ConQTE2v.js +19 -0
- package/dist/BannerIcon-D1nansKP.js +22 -0
- package/dist/Body-CWin6-n3.js +54 -0
- package/dist/Body-CZKOa_9x.js +45 -0
- package/dist/Button/index.cjs +13 -0
- package/dist/Button/index.mjs +7 -0
- package/dist/Button-DK1Px9LS.js +47 -0
- package/dist/Button-noDSqvxX.js +49 -0
- package/dist/ButtonDismiss/index.cjs +14 -0
- package/dist/ButtonDismiss/index.mjs +8 -0
- package/dist/ButtonDismiss-BNe3USW4.js +8 -0
- package/dist/ButtonDismiss-CnCeo4wT.js +10 -0
- package/dist/Card/index.cjs +21 -0
- package/dist/Card/index.mjs +15 -0
- package/dist/Card-QFMBJI3D.js +83 -0
- package/dist/Card-q2yw0ZPa.js +81 -0
- package/dist/Checkbox/index.cjs +15 -0
- package/dist/Checkbox/index.mjs +9 -0
- package/dist/Checkbox-BcFHMjuY.js +53 -0
- package/dist/Checkbox-BshHYo-R.js +55 -0
- package/dist/Chip/hooks/index.cjs +8 -0
- package/dist/Chip/hooks/index.mjs +2 -0
- package/dist/Chip/index.cjs +26 -0
- package/dist/Chip/index.mjs +18 -0
- package/dist/Chip-DkIyAIrp.js +70 -0
- package/dist/Chip-lakFvkPp.js +67 -0
- package/dist/ChipDismissible-DcdB7k4V.js +22 -0
- package/dist/ChipDismissible-W7LaZqau.js +19 -0
- package/dist/Chips/InternalChipDismissible/hooks/index.cjs +23 -0
- package/dist/Chips/InternalChipDismissible/hooks/index.mjs +13 -0
- package/dist/Chips/InternalChipDismissible/index.cjs +35 -0
- package/dist/Chips/InternalChipDismissible/index.mjs +29 -0
- package/dist/Chips/index.cjs +48 -0
- package/dist/Chips/index.mjs +44 -0
- package/dist/Chips-BWloFj-G.js +91 -0
- package/dist/Chips-CmZ2cDpW.js +93 -0
- package/dist/Combobox/components/ComboboxAction/index.cjs +12 -0
- package/dist/Combobox/components/ComboboxAction/index.mjs +6 -0
- package/dist/Combobox/components/ComboboxActivator/index.cjs +27 -0
- package/dist/Combobox/components/ComboboxActivator/index.mjs +21 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/index.cjs +14 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentHeader/index.mjs +8 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentList/index.cjs +24 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentList/index.mjs +18 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.cjs +10 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxContentSearch/index.mjs +4 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.cjs +9 -0
- package/dist/Combobox/components/ComboboxContent/ComboboxLoadMore/index.mjs +3 -0
- package/dist/Combobox/components/ComboboxContent/index.cjs +34 -0
- package/dist/Combobox/components/ComboboxContent/index.mjs +28 -0
- package/dist/Combobox/components/ComboboxOption/index.cjs +14 -0
- package/dist/Combobox/components/ComboboxOption/index.mjs +8 -0
- package/dist/Combobox/components/ComboboxTrigger/index.cjs +25 -0
- package/dist/Combobox/components/ComboboxTrigger/index.mjs +19 -0
- package/dist/Combobox/index.cjs +53 -0
- package/dist/Combobox/index.mjs +46 -0
- package/dist/Combobox-DYuCZJK1.js +117 -0
- package/dist/Combobox-DZHF_g4U.js +119 -0
- package/dist/ComboboxAction-BTv1z8lN.js +24 -0
- package/dist/ComboboxAction-CyGny2jL.js +22 -0
- package/dist/ComboboxActivator-CqxbvPUx.js +26 -0
- package/dist/ComboboxActivator-DOkCbaXq.js +28 -0
- package/dist/ComboboxContent-CE_sVLBm.js +143 -0
- package/dist/ComboboxContent-Dfy8wC2s.js +145 -0
- package/dist/ComboboxContentHeader-CwjRcAK7.js +29 -0
- package/dist/ComboboxContentHeader-DCORmU4Q.js +27 -0
- package/dist/ComboboxContentList-BIhd1rVk.js +77 -0
- package/dist/ComboboxContentList-CuPmGVX3.js +75 -0
- package/dist/ComboboxContentSearch-C7-EAy_E.js +34 -0
- package/dist/ComboboxContentSearch-DKfP1oP5.js +32 -0
- package/dist/ComboboxLoadMore-AwHTapyI.js +16 -0
- package/dist/ComboboxLoadMore-CZApONuU.js +14 -0
- package/dist/ComboboxOption-Bh-oQgEr.js +20 -0
- package/dist/ComboboxOption-DSBi-uyc.js +22 -0
- package/dist/ComboboxProvider-CQ3ZXsZa.js +13 -0
- package/dist/ComboboxProvider-cguiY4og.js +10 -0
- package/dist/ComboboxTrigger-DhsYtnvQ.js +24 -0
- package/dist/ComboboxTrigger-mSe96JA7.js +22 -0
- package/dist/ConfirmationModal/index.cjs +31 -0
- package/dist/ConfirmationModal/index.mjs +25 -0
- package/dist/{ConfirmationModal-c0b5e893.js → ConfirmationModal-Du1pTmhg.js} +8 -12
- package/dist/ConfirmationModal-UNolD6Md.js +94 -0
- package/dist/Content/index.cjs +9 -0
- package/dist/Content/index.mjs +3 -0
- package/dist/Content-Cr-SNhIb.js +15 -0
- package/dist/Content-q0mmpOCB.js +13 -0
- package/dist/Countdown/index.cjs +11 -0
- package/dist/Countdown/index.mjs +5 -0
- package/dist/Countdown-Bk4VdUU2.js +657 -0
- package/dist/Countdown-FyBxWGlM.js +659 -0
- package/dist/DataDump/index.cjs +24 -0
- package/dist/DataDump/index.mjs +18 -0
- package/dist/DataDump-DLNUBwSq.js +17 -0
- package/dist/DataDump-DYF_Sjgo.js +15 -0
- package/dist/DataList/components/DataListAction/index.cjs +13 -0
- package/dist/DataList/components/DataListAction/index.mjs +7 -0
- package/dist/DataList/components/DataListActions/index.cjs +43 -0
- package/dist/DataList/components/DataListActions/index.mjs +37 -0
- package/dist/DataList/components/DataListActionsMenu/index.cjs +17 -0
- package/dist/DataList/components/DataListActionsMenu/index.mjs +11 -0
- package/dist/DataList/components/DataListBulkActions/index.cjs +46 -0
- package/dist/DataList/components/DataListBulkActions/index.mjs +39 -0
- package/dist/DataList/components/DataListEmptyState/index.cjs +20 -0
- package/dist/DataList/components/DataListEmptyState/index.mjs +13 -0
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +54 -0
- package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +48 -0
- package/dist/DataList/components/DataListFilters/index.cjs +68 -0
- package/dist/DataList/components/DataListFilters/index.mjs +61 -0
- package/dist/DataList/components/DataListHeader/index.cjs +53 -0
- package/dist/DataList/components/DataListHeader/index.mjs +47 -0
- package/dist/DataList/components/DataListHeaderTile/components/index.cjs +12 -0
- package/dist/DataList/components/DataListHeaderTile/components/index.mjs +6 -0
- package/dist/DataList/components/DataListHeaderTile/index.cjs +20 -0
- package/dist/DataList/components/DataListHeaderTile/index.mjs +14 -0
- package/dist/DataList/components/DataListItem/components/DataListItemClickable/index.cjs +14 -0
- package/dist/DataList/components/DataListItem/components/DataListItemClickable/index.mjs +8 -0
- package/dist/DataList/components/DataListItem/index.cjs +52 -0
- package/dist/DataList/components/DataListItem/index.mjs +46 -0
- package/dist/DataList/components/DataListItemActions/index.cjs +45 -0
- package/dist/DataList/components/DataListItemActions/index.mjs +38 -0
- package/dist/DataList/components/DataListItemActionsOverflow/index.cjs +25 -0
- package/dist/DataList/components/DataListItemActionsOverflow/index.mjs +19 -0
- package/dist/DataList/components/DataListItems/index.cjs +53 -0
- package/dist/DataList/components/DataListItems/index.mjs +47 -0
- package/dist/DataList/components/DataListLayout/index.cjs +56 -0
- package/dist/DataList/components/DataListLayout/index.mjs +50 -0
- package/dist/DataList/components/DataListLayoutActions/DataListLayoutContext/index.cjs +9 -0
- package/dist/DataList/components/DataListLayoutActions/DataListLayoutContext/index.mjs +2 -0
- package/dist/DataList/components/DataListLayoutActions/index.cjs +33 -0
- package/dist/DataList/components/DataListLayoutActions/index.mjs +27 -0
- package/dist/DataList/components/DataListLoadMore/index.cjs +21 -0
- package/dist/DataList/components/DataListLoadMore/index.mjs +14 -0
- package/dist/DataList/components/DataListLoadingState/index.cjs +21 -0
- package/dist/DataList/components/DataListLoadingState/index.mjs +13 -0
- package/dist/DataList/components/DataListOverflowFade/index.cjs +11 -0
- package/dist/DataList/components/DataListOverflowFade/index.mjs +4 -0
- package/dist/DataList/components/DataListSearch/index.cjs +33 -0
- package/dist/DataList/components/DataListSearch/index.mjs +25 -0
- package/dist/DataList/components/DataListStatusBar/index.cjs +32 -0
- package/dist/DataList/components/DataListStatusBar/index.mjs +25 -0
- package/dist/DataList/components/DataListStickyHeader/index.cjs +11 -0
- package/dist/DataList/components/DataListStickyHeader/index.mjs +5 -0
- package/dist/DataList/components/DataListTags/index.cjs +12 -0
- package/dist/DataList/components/DataListTags/index.mjs +6 -0
- package/dist/DataList/components/DataListTotalCount/index.cjs +15 -0
- package/dist/DataList/components/DataListTotalCount/index.mjs +8 -0
- package/dist/DataList/context/DataListContext/index.cjs +12 -0
- package/dist/DataList/context/DataListContext/index.mjs +4 -0
- package/dist/DataList/context/DataListLayoutContext/index.cjs +12 -0
- package/dist/DataList/context/DataListLayoutContext/index.mjs +4 -0
- package/dist/DataList/index.cjs +98 -0
- package/dist/DataList/index.mjs +92 -0
- package/dist/DataList-Bmcmjt1A.js +5 -0
- package/dist/DataList-Cc_fUM76.js +3 -0
- package/dist/DataList-Crm9MwPN.js +141 -0
- package/dist/DataList-r1qIS1QT.js +139 -0
- package/dist/DataList.const-CxX7Gjfz.js +38 -0
- package/dist/DataList.const-DZaKGZRx.js +25 -0
- package/dist/DataList.utils-9ehaD0Qv.js +161 -0
- package/dist/DataList.utils-CMa3suIh.js +168 -0
- package/dist/DataListAction-CRAdSlkF.js +37 -0
- package/dist/DataListAction-dDBGML5C.js +39 -0
- package/dist/DataListActions-C6kLL6bk.js +43 -0
- package/dist/DataListActions-CIGEBlZS.js +45 -0
- package/dist/DataListActionsMenu-CcPO6xu6.js +57 -0
- package/dist/DataListActionsMenu-DUzcRsjU.js +55 -0
- package/dist/DataListBulkActions-BSzm2WNu.js +26 -0
- package/dist/DataListBulkActions-CD9jB0pD.js +29 -0
- package/dist/DataListContext-CjeCQOQO.js +29 -0
- package/dist/DataListContext-tYtmL4Rx.js +25 -0
- package/dist/DataListEmptyState-65ibxPBY.js +50 -0
- package/dist/DataListEmptyState-DK-7wiyT.js +53 -0
- package/dist/DataListFilters-CZ5qHZbs.js +43 -0
- package/dist/DataListFilters-DFqOeGe-.js +46 -0
- package/dist/DataListHeader-CAy8j3WL.js +93 -0
- package/dist/DataListHeader-D-wLVtiQ.js +95 -0
- package/dist/DataListHeaderTile-BsycPdAH.js +79 -0
- package/dist/DataListHeaderTile-DFn6xA5F.js +81 -0
- package/dist/DataListItem-BO1Wlpy7.js +112 -0
- package/dist/DataListItem-TBu2bxGW.js +114 -0
- package/dist/DataListItemActions-Buc_xbbO.js +29 -0
- package/dist/DataListItemActions-DsRsqiO9.js +32 -0
- package/dist/DataListItemActionsOverflow-By43h0ZT.js +33 -0
- package/dist/DataListItemActionsOverflow-Ca2DLUFZ.js +35 -0
- package/dist/DataListItemClickable-B95HdOlE.js +47 -0
- package/dist/DataListItemClickable-CbpEzDTq.js +45 -0
- package/dist/DataListItems-CIXSAWsL.js +19 -0
- package/dist/DataListItems-TG0MTglA.js +21 -0
- package/dist/DataListLayout-BxxFdI1-.js +19 -0
- package/dist/DataListLayout-DxXrlv-e.js +21 -0
- package/dist/DataListLayoutActions-DhOF6v-Q.js +38 -0
- package/dist/DataListLayoutActions-kAE1lLJ4.js +36 -0
- package/dist/DataListLayoutContext-BSOwbjMF.js +8 -0
- package/dist/DataListLayoutContext-Bduu7kVW.js +18 -0
- package/dist/DataListLayoutContext-CRwE525R.js +11 -0
- package/dist/DataListLayoutContext-DDloSo3U.js +14 -0
- package/dist/DataListLoadMore-B16qzdrh.js +34 -0
- package/dist/DataListLoadMore-DYdFexgL.js +31 -0
- package/dist/DataListLoadingState-BqYDCOzq.js +26 -0
- package/dist/DataListLoadingState-CmFAHLs7.js +22 -0
- package/dist/DataListOverflowFade-DMC17Az8.js +25 -0
- package/dist/DataListOverflowFade-n0EBeGj9.js +22 -0
- package/dist/DataListSearch-B-toEA5Q.js +63 -0
- package/dist/DataListSearch-C5rRCyba.js +59 -0
- package/dist/DataListSort-D-WfgWZm.js +92 -0
- package/dist/DataListSort-DPworNPJ.js +94 -0
- package/dist/DataListSortingOptions-4H3EJUmw.js +37 -0
- package/dist/DataListSortingOptions-CozrvIh9.js +35 -0
- package/dist/DataListStatusBar-Bp7Ea5Hf.js +22 -0
- package/dist/DataListStatusBar-DldWmzsp.js +25 -0
- package/dist/DataListStickyHeader-CqUyQpRA.js +25 -0
- package/dist/DataListStickyHeader-g6MyqaNi.js +23 -0
- package/dist/DataListTags-CIYmBPAs.js +64 -0
- package/dist/DataListTags-CyvhOmuF.js +62 -0
- package/dist/DataListTotalCount-CL7h6wRA.js +24 -0
- package/dist/DataListTotalCount-Dfl8vCeh.js +27 -0
- package/dist/DataTable/index.cjs +36 -0
- package/dist/DataTable/index.mjs +25 -0
- package/dist/DataTable/test-utilities/index.cjs +246 -0
- package/dist/DataTable/test-utilities/index.mjs +238 -0
- package/dist/DataTable-BYVsSEdr.js +238 -0
- package/dist/DataTable-BqEYgTts.js +236 -0
- package/dist/DatePicker/index.cjs +26 -0
- package/dist/DatePicker/index.mjs +20 -0
- package/dist/DatePicker-CVwO_Www.js +8551 -0
- package/dist/DatePicker-DxjYIrKO.js +8554 -0
- package/dist/DayOfMonthSelect-CLQjBaGB.js +137 -0
- package/dist/DayOfMonthSelect-DL4PKvDu.js +130 -0
- package/dist/DescriptionList/index.cjs +10 -0
- package/dist/DescriptionList/index.mjs +4 -0
- package/dist/DescriptionList-BpLGTlUb.js +12 -0
- package/dist/DescriptionList-pM-3_7H4.js +14 -0
- package/dist/Disclosure/index.cjs +17 -0
- package/dist/Disclosure/index.mjs +11 -0
- package/dist/Disclosure-CV9NdfNK.js +35 -0
- package/dist/Disclosure-uZFEdLqn.js +33 -0
- package/dist/Divider/index.cjs +9 -0
- package/dist/Divider/index.mjs +3 -0
- package/dist/Divider-B9NtZEy_.js +17 -0
- package/dist/Divider-BIw9_09d.js +19 -0
- package/dist/Drawer/index.cjs +19 -0
- package/dist/Drawer/index.mjs +12 -0
- package/dist/DrawerGrid-BbpNJeGU.js +31 -0
- package/dist/DrawerGrid-Bm-Wshn3.js +28 -0
- package/dist/Emphasis/index.cjs +10 -0
- package/dist/Emphasis/index.mjs +4 -0
- package/dist/Emphasis-BSYW8CIV.js +13 -0
- package/dist/Emphasis-BeDR-wzW.js +15 -0
- package/dist/FeatureSwitch/index.cjs +26 -0
- package/dist/FeatureSwitch/index.mjs +20 -0
- package/dist/FeatureSwitch-DNgoHFQE.js +54 -0
- package/dist/FeatureSwitch-hqLVNdlG.js +52 -0
- package/dist/Flex/index.cjs +9 -0
- package/dist/Flex/index.mjs +3 -0
- package/dist/Flex-CHwqd3gT.js +28 -0
- package/dist/Flex-w0DbahOc.js +30 -0
- package/dist/Form/index.cjs +10 -0
- package/dist/Form/index.mjs +4 -0
- package/dist/{Form/index.js → Form-CEolMqRa.js} +3 -9
- package/dist/Form-DSH7BVDr.js +48 -0
- package/dist/FormField/index.cjs +20 -0
- package/dist/FormField/index.mjs +14 -0
- package/dist/FormField-DIzS7UJ8.js +263 -0
- package/dist/FormField-DX3mqc2W.js +261 -0
- package/dist/FormatDate/{index.js → index.cjs} +1 -3
- package/dist/FormatDate/index.mjs +2 -0
- package/dist/FormatDate-4rgQmMHs.js +27 -0
- package/dist/{FormatDate-70ea5b43.js → FormatDate-QBFUXXRW.js} +1 -5
- package/dist/FormatEmail/index.cjs +9 -0
- package/dist/FormatEmail/index.mjs +3 -0
- package/dist/FormatEmail-CvjTY96k.js +13 -0
- package/dist/FormatEmail-VCrir2W4.js +11 -0
- package/dist/FormatFile/index.cjs +36 -0
- package/dist/FormatFile/index.mjs +30 -0
- package/dist/FormatFile-BGuB0e5J.js +147 -0
- package/dist/FormatFile-afrjxCfH.js +149 -0
- package/dist/FormatRelativeDateTime/index.cjs +8 -0
- package/dist/FormatRelativeDateTime/index.mjs +2 -0
- package/dist/FormatRelativeDateTime-D1RKmSMc.js +64 -0
- package/dist/{FormatRelativeDateTime/index.js → FormatRelativeDateTime-JzSmzkW3.js} +5 -11
- package/dist/FormatTime/index.cjs +8 -0
- package/dist/FormatTime/index.mjs +2 -0
- package/dist/FormatTime-5VitExr-.js +29 -0
- package/dist/{FormatTime/index.js → FormatTime-D1e65Ift.js} +1 -7
- package/dist/Gallery/index.cjs +42 -0
- package/dist/Gallery/index.mjs +36 -0
- package/dist/Gallery-DpUj4vBa.js +63 -0
- package/dist/Gallery-unlPd4cP.js +65 -0
- package/dist/Glimmer/index.cjs +12 -0
- package/dist/Glimmer/index.mjs +5 -0
- package/dist/Glimmer-BatRr0re.js +60 -0
- package/dist/Glimmer-CrUBdCft.js +63 -0
- package/dist/Grid/InternalGridCell/index.cjs +9 -0
- package/dist/Grid/InternalGridCell/index.mjs +2 -0
- package/dist/Grid/index.cjs +14 -0
- package/dist/Grid/index.mjs +7 -0
- package/dist/Grid-CljTbDPC.js +32 -0
- package/dist/Grid-ucn4dEzC.js +29 -0
- package/dist/Heading/index.cjs +12 -0
- package/dist/Heading/index.mjs +6 -0
- package/dist/Heading-CHhgHTqK.js +49 -0
- package/dist/{Heading-ffc87a2a.js → Heading-DHr7c1qk.js} +3 -7
- package/dist/Icon/index.cjs +9 -0
- package/dist/Icon/index.mjs +3 -0
- package/dist/Icon-D5fducRW.js +34 -0
- package/dist/Icon-DdoTAkld.js +36 -0
- package/dist/InlineLabel/index.cjs +10 -0
- package/dist/InlineLabel/index.mjs +4 -0
- package/dist/InlineLabel-DDGo2FBU.js +18 -0
- package/dist/InlineLabel-HcSK4D2u.js +20 -0
- package/dist/InputAvatar/index.cjs +26 -0
- package/dist/InputAvatar/index.mjs +20 -0
- package/dist/InputAvatar-BZJTWTav.js +49 -0
- package/dist/InputAvatar-DZhlA5C8.js +47 -0
- package/dist/InputDate/index.cjs +34 -0
- package/dist/InputDate/index.mjs +28 -0
- package/dist/InputDate-CXSx4Tec.js +48 -0
- package/dist/{InputDate/index.js → InputDate-DK9Bodgf.js} +6 -31
- package/dist/InputEmail/index.cjs +22 -0
- package/dist/InputEmail/index.mjs +15 -0
- package/dist/InputEmail-BDVbozLm.js +20 -0
- package/dist/InputEmail-DnQPqYoO.js +23 -0
- package/dist/InputFile/index.cjs +23 -0
- package/dist/InputFile/index.mjs +16 -0
- package/dist/InputFile-D0jfvvEn.js +1611 -0
- package/dist/InputFile-DTm2DXuV.js +1608 -0
- package/dist/InputGroup/index.cjs +9 -0
- package/dist/InputGroup/index.mjs +3 -0
- package/dist/InputGroup-BHN6kYWo.js +23 -0
- package/dist/InputGroup-DF2OD4BE.js +25 -0
- package/dist/InputNumber/index.cjs +21 -0
- package/dist/InputNumber/index.mjs +15 -0
- package/dist/InputNumber-BuiI0NjS.js +56 -0
- package/dist/{InputNumber-f1990039.js → InputNumber-CEAhGzoa.js} +2 -6
- package/dist/InputPassword/index.cjs +21 -0
- package/dist/InputPassword/index.mjs +15 -0
- package/dist/InputPassword-C9zbU7TW.js +21 -0
- package/dist/InputPassword-dIafufTk.js +19 -0
- package/dist/InputPhoneNumber/index.cjs +21 -0
- package/dist/InputPhoneNumber/index.mjs +15 -0
- package/dist/{InputPhoneNumber/index.js → InputPhoneNumber-3yqGEkio.js} +7 -27
- package/dist/InputPhoneNumber-B3IdVoQg.js +94 -0
- package/dist/InputText/index.cjs +22 -0
- package/dist/InputText/index.mjs +16 -0
- package/dist/{InputText-375a415c.js → InputText-BY6rCJ8J.js} +4 -8
- package/dist/InputText-Deake8bP.js +96 -0
- package/dist/InputTime/index.cjs +26 -0
- package/dist/InputTime/index.mjs +20 -0
- package/dist/InputTime-CF1r7VJw.js +190 -0
- package/dist/{InputTime/index.js → InputTime-CfhvxPHN.js} +5 -25
- package/dist/InputValidation/index.cjs +14 -0
- package/dist/InputValidation/index.mjs +8 -0
- package/dist/InputValidation-B2tbREku.js +20 -0
- package/dist/InputValidation-DkQrftLf.js +22 -0
- package/dist/InternalChipDismissible-CtJBHNow.js +152 -0
- package/dist/InternalChipDismissible-LI9YWysI.js +157 -0
- package/dist/InternalGridCell-CqMMVQIF.js +37 -0
- package/dist/InternalGridCell-nfn6StO-.js +34 -0
- package/dist/LightBox/index.cjs +26 -0
- package/dist/LightBox/index.mjs +20 -0
- package/dist/LightBox-Ct7jyQHc.js +110 -0
- package/dist/LightBox-D9UAVmOP.js +112 -0
- package/dist/Link/index.cjs +8 -0
- package/dist/Link/index.mjs +2 -0
- package/dist/Link-BUSnU1D-.js +7 -0
- package/dist/Link-iSQySKDo.js +9 -0
- package/dist/List/index.cjs +29 -0
- package/dist/List/index.mjs +22 -0
- package/dist/List-CFDGz1w9.js +186 -0
- package/dist/List-C_6N-iI6.js +189 -0
- package/dist/Markdown/index.cjs +19 -0
- package/dist/Markdown/index.mjs +13 -0
- package/dist/Markdown-BiEMJ-Na.js +19011 -0
- package/dist/Markdown-C-_FwXXZ.js +19013 -0
- package/dist/Menu/index.cjs +18 -0
- package/dist/Menu/index.mjs +12 -0
- package/dist/Menu-WFTc4vmf.js +131 -0
- package/dist/Menu-mU7mDbWw.js +129 -0
- package/dist/Modal/index.cjs +23 -0
- package/dist/Modal/index.mjs +17 -0
- package/dist/Modal-BjDtJC7X.js +61 -0
- package/dist/Modal-P-qjBWDw.js +63 -0
- package/dist/MultiSelect/index.cjs +16 -0
- package/dist/MultiSelect/index.mjs +10 -0
- package/dist/MultiSelect-AHcP0OGk.js +166 -0
- package/dist/MultiSelect-EqsIh1nF.js +164 -0
- package/dist/Option-BPHbm2fZ.js +12 -0
- package/dist/Option-Dve2T456.js +15 -0
- package/dist/Page/index.cjs +32 -0
- package/dist/Page/index.mjs +26 -0
- package/dist/Page-Clsl9cNc.js +58 -0
- package/dist/Page-h5lQD6Ys.js +56 -0
- package/dist/Popover/index.cjs +17 -0
- package/dist/Popover/index.mjs +11 -0
- package/dist/Popover-DZUsK48w.js +50 -0
- package/dist/Popover-bdvs9eBy.js +48 -0
- package/dist/ProgressBar/index.cjs +9 -0
- package/dist/ProgressBar/index.mjs +3 -0
- package/dist/ProgressBar--3qd3zai.js +33 -0
- package/dist/ProgressBar-BwHqrYga.js +31 -0
- package/dist/RadioGroup/index.cjs +12 -0
- package/dist/RadioGroup/index.mjs +5 -0
- package/dist/RadioGroup-CFsetlJ4.js +36 -0
- package/dist/RadioGroup-CK3D5__U.js +39 -0
- package/dist/RecurringSelect/components/index.cjs +15 -0
- package/dist/RecurringSelect/components/index.mjs +6 -0
- package/dist/RecurringSelect/index.cjs +35 -0
- package/dist/RecurringSelect/index.mjs +21 -0
- package/dist/RecurringSelect-2YCQX2Q6.js +71 -0
- package/dist/RecurringSelect-BU1-6dub.js +69 -0
- package/dist/Select/index.cjs +22 -0
- package/dist/Select/index.mjs +15 -0
- package/dist/Spinner/index.cjs +9 -0
- package/dist/Spinner/index.mjs +3 -0
- package/dist/Spinner-B0UBMlC5.js +14 -0
- package/dist/Spinner-DAhdvWZh.js +16 -0
- package/dist/StatusIndicator/index.cjs +8 -0
- package/dist/StatusIndicator/index.mjs +2 -0
- package/dist/StatusIndicator-BOlX887r.js +11 -0
- package/dist/StatusIndicator-Btzgb5tZ.js +9 -0
- package/dist/StatusLabel/index.cjs +11 -0
- package/dist/StatusLabel/index.mjs +5 -0
- package/dist/StatusLabel-B8SIygUI.js +16 -0
- package/dist/StatusLabel-DRZck9sD.js +18 -0
- package/dist/Switch/index.cjs +10 -0
- package/dist/Switch/index.mjs +4 -0
- package/dist/Switch-CMJP3yJv.js +48 -0
- package/dist/Switch-CahAntVM.js +46 -0
- package/dist/Table/index.cjs +17 -0
- package/dist/Table/index.mjs +4 -0
- package/dist/Tabs/index.cjs +11 -0
- package/dist/Tabs/index.mjs +4 -0
- package/dist/Tabs-Bqo51NBU.js +67 -0
- package/dist/Tabs-CoZXSL00.js +70 -0
- package/dist/Text/index.cjs +10 -0
- package/dist/Text/index.mjs +4 -0
- package/dist/Text-B1bIoWYr.js +25 -0
- package/dist/{Text-94b5c2e5.js → Text-B2v3VC_B.js} +2 -6
- package/dist/Toast/index.cjs +16 -0
- package/dist/Toast/index.mjs +10 -0
- package/dist/Tooltip/index.cjs +14 -0
- package/dist/Tooltip/index.mjs +8 -0
- package/dist/Tooltip-BWy3hm6U.js +103 -0
- package/dist/Tooltip-CJL2w6Tj.js +105 -0
- package/dist/Typography/index.cjs +9 -0
- package/dist/Typography/index.mjs +3 -0
- package/dist/Typography-4zopC4KE.js +36 -0
- package/dist/Typography-C2OJA0Ai.js +38 -0
- package/dist/_baseAssignValue-9277BEnY.js +29 -0
- package/dist/_baseAssignValue-CZ7dH3jZ.js +31 -0
- package/dist/_baseEach-DUa3wUU0.js +1073 -0
- package/dist/_baseEach-DutHXgSt.js +1069 -0
- package/dist/_commonjsHelpers-BpF068F9.js +32 -0
- package/dist/_commonjsHelpers-BrnLhuRG.js +36 -0
- package/dist/_defineProperty-BWlKbGrw.js +1326 -0
- package/dist/_defineProperty-D2CYOW2W.js +1306 -0
- package/dist/_getTag-CFReVgbF.js +733 -0
- package/dist/_getTag-CiceuEl8.js +718 -0
- package/dist/_polyfill-node.process-BcnAACbW.js +255 -0
- package/dist/_polyfill-node.process-GNmX79Os.js +258 -0
- package/dist/_setToString-Bi71caQF.js +234 -0
- package/dist/_setToString-DFyFFQFu.js +230 -0
- package/dist/debounce-Co8fMq8q.js +332 -0
- package/dist/debounce-DINXpsd8.js +329 -0
- package/dist/helpers-DKpEJGRK.js +15 -0
- package/dist/helpers-qGD9HtqD.js +17 -0
- package/dist/index-DqBqE4mE.js +1189 -0
- package/dist/index-XXo5QsX8.js +1186 -0
- package/dist/index.cjs +275 -0
- package/dist/index.d.mts +74 -0
- package/dist/index.d.ts +74 -0
- package/dist/index.mjs +162 -0
- package/dist/isObjectLike-BxLPOwZB.js +197 -0
- package/dist/isObjectLike-denQiXs1.js +190 -0
- package/dist/isSymbol-CbzsFbpq.js +35 -0
- package/dist/isSymbol-JSYWlEAg.js +33 -0
- package/dist/noop-C_195KLH.js +26 -0
- package/dist/noop-DGEx0ZLF.js +24 -0
- package/dist/showToast-CPzBq6jE.js +97 -0
- package/dist/showToast-CtAJAgUk.js +99 -0
- package/dist/styles.css +8743 -0
- package/dist/tslib.es6-BJhbHdCW.js +102 -0
- package/dist/tslib.es6-Bd3_MYNG.js +97 -0
- package/dist/useActiveLayout-B08loXfY.js +14 -0
- package/dist/useActiveLayout-B7Dms4v-.js +16 -0
- package/dist/useAssert-CooJfLZx.js +27 -0
- package/dist/useAssert-D7305J5v.js +27 -0
- package/dist/useAtlantisConfig-BqRn-LuQ.js +14 -0
- package/dist/{useAtlantisConfig-ed0bee66.js → useAtlantisConfig-CnUV8oop.js} +2 -2
- package/dist/useBatchSelect-C5xEMqrD.js +36 -0
- package/dist/useBatchSelect-HwBA03k3.js +38 -0
- package/dist/useChildComponent-BjpW2wV9.js +17 -0
- package/dist/useChildComponent-Bp09uQdG.js +15 -0
- package/dist/useFocusTrap-DIF2JjIO.js +74 -0
- package/dist/useFocusTrap-pmlWfXLc.js +74 -0
- package/dist/useInView-4v8j8FbT.js +25 -0
- package/dist/useInView-Cbnh3R5Z.js +25 -0
- package/dist/useIsMounted-BFh5dqlo.js +47 -0
- package/dist/useIsMounted-Ci9Knigd.js +47 -0
- package/dist/useOnKeyDown-C61caZ1f.js +40 -0
- package/dist/useOnKeyDown-DmmUp3io.js +40 -0
- package/dist/useRefocusOnActivator-0eNF7eV7.js +32 -0
- package/dist/useRefocusOnActivator-DK92YmNB.js +32 -0
- package/dist/useResizeObserver-CMUjE-Ai.js +1189 -0
- package/dist/useResizeObserver-vl1y7Akv.js +1192 -0
- package/dist/useResponsiveSizing-5owE3VI9.js +51 -0
- package/dist/useResponsiveSizing-CyY5WpAE.js +49 -0
- package/dist/useSafeLayoutEffect-CWhTKEyh.js +12 -0
- package/dist/useSafeLayoutEffect-LBYfQVIR.js +14 -0
- package/dist/useScrollToActive-Bfxeu0A0.js +591 -0
- package/dist/useScrollToActive-DDLYVBNH.js +597 -0
- package/package.json +409 -9
- package/{rollup.config.js → rollup.config.mjs} +49 -17
- package/dist/AnimatedSwitcher/index.js +0 -13
- package/dist/Autocomplete/index.js +0 -214
- package/dist/Avatar/index.js +0 -15
- package/dist/Avatar-76a799fa.js +0 -78
- package/dist/Banner/index.js +0 -111
- package/dist/Button/index.js +0 -16
- package/dist/Button-0c831b03.js +0 -57
- package/dist/ButtonDismiss/index.js +0 -17
- package/dist/ButtonDismiss-101366b5.js +0 -14
- package/dist/Card/index.js +0 -24
- package/dist/Card-2e03b887.js +0 -93
- package/dist/Checkbox/index.js +0 -18
- package/dist/Checkbox-67a8c60f.js +0 -63
- package/dist/Chip/index.js +0 -42
- package/dist/Chip-6395df79.js +0 -89
- package/dist/Chips/index.js +0 -525
- package/dist/Combobox/index.js +0 -41
- package/dist/Combobox-2f357a96.js +0 -481
- package/dist/ConfirmationModal/index.js +0 -32
- package/dist/Content/index.js +0 -12
- package/dist/Content-e3f7b6fc.js +0 -24
- package/dist/Countdown/index.js +0 -72
- package/dist/DataDump/index.js +0 -37
- package/dist/DataList/index.js +0 -1346
- package/dist/DataTable/index.js +0 -301
- package/dist/DatePicker/index.js +0 -21
- package/dist/DatePicker-3b086bf8.js +0 -144
- package/dist/DescriptionList/index.js +0 -24
- package/dist/Disclosure/index.js +0 -46
- package/dist/Divider/index.js +0 -29
- package/dist/Drawer/index.js +0 -50
- package/dist/Emphasis/index.js +0 -13
- package/dist/Emphasis-f298e0bd.js +0 -19
- package/dist/FeatureSwitch/index.js +0 -71
- package/dist/Flex/index.js +0 -12
- package/dist/Flex-d490c4db.js +0 -38
- package/dist/FormField/index.js +0 -24
- package/dist/FormField-cea3a4f7.js +0 -253
- package/dist/FormatEmail/index.js +0 -23
- package/dist/FormatFile/index.js +0 -37
- package/dist/FormatFile-9cc4c85a.js +0 -162
- package/dist/Gallery/index.js +0 -101
- package/dist/Glimmer/index.js +0 -15
- package/dist/Glimmer-84dee1ed.js +0 -77
- package/dist/Grid/index.js +0 -76
- package/dist/Heading/index.js +0 -15
- package/dist/Icon/index.js +0 -11
- package/dist/Icon-405a216c.js +0 -40
- package/dist/InlineLabel/index.js +0 -13
- package/dist/InlineLabel-79098f71.js +0 -28
- package/dist/InputAvatar/index.js +0 -70
- package/dist/InputEmail/index.js +0 -43
- package/dist/InputFile/index.js +0 -25
- package/dist/InputFile-07c0c738.js +0 -190
- package/dist/InputGroup/index.js +0 -12
- package/dist/InputGroup-8d4fd4eb.js +0 -33
- package/dist/InputNumber/index.js +0 -25
- package/dist/InputPassword/index.js +0 -41
- package/dist/InputText/index.js +0 -26
- package/dist/InputValidation/index.js +0 -17
- package/dist/InputValidation-ba5f81cb.js +0 -29
- package/dist/LightBox/index.js +0 -25
- package/dist/LightBox-ec2c0094.js +0 -121
- package/dist/Link/index.js +0 -15
- package/dist/List/index.js +0 -94
- package/dist/Markdown/index.js +0 -20
- package/dist/Markdown-bee813fc.js +0 -62
- package/dist/Menu/index.js +0 -21
- package/dist/Menu-9477e5e3.js +0 -139
- package/dist/Modal/index.js +0 -26
- package/dist/Modal-03731670.js +0 -74
- package/dist/MultiSelect/index.js +0 -182
- package/dist/Option-085a96d7.js +0 -19
- package/dist/Page/index.js +0 -78
- package/dist/Popover/index.js +0 -65
- package/dist/ProgressBar/index.js +0 -12
- package/dist/ProgressBar-b68edc8f.js +0 -43
- package/dist/RadioGroup/index.js +0 -15
- package/dist/RadioGroup-2a8824e9.js +0 -46
- package/dist/RecurringSelect/index.js +0 -227
- package/dist/Select/index.js +0 -26
- package/dist/Spinner/index.js +0 -12
- package/dist/Spinner-9d8fc7ff.js +0 -24
- package/dist/StatusIndicator/index.js +0 -11
- package/dist/StatusIndicator-7b5258ea.js +0 -18
- package/dist/StatusLabel/index.js +0 -28
- package/dist/Switch/index.js +0 -13
- package/dist/Switch-e9503dbd.js +0 -56
- package/dist/Table/index.js +0 -66
- package/dist/Tabs/index.js +0 -80
- package/dist/Text/index.js +0 -13
- package/dist/Toast/index.js +0 -111
- package/dist/Tooltip/index.js +0 -17
- package/dist/Tooltip-b9de6e57.js +0 -114
- package/dist/Typography/index.js +0 -12
- package/dist/Typography-8c397b84.js +0 -62
- package/dist/style-inject.es-9d2f5f4e.js +0 -30
- package/dist/tslib.es6-754e2961.js +0 -46
- /package/{.eslintrc.js → .eslintrc.cjs} +0 -0
- /package/dist/{AtlantisContext-64608897.js → AtlantisContext-DmLw77nN.js} +0 -0
package/dist/DataList/index.js
DELETED
|
@@ -1,1346 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var tslib_es6 = require('../tslib.es6-754e2961.js');
|
|
6
|
-
var React = require('react');
|
|
7
|
-
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
8
|
-
var Text = require('../Text-94b5c2e5.js');
|
|
9
|
-
var Glimmer = require('../Glimmer-84dee1ed.js');
|
|
10
|
-
var noop = require('lodash/noop');
|
|
11
|
-
var design = require('@jobber/design');
|
|
12
|
-
var framerMotion = require('framer-motion');
|
|
13
|
-
var classnames = require('classnames');
|
|
14
|
-
var Tooltip = require('../Tooltip-b9de6e57.js');
|
|
15
|
-
var Button = require('../Button-0c831b03.js');
|
|
16
|
-
var useInView = require('@jobber/hooks/useInView');
|
|
17
|
-
var isEmpty = require('lodash/isEmpty');
|
|
18
|
-
var InlineLabel = require('../InlineLabel-79098f71.js');
|
|
19
|
-
var useFocusTrap = require('@jobber/hooks/useFocusTrap');
|
|
20
|
-
var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
|
|
21
|
-
var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
|
|
22
|
-
var Icon = require('../Icon-405a216c.js');
|
|
23
|
-
var FormatDate = require('../FormatDate-70ea5b43.js');
|
|
24
|
-
var Heading = require('../Heading-ffc87a2a.js');
|
|
25
|
-
var ReactDOM = require('react-dom');
|
|
26
|
-
var useIsMounted = require('@jobber/hooks/useIsMounted');
|
|
27
|
-
var Checkbox = require('../Checkbox-67a8c60f.js');
|
|
28
|
-
var reactRouterDom = require('react-router-dom');
|
|
29
|
-
var AnimatedSwitcher = require('../AnimatedSwitcher-3d45ec5d.js');
|
|
30
|
-
var Combobox = require('../Combobox-2f357a96.js');
|
|
31
|
-
var Chip = require('../Chip-6395df79.js');
|
|
32
|
-
var debounce = require('lodash/debounce');
|
|
33
|
-
var InputText = require('../InputText-375a415c.js');
|
|
34
|
-
var Spinner = require('../Spinner-9d8fc7ff.js');
|
|
35
|
-
var Typography = require('../Typography-8c397b84.js');
|
|
36
|
-
require('../Content-e3f7b6fc.js');
|
|
37
|
-
require('@jobber/hooks/useSafeLayoutEffect');
|
|
38
|
-
require('react-popper');
|
|
39
|
-
require('../useAtlantisConfig-ed0bee66.js');
|
|
40
|
-
require('react-hook-form');
|
|
41
|
-
require('../AnimatedPresence-20a02aaa.js');
|
|
42
|
-
require('../Flex-d490c4db.js');
|
|
43
|
-
require('@jobber/hooks/useAssert');
|
|
44
|
-
require('../Avatar-76a799fa.js');
|
|
45
|
-
require('color');
|
|
46
|
-
require('../FormField-cea3a4f7.js');
|
|
47
|
-
require('@jobber/hooks/useShowClear');
|
|
48
|
-
require('../InputValidation-ba5f81cb.js');
|
|
49
|
-
|
|
50
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
51
|
-
|
|
52
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
53
|
-
var noop__default = /*#__PURE__*/_interopDefaultLegacy(noop);
|
|
54
|
-
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
55
|
-
var isEmpty__default = /*#__PURE__*/_interopDefaultLegacy(isEmpty);
|
|
56
|
-
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
57
|
-
|
|
58
|
-
var css_248z$g = ".TkdrExYnvcY-,\n.TkdrExYnvcY- * {\n box-sizing: border-box;\n}\n\n.TkdrExYnvcY- {\n --data-list--minimum-item-height: calc(var(--base-unit) * 3.5);\n\n display: -ms-flexbox;\n\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n position: relative;\n z-index: 0;\n z-index: var(--elevation-default);\n -ms-flex: 1;\n flex: 1;\n}\n\n/*\n * Header\n */\n\n.IcAlZHoB4LI- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n z-index: 1;\n z-index: var(--elevation-base);\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.TFO76ysivmg- {\n display: grid;\n padding: calc((16px / 2) + (16px / 4)) 0;\n padding: calc(calc(16px / 2) + calc(16px / 4)) 0;\n padding: calc(var(--space-small) + var(--space-smaller)) 0;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n grid-template-columns: auto fit-content(calc(16px * 14));\n grid-template-columns: auto fit-content(calc(var(--base-unit) * 14));\n}\n\n.TFO76ysivmg-:empty {\n display: none;\n}\n\n.jGHZZYZm1ZY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n -ms-flex-pack: center;\n justify-content: center;\n min-height: calc(16px * 3);\n min-height: var(--space-largest);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 8) solid rgb(217, 223, 225);\n border-bottom: var(--border-thick) solid var(--color-border);\n}\n\n.GiD7MjZJbcw- {\n --data-list--header-actions-gap: var(--space-small);\n display: -ms-flexbox;\n display: flex;\n gap: calc(16px / 2);\n gap: var(--data-list--header-actions-gap);\n}\n\n@media (max-width: 489px) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n@media (--small-screens-and-below) {\n\n.GiD7MjZJbcw- {\n -ms-flex-pack: justify;\n justify-content: space-between;\n width: 100%;\n}\n }\n\n.jMSVGIAr5tk- > p {\n font-weight: 500;\n white-space: nowrap;\n}\n\n.jMSVGIAr5tk- {\n display: -ms-flexbox;\n display: flex;\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n -ms-flex-align: center;\n align-items: center;\n gap: var(--data-list--header-actions-gap);\n}\n\n/*\n * List Item\n */\n\n.ise8kHCfhCY- {\n position: relative;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-bottom: calc(16px / 16) solid rgb(217, 223, 225);\n border-bottom: var(--border-base) solid var(--color-border);\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.ise8kHCfhCY-,\n.Tq6e0BGwcSM- {\n display: grid;\n grid-template-columns: minmax(0px, auto);\n min-height: var(--data-list--minimum-item-height);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.ise8kHCfhCY-.Pc0JGX6jCD4-,\n.ise8kHCfhCY-:hover,\n.ise8kHCfhCY-:focus-within {\n --data-list-item-active-color: var(--color-surface--hover);\n background-color: rgb(244, 246, 250);\n background-color: var(--data-list-item-active-color);\n}\n\n.Tq6e0BGwcSM- {\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n text-align: left;\n -webkit-text-decoration: none;\n text-decoration: none;\n background-color: transparent;\n cursor: pointer;\n}\n\n/**\n * Reset CSS properties on focus to ensure we only have the focus state on the\n * parent .listItem\n */\n\n.Tq6e0BGwcSM-:focus {\n outline: none;\n background-color: transparent;\n}\n\n/**\n * Enable a better hover and focus experience when :has() is supported.\n * This is a workaround for Firefox where the :has() selector is not supported.\n */\n\n@supports selector(*:has(*)) {\n .ise8kHCfhCY-:hover,\n .ise8kHCfhCY-:focus-within {\n background-color: transparent;\n }\n\n .ise8kHCfhCY-:has(.Tq6e0BGwcSM-:hover, .Tq6e0BGwcSM-:focus) {\n background-color: var(--data-list-item-active-color);\n }\n}\n\n/*\n * List Item Selection\n */\n\n.d-79rkMqufg- {\n display: grid;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (min-width: 768px) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.d-79rkMqufg- {\n -ms-flex-align: center;\n align-items: center;\n}\n }\n\n.d-79rkMqufg-,\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n grid-template-columns: -webkit-max-content minmax(0px, auto);\n grid-template-columns: max-content minmax(0px, auto);\n -webkit-column-gap: calc(16px / 2);\n -webkit-column-gap: var(--space-small);\n -moz-column-gap: calc(16px / 2);\n -moz-column-gap: var(--space-small);\n column-gap: calc(16px / 2);\n column-gap: var(--space-small);\n}\n\n.jGHZZYZm1ZY- .d-79rkMqufg- {\n display: grid;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qm-SSuWTXkI- {\n display: -ms-flexbox;\n display: flex;\n visibility: hidden;\n\n /* To compensate the Checkbox's label margin that we are using for screen-readers */\n margin-right: calc((16px * 1) * -1);\n margin-right: calc(calc(16px * 1) * -1);\n margin-right: calc(var(--space-base) * -1);\n}\n\n.qm-SSuWTXkI-.VA9RnQp6nbI- {\n visibility: visible;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :first-child {\n -ms-flex-order: 2;\n order: 2;\n}\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n -ms-flex-order: 1;\n order: 1;\n padding-top: calc(16px / 4);\n padding-top: var(--space-smaller);\n opacity: 1;\n transition: opacity 100ms ease-in-out;\n transition: opacity var(--transition-properties);\n --transition-properties: var(--timing-quick) ease-in-out;\n}\n\n@media (min-width: 768px) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.ise8kHCfhCY- .d-79rkMqufg- > :last-child {\n padding-top: 0;\n opacity: 0;\n}\n }\n\n.ise8kHCfhCY-:hover .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY-:focus-within .d-79rkMqufg- > :last-child,\n.ise8kHCfhCY- .d-79rkMqufg-._4L7iXXzLr5k- > :last-child {\n opacity: 1;\n}\n\n/*\n * Filters\n */\n\n.Kkp-IYmwq-s- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(255, 255, 255, 0.6);\n background-color: var(--color-overlay--dimmed);\n -ms-flex-align: start;\n align-items: flex-start;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.m-eCShL7TU4- {\n position: sticky;\n top: 50vh;\n}\n\n/* This hides the text from the UI but not from the screen readers */\n\n.esUiRgWabYw- {\n position: absolute;\n top: auto;\n left: -10000px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n text-indent: -10000px;\n}\n";
|
|
59
|
-
var styles$g = {"wrapper":"TkdrExYnvcY-","titleContainer":"IcAlZHoB4LI-","headerFilters":"TFO76ysivmg-","headerTitles":"jGHZZYZm1ZY-","batchSelectContainer":"GiD7MjZJbcw-","headerBatchSelect":"jMSVGIAr5tk-","listItem":"ise8kHCfhCY-","listItemClickable":"Tq6e0BGwcSM-","active":"Pc0JGX6jCD4-","selectable":"d-79rkMqufg-","selectAllCheckbox":"qm-SSuWTXkI-","visible":"VA9RnQp6nbI-","selected":"_4L7iXXzLr5k-","filtering":"Kkp-IYmwq-s-","filteringSpinner":"m-eCShL7TU4-","srOnly":"esUiRgWabYw-"};
|
|
60
|
-
styleInject_es.styleInject(css_248z$g);
|
|
61
|
-
|
|
62
|
-
var css_248z$f = ".F56prQsXm3A- {\n min-width: 80px;\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n}\n";
|
|
63
|
-
var styles$f = {"results":"F56prQsXm3A-"};
|
|
64
|
-
styleInject_es.styleInject(css_248z$f);
|
|
65
|
-
|
|
66
|
-
const DATALIST_TOTALCOUNT_TEST_ID = "ATL-DataList-TotalCount";
|
|
67
|
-
function DataListTotalCount({ totalCount, loading, }) {
|
|
68
|
-
if (totalCount === undefined)
|
|
69
|
-
return null;
|
|
70
|
-
let output = null;
|
|
71
|
-
if (totalCount === null && loading) {
|
|
72
|
-
output = React__default["default"].createElement(Glimmer.Glimmer, { size: "auto", shape: "rectangle" });
|
|
73
|
-
}
|
|
74
|
-
if (typeof totalCount === "number") {
|
|
75
|
-
output = (React__default["default"].createElement(Text.Text, { variation: "subdued" },
|
|
76
|
-
"(",
|
|
77
|
-
totalCount.toLocaleString(),
|
|
78
|
-
" results)"));
|
|
79
|
-
}
|
|
80
|
-
return (React__default["default"].createElement("div", { className: styles$f.results, "data-testid": DATALIST_TOTALCOUNT_TEST_ID }, output));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const defaultValues$1 = {
|
|
84
|
-
title: "",
|
|
85
|
-
data: [],
|
|
86
|
-
headers: {},
|
|
87
|
-
children: [],
|
|
88
|
-
selected: [],
|
|
89
|
-
layoutBreakpoints: [],
|
|
90
|
-
layouts: {
|
|
91
|
-
xs: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
92
|
-
sm: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
93
|
-
md: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
94
|
-
lg: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
95
|
-
xl: children => React__default["default"].createElement(React__default["default"].Fragment, null, children),
|
|
96
|
-
},
|
|
97
|
-
registerLayout: noop__default["default"],
|
|
98
|
-
};
|
|
99
|
-
const DataListContext = React.createContext(defaultValues$1);
|
|
100
|
-
function useDataListContext() {
|
|
101
|
-
return React.useContext(DataListContext);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const mediaQueryStore = {
|
|
105
|
-
subscribe(onChange, query) {
|
|
106
|
-
const matchMedia = window.matchMedia(query);
|
|
107
|
-
matchMedia.addEventListener("change", onChange);
|
|
108
|
-
return () => {
|
|
109
|
-
matchMedia.removeEventListener("change", onChange);
|
|
110
|
-
};
|
|
111
|
-
},
|
|
112
|
-
getSnapshot(query) {
|
|
113
|
-
return () => window.matchMedia(query).matches;
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
function useMediaQuery(query) {
|
|
117
|
-
/**
|
|
118
|
-
* matchMedia have had full support for browsers since 2012 but jest, being a
|
|
119
|
-
* lite version of a DOM, doesn't support it.
|
|
120
|
-
*
|
|
121
|
-
* Instead of the consumers mocking matchMedia on every usage of DataList,
|
|
122
|
-
* we can just return true to mimic the largest screen we support.
|
|
123
|
-
*
|
|
124
|
-
* In the event that the consumer wants to test the DataList on different
|
|
125
|
-
* screen sizes, they can use the `mockViewportWidth` function from
|
|
126
|
-
* `@jobber/components/useBreakpoints`.
|
|
127
|
-
*/
|
|
128
|
-
if (typeof window === "undefined" ||
|
|
129
|
-
typeof window.matchMedia === "undefined") {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
const subscribeMediaQuery = React.useCallback((onChange) => mediaQueryStore.subscribe(onChange, query), [query]);
|
|
133
|
-
const matches = React.useSyncExternalStore(subscribeMediaQuery, mediaQueryStore.getSnapshot(query), () => true);
|
|
134
|
-
return matches;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const EMPTY_RESULTS_MESSAGE = "List is looking empty";
|
|
138
|
-
const EMPTY_FILTER_RESULTS_MESSAGE = "No results for selected filters";
|
|
139
|
-
const EMPTY_STATE_ACTION_BUTTON_ONLY_ERROR = "DataListEmptyState action prop must be a Button component";
|
|
140
|
-
/**
|
|
141
|
-
* Breakpoints that we support
|
|
142
|
-
*/
|
|
143
|
-
const BREAKPOINTS = ["xs", "sm", "md", "lg", "xl"];
|
|
144
|
-
const BREAKPOINT_SIZES = {
|
|
145
|
-
xs: 0,
|
|
146
|
-
sm: 490,
|
|
147
|
-
md: 768,
|
|
148
|
-
lg: 1080,
|
|
149
|
-
xl: 1440,
|
|
150
|
-
};
|
|
151
|
-
const SEARCH_DEBOUNCE_DELAY = design.tokens["timing-slowest"];
|
|
152
|
-
const DATA_LIST_FILTERING_SPINNER_TEST_ID = "ATL-DataList-filteringSpinner";
|
|
153
|
-
const DATA_LIST_LOADING_MORE_SPINNER_TEST_ID = "ATL-DataList-loadingMoreSpinner";
|
|
154
|
-
const DATA_LOAD_MORE_TEST_ID = "ATL-DataList-LoadMore-trigger";
|
|
155
|
-
const DATA_LIST_STICKY_HEADER_TEST_ID = "ATL-DataList-stickyHeader";
|
|
156
|
-
const TRANSITION_DURATION_IN_SECONDS = design.tokens["timing-base"] / 1000;
|
|
157
|
-
const TRANSITION_DELAY_IN_SECONDS = design.tokens["timing-quick"] / 1000;
|
|
158
|
-
|
|
159
|
-
function useResponsiveSizing() {
|
|
160
|
-
// This was originally written to look for "min-width: 0" which would always
|
|
161
|
-
// return true no matter what.
|
|
162
|
-
// So, instead of running media query on it, just set it to true.
|
|
163
|
-
const xs = true;
|
|
164
|
-
const sm = useMediaQuery(`(min-width: ${BREAKPOINT_SIZES.sm}px)`);
|
|
165
|
-
const md = useMediaQuery(`(min-width: ${BREAKPOINT_SIZES.md}px)`);
|
|
166
|
-
const lg = useMediaQuery(`(min-width: ${BREAKPOINT_SIZES.lg}px)`);
|
|
167
|
-
const xl = useMediaQuery(`(min-width: ${BREAKPOINT_SIZES.xl}px)`);
|
|
168
|
-
return { xs, sm, md, lg, xl };
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function useActiveLayout() {
|
|
172
|
-
const { layoutBreakpoints, layouts } = useDataListContext();
|
|
173
|
-
const breakpoints = useResponsiveSizing();
|
|
174
|
-
const reversedLayoutBreakpoints = [...layoutBreakpoints].reverse();
|
|
175
|
-
const activeBreakpoint = reversedLayoutBreakpoints.find(key => breakpoints[key]) ||
|
|
176
|
-
layoutBreakpoints[0];
|
|
177
|
-
const layout = layouts[activeBreakpoint];
|
|
178
|
-
return { layout, activeBreakpoint };
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
var css_248z$e = "._8cMzUF8XEwY- {\n position: relative;\n}\n\n._8cMzUF8XEwY-::after {\n content: \"\";\n display: block;\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 100px;\n background-image: linear-gradient(\n to top,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n to top,\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n}\n\n.Rh--6fVpkm4- {\n padding: calc(16px * 1) calc(16px / 2);\n padding: var(--space-base) var(--space-small);\n}\n\n.NFaWWvmxtkw- {\n width: 100%;\n min-width: calc(16px * 3);\n min-width: var(--space-largest);\n}\n";
|
|
182
|
-
var styles$e = {"wrapper":"_8cMzUF8XEwY-","loadingItem":"Rh--6fVpkm4-","glimmer":"NFaWWvmxtkw-"};
|
|
183
|
-
styleInject_es.styleInject(css_248z$e);
|
|
184
|
-
|
|
185
|
-
const LOADING_STATE_LIMIT_ITEMS = 10;
|
|
186
|
-
const DATALIST_LOADINGSTATE_ROW_TEST_ID = "ATL-DataList-LoadingState-Row";
|
|
187
|
-
function DataListLoadingState() {
|
|
188
|
-
const { headers } = useDataListContext();
|
|
189
|
-
const { layout, activeBreakpoint } = useActiveLayout();
|
|
190
|
-
if (!layout)
|
|
191
|
-
return null;
|
|
192
|
-
const glimmerSize = activeBreakpoint === "xs" ? "small" : "large";
|
|
193
|
-
const glimmersFromHeader = Object.keys(headers).reduce((data, key) => (Object.assign(Object.assign({}, data), { [key]: (React__default["default"].createElement("div", { className: styles$e.glimmer },
|
|
194
|
-
React__default["default"].createElement(Glimmer.Glimmer, { size: glimmerSize }))) })), {});
|
|
195
|
-
const loadingData = new Array(LOADING_STATE_LIMIT_ITEMS).fill(glimmersFromHeader);
|
|
196
|
-
return (React__default["default"].createElement("div", { className: styles$e.wrapper }, loadingData.map((child, i) => (React__default["default"].createElement("div", { key: i, className: styles$e.loadingItem, "data-testid": DATALIST_LOADINGSTATE_ROW_TEST_ID }, layout(child))))));
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const defaultValues = {
|
|
200
|
-
isInLayoutProvider: false,
|
|
201
|
-
hasInLayoutActions: false,
|
|
202
|
-
setHasInLayoutActions: noop__default["default"],
|
|
203
|
-
};
|
|
204
|
-
const DataListLayoutContext = React.createContext(defaultValues);
|
|
205
|
-
function useDataListLayoutContext() {
|
|
206
|
-
return React.useContext(DataListLayoutContext);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
var css_248z$d = ".jHcHGQ-HDbk- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: calc((16px / 2) * -1);\n top: calc(calc(16px / 2) * -1);\n top: calc(var(--space-small) * -1);\n right: 0;\n z-index: 6;\n z-index: var(--elevation-menu);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.jobber-retheme .jHcHGQ-HDbk- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n";
|
|
210
|
-
var styles$d = {"menu":"jHcHGQ-HDbk-"};
|
|
211
|
-
styleInject_es.styleInject(css_248z$d);
|
|
212
|
-
|
|
213
|
-
const CONTAINER_TEST_ID = "ATL-DataListFilters-Container";
|
|
214
|
-
|
|
215
|
-
var css_248z$c = ".jbBRoxlZlNI- {\n --overflow-fade--offset: var(--space-smaller);\n --overflow-fade--negative-offset: calc(var(--overflow-fade--offset) * -1);\n\n -ms-flex-item-align: center;\n\n align-self: center;\n position: relative;\n min-width: 0;\n}\n\n.P6uJ-vHfKrM-,\n.MnN8qbS4hw4- {\n display: grid;\n grid-auto-flow: column;\n grid-auto-columns: -webkit-max-content;\n grid-auto-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.P6uJ-vHfKrM- {\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.MnN8qbS4hw4- {\n margin: var(--overflow-fade--negative-offset);\n padding: var(--overflow-fade--offset);\n overflow-x: auto;\n overflow-y: visible;\n}\n\n.b-5P7Z8eGO8- {\n visibility: hidden;\n}\n\n.xzaCS4slLpI-::before,\n.Jf227kC8Nu0-::after {\n content: \"\";\n position: absolute;\n top: 0;\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: 100%;\n background-image: linear-gradient(\n to right,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 0) 100%\n );\n background-image: linear-gradient(\n var(--data-list-overflow-shadow-angle, to right),\n var(--color-surface) 0%,\n rgba(var(--color-white--rgb), 0) 100%\n );\n pointer-events: none;\n}\n\n.xzaCS4slLpI-::before {\n left: var(--overflow-fade--negative-offset);\n}\n\n.Jf227kC8Nu0-::after {\n --data-list-overflow-shadow-angle: to left;\n right: var(--overflow-fade--negative-offset);\n}\n";
|
|
216
|
-
var styles$c = {"fadeContainer":"jbBRoxlZlNI-","overflowItems":"P6uJ-vHfKrM-","overflowGrid":"MnN8qbS4hw4-","overflowTrigger":"b-5P7Z8eGO8-","overflowLeft":"xzaCS4slLpI-","overflowRight":"Jf227kC8Nu0-"};
|
|
217
|
-
styleInject_es.styleInject(css_248z$c);
|
|
218
|
-
|
|
219
|
-
function DataListOverflowFade({ children }) {
|
|
220
|
-
const [leftRef, isLeftVisible] = useInView.useInView();
|
|
221
|
-
const [rightRef, isRightVisible] = useInView.useInView();
|
|
222
|
-
return (React__default["default"].createElement("div", { "data-testid": CONTAINER_TEST_ID, className: classnames__default["default"](styles$c.fadeContainer, {
|
|
223
|
-
[styles$c.overflowLeft]: !isLeftVisible,
|
|
224
|
-
[styles$c.overflowRight]: !isRightVisible,
|
|
225
|
-
}) },
|
|
226
|
-
React__default["default"].createElement("div", { className: styles$c.overflowGrid },
|
|
227
|
-
React__default["default"].createElement("span", { ref: leftRef, className: styles$c.overflowTrigger }),
|
|
228
|
-
React__default["default"].createElement("div", { className: styles$c.overflowItems }, children),
|
|
229
|
-
React__default["default"].createElement("span", { ref: rightRef, className: styles$c.overflowTrigger }))));
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
var css_248z$b = "._8MYxAQYdZzM- {\n position: relative;\n}\n\n.WRV-UmQmPzo- {\n --inline-label-height: calc(\n var(--typography--fontSize-small) * 1.5 + calc(var(--space-smaller) * 1.25) *\n 2\n );\n\n display: -ms-flexbox;\n\n display: flex;\n z-index: 0;\n z-index: var(--elevation-default);\n max-height: calc((\n ((16px * 1) * 0.75) * 1.5 + ((16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(calc(\n calc(calc(16px * 1) * 0.75) * 1.5 + calc(calc(16px / 4) * 1.25) *\n 2\n ) * 2);\n max-height: calc(var(--inline-label-height) * 2);\n overflow: hidden;\n white-space: nowrap;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.ND-cN-mX5-c- {\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n -webkit-mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent calc(16px * 1.5),\n rgba(0, 0, 0, 1) calc(16px * 3),\n rgba(0, 0, 0, 1)\n );\n mask-image: linear-gradient(\n to left,\n transparent,\n transparent var(--space-large),\n rgba(0, 0, 0, 1) var(--space-largest),\n rgba(0, 0, 0, 1)\n );\n}\n\n.liQeWCMenD0- {\n display: -ms-flexbox;\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n -ms-flex-align: center;\n align-items: center;\n}\n";
|
|
233
|
-
var styles$b = {"tagWrapper":"_8MYxAQYdZzM-","tags":"WRV-UmQmPzo-","tagsMask":"ND-cN-mX5-c-","tagCount":"liQeWCMenD0-"};
|
|
234
|
-
styleInject_es.styleInject(css_248z$b);
|
|
235
|
-
|
|
236
|
-
function DataListTags({ items }) {
|
|
237
|
-
const ref = React.useRef(null);
|
|
238
|
-
const [visibleIndex, setVisibleIndex] = React.useState([]);
|
|
239
|
-
const visibleItems = visibleIndex.filter(Boolean).length;
|
|
240
|
-
const shouldShowTagCount = Boolean(visibleItems);
|
|
241
|
-
React.useEffect(() => {
|
|
242
|
-
var _a;
|
|
243
|
-
if (!window.IntersectionObserver)
|
|
244
|
-
return;
|
|
245
|
-
setVisibleIndex([]);
|
|
246
|
-
const observer = new IntersectionObserver(handleIntersection, {
|
|
247
|
-
root: ref.current,
|
|
248
|
-
threshold: buildIntersectionThreshold(items),
|
|
249
|
-
});
|
|
250
|
-
const elements = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll("[data-tag-element]");
|
|
251
|
-
elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.observe(element));
|
|
252
|
-
return () => {
|
|
253
|
-
elements === null || elements === void 0 ? void 0 : elements.forEach(element => observer.unobserve(element));
|
|
254
|
-
};
|
|
255
|
-
}, [items]);
|
|
256
|
-
return (React__default["default"].createElement("div", { className: styles$b.tagWrapper, ref: ref },
|
|
257
|
-
React__default["default"].createElement("div", { className: classnames__default["default"](styles$b.tags, {
|
|
258
|
-
[styles$b.tagsMask]: shouldShowTagCount,
|
|
259
|
-
}) }, items.filter(Boolean).map((tag, index) => (React__default["default"].createElement("div", { key: tag, "data-tag-element": index },
|
|
260
|
-
React__default["default"].createElement(InlineLabel.InlineLabel, null, tag))))),
|
|
261
|
-
shouldShowTagCount && (React__default["default"].createElement("div", { className: styles$b.tagCount },
|
|
262
|
-
React__default["default"].createElement(Text.Text, null,
|
|
263
|
-
"+",
|
|
264
|
-
visibleItems)))));
|
|
265
|
-
function handleIntersection(...[entries]) {
|
|
266
|
-
entries.forEach(entry => {
|
|
267
|
-
const index = entry.target.getAttribute("data-tag-element");
|
|
268
|
-
const indexNumber = Number(index);
|
|
269
|
-
if (!index || isNaN(indexNumber))
|
|
270
|
-
return;
|
|
271
|
-
setVisibleIndex(prevState => {
|
|
272
|
-
const newState = [...prevState];
|
|
273
|
-
newState[indexNumber] = entry.intersectionRatio !== 1;
|
|
274
|
-
return newState;
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
function buildIntersectionThreshold(items) {
|
|
280
|
-
const thresholds = [];
|
|
281
|
-
const totalItems = items.length;
|
|
282
|
-
for (let i = 1.0; i <= totalItems; i++) {
|
|
283
|
-
const ratio = i / totalItems;
|
|
284
|
-
thresholds.push(ratio);
|
|
285
|
-
}
|
|
286
|
-
thresholds.push(0);
|
|
287
|
-
return thresholds;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
var css_248z$a = ".fLmJZJJqMcE- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n -ms-flex-align: center;\n align-items: center;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n\n.fLmJZJJqMcE-:focus,\n.fLmJZJJqMcE-:focus-visible {\n outline: none;\n}\n\n.fLmJZJJqMcE-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.UG8cHUT3Hds- {\n cursor: pointer;\n}\n";
|
|
291
|
-
var styles$a = {"headerLabel":"fLmJZJJqMcE-","sortable":"UG8cHUT3Hds-"};
|
|
292
|
-
styleInject_es.styleInject(css_248z$a);
|
|
293
|
-
|
|
294
|
-
var css_248z$9 = ".AN5egORYy-0- {\n width: calc(16px * 1.5);\n width: var(--space-large);\n height: calc(16px * 1.5);\n height: var(--space-large);\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.AN5egORYy-0- path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n\n.AN5egORYy-0- path.F1uTDCK0Sb0- {\n fill: rgb(1, 41, 57);\n fill: var(--color-heading);\n}\n\n.AN5egORYy-0- path._6KYeQXWXLQ8- {\n fill: rgb(217, 223, 225);\n fill: var(--color-inactive--surface);\n}\n\n.AN5egORYy-0-:hover path {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n transition: all 200ms ease;\n transition: all var(--timing-base) ease;\n}\n";
|
|
295
|
-
var styles$9 = {"sortIcon":"AN5egORYy-0-","active":"F1uTDCK0Sb0-","inactive":"_6KYeQXWXLQ8-"};
|
|
296
|
-
styleInject_es.styleInject(css_248z$9);
|
|
297
|
-
|
|
298
|
-
const SORTING_ICON_TEST_ID = "ATL-DataList-Sorting-Icon";
|
|
299
|
-
function DataListSortingArrows({ order }) {
|
|
300
|
-
return (React__default["default"].createElement("div", { className: styles$9.sortIcon, "data-testid": SORTING_ICON_TEST_ID },
|
|
301
|
-
React__default["default"].createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
302
|
-
React__default["default"].createElement("path", { className: getActiveClassName("asc"), d: "M16.2929 10.6661C15.9024 11.0566 15.2692 11.0566 14.8787 10.6661L12.2891 8.14263L9.70711 10.6661C9.31658 11.0566 8.68342 11.0566 8.29289 10.6661C7.90237 10.2756 7.90237 9.64239 8.29289 9.25186L11.5858 5.95897C11.9763 5.56845 12.6095 5.56845 13 5.95897L16.2929 9.25186C16.6834 9.64239 16.6834 10.2756 16.2929 10.6661Z" }),
|
|
303
|
-
React__default["default"].createElement("path", { className: getActiveClassName("desc"), d: "M8.29292 13.3339C8.68345 12.9434 9.31661 12.9434 9.70714 13.3339L12.2968 15.8573L14.8787 13.3339C15.2692 12.9434 15.9024 12.9434 16.2929 13.3339C16.6834 13.7244 16.6834 14.3576 16.2929 14.7481L13 18.041C12.6095 18.4315 11.9763 18.4315 11.5858 18.041L8.29292 14.7481C7.9024 14.3576 7.9024 13.7244 8.29292 13.3339Z" }))));
|
|
304
|
-
function getActiveClassName(targetOrder) {
|
|
305
|
-
return order === targetOrder ? styles$9.active : styles$9.inactive;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
var css_248z$8 = ".thBUfVNaigs- {\n position: absolute;\n top: 100%;\n left: 0;\n max-width: var(--popover--width);\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n margin-top: calc(16px / 4);\n margin-top: var(--space-smaller);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background: rgba(255, 255, 255, 1);\n background: var(--color-surface);\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n.QaXuqbVjG04- {\n display: -ms-flexbox;\n display: flex;\n min-width: calc((16px * 3) * 3.5);\n min-width: calc(calc(16px * 3) * 3.5);\n min-width: calc(var(--space-largest) * 3.5);\n min-height: calc((calc(16px * 3) - calc(16px / 4)));\n min-height: calc((var(--space-largest) - var(--space-smaller)));\n box-sizing: border-box;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border-radius: calc(16px / 4);\n border-radius: var(--radius-large);\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n font-weight: 500;\n white-space: nowrap;\n list-style: none;\n cursor: pointer;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.jobber-retheme .QaXuqbVjG04-,\n.jobber-retheme .thBUfVNaigs- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.QaXuqbVjG04-:hover,\n.QaXuqbVjG04-:focus {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n.QaXuqbVjG04-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n";
|
|
310
|
-
var styles$8 = {"optionsList":"thBUfVNaigs-","option":"QaXuqbVjG04-"};
|
|
311
|
-
styleInject_es.styleInject(css_248z$8);
|
|
312
|
-
|
|
313
|
-
function DataListSortingOptions({ options, selectedOption, onSelectChange, onClose, optionsListRef, dataListHeaderTileRef, }) {
|
|
314
|
-
useRefocusOnActivator.useRefocusOnActivator(!optionsListRef.current);
|
|
315
|
-
useOnKeyDown.useOnKeyDown(() => onClose(), "Escape");
|
|
316
|
-
React.useEffect(() => {
|
|
317
|
-
document.addEventListener("mousedown", handleClickOutside);
|
|
318
|
-
return () => {
|
|
319
|
-
document.removeEventListener("mousedown", handleClickOutside);
|
|
320
|
-
};
|
|
321
|
-
}, [optionsListRef, dataListHeaderTileRef, onClose]);
|
|
322
|
-
return (React__default["default"].createElement("ul", { className: styles$8.optionsList, ref: optionsListRef }, options.map(option => (React__default["default"].createElement("li", { className: styles$8.option, key: `${option.id}${option.order}`, onClick: () => onSelectChange(option), onKeyDown: event => handleKeyDown(event, option), tabIndex: 0, "data-value": option.id },
|
|
323
|
-
option.label,
|
|
324
|
-
option.label === (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) && (React__default["default"].createElement(Icon.Icon, { name: "checkmark", color: "blue" })))))));
|
|
325
|
-
function handleKeyDown(event, option) {
|
|
326
|
-
if (event.key === "Enter") {
|
|
327
|
-
onSelectChange(option);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
function handleClickOutside(event) {
|
|
331
|
-
var _a, _b;
|
|
332
|
-
const isClickInside = ((_a = optionsListRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) ||
|
|
333
|
-
((_b = dataListHeaderTileRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target));
|
|
334
|
-
if (!isClickInside) {
|
|
335
|
-
onClose();
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/* eslint-disable max-statements */
|
|
341
|
-
function DataListHeaderTile({ headers, headerKey, visible = false, }) {
|
|
342
|
-
useRefocusOnActivator.useRefocusOnActivator(visible);
|
|
343
|
-
const { sorting } = useDataListContext();
|
|
344
|
-
const [isDropDownOpen, setIsDropDownOpen] = React.useState(false);
|
|
345
|
-
const optionsListRef = useFocusTrap.useFocusTrap(isDropDownOpen);
|
|
346
|
-
const dataListHeaderTileRef = React.useRef(null);
|
|
347
|
-
const sortableItem = sorting === null || sorting === void 0 ? void 0 : sorting.sortable.find(item => item.key === headerKey);
|
|
348
|
-
const isSortable = Boolean(sortableItem);
|
|
349
|
-
const sortingState = sorting === null || sorting === void 0 ? void 0 : sorting.state;
|
|
350
|
-
const Tag = isSortable ? "button" : "div";
|
|
351
|
-
return (React__default["default"].createElement(Tag, { className: classnames__default["default"](styles$a.headerLabel, {
|
|
352
|
-
[styles$a.sortable]: isSortable,
|
|
353
|
-
}), onClick: handleOnClick, ref: dataListHeaderTileRef },
|
|
354
|
-
React__default["default"].createElement(Text.Text, { maxLines: "single" }, headers[headerKey]),
|
|
355
|
-
isSortable && (sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) && isDropDownOpen && (React__default["default"].createElement(DataListSortingOptions, { options: sortableItem.options, selectedOption: (sorting === null || sorting === void 0 ? void 0 : sorting.state) || null, onSelectChange: handleSelectChange, onClose: () => setIsDropDownOpen(false), optionsListRef: optionsListRef, dataListHeaderTileRef: dataListHeaderTileRef })),
|
|
356
|
-
isSortable && (React__default["default"].createElement(DataListSortingArrows, { order: (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key) === headerKey ? sortingState.order : "none" }))));
|
|
357
|
-
function toggleSorting(newSortingKey, newId, newLabel) {
|
|
358
|
-
const isSameKey = newSortingKey === (sortingState === null || sortingState === void 0 ? void 0 : sortingState.key);
|
|
359
|
-
const isDescending = (sortingState === null || sortingState === void 0 ? void 0 : sortingState.order) === "desc";
|
|
360
|
-
if (isSameKey && isDescending) {
|
|
361
|
-
sorting === null || sorting === void 0 ? void 0 : sorting.onSort(undefined);
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
const sortingOrder = isSameKey ? "desc" : "asc";
|
|
365
|
-
setSorting(newSortingKey, newId, newLabel, sortingOrder);
|
|
366
|
-
}
|
|
367
|
-
function setSorting(newSortingKey, newId, newLabel, newOrder) {
|
|
368
|
-
sorting === null || sorting === void 0 ? void 0 : sorting.onSort({
|
|
369
|
-
key: newSortingKey,
|
|
370
|
-
id: newId,
|
|
371
|
-
label: newLabel,
|
|
372
|
-
order: newOrder,
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
function handleOnClick() {
|
|
376
|
-
var _a, _b;
|
|
377
|
-
if (!isSortable)
|
|
378
|
-
return;
|
|
379
|
-
if (sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) {
|
|
380
|
-
setIsDropDownOpen(!isDropDownOpen);
|
|
381
|
-
}
|
|
382
|
-
else {
|
|
383
|
-
const id = ((_b = (_a = sortableItem === null || sortableItem === void 0 ? void 0 : sortableItem.options) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id) || headerKey;
|
|
384
|
-
toggleSorting(id, headerKey, headers[headerKey]);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
function handleSelectChange(newSortOption) {
|
|
388
|
-
if (sortableItem) {
|
|
389
|
-
setSorting(sortableItem.key, newSortOption.id, newSortOption.label, newSortOption.order);
|
|
390
|
-
}
|
|
391
|
-
setIsDropDownOpen(true);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
/**
|
|
396
|
-
* Return the child component that matches the `type` provided
|
|
397
|
-
*/
|
|
398
|
-
function getCompoundComponent(children, type) {
|
|
399
|
-
const childrenArray = React.Children.toArray(children);
|
|
400
|
-
const element = childrenArray.find(child => React.isValidElement(child) && child.type === type);
|
|
401
|
-
// Comply with the return type without casting it
|
|
402
|
-
return React.isValidElement(element) ? element : undefined;
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Return all instances child component that matches the `type` provided
|
|
406
|
-
*/
|
|
407
|
-
function getCompoundComponents(children, type) {
|
|
408
|
-
const childrenArray = React.Children.toArray(children);
|
|
409
|
-
const elements = childrenArray.filter((child) => React.isValidElement(child) && child.type === type);
|
|
410
|
-
return elements;
|
|
411
|
-
}
|
|
412
|
-
/**
|
|
413
|
-
* Generate the default element the DataList would use on the data provided.
|
|
414
|
-
*/
|
|
415
|
-
function generateListItemElement(item) {
|
|
416
|
-
return Object.keys(item).reduce((acc, key) => {
|
|
417
|
-
const currentItem = item[key];
|
|
418
|
-
if (!currentItem) {
|
|
419
|
-
return acc;
|
|
420
|
-
}
|
|
421
|
-
if (key === "tags" && Array.isArray(currentItem)) {
|
|
422
|
-
acc[key] = React__default["default"].createElement(DataListTags, { items: currentItem });
|
|
423
|
-
}
|
|
424
|
-
else if (key === "label" && typeof currentItem === "string") {
|
|
425
|
-
acc[key] = React__default["default"].createElement(Heading.Heading, { level: 5 }, currentItem);
|
|
426
|
-
}
|
|
427
|
-
else if (React.isValidElement(currentItem)) {
|
|
428
|
-
acc[key] = currentItem;
|
|
429
|
-
}
|
|
430
|
-
else if (currentItem instanceof Date) {
|
|
431
|
-
acc[key] = (React__default["default"].createElement(Text.Text, null,
|
|
432
|
-
React__default["default"].createElement(FormatDate.FormatDate, { date: currentItem })));
|
|
433
|
-
}
|
|
434
|
-
else {
|
|
435
|
-
acc[key] = React__default["default"].createElement(Text.Text, null, currentItem);
|
|
436
|
-
}
|
|
437
|
-
return acc;
|
|
438
|
-
}, {});
|
|
439
|
-
}
|
|
440
|
-
/**
|
|
441
|
-
* Generate the header elements with the default styling
|
|
442
|
-
*/
|
|
443
|
-
function generateHeaderElements(headers) {
|
|
444
|
-
const headerElements = Object.keys(headers).reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: React__default["default"].createElement(DataListHeaderTile, { headers: headers, headerKey: key, visible: true }) })), {});
|
|
445
|
-
return isEmpty__default["default"](headerElements) ? undefined : headerElements;
|
|
446
|
-
}
|
|
447
|
-
function sortBreakpoints(sizeProp) {
|
|
448
|
-
return sizeProp.sort((a, b) => BREAKPOINTS.indexOf(a) - BREAKPOINTS.indexOf(b));
|
|
449
|
-
}
|
|
450
|
-
function getExposedActions(childrenArray, childCount = 2) {
|
|
451
|
-
const firstNChildren = childrenArray.slice(0, childCount);
|
|
452
|
-
return firstNChildren.reduce((result, child, i) => {
|
|
453
|
-
const hasIcon = Boolean(child.props.icon);
|
|
454
|
-
if (!hasIcon)
|
|
455
|
-
return result; // If the child does not have an icon, continue.
|
|
456
|
-
const isLastChildAdded = result.length === i;
|
|
457
|
-
// If it's the first child or if the previous child was added, then add this child.
|
|
458
|
-
if (i === 0 || (i < childCount && isLastChildAdded)) {
|
|
459
|
-
return [...result, child];
|
|
460
|
-
}
|
|
461
|
-
return result;
|
|
462
|
-
}, []);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
const DataListLayoutActionsContext = React.createContext({ activeItem: undefined });
|
|
466
|
-
function useDataListLayoutActionsContext() {
|
|
467
|
-
return React.useContext(DataListLayoutActionsContext);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
var css_248z$7 = ".aokwZU8jbWU- {\n position: fixed;\n top: 0;\n top: var(--actions-menu-y, 0);\n left: 0;\n left: var(--actions-menu-x, 0);\n z-index: 6;\n z-index: var(--elevation-menu);\n min-width: 150px;\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.jobber-retheme .aokwZU8jbWU- {\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.XtVRP97TVSE- {\n position: fixed;\n top: 0;\n left: 0;\n z-index: calc(6 - 1);\n z-index: calc(var(--elevation-menu) - 1);\n width: 100%;\n height: 100%;\n padding: 0;\n border: none;\n background-color: transparent;\n}\n";
|
|
471
|
-
var styles$7 = {"menu":"aokwZU8jbWU-","overlay":"XtVRP97TVSE-"};
|
|
472
|
-
styleInject_es.styleInject(css_248z$7);
|
|
473
|
-
|
|
474
|
-
const variants$1 = {
|
|
475
|
-
hidden: { opacity: 0, y: -10 },
|
|
476
|
-
visible: { opacity: 1, y: 0 },
|
|
477
|
-
};
|
|
478
|
-
function DataListActionsMenu({ visible = false, position, onRequestClose, children, }) {
|
|
479
|
-
const [ref, setRef] = React.useState();
|
|
480
|
-
const mounted = useIsMounted.useIsMounted();
|
|
481
|
-
useRefocusOnActivator.useRefocusOnActivator(visible);
|
|
482
|
-
const focusTrapRef = useFocusTrap.useFocusTrap(visible);
|
|
483
|
-
useOnKeyDown.useOnKeyDown(onRequestClose, "Escape");
|
|
484
|
-
const actionsMenu = (React__default["default"].createElement(framerMotion.AnimatePresence, null, visible && (React__default["default"].createElement("div", { ref: focusTrapRef, onClick: handleClick },
|
|
485
|
-
React__default["default"].createElement(framerMotion.motion.div, { role: "menu", ref: setRef, variants: variants$1, initial: "hidden", animate: "visible", exit: "hidden", transition: { duration: TRANSITION_DELAY_IN_SECONDS }, className: styles$7.menu, style: getPositionCssVars(), onClick: onRequestClose }, children),
|
|
486
|
-
React__default["default"].createElement("button", { type: "button", className: styles$7.overlay, onClick: onRequestClose, "aria-label": "Close menu" })))));
|
|
487
|
-
return mounted.current
|
|
488
|
-
? ReactDOM.createPortal(actionsMenu, document.body)
|
|
489
|
-
: actionsMenu;
|
|
490
|
-
function handleClick(event) {
|
|
491
|
-
// Prevent menu from firing the parent's onClick event when it is nested
|
|
492
|
-
// within a clickable list item
|
|
493
|
-
event.stopPropagation();
|
|
494
|
-
}
|
|
495
|
-
function getPositionCssVars() {
|
|
496
|
-
const { posX, posY } = getPosition();
|
|
497
|
-
return {
|
|
498
|
-
"--actions-menu-x": `${posX}px`,
|
|
499
|
-
"--actions-menu-y": `${posY}px`,
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
|
-
function getPosition() {
|
|
503
|
-
const rect = ref === null || ref === void 0 ? void 0 : ref.getBoundingClientRect();
|
|
504
|
-
const { width = 0, height = 0 } = rect || {};
|
|
505
|
-
const { x, y } = position;
|
|
506
|
-
const xIsOffScreen = x + width > window.innerWidth;
|
|
507
|
-
const yIsOffScreen = y + height > window.innerHeight;
|
|
508
|
-
const xOffSet = x + width - window.innerWidth + design.tokens["space-base"];
|
|
509
|
-
const yOffSet = y + height - window.innerHeight;
|
|
510
|
-
const newPosX = Math.floor(xIsOffScreen ? x - xOffSet : x);
|
|
511
|
-
const newPosY = Math.floor(yIsOffScreen ? y - yOffSet : y);
|
|
512
|
-
return { posX: newPosX, posY: newPosY };
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
function DataListItemActionsOverflow({ actions, }) {
|
|
517
|
-
const [menuPosition, setMenuPosition] = React.useState({ x: 0, y: 0 });
|
|
518
|
-
const [showMenu, setShowMenu] = React.useState(false);
|
|
519
|
-
if (actions.length === 0)
|
|
520
|
-
return null;
|
|
521
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
522
|
-
React__default["default"].createElement(Tooltip.Tooltip, { message: "More actions" },
|
|
523
|
-
React__default["default"].createElement(Button.Button, { icon: "more", ariaLabel: "More actions", type: "secondary", variation: "subtle", onClick: handleMoreClick })),
|
|
524
|
-
React__default["default"].createElement(DataListActionsMenu, { visible: showMenu, position: menuPosition, onRequestClose: handleClose }, actions)));
|
|
525
|
-
function handleMoreClick(event) {
|
|
526
|
-
// Prevent firing the parent's onClick event when it is nested
|
|
527
|
-
// within a clickable list item
|
|
528
|
-
event.stopPropagation();
|
|
529
|
-
// Prevent navigating to the parent's href event when it is nested within a
|
|
530
|
-
// linked list item
|
|
531
|
-
event.preventDefault();
|
|
532
|
-
setShowMenu(true);
|
|
533
|
-
const rect = event.currentTarget.getBoundingClientRect();
|
|
534
|
-
const posX = rect.x;
|
|
535
|
-
const posY = rect.y + rect.height;
|
|
536
|
-
setMenuPosition({ x: posX, y: posY });
|
|
537
|
-
}
|
|
538
|
-
function handleClose() {
|
|
539
|
-
setShowMenu(false);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
function DataListActions({ children, itemsToExpose = 2, }) {
|
|
544
|
-
const { activeItem } = useDataListLayoutActionsContext();
|
|
545
|
-
const childrenArray = React.Children.toArray(children).filter(React.isValidElement);
|
|
546
|
-
const exposedActions = getExposedActions(childrenArray, itemsToExpose);
|
|
547
|
-
childrenArray.splice(0, exposedActions.length);
|
|
548
|
-
return (React__default["default"].createElement(DataListOverflowFade, null,
|
|
549
|
-
exposedActions.map(({ props }) => {
|
|
550
|
-
if (props.visible && !props.visible(activeItem))
|
|
551
|
-
return null;
|
|
552
|
-
if (!props.icon)
|
|
553
|
-
return null;
|
|
554
|
-
function getActionLabel() {
|
|
555
|
-
if (typeof props.label === "string") {
|
|
556
|
-
return props.label;
|
|
557
|
-
}
|
|
558
|
-
if (activeItem) {
|
|
559
|
-
return props.label(activeItem);
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
const actionLabel = getActionLabel();
|
|
563
|
-
return (React__default["default"].createElement(Tooltip.Tooltip, { key: actionLabel, message: actionLabel },
|
|
564
|
-
React__default["default"].createElement(Button.Button, { icon: props.icon, ariaLabel: actionLabel, onClick: () => {
|
|
565
|
-
var _a, _b;
|
|
566
|
-
if (activeItem) {
|
|
567
|
-
(_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props, activeItem);
|
|
568
|
-
}
|
|
569
|
-
else {
|
|
570
|
-
(_b = props.onClick) === null || _b === void 0 ? void 0 : _b.call(props);
|
|
571
|
-
}
|
|
572
|
-
}, type: "secondary", variation: "subtle" })));
|
|
573
|
-
}),
|
|
574
|
-
React__default["default"].createElement(DataListItemActionsOverflow, { actions: childrenArray })));
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
// This component is meant to capture the props of the DataList.ItemActions
|
|
578
|
-
function DataListItemActions(
|
|
579
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
580
|
-
_) {
|
|
581
|
-
return null;
|
|
582
|
-
}
|
|
583
|
-
const variants = {
|
|
584
|
-
hidden: { opacity: 0, y: 10 },
|
|
585
|
-
visible: { opacity: 1, y: 0 },
|
|
586
|
-
};
|
|
587
|
-
function InternalDataListItemActions({ actions, }) {
|
|
588
|
-
return (React__default["default"].createElement(framerMotion.motion.div, { variants: variants, initial: "hidden", animate: "visible", exit: "hidden", transition: {
|
|
589
|
-
duration: TRANSITION_DURATION_IN_SECONDS,
|
|
590
|
-
delay: TRANSITION_DELAY_IN_SECONDS,
|
|
591
|
-
}, className: styles$d.menu, onContextMenu: handleContextMenu },
|
|
592
|
-
React__default["default"].createElement(DataListActions, null, actions)));
|
|
593
|
-
}
|
|
594
|
-
function handleContextMenu(event) {
|
|
595
|
-
event.stopPropagation();
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
function useBatchSelect() {
|
|
599
|
-
const { selected, onSelect, onSelectAll } = useDataListContext();
|
|
600
|
-
const isArray = Array.isArray(selected);
|
|
601
|
-
const selectedIDs = getIDs(selected);
|
|
602
|
-
const isSelectAll = !isArray;
|
|
603
|
-
return {
|
|
604
|
-
canSelect: Boolean(selected && onSelect),
|
|
605
|
-
canSelectAll: Boolean(onSelect && onSelectAll),
|
|
606
|
-
hasAtLeastOneSelected: isSelectAll || selectedIDs.length > 0,
|
|
607
|
-
isSelectAll,
|
|
608
|
-
isSelectSome: isArray,
|
|
609
|
-
selectedCount: getSelectedCount(selected),
|
|
610
|
-
selectedIDs,
|
|
611
|
-
selected,
|
|
612
|
-
onSelect,
|
|
613
|
-
onSelectAll,
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
function getIDs(selected) {
|
|
617
|
-
if (Array.isArray(selected))
|
|
618
|
-
return selected;
|
|
619
|
-
if (selected === undefined)
|
|
620
|
-
return [];
|
|
621
|
-
return selected.unselected;
|
|
622
|
-
}
|
|
623
|
-
function getSelectedCount(selected) {
|
|
624
|
-
if (Array.isArray(selected))
|
|
625
|
-
return selected.length;
|
|
626
|
-
if (selected === undefined)
|
|
627
|
-
return 0;
|
|
628
|
-
return selected.totalCount - selected.unselected.length;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
function DataListItemInternal({ children, item, }) {
|
|
632
|
-
const { canSelect, hasAtLeastOneSelected, isSelectAll, selectedIDs, selected, onSelect, } = useBatchSelect();
|
|
633
|
-
if (!canSelect)
|
|
634
|
-
return children;
|
|
635
|
-
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectable, {
|
|
636
|
-
[styles$g.selected]: hasAtLeastOneSelected,
|
|
637
|
-
}) },
|
|
638
|
-
children,
|
|
639
|
-
React__default["default"].createElement(Checkbox.Checkbox, { checked: getIsChecked(), onChange: handleChange })));
|
|
640
|
-
function getIsChecked() {
|
|
641
|
-
const isItemInSelectedIDs = selectedIDs.includes(item.id);
|
|
642
|
-
// If we're in a "select all" state, the selectedID's becomes a list of
|
|
643
|
-
// unchecked ID's.
|
|
644
|
-
if (isSelectAll)
|
|
645
|
-
return !isItemInSelectedIDs;
|
|
646
|
-
// Otherwise, we're in a "select some" state, so we can just check if the
|
|
647
|
-
// item is in the selectedIDs list.
|
|
648
|
-
return isItemInSelectedIDs;
|
|
649
|
-
}
|
|
650
|
-
function handleChange() {
|
|
651
|
-
if (isSelectAll)
|
|
652
|
-
return handleSelectAllChange();
|
|
653
|
-
return handleSelectSomeChange();
|
|
654
|
-
}
|
|
655
|
-
function handleSelectAllChange() {
|
|
656
|
-
if (!selected || Array.isArray(selected))
|
|
657
|
-
return;
|
|
658
|
-
if (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.includes(item.id)) {
|
|
659
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(Object.assign(Object.assign({}, selected), { unselected: selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.filter(id => id !== item.id) }));
|
|
660
|
-
}
|
|
661
|
-
else if (selectedIDs) {
|
|
662
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(Object.assign(Object.assign({}, selected), { unselected: [...selectedIDs, item.id] }));
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
function handleSelectSomeChange() {
|
|
666
|
-
if (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.includes(item.id)) {
|
|
667
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.filter(id => id !== item.id));
|
|
668
|
-
}
|
|
669
|
-
else if (selectedIDs) {
|
|
670
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selectedIDs, item.id]);
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
function DataListItemClickableInternal({ onClick, url, to, children, }) {
|
|
676
|
-
const { activeItem } = useDataListLayoutActionsContext();
|
|
677
|
-
if (!activeItem)
|
|
678
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
679
|
-
if (to) {
|
|
680
|
-
const computedTo = typeof to === "string" ? to : to(activeItem);
|
|
681
|
-
return (React__default["default"].createElement(reactRouterDom.Link, { className: styles$g.listItemClickable, to: computedTo, onClick: handleClick }, children));
|
|
682
|
-
}
|
|
683
|
-
if (url) {
|
|
684
|
-
const href = typeof url === "string" ? url : url(activeItem);
|
|
685
|
-
return (React__default["default"].createElement("a", { className: styles$g.listItemClickable, href: href, onClick: handleClick }, children));
|
|
686
|
-
}
|
|
687
|
-
if (onClick) {
|
|
688
|
-
return (
|
|
689
|
-
// A button can be nested within the list item. To prevent a button inside
|
|
690
|
-
// button error, we need to manually declare a div to be a button
|
|
691
|
-
React__default["default"].createElement("div", { role: "button", tabIndex: 0, className: styles$g.listItemClickable, onClick: handleClick, onKeyDown: e => {
|
|
692
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
693
|
-
e.preventDefault();
|
|
694
|
-
handleClick();
|
|
695
|
-
}
|
|
696
|
-
} }, children));
|
|
697
|
-
}
|
|
698
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
699
|
-
function handleClick() {
|
|
700
|
-
activeItem && (onClick === null || onClick === void 0 ? void 0 : onClick(activeItem));
|
|
701
|
-
}
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
function DataListItemClickable({ children }) {
|
|
705
|
-
const { itemActionComponent } = useDataListContext();
|
|
706
|
-
if (itemActionComponent) {
|
|
707
|
-
const props = itemActionComponent.props;
|
|
708
|
-
return (React__default["default"].createElement(DataListItemClickableInternal, Object.assign({}, props), children));
|
|
709
|
-
}
|
|
710
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
711
|
-
}
|
|
712
|
-
|
|
713
|
-
function useGetItemActions(item) {
|
|
714
|
-
const { itemActionComponent } = useDataListContext();
|
|
715
|
-
const itemActions = (itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props.children) || [];
|
|
716
|
-
const actionsArray = React.Children.toArray(itemActions);
|
|
717
|
-
const actions = React.useMemo(() => {
|
|
718
|
-
return actionsArray.filter(action => {
|
|
719
|
-
if (React.isValidElement(action) && action.props.visible) {
|
|
720
|
-
return action.props.visible(item);
|
|
721
|
-
}
|
|
722
|
-
return true;
|
|
723
|
-
});
|
|
724
|
-
}, [itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props.children, item]);
|
|
725
|
-
return {
|
|
726
|
-
actions: actions,
|
|
727
|
-
hasActions: Boolean(actions.length),
|
|
728
|
-
};
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
// eslint-disable-next-line max-statements
|
|
732
|
-
function DataListItem({ item, layout, }) {
|
|
733
|
-
const { hasInLayoutActions } = useDataListLayoutContext();
|
|
734
|
-
const [showMenu, setShowMenu] = React.useState(false);
|
|
735
|
-
const [contextPosition, setContextPosition] = React.useState();
|
|
736
|
-
const generatedItem = React.useMemo(() => generateListItemElement(item), [item]);
|
|
737
|
-
const { actions, hasActions } = useGetItemActions(item);
|
|
738
|
-
const isContextMenuVisible = Boolean(contextPosition);
|
|
739
|
-
const shouldShowContextMenu = showMenu && isContextMenuVisible && hasActions;
|
|
740
|
-
return (React__default["default"].createElement(DataListLayoutActionsContext.Provider, { value: { activeItem: item } },
|
|
741
|
-
React__default["default"].createElement("div", { onMouseEnter: handleShowMenu, onMouseLeave: handleHideMenu, onFocus: handleShowMenu, onBlur: handleHideMenu, onContextMenu: handleContextMenu, className: classnames__default["default"](styles$g.listItem, {
|
|
742
|
-
[styles$g.active]: showMenu && isContextMenuVisible,
|
|
743
|
-
}), key: item.id },
|
|
744
|
-
React__default["default"].createElement(DataListItemInternal, { item: item },
|
|
745
|
-
React__default["default"].createElement(DataListItemClickable, null, layout(generatedItem))),
|
|
746
|
-
React__default["default"].createElement(framerMotion.AnimatePresence, null,
|
|
747
|
-
showMenu && hasActions && !hasInLayoutActions && (React__default["default"].createElement(InternalDataListItemActions, { actions: actions })),
|
|
748
|
-
React__default["default"].createElement(DataListActionsMenu, { key: item.id, visible: shouldShowContextMenu, position: contextPosition || { x: 0, y: 0 }, onRequestClose: () => setContextPosition(undefined) }, actions)))));
|
|
749
|
-
function handleShowMenu() {
|
|
750
|
-
setShowMenu(true);
|
|
751
|
-
}
|
|
752
|
-
function handleHideMenu() {
|
|
753
|
-
setShowMenu(false);
|
|
754
|
-
}
|
|
755
|
-
function handleContextMenu(event) {
|
|
756
|
-
if (!hasActions || isContextMenuVisible)
|
|
757
|
-
return;
|
|
758
|
-
event.preventDefault();
|
|
759
|
-
setContextPosition({
|
|
760
|
-
x: event.clientX,
|
|
761
|
-
y: event.clientY,
|
|
762
|
-
});
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
function DataListItems({ size = "xs", }) {
|
|
767
|
-
const { data, layouts } = useDataListContext();
|
|
768
|
-
const [hasInLayoutActions, setHasInLayoutActions] = React.useState(false);
|
|
769
|
-
const layout = layouts[size];
|
|
770
|
-
if (!layout)
|
|
771
|
-
return null;
|
|
772
|
-
return (React__default["default"].createElement(DataListLayoutContext.Provider, { value: {
|
|
773
|
-
isInLayoutProvider: true,
|
|
774
|
-
hasInLayoutActions,
|
|
775
|
-
setHasInLayoutActions,
|
|
776
|
-
} }, data.map((child, i) => (React__default["default"].createElement(DataListItem, { key: data[i].id, index: i, item: child, layout: layout })))));
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
function DataListLayout({ children, size = "xs", }) {
|
|
780
|
-
const { registerLayout, loadingState } = useDataListContext();
|
|
781
|
-
const { activeBreakpoint } = useActiveLayout();
|
|
782
|
-
React.useEffect(() => {
|
|
783
|
-
registerLayout(size, children);
|
|
784
|
-
}, [size, children]);
|
|
785
|
-
const shouldRenderList = size === activeBreakpoint;
|
|
786
|
-
if (loadingState !== "initial" && shouldRenderList) {
|
|
787
|
-
return React__default["default"].createElement(DataListItems, { size: size });
|
|
788
|
-
}
|
|
789
|
-
return null;
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
var css_248z$6 = ".v-GrdlFpBLk- {\n /* Offset the button's padding so the height of the header bar doesn't change */\n margin: calc((16px / 2) * -1) 0;\n margin: calc(calc(16px / 2) * -1) 0;\n margin: calc(var(--space-small) * -1) 0;\n}\n";
|
|
793
|
-
var styles$6 = {"bulkActions":"v-GrdlFpBLk-"};
|
|
794
|
-
styleInject_es.styleInject(css_248z$6);
|
|
795
|
-
|
|
796
|
-
// This component is meant to capture the props of the DataList.BulkActions
|
|
797
|
-
function DataListBulkActions(
|
|
798
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
799
|
-
_) {
|
|
800
|
-
return null;
|
|
801
|
-
}
|
|
802
|
-
function InternalDataListBulkActions() {
|
|
803
|
-
const { bulkActionsComponent } = useDataListContext();
|
|
804
|
-
if (!bulkActionsComponent)
|
|
805
|
-
return null;
|
|
806
|
-
const { children } = bulkActionsComponent.props;
|
|
807
|
-
const { sm } = useResponsiveSizing();
|
|
808
|
-
// Collapse all actions under "More actions" when breakpoint is smaller than sm
|
|
809
|
-
const itemsToExpose = sm ? 3 : 0;
|
|
810
|
-
return (React__default["default"].createElement("div", { className: styles$6.bulkActions },
|
|
811
|
-
React__default["default"].createElement(DataListActions, { itemsToExpose: itemsToExpose }, children)));
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
function DataListHeaderCheckbox({ children }) {
|
|
815
|
-
const { sm } = useResponsiveSizing();
|
|
816
|
-
const { data, totalCount } = useDataListContext();
|
|
817
|
-
const { canSelectAll, hasAtLeastOneSelected, isSelectAll, selectedCount, selectedIDs, selected, onSelectAll, onSelect, } = useBatchSelect();
|
|
818
|
-
// If there's no onSelectAll or onSelect, we don't need to render the checkbox.
|
|
819
|
-
if (!canSelectAll)
|
|
820
|
-
return children;
|
|
821
|
-
const deselectText = sm ? "Deselect All" : "Deselect";
|
|
822
|
-
const selectedLabel = selectedCount ? `${selectedCount} selected` : "";
|
|
823
|
-
return (React__default["default"].createElement("div", { className: styles$g.selectable },
|
|
824
|
-
React__default["default"].createElement("div", { className: classnames__default["default"](styles$g.selectAllCheckbox, {
|
|
825
|
-
[styles$g.visible]: canSelectAll,
|
|
826
|
-
}) },
|
|
827
|
-
React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: isIndeterminate(), onChange: handleSelectAll },
|
|
828
|
-
React__default["default"].createElement("div", { className: styles$g.srOnly }, selectedLabel))),
|
|
829
|
-
React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: hasAtLeastOneSelected, initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$g.batchSelectContainer },
|
|
830
|
-
React__default["default"].createElement("div", { className: styles$g.headerBatchSelect },
|
|
831
|
-
Boolean(selectedCount) && React__default["default"].createElement(Text.Text, null,
|
|
832
|
-
selectedCount,
|
|
833
|
-
" selected"),
|
|
834
|
-
React__default["default"].createElement(Button.Button, { label: deselectText, onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect([]), type: "tertiary" })),
|
|
835
|
-
React__default["default"].createElement(InternalDataListBulkActions, null)) })));
|
|
836
|
-
function isIndeterminate() {
|
|
837
|
-
if (isSelectAll)
|
|
838
|
-
return selectedIDs.length > 0;
|
|
839
|
-
return selectedCount > 0 && !isAllSelected();
|
|
840
|
-
}
|
|
841
|
-
function isAllSelected() {
|
|
842
|
-
if (isSelectAll)
|
|
843
|
-
return true;
|
|
844
|
-
// If there's a totalCount, we can use that to accurately determine if the
|
|
845
|
-
// user have "selected all".
|
|
846
|
-
if (totalCount) {
|
|
847
|
-
return totalCount === selectedCount;
|
|
848
|
-
}
|
|
849
|
-
// Otherwise, we'll use the total count of data. This is not as reliable, as
|
|
850
|
-
// it's possible that the would select all loaded data while we're
|
|
851
|
-
// loading more. It's still hard to get to that state as the load more
|
|
852
|
-
// triggers before you see the last item.
|
|
853
|
-
return data.length > 0 && selectedCount >= data.length;
|
|
854
|
-
}
|
|
855
|
-
function handleSelectAll() {
|
|
856
|
-
if (isAllSelected()) {
|
|
857
|
-
return onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll([]);
|
|
858
|
-
}
|
|
859
|
-
onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll({ totalCount: getTotalCount(), unselected: [] });
|
|
860
|
-
}
|
|
861
|
-
function getTotalCount() {
|
|
862
|
-
if (selected && "totalCount" in selected)
|
|
863
|
-
return selected.totalCount;
|
|
864
|
-
if (totalCount)
|
|
865
|
-
return totalCount;
|
|
866
|
-
return 0;
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
function DataListHeader() {
|
|
871
|
-
const breakpoints = useResponsiveSizing();
|
|
872
|
-
const { headerVisibility = { xs: true, sm: true, md: true, lg: true, xl: true }, headers, layoutBreakpoints, } = useDataListContext();
|
|
873
|
-
const { hasAtLeastOneSelected } = useBatchSelect();
|
|
874
|
-
const size = getVisibleSize();
|
|
875
|
-
const { layout } = useActiveLayout();
|
|
876
|
-
const visible = headerVisibility[size];
|
|
877
|
-
if ((!visible && !hasAtLeastOneSelected) || !layout)
|
|
878
|
-
return null;
|
|
879
|
-
const headerData = generateHeaderElements(headers);
|
|
880
|
-
if (!headerData)
|
|
881
|
-
return null;
|
|
882
|
-
return (React__default["default"].createElement("div", { className: styles$g.headerTitles },
|
|
883
|
-
React__default["default"].createElement(DataListHeaderCheckbox, null, layout(headerData))));
|
|
884
|
-
function getVisibleSize() {
|
|
885
|
-
const visibilityKeys = Object.keys(headerVisibility);
|
|
886
|
-
const headerBreakpoints = sortBreakpoints(visibilityKeys).reverse();
|
|
887
|
-
const visibleHeaderSize = headerBreakpoints.find(key => breakpoints[key]);
|
|
888
|
-
return visibleHeaderSize || layoutBreakpoints[0];
|
|
889
|
-
}
|
|
890
|
-
}
|
|
891
|
-
|
|
892
|
-
function DataListSort() {
|
|
893
|
-
const { sorting, headers } = useDataListContext();
|
|
894
|
-
if (!sorting)
|
|
895
|
-
return null;
|
|
896
|
-
const { sortable, state, onSort } = sorting;
|
|
897
|
-
const sortByOptions = getSortByOptions();
|
|
898
|
-
return (React__default["default"].createElement(Combobox.Combobox, { onSelect: selection => handleKeyChange(selection[0].id.toString()), selected: [
|
|
899
|
-
{
|
|
900
|
-
id: getSelectedSortID(),
|
|
901
|
-
label: (state === null || state === void 0 ? void 0 : state.order) || "",
|
|
902
|
-
},
|
|
903
|
-
] },
|
|
904
|
-
React__default["default"].createElement(Combobox.Combobox.Activator, null,
|
|
905
|
-
React__default["default"].createElement(Chip.Chip, { heading: "Sort", label: getButtonLabel(), variation: state ? "base" : "subtle" }, !state && (React__default["default"].createElement(Chip.Chip.Suffix, null,
|
|
906
|
-
React__default["default"].createElement(Icon.Icon, { name: "arrowDown", size: "small" }))))),
|
|
907
|
-
sortByOptions.map(({ label, value }) => (React__default["default"].createElement(Combobox.Combobox.Option, { key: value, id: value, label: label })))));
|
|
908
|
-
function getSortByOptions() {
|
|
909
|
-
const options = sortable.reduce((acc, sort) => {
|
|
910
|
-
const label = headers[sort.key];
|
|
911
|
-
if (!label)
|
|
912
|
-
return acc;
|
|
913
|
-
const customOptions = sort.options;
|
|
914
|
-
if (customOptions) {
|
|
915
|
-
customOptions.forEach(option => {
|
|
916
|
-
acc.push({
|
|
917
|
-
label: option.label || "",
|
|
918
|
-
value: JSON.stringify({
|
|
919
|
-
key: sort.key,
|
|
920
|
-
order: option.order,
|
|
921
|
-
label: option.label,
|
|
922
|
-
id: option.id,
|
|
923
|
-
}),
|
|
924
|
-
});
|
|
925
|
-
});
|
|
926
|
-
return acc;
|
|
927
|
-
}
|
|
928
|
-
acc.push({
|
|
929
|
-
label: `${label} (A-Z)`,
|
|
930
|
-
value: JSON.stringify({
|
|
931
|
-
key: sort.key,
|
|
932
|
-
order: "asc",
|
|
933
|
-
label: label,
|
|
934
|
-
id: sort.key,
|
|
935
|
-
}),
|
|
936
|
-
});
|
|
937
|
-
acc.push({
|
|
938
|
-
label: `${label} (Z-A)`,
|
|
939
|
-
value: JSON.stringify({
|
|
940
|
-
key: sort.key,
|
|
941
|
-
order: "desc",
|
|
942
|
-
label: label,
|
|
943
|
-
id: sort.key,
|
|
944
|
-
}),
|
|
945
|
-
});
|
|
946
|
-
return acc;
|
|
947
|
-
}, []);
|
|
948
|
-
// Inject a none option as the first option
|
|
949
|
-
options.unshift({ label: "None", value: "none" });
|
|
950
|
-
return options;
|
|
951
|
-
}
|
|
952
|
-
function getButtonLabel() {
|
|
953
|
-
const selectedOption = sortByOptions.find(option => option.value === getSelectedSortID());
|
|
954
|
-
return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.label) || "";
|
|
955
|
-
}
|
|
956
|
-
function handleKeyChange(value) {
|
|
957
|
-
if (value && value !== "none") {
|
|
958
|
-
const { key, order, label, id } = JSON.parse(value);
|
|
959
|
-
onSort({ key, order: order, label, id });
|
|
960
|
-
return;
|
|
961
|
-
}
|
|
962
|
-
onSort(undefined);
|
|
963
|
-
}
|
|
964
|
-
function getSelectedSortID() {
|
|
965
|
-
const selectedSortID = {
|
|
966
|
-
key: state === null || state === void 0 ? void 0 : state.key,
|
|
967
|
-
order: state === null || state === void 0 ? void 0 : state.order,
|
|
968
|
-
label: state === null || state === void 0 ? void 0 : state.label,
|
|
969
|
-
id: state === null || state === void 0 ? void 0 : state.id,
|
|
970
|
-
};
|
|
971
|
-
return JSON.stringify(selectedSortID);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
function useShowHeader() {
|
|
976
|
-
const { headerVisibility } = useDataListContext();
|
|
977
|
-
if (headerVisibility === undefined)
|
|
978
|
-
return true;
|
|
979
|
-
const sizes = useResponsiveSizing();
|
|
980
|
-
const sizeKeys = Object.keys(sizes);
|
|
981
|
-
const showHeader = sizeKeys.reduce((previous, breakpoint) => {
|
|
982
|
-
const isHeaderVisible = headerVisibility[breakpoint] || false;
|
|
983
|
-
const isBreakpointTriggered = sizes[breakpoint];
|
|
984
|
-
return previous || (isBreakpointTriggered && isHeaderVisible);
|
|
985
|
-
}, false);
|
|
986
|
-
return showHeader;
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
// This component is meant to capture the props of the DataList.Filters
|
|
990
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
991
|
-
function DataListFilters(_) {
|
|
992
|
-
return null;
|
|
993
|
-
}
|
|
994
|
-
/**
|
|
995
|
-
* Renders the DataList.Filters component
|
|
996
|
-
*/
|
|
997
|
-
function InternalDataListFilters() {
|
|
998
|
-
const { children: parentChildren } = useDataListContext();
|
|
999
|
-
const showHeader = useShowHeader();
|
|
1000
|
-
const showSortButton = !showHeader;
|
|
1001
|
-
const component = getCompoundComponent(parentChildren, DataListFilters);
|
|
1002
|
-
if (!showSortButton && !component)
|
|
1003
|
-
return null;
|
|
1004
|
-
const children = component === null || component === void 0 ? void 0 : component.props.children;
|
|
1005
|
-
return (React__default["default"].createElement(DataListOverflowFade, null,
|
|
1006
|
-
children && children,
|
|
1007
|
-
showSortButton && React__default["default"].createElement(DataListSort, null)));
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
var css_248z$5 = ".PGOHzrMh374- {\n --offset: 1px;\n --sticky-header-transition-properties: var(--timing-base) ease-in-out;\n\n position: sticky;\n top: calc(1px * -1);\n top: calc(var(--offset) * -1);\n z-index: 1;\n z-index: var(--elevation-base);\n padding-top: 1px;\n padding-top: var(--offset);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n/**\n * Draw a border that gets covered by the column headers border when it shows up.\n *\n * Mostly to prevent us from writing some complex JS to remove the border when\n * the column headers show up.\n */\n\n.PGOHzrMh374-::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n left: 50%;\n z-index: -1;\n width: 0;\n height: 0;\n background-color: rgb(217, 223, 225);\n background-color: var(--color-border);\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n transition: height var(--sticky-header-transition-properties)\n 100ms,\n width var(--sticky-header-transition-properties);\n transition: height var(--sticky-header-transition-properties)\n var(--timing-quick),\n width var(--sticky-header-transition-properties);\n}\n\n.PGjWc5ocjpI-::before {\n width: 100%;\n height: calc(16px / 8);\n height: var(--border-thick);\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) 100ms;\n transition: height var(--sticky-header-transition-properties),\n width var(--sticky-header-transition-properties) var(--timing-quick);\n}\n";
|
|
1011
|
-
var styles$5 = {"header":"PGOHzrMh374-","stuck":"PGjWc5ocjpI-"};
|
|
1012
|
-
styleInject_es.styleInject(css_248z$5);
|
|
1013
|
-
|
|
1014
|
-
function DataListStickyHeader({ children }) {
|
|
1015
|
-
const [isStuck, setIsStuck] = React.useState(false);
|
|
1016
|
-
const ref = React.useRef(null);
|
|
1017
|
-
const handleObserver = React.useCallback(([e]) => setIsStuck(e.intersectionRatio < 1), [setIsStuck]);
|
|
1018
|
-
React.useEffect(() => {
|
|
1019
|
-
if (!window.IntersectionObserver)
|
|
1020
|
-
return;
|
|
1021
|
-
const observer = new IntersectionObserver(handleObserver, { threshold: 1 });
|
|
1022
|
-
ref.current && observer.observe(ref.current);
|
|
1023
|
-
return () => {
|
|
1024
|
-
ref.current && observer.unobserve(ref.current);
|
|
1025
|
-
};
|
|
1026
|
-
}, [handleObserver, ref.current]);
|
|
1027
|
-
return (React__default["default"].createElement("div", { "data-testid": DATA_LIST_STICKY_HEADER_TEST_ID, ref: ref, className: classnames__default["default"](styles$5.header, { [styles$5.stuck]: isStuck }) }, children));
|
|
1028
|
-
}
|
|
1029
|
-
|
|
1030
|
-
var css_248z$4 = ".tj0MOMhLEEY- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.SaPMOnvw-3c- {\n --transition-properties: var(--timing-base) ease-in-out;\n --button-offset: calc(var(--space-largest) - var(--space-smaller));\n\n position: absolute;\n top: 50%;\n right: calc((16px * 3) - (16px / 4));\n right: calc(calc(16px * 3) - calc(16px / 4));\n right: var(--button-offset);\n visibility: hidden;\n width: 0;\n padding: calc(16px / 4) 0;\n padding: var(--space-smaller) 0;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n opacity: 0;\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n transition: opacity 200ms ease-in-out,\n width 200ms ease-in-out, visibility 200ms ease-in-out;\n transition: opacity var(--transition-properties),\n width var(--transition-properties), visibility var(--transition-properties);\n}\n\n._3S1-91v2SYI- {\n visibility: visible;\n width: calc(100% - var(--button-offset));\n opacity: 1;\n}\n\n@media (min-width: 768px) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n padding: 0;\n background-color: transparent;\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n transition: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n.SaPMOnvw-3c-,\n._3S1-91v2SYI- {\n position: static;\n visibility: visible;\n width: auto;\n padding: 0;\n background-color: transparent;\n opacity: 1;\n -webkit-transform: none;\n transform: none;\n transition: none;\n}\n }\n\n._9GlBktsUALw- {\n display: block;\n}\n\n@media (min-width: 768px) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._9GlBktsUALw- {\n display: none;\n}\n }\n\n/*\n * No Filters Styling\n *\n * When there are no filters, the search input is always visible.\n * ------------------------------------------------------------------------- */\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n position: static;\n visibility: visible;\n width: auto;\n opacity: 1;\n transition: none;\n}\n\n@media (min-width: 768px) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n@media (--medium-screens-and-up) {\n\n._3Pjrt42x454- .SaPMOnvw-3c- {\n max-width: 30%;\n}\n }\n\n._3Pjrt42x454- ._9GlBktsUALw- {\n display: none;\n}\n";
|
|
1031
|
-
var styles$4 = {"wrapper":"tj0MOMhLEEY-","searchInput":"SaPMOnvw-3c-","searchInputVisible":"_3S1-91v2SYI-","searchButton":"_9GlBktsUALw-","withNoFilters":"_3Pjrt42x454-"};
|
|
1032
|
-
styleInject_es.styleInject(css_248z$4);
|
|
1033
|
-
|
|
1034
|
-
const DATA_LIST_SEARCH_TEST_ID = "ATL-DataList-Search-input-wrapper";
|
|
1035
|
-
// This component is meant to capture the props of the DataList.Search
|
|
1036
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1037
|
-
function DataListSearch(_) {
|
|
1038
|
-
return null;
|
|
1039
|
-
}
|
|
1040
|
-
/**
|
|
1041
|
-
* Renders the DataList.Search component.
|
|
1042
|
-
*/
|
|
1043
|
-
function InternalDataListSearch() {
|
|
1044
|
-
const inputRef = React.useRef(null);
|
|
1045
|
-
const [visible, setVisible] = React.useState(false);
|
|
1046
|
-
const { searchComponent, filterComponent, sorting, title } = useDataListContext();
|
|
1047
|
-
const debouncedSearch = React.useCallback(debounce__default["default"]((value) => { var _a; return (_a = searchComponent === null || searchComponent === void 0 ? void 0 : searchComponent.props) === null || _a === void 0 ? void 0 : _a.onSearch(value); }, SEARCH_DEBOUNCE_DELAY), [searchComponent === null || searchComponent === void 0 ? void 0 : searchComponent.props.onSearch]);
|
|
1048
|
-
if (!searchComponent)
|
|
1049
|
-
return null;
|
|
1050
|
-
const { placeholder, initialValue } = searchComponent.props;
|
|
1051
|
-
return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$4.wrapper, {
|
|
1052
|
-
[styles$4.withNoFilters]: !filterComponent && !sorting,
|
|
1053
|
-
}) },
|
|
1054
|
-
React__default["default"].createElement("div", { "data-testid": DATA_LIST_SEARCH_TEST_ID, className: classnames__default["default"](styles$4.searchInput, {
|
|
1055
|
-
[styles$4.searchInputVisible]: visible,
|
|
1056
|
-
}) },
|
|
1057
|
-
React__default["default"].createElement(InputText.InputText
|
|
1058
|
-
// If the initial value changes, reset the input.
|
|
1059
|
-
, {
|
|
1060
|
-
// If the initial value changes, reset the input.
|
|
1061
|
-
key: initialValue, defaultValue: initialValue, ref: inputRef, placeholder: getPlaceholder(), onChange: debouncedSearch, prefix: { icon: "search" }, clearable: "always" })),
|
|
1062
|
-
React__default["default"].createElement("div", { className: styles$4.searchButton },
|
|
1063
|
-
React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: visible, initialChild: React__default["default"].createElement(Button.Button, { variation: "subtle", icon: "search", ariaLabel: "Search", onClick: toggleSearch }), switchTo: React__default["default"].createElement(Button.Button, { variation: "subtle", icon: "remove", ariaLabel: "Close search bar", onClick: toggleSearch }) }))));
|
|
1064
|
-
function getPlaceholder() {
|
|
1065
|
-
if (placeholder)
|
|
1066
|
-
return placeholder;
|
|
1067
|
-
if (title)
|
|
1068
|
-
return `Search ${title}...`;
|
|
1069
|
-
return `Search...`;
|
|
1070
|
-
}
|
|
1071
|
-
function toggleSearch() {
|
|
1072
|
-
const visibility = !visible;
|
|
1073
|
-
setVisible(visibility);
|
|
1074
|
-
if (visibility && inputRef.current) {
|
|
1075
|
-
setTimeout(inputRef.current.focus, design.tokens["timing-quick"]);
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
1078
|
-
}
|
|
1079
|
-
|
|
1080
|
-
var css_248z$3 = ".zg3w9nQga-M- {\n display: -ms-flexbox;\n display: flex;\n box-sizing: border-box;\n padding: calc(16px * 1);\n padding: var(--space-base);\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-direction: column;\n flex-direction: column;\n row-gap: calc(16px * 1);\n row-gap: var(--space-base);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex: 1;\n flex: 1;\n}\n";
|
|
1081
|
-
var styles$3 = {"emptyStateWrapper":"zg3w9nQga-M-"};
|
|
1082
|
-
styleInject_es.styleInject(css_248z$3);
|
|
1083
|
-
|
|
1084
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1085
|
-
function DataListEmptyState(_) {
|
|
1086
|
-
return null;
|
|
1087
|
-
}
|
|
1088
|
-
function InternalDataListEmptyState() {
|
|
1089
|
-
const { emptyStateComponents: components, filtered } = React.useContext(DataListContext);
|
|
1090
|
-
const { message, action } = getMessages();
|
|
1091
|
-
return (React__default["default"].createElement("div", { className: styles$3.emptyStateWrapper },
|
|
1092
|
-
React__default["default"].createElement(Text.Text, { align: "center" }, message),
|
|
1093
|
-
renderButton(action)));
|
|
1094
|
-
function getMessages() {
|
|
1095
|
-
const { defaultEmptyState, filteredEmptyState } = getEmptyStates(components);
|
|
1096
|
-
if (filtered) {
|
|
1097
|
-
return {
|
|
1098
|
-
message: (filteredEmptyState === null || filteredEmptyState === void 0 ? void 0 : filteredEmptyState.props.message) || EMPTY_FILTER_RESULTS_MESSAGE,
|
|
1099
|
-
action: filteredEmptyState === null || filteredEmptyState === void 0 ? void 0 : filteredEmptyState.props.action,
|
|
1100
|
-
};
|
|
1101
|
-
}
|
|
1102
|
-
return {
|
|
1103
|
-
message: (defaultEmptyState === null || defaultEmptyState === void 0 ? void 0 : defaultEmptyState.props.message) || EMPTY_RESULTS_MESSAGE,
|
|
1104
|
-
action: defaultEmptyState === null || defaultEmptyState === void 0 ? void 0 : defaultEmptyState.props.action,
|
|
1105
|
-
};
|
|
1106
|
-
}
|
|
1107
|
-
}
|
|
1108
|
-
function renderButton(action) {
|
|
1109
|
-
if (action) {
|
|
1110
|
-
if (action.type === Button.Button) {
|
|
1111
|
-
return React.cloneElement(action, {
|
|
1112
|
-
variation: action.props.variation || "subtle",
|
|
1113
|
-
});
|
|
1114
|
-
}
|
|
1115
|
-
throw new Error(EMPTY_STATE_ACTION_BUTTON_ONLY_ERROR);
|
|
1116
|
-
}
|
|
1117
|
-
return;
|
|
1118
|
-
}
|
|
1119
|
-
function getEmptyStates(components) {
|
|
1120
|
-
const defaultEmptyState = components === null || components === void 0 ? void 0 : components.find(es => es.props.type === "empty" || es.props.type === undefined);
|
|
1121
|
-
const filteredEmptyState = components === null || components === void 0 ? void 0 : components.find(es => es.props.type === "filtered");
|
|
1122
|
-
return { defaultEmptyState, filteredEmptyState };
|
|
1123
|
-
}
|
|
1124
|
-
|
|
1125
|
-
var css_248z$2 = ".IC-Y9bTIVFo- {\n position: relative;\n -webkit-transform: translateY(calc((16px * 3) * -1));\n -webkit-transform: translateY(calc(calc(16px * 3) * -1));\n -webkit-transform: translateY(calc(var(--space-largest) * -1));\n transform: translateY(calc((16px * 3) * -1));\n transform: translateY(calc(calc(16px * 3) * -1));\n transform: translateY(calc(var(--space-largest) * -1));\n}\n\n.PbZLGpbI6ZM-,\n._6zA6B-jmz6o- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: center;\n justify-content: center;\n padding: calc(16px / 2);\n padding: var(--space-small);\n}\n\n._6zA6B-jmz6o- {\n opacity: 0;\n -webkit-animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n -webkit-animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n animation: gZ4DUv82g5I- 200ms ease 200ms forwards;\n animation: gZ4DUv82g5I- var(--timing-base) ease var(--timing-base) forwards;\n}\n\n@-webkit-keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes gZ4DUv82g5I- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";
|
|
1126
|
-
var styles$2 = {"trigger":"IC-Y9bTIVFo-","loadingMore":"PbZLGpbI6ZM-","backToTop":"_6zA6B-jmz6o-","fadeIn":"gZ4DUv82g5I-"};
|
|
1127
|
-
styleInject_es.styleInject(css_248z$2);
|
|
1128
|
-
|
|
1129
|
-
function DataListLoadMoreTrigger() {
|
|
1130
|
-
const { onLoadMore } = useDataListContext();
|
|
1131
|
-
const [inViewRef, isInView] = useInView.useInView();
|
|
1132
|
-
React.useEffect(() => {
|
|
1133
|
-
isInView && (onLoadMore === null || onLoadMore === void 0 ? void 0 : onLoadMore());
|
|
1134
|
-
}, [isInView]);
|
|
1135
|
-
return (React__default["default"].createElement("div", { ref: inViewRef, className: styles$2.trigger, "data-testid": DATA_LOAD_MORE_TEST_ID }));
|
|
1136
|
-
}
|
|
1137
|
-
|
|
1138
|
-
const MAX_DATA_COUNT = 50;
|
|
1139
|
-
function DataListLoadMore({ onBackToTop }) {
|
|
1140
|
-
const { loadingState, data } = useDataListContext();
|
|
1141
|
-
const showBackToTop = data.length > MAX_DATA_COUNT && loadingState !== "loadingMore";
|
|
1142
|
-
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
1143
|
-
React__default["default"].createElement(DataListLoadMoreTrigger, { key: data.length }),
|
|
1144
|
-
loadingState === "loadingMore" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_LOADING_MORE_SPINNER_TEST_ID, className: styles$2.loadingMore },
|
|
1145
|
-
React__default["default"].createElement(Spinner.Spinner, { size: "small" }))),
|
|
1146
|
-
showBackToTop && (React__default["default"].createElement("div", { className: styles$2.backToTop },
|
|
1147
|
-
React__default["default"].createElement(Button.Button, { label: "Back to top", onClick: onBackToTop, size: "small", variation: "subtle" })))));
|
|
1148
|
-
}
|
|
1149
|
-
|
|
1150
|
-
var css_248z$1 = ".iyg43v-S9yU- {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n min-height: 44px;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: none;\n border-radius: 0;\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n text-align: left;\n background: none;\n cursor: pointer;\n transition: background 200ms ease;\n transition: background var(--timing-base) ease;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: justify;\n justify-content: space-between;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.iyg43v-S9yU-:hover,\n.iyg43v-S9yU-:focus {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n.iyg43v-S9yU-:focus,\n.iyg43v-S9yU-:focus-visible {\n outline: none;\n}\n\n.iyg43v-S9yU-:focus-visible {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.AUJNqz93ZDA- {\n font-weight: 500;\n}\n";
|
|
1151
|
-
var styles$1 = {"action":"iyg43v-S9yU-","label":"AUJNqz93ZDA-"};
|
|
1152
|
-
styleInject_es.styleInject(css_248z$1);
|
|
1153
|
-
|
|
1154
|
-
function DataListAction({ label, icon, destructive, visible = () => true, onClick, }) {
|
|
1155
|
-
const { activeItem } = useDataListLayoutActionsContext();
|
|
1156
|
-
// Don't render if the item is not visible
|
|
1157
|
-
if (activeItem && !visible(activeItem)) {
|
|
1158
|
-
return null;
|
|
1159
|
-
}
|
|
1160
|
-
const color = destructive ? "critical" : "heading";
|
|
1161
|
-
function getActionLabel() {
|
|
1162
|
-
if (typeof label === "string") {
|
|
1163
|
-
return label;
|
|
1164
|
-
}
|
|
1165
|
-
if (activeItem) {
|
|
1166
|
-
return label(activeItem);
|
|
1167
|
-
}
|
|
1168
|
-
}
|
|
1169
|
-
return (React__default["default"].createElement("button", { type: "button", className: styles$1.action, onClick: handleClick },
|
|
1170
|
-
React__default["default"].createElement(Typography.Typography, { textColor: color },
|
|
1171
|
-
React__default["default"].createElement("span", { className: styles$1.label }, getActionLabel())),
|
|
1172
|
-
icon && React__default["default"].createElement(Icon.Icon, { name: icon, color: color })));
|
|
1173
|
-
function handleClick() {
|
|
1174
|
-
if (activeItem) {
|
|
1175
|
-
onClick === null || onClick === void 0 ? void 0 : onClick(activeItem);
|
|
1176
|
-
}
|
|
1177
|
-
else {
|
|
1178
|
-
onClick === null || onClick === void 0 ? void 0 : onClick();
|
|
1179
|
-
}
|
|
1180
|
-
}
|
|
1181
|
-
}
|
|
1182
|
-
|
|
1183
|
-
var css_248z = "._0m75bgCVBhk- {\n visibility: hidden;\n}\n";
|
|
1184
|
-
var styles = {"hidden":"_0m75bgCVBhk-"};
|
|
1185
|
-
styleInject_es.styleInject(css_248z);
|
|
1186
|
-
|
|
1187
|
-
function DataListLayoutActions() {
|
|
1188
|
-
const { itemActionComponent, loadingState } = useDataListContext();
|
|
1189
|
-
const { setHasInLayoutActions } = useDataListLayoutContext();
|
|
1190
|
-
const { children: actionsChildren } = (itemActionComponent === null || itemActionComponent === void 0 ? void 0 : itemActionComponent.props) || {};
|
|
1191
|
-
const actions = React.Children.toArray(actionsChildren);
|
|
1192
|
-
const hasActions = actions.length > 0;
|
|
1193
|
-
React.useEffect(() => {
|
|
1194
|
-
setHasInLayoutActions(hasActions);
|
|
1195
|
-
return () => {
|
|
1196
|
-
setHasInLayoutActions(false);
|
|
1197
|
-
};
|
|
1198
|
-
}, []);
|
|
1199
|
-
if (loadingState === "initial") {
|
|
1200
|
-
return React__default["default"].createElement(Glimmer.Glimmer, { shape: "square", size: "large" });
|
|
1201
|
-
}
|
|
1202
|
-
if (!hasActions)
|
|
1203
|
-
return null;
|
|
1204
|
-
return (React__default["default"].createElement(DataListLayoutActionsWrapper, null,
|
|
1205
|
-
React__default["default"].createElement(DataListItemActionsOverflow, { actions: actions })));
|
|
1206
|
-
}
|
|
1207
|
-
function DataListLayoutActionsWrapper({ children }) {
|
|
1208
|
-
const { isInLayoutProvider } = useDataListLayoutContext();
|
|
1209
|
-
if (isInLayoutProvider)
|
|
1210
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
1211
|
-
return React__default["default"].createElement("div", { className: styles.hidden }, children);
|
|
1212
|
-
}
|
|
1213
|
-
|
|
1214
|
-
// This component is meant to capture the props of the DataList.Filters
|
|
1215
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1216
|
-
function DataListStatusBar(_) {
|
|
1217
|
-
return null;
|
|
1218
|
-
}
|
|
1219
|
-
/**
|
|
1220
|
-
* Renders the DataList.StatusBar component
|
|
1221
|
-
*/
|
|
1222
|
-
function InternalDataListStatusBar() {
|
|
1223
|
-
const { children: parentChildren } = useDataListContext();
|
|
1224
|
-
const component = getCompoundComponent(parentChildren, DataListStatusBar);
|
|
1225
|
-
if (!component)
|
|
1226
|
-
return null;
|
|
1227
|
-
const children = component === null || component === void 0 ? void 0 : component.props.children;
|
|
1228
|
-
return React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
function DataList(_a) {
|
|
1232
|
-
var { selected = [], sorting } = _a, props = tslib_es6.__rest(_a, ["selected", "sorting"]);
|
|
1233
|
-
const [layouts, setLayouts] = React.useState({});
|
|
1234
|
-
const layoutBreakpoints = React.useMemo(() => sortBreakpoints(Object.keys(layouts)), [layouts]);
|
|
1235
|
-
const searchComponent = getCompoundComponent(props.children, DataListSearch);
|
|
1236
|
-
const filterComponent = getCompoundComponent(props.children, DataListFilters);
|
|
1237
|
-
const layoutComponents = getCompoundComponents(props.children, DataListLayout);
|
|
1238
|
-
const emptyStateComponents = getCompoundComponents(props.children, DataListEmptyState);
|
|
1239
|
-
const itemActionComponent = getCompoundComponent(props.children, DataListItemActions);
|
|
1240
|
-
const bulkActionsComponent = getCompoundComponent(props.children, DataListBulkActions);
|
|
1241
|
-
const headerCount = Object.keys(props.headers).length;
|
|
1242
|
-
const shouldRenderStickyHeader = !!filterComponent || !!searchComponent || headerCount > 0;
|
|
1243
|
-
return (React__default["default"].createElement(DataListContext.Provider, { value: Object.assign(Object.assign({ searchComponent,
|
|
1244
|
-
filterComponent,
|
|
1245
|
-
layoutComponents,
|
|
1246
|
-
emptyStateComponents,
|
|
1247
|
-
itemActionComponent,
|
|
1248
|
-
bulkActionsComponent,
|
|
1249
|
-
layoutBreakpoints,
|
|
1250
|
-
layouts,
|
|
1251
|
-
registerLayout }, props), { selected,
|
|
1252
|
-
// T !== DataListObject
|
|
1253
|
-
sorting: sorting }) },
|
|
1254
|
-
React__default["default"].createElement(InternalDataList, { shouldRenderStickyHeader: shouldRenderStickyHeader })));
|
|
1255
|
-
function registerLayout(size, children) {
|
|
1256
|
-
setLayouts(prev => (Object.assign(Object.assign({}, prev), { [size]: children })));
|
|
1257
|
-
}
|
|
1258
|
-
}
|
|
1259
|
-
function InternalDataList({ shouldRenderStickyHeader, }) {
|
|
1260
|
-
const { data, title, totalCount, loadingState = "none", layoutComponents, } = useDataListContext();
|
|
1261
|
-
const backToTopRef = React.useRef(null);
|
|
1262
|
-
const initialLoading = loadingState === "initial";
|
|
1263
|
-
const showEmptyState = !initialLoading && data.length === 0;
|
|
1264
|
-
const shouldRenderLoadMoreTrigger = !initialLoading && !showEmptyState;
|
|
1265
|
-
return (React__default["default"].createElement("div", { className: styles$g.wrapper },
|
|
1266
|
-
React__default["default"].createElement("div", { className: styles$g.titleContainer },
|
|
1267
|
-
title && React__default["default"].createElement(Heading.Heading, { level: 3 }, title),
|
|
1268
|
-
React__default["default"].createElement(DataListTotalCount, { totalCount: totalCount, loading: initialLoading })),
|
|
1269
|
-
React__default["default"].createElement("div", { ref: backToTopRef }),
|
|
1270
|
-
shouldRenderStickyHeader && (React__default["default"].createElement(DataListStickyHeader, null,
|
|
1271
|
-
React__default["default"].createElement("div", { className: styles$g.headerFilters },
|
|
1272
|
-
React__default["default"].createElement(InternalDataListFilters, null),
|
|
1273
|
-
React__default["default"].createElement(InternalDataListSearch, null)),
|
|
1274
|
-
React__default["default"].createElement(InternalDataListStatusBar, null),
|
|
1275
|
-
React__default["default"].createElement(DataListHeader, null))),
|
|
1276
|
-
initialLoading && React__default["default"].createElement(DataListLoadingState, null),
|
|
1277
|
-
showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
|
|
1278
|
-
layoutComponents,
|
|
1279
|
-
loadingState === "filtering" && (React__default["default"].createElement("div", { "data-testid": DATA_LIST_FILTERING_SPINNER_TEST_ID, className: styles$g.filtering },
|
|
1280
|
-
React__default["default"].createElement("div", { className: styles$g.filteringSpinner },
|
|
1281
|
-
React__default["default"].createElement(Spinner.Spinner, { size: "small" })))),
|
|
1282
|
-
shouldRenderLoadMoreTrigger && (React__default["default"].createElement(DataListLoadMore, { onBackToTop: handleBackToTop }))));
|
|
1283
|
-
function handleBackToTop() {
|
|
1284
|
-
var _a;
|
|
1285
|
-
// For testing purposes since jest doesn't know scrollIntoView.
|
|
1286
|
-
// This prevents consumer's tests from needing to mock scrollIntoView.
|
|
1287
|
-
if (!window.HTMLElement.prototype.scrollIntoView)
|
|
1288
|
-
return;
|
|
1289
|
-
(_a = backToTopRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
|
|
1290
|
-
behavior: "smooth",
|
|
1291
|
-
block: "nearest",
|
|
1292
|
-
inline: "start",
|
|
1293
|
-
});
|
|
1294
|
-
}
|
|
1295
|
-
}
|
|
1296
|
-
/**
|
|
1297
|
-
* Sets the layout that the DataList item and header will use.
|
|
1298
|
-
*/
|
|
1299
|
-
DataList.Layout = DataListLayout;
|
|
1300
|
-
/**
|
|
1301
|
-
* By using this component, we can render the actions anywhere in the layout
|
|
1302
|
-
* instead of being added automatically on hover.
|
|
1303
|
-
*/
|
|
1304
|
-
DataList.LayoutActions = DataListLayoutActions;
|
|
1305
|
-
/**
|
|
1306
|
-
* When the DataList is either empty and/or filtered, this component will be
|
|
1307
|
-
* rendered.
|
|
1308
|
-
*/
|
|
1309
|
-
DataList.EmptyState = DataListEmptyState;
|
|
1310
|
-
/**
|
|
1311
|
-
* Adds the filter components of your choosing to the DataList.
|
|
1312
|
-
*/
|
|
1313
|
-
DataList.Filters = DataListFilters;
|
|
1314
|
-
/**
|
|
1315
|
-
* Enables the search functionality of the DataList.
|
|
1316
|
-
*
|
|
1317
|
-
* Since the debounce is implemented within the component, it can only be an
|
|
1318
|
-
* uncontrolled component. Thus the lack of a `value` prop.
|
|
1319
|
-
*/
|
|
1320
|
-
DataList.Search = DataListSearch;
|
|
1321
|
-
/**
|
|
1322
|
-
* Defines the group actions you could do on a single DataList item.
|
|
1323
|
-
*/
|
|
1324
|
-
DataList.ItemActions = DataListItemActions;
|
|
1325
|
-
/**
|
|
1326
|
-
* Defines the action in a DataList. This should be used inside the
|
|
1327
|
-
* DataListItemActions component.
|
|
1328
|
-
*/
|
|
1329
|
-
DataList.ItemAction = DataListAction;
|
|
1330
|
-
/**
|
|
1331
|
-
* Defines the group actions you could do on multiple DataList items.
|
|
1332
|
-
*/
|
|
1333
|
-
DataList.BatchActions = DataListBulkActions;
|
|
1334
|
-
/**
|
|
1335
|
-
* Defines the batch action in a DataList. This should be used inside the
|
|
1336
|
-
* DataListBatchActions component.
|
|
1337
|
-
*/
|
|
1338
|
-
DataList.BatchAction = function DataListBatchAction(props) {
|
|
1339
|
-
return React__default["default"].createElement(DataListAction, Object.assign({}, props));
|
|
1340
|
-
};
|
|
1341
|
-
/**
|
|
1342
|
-
* Defines a status bar that is rendered between the filters and the header.
|
|
1343
|
-
*/
|
|
1344
|
-
DataList.StatusBar = DataListStatusBar;
|
|
1345
|
-
|
|
1346
|
-
exports.DataList = DataList;
|