@j2-health/design-system 0.2.0 → 0.2.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/index.cjs +96 -3614
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +48 -3551
- package/dist/index.js.map +1 -1
- package/dist/src/AppConfigProvider.cjs +13 -0
- package/dist/src/AppConfigProvider.cjs.map +1 -0
- package/dist/src/AppConfigProvider.js +13 -0
- package/dist/src/AppConfigProvider.js.map +1 -0
- package/dist/src/appTheme.cjs +268 -0
- package/dist/src/appTheme.cjs.map +1 -0
- package/dist/src/appTheme.js +268 -0
- package/dist/src/appTheme.js.map +1 -0
- package/dist/src/components/alert/Alert.cjs +95 -0
- package/dist/src/components/alert/Alert.cjs.map +1 -0
- package/dist/src/components/alert/Alert.js +78 -0
- package/dist/src/components/alert/Alert.js.map +1 -0
- package/dist/src/components/alert/Alert.module.css.cjs +9 -0
- package/dist/src/components/alert/Alert.module.css.cjs.map +1 -0
- package/dist/src/components/alert/Alert.module.css.js +9 -0
- package/dist/src/components/alert/Alert.module.css.js.map +1 -0
- package/dist/src/components/barchart/BarChart.cjs +148 -0
- package/dist/src/components/barchart/BarChart.cjs.map +1 -0
- package/dist/src/components/barchart/BarChart.js +148 -0
- package/dist/src/components/barchart/BarChart.js.map +1 -0
- package/dist/src/components/barchart/chart.module.css.cjs +9 -0
- package/dist/src/components/barchart/chart.module.css.cjs.map +1 -0
- package/dist/src/components/barchart/chart.module.css.js +9 -0
- package/dist/src/components/barchart/chart.module.css.js.map +1 -0
- package/dist/src/components/breadcrumb/Breadcrumb.cjs +38 -0
- package/dist/src/components/breadcrumb/Breadcrumb.cjs.map +1 -0
- package/dist/src/components/breadcrumb/Breadcrumb.js +21 -0
- package/dist/src/components/breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/src/components/bulkActionBar/BulkActionBar.cjs +81 -0
- package/dist/src/components/bulkActionBar/BulkActionBar.cjs.map +1 -0
- package/dist/src/components/bulkActionBar/BulkActionBar.js +81 -0
- package/dist/src/components/bulkActionBar/BulkActionBar.js.map +1 -0
- package/dist/src/components/button/Button.cjs +21 -0
- package/dist/src/components/button/Button.cjs.map +1 -0
- package/dist/src/components/button/Button.js +21 -0
- package/dist/src/components/button/Button.js.map +1 -0
- package/dist/src/components/card/Card.cjs +36 -0
- package/dist/src/components/card/Card.cjs.map +1 -0
- package/dist/src/components/card/Card.js +36 -0
- package/dist/src/components/card/Card.js.map +1 -0
- package/dist/src/components/checkbox/Checkbox.cjs +10 -0
- package/dist/src/components/checkbox/Checkbox.cjs.map +1 -0
- package/dist/src/components/checkbox/Checkbox.js +10 -0
- package/dist/src/components/checkbox/Checkbox.js.map +1 -0
- package/dist/src/components/checkboxTree/CheckboxTree.cjs +140 -0
- package/dist/src/components/checkboxTree/CheckboxTree.cjs.map +1 -0
- package/dist/src/components/checkboxTree/CheckboxTree.js +140 -0
- package/dist/src/components/checkboxTree/CheckboxTree.js.map +1 -0
- package/dist/src/components/checkboxTree/TreeNode.cjs +92 -0
- package/dist/src/components/checkboxTree/TreeNode.cjs.map +1 -0
- package/dist/src/components/checkboxTree/TreeNode.js +92 -0
- package/dist/src/components/checkboxTree/TreeNode.js.map +1 -0
- package/dist/src/components/checkboxTree/utils.cjs +59 -0
- package/dist/src/components/checkboxTree/utils.cjs.map +1 -0
- package/dist/src/components/checkboxTree/utils.js +59 -0
- package/dist/src/components/checkboxTree/utils.js.map +1 -0
- package/dist/src/components/collapse/Collapse.cjs +81 -0
- package/dist/src/components/collapse/Collapse.cjs.map +1 -0
- package/dist/src/components/collapse/Collapse.js +64 -0
- package/dist/src/components/collapse/Collapse.js.map +1 -0
- package/dist/src/components/collapse/Collapse.module.css.cjs +13 -0
- package/dist/src/components/collapse/Collapse.module.css.cjs.map +1 -0
- package/dist/src/components/collapse/Collapse.module.css.js +13 -0
- package/dist/src/components/collapse/Collapse.module.css.js.map +1 -0
- package/dist/src/components/drawer/Drawer.cjs +39 -0
- package/dist/src/components/drawer/Drawer.cjs.map +1 -0
- package/dist/src/components/drawer/Drawer.js +39 -0
- package/dist/src/components/drawer/Drawer.js.map +1 -0
- package/dist/src/components/dropdown/Dropdown.cjs +58 -0
- package/dist/src/components/dropdown/Dropdown.cjs.map +1 -0
- package/dist/src/components/dropdown/Dropdown.js +58 -0
- package/dist/src/components/dropdown/Dropdown.js.map +1 -0
- package/dist/src/components/filterform/FilterGroup.cjs +64 -0
- package/dist/src/components/filterform/FilterGroup.cjs.map +1 -0
- package/dist/src/components/filterform/FilterGroup.js +64 -0
- package/dist/src/components/filterform/FilterGroup.js.map +1 -0
- package/dist/src/components/filterform/FilterInput.cjs +175 -0
- package/dist/src/components/filterform/FilterInput.cjs.map +1 -0
- package/dist/src/components/filterform/FilterInput.js +158 -0
- package/dist/src/components/filterform/FilterInput.js.map +1 -0
- package/dist/src/components/filterform/FiltersForm.cjs +168 -0
- package/dist/src/components/filterform/FiltersForm.cjs.map +1 -0
- package/dist/src/components/filterform/FiltersForm.js +168 -0
- package/dist/src/components/filterform/FiltersForm.js.map +1 -0
- package/dist/src/components/filterform/FiltersForm.module.css.cjs +21 -0
- package/dist/src/components/filterform/FiltersForm.module.css.cjs.map +1 -0
- package/dist/src/components/filterform/FiltersForm.module.css.js +21 -0
- package/dist/src/components/filterform/FiltersForm.module.css.js.map +1 -0
- package/dist/src/components/filterform/filterHelpers.cjs +48 -0
- package/dist/src/components/filterform/filterHelpers.cjs.map +1 -0
- package/dist/src/components/filterform/filterHelpers.js +48 -0
- package/dist/src/components/filterform/filterHelpers.js.map +1 -0
- package/dist/src/components/filterform/useFilterField.cjs +210 -0
- package/dist/src/components/filterform/useFilterField.cjs.map +1 -0
- package/dist/src/components/filterform/useFilterField.js +193 -0
- package/dist/src/components/filterform/useFilterField.js.map +1 -0
- package/dist/src/components/filterform/useFiltersForm.cjs +160 -0
- package/dist/src/components/filterform/useFiltersForm.cjs.map +1 -0
- package/dist/src/components/filterform/useFiltersForm.js +160 -0
- package/dist/src/components/filterform/useFiltersForm.js.map +1 -0
- package/dist/src/components/form/Form.cjs +11 -0
- package/dist/src/components/form/Form.cjs.map +1 -0
- package/dist/src/components/form/Form.js +11 -0
- package/dist/src/components/form/Form.js.map +1 -0
- package/dist/src/components/icons/index.cjs +27 -0
- package/dist/src/components/icons/index.cjs.map +1 -0
- package/dist/src/components/icons/index.js +3 -0
- package/dist/src/components/icons/index.js.map +1 -0
- package/dist/src/components/input/AntdInput.cjs +13 -0
- package/dist/src/components/input/AntdInput.cjs.map +1 -0
- package/dist/src/components/input/AntdInput.js +13 -0
- package/dist/src/components/input/AntdInput.js.map +1 -0
- package/dist/src/components/input/AntdSearchInput.cjs +13 -0
- package/dist/src/components/input/AntdSearchInput.cjs.map +1 -0
- package/dist/src/components/input/AntdSearchInput.js +13 -0
- package/dist/src/components/input/AntdSearchInput.js.map +1 -0
- package/dist/src/components/input/Input.cjs +9 -0
- package/dist/src/components/input/Input.cjs.map +1 -0
- package/dist/src/components/input/Input.js +9 -0
- package/dist/src/components/input/Input.js.map +1 -0
- package/dist/src/components/inputnumber/InputNumber.cjs +32 -0
- package/dist/src/components/inputnumber/InputNumber.cjs.map +1 -0
- package/dist/src/components/inputnumber/InputNumber.js +32 -0
- package/dist/src/components/inputnumber/InputNumber.js.map +1 -0
- package/dist/src/components/inputnumber/InputNumber.module.css.cjs +9 -0
- package/dist/src/components/inputnumber/InputNumber.module.css.cjs.map +1 -0
- package/dist/src/components/inputnumber/InputNumber.module.css.js +9 -0
- package/dist/src/components/inputnumber/InputNumber.module.css.js.map +1 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs +52 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs.map +1 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.js +52 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.js.map +1 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs +48 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs.map +1 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js +48 -0
- package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js.map +1 -0
- package/dist/src/components/legacyNavMenu/UserProfile.cjs +78 -0
- package/dist/src/components/legacyNavMenu/UserProfile.cjs.map +1 -0
- package/dist/src/components/legacyNavMenu/UserProfile.js +78 -0
- package/dist/src/components/legacyNavMenu/UserProfile.js.map +1 -0
- package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs +42 -0
- package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs.map +1 -0
- package/dist/src/components/legacyNavMenu/UserProfile.module.css.js +42 -0
- package/dist/src/components/legacyNavMenu/UserProfile.module.css.js.map +1 -0
- package/dist/src/components/listpopover/ListPopover.cjs +125 -0
- package/dist/src/components/listpopover/ListPopover.cjs.map +1 -0
- package/dist/src/components/listpopover/ListPopover.js +125 -0
- package/dist/src/components/listpopover/ListPopover.js.map +1 -0
- package/dist/src/components/listpopover/ListPopover.module.css.cjs +9 -0
- package/dist/src/components/listpopover/ListPopover.module.css.cjs.map +1 -0
- package/dist/src/components/listpopover/ListPopover.module.css.js +9 -0
- package/dist/src/components/listpopover/ListPopover.module.css.js.map +1 -0
- package/dist/src/components/menu/Menu.cjs +18 -0
- package/dist/src/components/menu/Menu.cjs.map +1 -0
- package/dist/src/components/menu/Menu.js +18 -0
- package/dist/src/components/menu/Menu.js.map +1 -0
- package/dist/src/components/menu/Menu.module.css.cjs +12 -0
- package/dist/src/components/menu/Menu.module.css.cjs.map +1 -0
- package/dist/src/components/menu/Menu.module.css.js +12 -0
- package/dist/src/components/menu/Menu.module.css.js.map +1 -0
- package/dist/src/components/message/Message.module.css.cjs +9 -0
- package/dist/src/components/message/Message.module.css.cjs.map +1 -0
- package/dist/src/components/message/Message.module.css.js +9 -0
- package/dist/src/components/message/Message.module.css.js.map +1 -0
- package/dist/src/components/message/useMessage.cjs +55 -0
- package/dist/src/components/message/useMessage.cjs.map +1 -0
- package/dist/src/components/message/useMessage.js +55 -0
- package/dist/src/components/message/useMessage.js.map +1 -0
- package/dist/src/components/modal/Modal.cjs +32 -0
- package/dist/src/components/modal/Modal.cjs.map +1 -0
- package/dist/src/components/modal/Modal.js +32 -0
- package/dist/src/components/modal/Modal.js.map +1 -0
- package/dist/src/components/navMenu/NavMenu.cjs +132 -0
- package/dist/src/components/navMenu/NavMenu.cjs.map +1 -0
- package/dist/src/components/navMenu/NavMenu.js +115 -0
- package/dist/src/components/navMenu/NavMenu.js.map +1 -0
- package/dist/src/components/navMenu/NavMenu.module.css.cjs +18 -0
- package/dist/src/components/navMenu/NavMenu.module.css.cjs.map +1 -0
- package/dist/src/components/navMenu/NavMenu.module.css.js +18 -0
- package/dist/src/components/navMenu/NavMenu.module.css.js.map +1 -0
- package/dist/src/components/notification/Notification.module.css.cjs +9 -0
- package/dist/src/components/notification/Notification.module.css.cjs.map +1 -0
- package/dist/src/components/notification/Notification.module.css.js +9 -0
- package/dist/src/components/notification/Notification.module.css.js.map +1 -0
- package/dist/src/components/notification/useNotification.cjs +52 -0
- package/dist/src/components/notification/useNotification.cjs.map +1 -0
- package/dist/src/components/notification/useNotification.js +52 -0
- package/dist/src/components/notification/useNotification.js.map +1 -0
- package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs +21 -0
- package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs.map +1 -0
- package/dist/src/components/notificationModal/NotifcationModal.module.css.js +21 -0
- package/dist/src/components/notificationModal/NotifcationModal.module.css.js.map +1 -0
- package/dist/src/components/notificationModal/NotificationModal.cjs +57 -0
- package/dist/src/components/notificationModal/NotificationModal.cjs.map +1 -0
- package/dist/src/components/notificationModal/NotificationModal.js +57 -0
- package/dist/src/components/notificationModal/NotificationModal.js.map +1 -0
- package/dist/src/components/pagination/Pagination.cjs +65 -0
- package/dist/src/components/pagination/Pagination.cjs.map +1 -0
- package/dist/src/components/pagination/Pagination.js +65 -0
- package/dist/src/components/pagination/Pagination.js.map +1 -0
- package/dist/src/components/pagination/Pagination.module.css.cjs +6 -0
- package/dist/src/components/pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/src/components/pagination/Pagination.module.css.js +7 -0
- package/dist/src/components/pagination/Pagination.module.css.js.map +1 -0
- package/dist/src/components/popover/Popover.cjs +41 -0
- package/dist/src/components/popover/Popover.cjs.map +1 -0
- package/dist/src/components/popover/Popover.js +41 -0
- package/dist/src/components/popover/Popover.js.map +1 -0
- package/dist/src/components/popover/Popover.module.css.cjs +33 -0
- package/dist/src/components/popover/Popover.module.css.cjs.map +1 -0
- package/dist/src/components/popover/Popover.module.css.js +33 -0
- package/dist/src/components/popover/Popover.module.css.js.map +1 -0
- package/dist/src/components/progress/Progress.cjs +9 -0
- package/dist/src/components/progress/Progress.cjs.map +1 -0
- package/dist/src/components/progress/Progress.js +9 -0
- package/dist/src/components/progress/Progress.js.map +1 -0
- package/dist/src/components/radio/Radio.cjs +24 -0
- package/dist/src/components/radio/Radio.cjs.map +1 -0
- package/dist/src/components/radio/Radio.js +24 -0
- package/dist/src/components/radio/Radio.js.map +1 -0
- package/dist/src/components/rate/Rate.cjs +22 -0
- package/dist/src/components/rate/Rate.cjs.map +1 -0
- package/dist/src/components/rate/Rate.js +22 -0
- package/dist/src/components/rate/Rate.js.map +1 -0
- package/dist/src/components/select/AntdSelect.cjs +76 -0
- package/dist/src/components/select/AntdSelect.cjs.map +1 -0
- package/dist/src/components/select/AntdSelect.js +60 -0
- package/dist/src/components/select/AntdSelect.js.map +1 -0
- package/dist/src/components/select/Select.cjs +107 -0
- package/dist/src/components/select/Select.cjs.map +1 -0
- package/dist/src/components/select/Select.js +107 -0
- package/dist/src/components/select/Select.js.map +1 -0
- package/dist/src/components/select/SummarizedSelect.cjs +455 -0
- package/dist/src/components/select/SummarizedSelect.cjs.map +1 -0
- package/dist/src/components/select/SummarizedSelect.js +455 -0
- package/dist/src/components/select/SummarizedSelect.js.map +1 -0
- package/dist/src/components/select/SummarizedSelect.module.css.cjs +30 -0
- package/dist/src/components/select/SummarizedSelect.module.css.cjs.map +1 -0
- package/dist/src/components/select/SummarizedSelect.module.css.js +30 -0
- package/dist/src/components/select/SummarizedSelect.module.css.js.map +1 -0
- package/dist/src/components/skeleton/Skeleton.cjs +14 -0
- package/dist/src/components/skeleton/Skeleton.cjs.map +1 -0
- package/dist/src/components/skeleton/Skeleton.js +14 -0
- package/dist/src/components/skeleton/Skeleton.js.map +1 -0
- package/dist/src/components/spinner/Spinner.cjs +20 -0
- package/dist/src/components/spinner/Spinner.cjs.map +1 -0
- package/dist/src/components/spinner/Spinner.js +20 -0
- package/dist/src/components/spinner/Spinner.js.map +1 -0
- package/dist/src/components/steps/Steps.cjs +50 -0
- package/dist/src/components/steps/Steps.cjs.map +1 -0
- package/dist/src/components/steps/Steps.js +50 -0
- package/dist/src/components/steps/Steps.js.map +1 -0
- package/dist/src/components/steps/useSteps.cjs +56 -0
- package/dist/src/components/steps/useSteps.cjs.map +1 -0
- package/dist/src/components/steps/useSteps.js +56 -0
- package/dist/src/components/steps/useSteps.js.map +1 -0
- package/dist/src/components/switch/Switch.cjs +28 -0
- package/dist/src/components/switch/Switch.cjs.map +1 -0
- package/dist/src/components/switch/Switch.js +28 -0
- package/dist/src/components/switch/Switch.js.map +1 -0
- package/dist/src/components/table/Table.cjs +117 -0
- package/dist/src/components/table/Table.cjs.map +1 -0
- package/dist/src/components/table/Table.js +117 -0
- package/dist/src/components/table/Table.js.map +1 -0
- package/dist/src/components/table/Table.module.css.cjs +12 -0
- package/dist/src/components/table/Table.module.css.cjs.map +1 -0
- package/dist/src/components/table/Table.module.css.js +12 -0
- package/dist/src/components/table/Table.module.css.js.map +1 -0
- package/dist/src/components/tabs/Tabs.cjs +10 -0
- package/dist/src/components/tabs/Tabs.cjs.map +1 -0
- package/dist/src/components/tabs/Tabs.js +10 -0
- package/dist/src/components/tabs/Tabs.js.map +1 -0
- package/dist/src/components/tag/Tag.cjs +74 -0
- package/dist/src/components/tag/Tag.cjs.map +1 -0
- package/dist/src/components/tag/Tag.js +57 -0
- package/dist/src/components/tag/Tag.js.map +1 -0
- package/dist/src/components/tooltip/Tooltip.cjs +14 -0
- package/dist/src/components/tooltip/Tooltip.cjs.map +1 -0
- package/dist/src/components/tooltip/Tooltip.js +14 -0
- package/dist/src/components/tooltip/Tooltip.js.map +1 -0
- package/dist/src/components/vennDiagram/VennDiagram.cjs +47 -0
- package/dist/src/components/vennDiagram/VennDiagram.cjs.map +1 -0
- package/dist/src/components/vennDiagram/VennDiagram.js +47 -0
- package/dist/src/components/vennDiagram/VennDiagram.js.map +1 -0
- package/dist/src/svgs/ProgressCircle.svg.cjs +22 -0
- package/dist/src/svgs/ProgressCircle.svg.cjs.map +1 -0
- package/dist/src/svgs/ProgressCircle.svg.js +6 -0
- package/dist/src/svgs/ProgressCircle.svg.js.map +1 -0
- package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs +22 -0
- package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs.map +1 -0
- package/dist/src/svgs/j2-logo-menu-collapse.svg.js +6 -0
- package/dist/src/svgs/j2-logo-menu-collapse.svg.js.map +1 -0
- package/dist/src/svgs/j2-logo-menu.svg.cjs +22 -0
- package/dist/src/svgs/j2-logo-menu.svg.cjs.map +1 -0
- package/dist/src/svgs/j2-logo-menu.svg.js +6 -0
- package/dist/src/svgs/j2-logo-menu.svg.js.map +1 -0
- package/dist/src/svgs/menu-sidebar-collapse.svg.cjs +22 -0
- package/dist/src/svgs/menu-sidebar-collapse.svg.cjs.map +1 -0
- package/dist/src/svgs/menu-sidebar-collapse.svg.js +6 -0
- package/dist/src/svgs/menu-sidebar-collapse.svg.js.map +1 -0
- package/dist/src/svgs/menu-sidebar-expand.svg.cjs +22 -0
- package/dist/src/svgs/menu-sidebar-expand.svg.cjs.map +1 -0
- package/dist/src/svgs/menu-sidebar-expand.svg.js +6 -0
- package/dist/src/svgs/menu-sidebar-expand.svg.js.map +1 -0
- package/dist/style.css +646 -646
- package/package.json +1 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const cx = require("classnames");
|
|
5
|
+
const Button = require("../button/Button.cjs");
|
|
6
|
+
const BulkActionBar = ({
|
|
7
|
+
count,
|
|
8
|
+
action,
|
|
9
|
+
secondaryActions,
|
|
10
|
+
onCancel,
|
|
11
|
+
cancelLabel = "Cancel"
|
|
12
|
+
}) => {
|
|
13
|
+
const visible = count > 0;
|
|
14
|
+
const label = `${count} selected`;
|
|
15
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
role: "region",
|
|
19
|
+
"aria-label": "Bulk actions",
|
|
20
|
+
"aria-hidden": !visible,
|
|
21
|
+
className: cx(
|
|
22
|
+
"pointer-events-none fixed bottom-6 left-1/2 z-50",
|
|
23
|
+
"-translate-x-1/2 transition duration-200 ease-out",
|
|
24
|
+
visible ? "translate-y-0 opacity-100" : "pointer-events-none translate-y-4 opacity-0"
|
|
25
|
+
),
|
|
26
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
className: cx(
|
|
30
|
+
"pointer-events-auto flex items-center gap-3 rounded-full",
|
|
31
|
+
"bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg"
|
|
32
|
+
),
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: label }),
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-5 w-px bg-white/20" }),
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37
|
+
Button.Button,
|
|
38
|
+
{
|
|
39
|
+
type: "text",
|
|
40
|
+
shape: "round",
|
|
41
|
+
size: "small",
|
|
42
|
+
icon: action.icon,
|
|
43
|
+
loading: action.loading,
|
|
44
|
+
onClick: action.onClick,
|
|
45
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
46
|
+
children: action.label
|
|
47
|
+
}
|
|
48
|
+
),
|
|
49
|
+
secondaryActions == null ? void 0 : secondaryActions.map((sec) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
50
|
+
Button.Button,
|
|
51
|
+
{
|
|
52
|
+
type: "text",
|
|
53
|
+
shape: "round",
|
|
54
|
+
size: "small",
|
|
55
|
+
icon: sec.icon,
|
|
56
|
+
loading: sec.loading,
|
|
57
|
+
onClick: sec.onClick,
|
|
58
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
59
|
+
children: sec.label
|
|
60
|
+
},
|
|
61
|
+
sec.label
|
|
62
|
+
)),
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
64
|
+
Button.Button,
|
|
65
|
+
{
|
|
66
|
+
type: "text",
|
|
67
|
+
shape: "round",
|
|
68
|
+
size: "small",
|
|
69
|
+
onClick: onCancel,
|
|
70
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
71
|
+
children: cancelLabel
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
};
|
|
80
|
+
exports.BulkActionBar = BulkActionBar;
|
|
81
|
+
//# sourceMappingURL=BulkActionBar.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulkActionBar.cjs","sources":["../../../../src/components/bulkActionBar/BulkActionBar.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport cx from 'classnames'\nimport { Button } from '../button'\n\ntype BulkActionBarProps = {\n /**\n * Number of rows currently selected. The bar slides in when count > 0\n * and slides out when count returns to 0.\n */\n count: number\n /** Primary action (Archive, Restore, Delete, etc.). */\n action: {\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }\n /** Optional secondary actions rendered between the primary action and Cancel. */\n secondaryActions?: Array<{\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }>\n /** Clears the selection. Renders as the trailing \"Cancel\" button. */\n onCancel: () => void\n /** Custom Cancel label. Defaults to `\"Cancel\"`. */\n cancelLabel?: string\n}\n\n/**\n * Floating bulk-action toolbar. Renders fixed to the bottom-center of the\n * viewport and slides in whenever `count > 0`. Use it above any list/table\n * surface that supports row selection — pair with Ant Design's\n * `rowSelection` prop on `<Table>` (or any controlled selection state).\n *\n * Destructive intent is enforced by whatever confirmation modal the host\n * surface shows after `action.onClick` — the bar itself is always neutral\n * (text-on-navy) so it never reads as a one-click destructive control.\n */\nexport const BulkActionBar = ({\n count,\n action,\n secondaryActions,\n onCancel,\n cancelLabel = 'Cancel',\n}: BulkActionBarProps) => {\n const visible = count > 0\n const label = `${count} selected`\n\n return (\n <div\n role=\"region\"\n aria-label=\"Bulk actions\"\n aria-hidden={!visible}\n className={cx(\n 'pointer-events-none fixed bottom-6 left-1/2 z-50',\n '-translate-x-1/2 transition duration-200 ease-out',\n visible\n ? 'translate-y-0 opacity-100'\n : 'pointer-events-none translate-y-4 opacity-0'\n )}\n >\n <div\n className={cx(\n 'pointer-events-auto flex items-center gap-3 rounded-full',\n 'bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg'\n )}\n >\n <span className=\"text-sm font-medium\">{label}</span>\n <div className=\"h-5 w-px bg-white/20\" />\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={action.icon}\n loading={action.loading}\n onClick={action.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {action.label}\n </Button>\n {secondaryActions?.map((sec) => (\n <Button\n key={sec.label}\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={sec.icon}\n loading={sec.loading}\n onClick={sec.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {sec.label}\n </Button>\n ))}\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n onClick={onCancel}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {cancelLabel}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["jsx","jsxs","Button"],"mappings":";;;;;AAwCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,MAA0B;AACxB,QAAM,UAAU,QAAQ;AACxB,QAAM,QAAQ,GAAG,KAAK;AAEtB,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,eAAa,CAAC;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,UACI,8BACA;AAAA,MAAA;AAAA,MAGN,UAAAC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,UAAA;AAAA,YAAAD,2BAAAA,IAAC,QAAA,EAAK,WAAU,uBAAuB,UAAA,OAAM;AAAA,YAC7CA,2BAAAA,IAAC,OAAA,EAAI,WAAU,uBAAA,CAAuB;AAAA,YACtCA,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,OAAO;AAAA,gBACb,SAAS,OAAO;AAAA,gBAChB,SAAS,OAAO;AAAA,gBAChB,WAAU;AAAA,gBAET,UAAA,OAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAET,qDAAkB,IAAI,CAAC,QACtBF,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,IAAI;AAAA,gBACV,SAAS,IAAI;AAAA,gBACb,SAAS,IAAI;AAAA,gBACb,WAAU;AAAA,gBAET,UAAA,IAAI;AAAA,cAAA;AAAA,cATA,IAAI;AAAA,YAAA;AAAA,YAYbF,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;;"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { Button } from "../button/Button.js";
|
|
4
|
+
const BulkActionBar = ({
|
|
5
|
+
count,
|
|
6
|
+
action,
|
|
7
|
+
secondaryActions,
|
|
8
|
+
onCancel,
|
|
9
|
+
cancelLabel = "Cancel"
|
|
10
|
+
}) => {
|
|
11
|
+
const visible = count > 0;
|
|
12
|
+
const label = `${count} selected`;
|
|
13
|
+
return /* @__PURE__ */ jsx(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
role: "region",
|
|
17
|
+
"aria-label": "Bulk actions",
|
|
18
|
+
"aria-hidden": !visible,
|
|
19
|
+
className: cx(
|
|
20
|
+
"pointer-events-none fixed bottom-6 left-1/2 z-50",
|
|
21
|
+
"-translate-x-1/2 transition duration-200 ease-out",
|
|
22
|
+
visible ? "translate-y-0 opacity-100" : "pointer-events-none translate-y-4 opacity-0"
|
|
23
|
+
),
|
|
24
|
+
children: /* @__PURE__ */ jsxs(
|
|
25
|
+
"div",
|
|
26
|
+
{
|
|
27
|
+
className: cx(
|
|
28
|
+
"pointer-events-auto flex items-center gap-3 rounded-full",
|
|
29
|
+
"bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg"
|
|
30
|
+
),
|
|
31
|
+
children: [
|
|
32
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: label }),
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: "h-5 w-px bg-white/20" }),
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
Button,
|
|
36
|
+
{
|
|
37
|
+
type: "text",
|
|
38
|
+
shape: "round",
|
|
39
|
+
size: "small",
|
|
40
|
+
icon: action.icon,
|
|
41
|
+
loading: action.loading,
|
|
42
|
+
onClick: action.onClick,
|
|
43
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
44
|
+
children: action.label
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
secondaryActions == null ? void 0 : secondaryActions.map((sec) => /* @__PURE__ */ jsx(
|
|
48
|
+
Button,
|
|
49
|
+
{
|
|
50
|
+
type: "text",
|
|
51
|
+
shape: "round",
|
|
52
|
+
size: "small",
|
|
53
|
+
icon: sec.icon,
|
|
54
|
+
loading: sec.loading,
|
|
55
|
+
onClick: sec.onClick,
|
|
56
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
57
|
+
children: sec.label
|
|
58
|
+
},
|
|
59
|
+
sec.label
|
|
60
|
+
)),
|
|
61
|
+
/* @__PURE__ */ jsx(
|
|
62
|
+
Button,
|
|
63
|
+
{
|
|
64
|
+
type: "text",
|
|
65
|
+
shape: "round",
|
|
66
|
+
size: "small",
|
|
67
|
+
onClick: onCancel,
|
|
68
|
+
className: "!text-white hover:!bg-white/10 hover:!text-white",
|
|
69
|
+
children: cancelLabel
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
};
|
|
78
|
+
export {
|
|
79
|
+
BulkActionBar
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=BulkActionBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BulkActionBar.js","sources":["../../../../src/components/bulkActionBar/BulkActionBar.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport cx from 'classnames'\nimport { Button } from '../button'\n\ntype BulkActionBarProps = {\n /**\n * Number of rows currently selected. The bar slides in when count > 0\n * and slides out when count returns to 0.\n */\n count: number\n /** Primary action (Archive, Restore, Delete, etc.). */\n action: {\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }\n /** Optional secondary actions rendered between the primary action and Cancel. */\n secondaryActions?: Array<{\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }>\n /** Clears the selection. Renders as the trailing \"Cancel\" button. */\n onCancel: () => void\n /** Custom Cancel label. Defaults to `\"Cancel\"`. */\n cancelLabel?: string\n}\n\n/**\n * Floating bulk-action toolbar. Renders fixed to the bottom-center of the\n * viewport and slides in whenever `count > 0`. Use it above any list/table\n * surface that supports row selection — pair with Ant Design's\n * `rowSelection` prop on `<Table>` (or any controlled selection state).\n *\n * Destructive intent is enforced by whatever confirmation modal the host\n * surface shows after `action.onClick` — the bar itself is always neutral\n * (text-on-navy) so it never reads as a one-click destructive control.\n */\nexport const BulkActionBar = ({\n count,\n action,\n secondaryActions,\n onCancel,\n cancelLabel = 'Cancel',\n}: BulkActionBarProps) => {\n const visible = count > 0\n const label = `${count} selected`\n\n return (\n <div\n role=\"region\"\n aria-label=\"Bulk actions\"\n aria-hidden={!visible}\n className={cx(\n 'pointer-events-none fixed bottom-6 left-1/2 z-50',\n '-translate-x-1/2 transition duration-200 ease-out',\n visible\n ? 'translate-y-0 opacity-100'\n : 'pointer-events-none translate-y-4 opacity-0'\n )}\n >\n <div\n className={cx(\n 'pointer-events-auto flex items-center gap-3 rounded-full',\n 'bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg'\n )}\n >\n <span className=\"text-sm font-medium\">{label}</span>\n <div className=\"h-5 w-px bg-white/20\" />\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={action.icon}\n loading={action.loading}\n onClick={action.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {action.label}\n </Button>\n {secondaryActions?.map((sec) => (\n <Button\n key={sec.label}\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={sec.icon}\n loading={sec.loading}\n onClick={sec.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {sec.label}\n </Button>\n ))}\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n onClick={onCancel}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {cancelLabel}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":[],"mappings":";;;AAwCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,MAA0B;AACxB,QAAM,UAAU,QAAQ;AACxB,QAAM,QAAQ,GAAG,KAAK;AAEtB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,eAAa,CAAC;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,UACI,8BACA;AAAA,MAAA;AAAA,MAGN,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK,WAAU,uBAAuB,UAAA,OAAM;AAAA,YAC7C,oBAAC,OAAA,EAAI,WAAU,uBAAA,CAAuB;AAAA,YACtC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,OAAO;AAAA,gBACb,SAAS,OAAO;AAAA,gBAChB,SAAS,OAAO;AAAA,gBAChB,WAAU;AAAA,gBAET,UAAA,OAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAET,qDAAkB,IAAI,CAAC,QACtB;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,IAAI;AAAA,gBACV,SAAS,IAAI;AAAA,gBACb,SAAS,IAAI;AAAA,gBACb,WAAU;AAAA,gBAET,UAAA,IAAI;AAAA,cAAA;AAAA,cATA,IAAI;AAAA,YAAA;AAAA,YAYb;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const antd = require("antd");
|
|
5
|
+
;/* empty css */
|
|
6
|
+
const Button = ({ type, size, ghost, danger, shape, ...props }) => {
|
|
7
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
8
|
+
antd.Button,
|
|
9
|
+
{
|
|
10
|
+
...props,
|
|
11
|
+
type,
|
|
12
|
+
size,
|
|
13
|
+
ghost,
|
|
14
|
+
danger,
|
|
15
|
+
shape,
|
|
16
|
+
children: props.children
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
exports.Button = Button;
|
|
21
|
+
//# sourceMappingURL=Button.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import { Button as AntdButton, ButtonProps } from 'antd'\nimport './Button.css'\n\nexport type Props = Expand<ButtonProps>\n\nconst Button = ({ type, size, ghost, danger, shape, ...props }: Props) => {\n return (\n <AntdButton\n {...props}\n type={type}\n size={size}\n ghost={ghost}\n danger={danger}\n shape={shape}\n >\n {props.children}\n </AntdButton>\n )\n}\n\nexport { Button }\n"],"names":["jsx","AntdButton"],"mappings":";;;;;AAKA,MAAM,SAAS,CAAC,EAAE,MAAM,MAAM,OAAO,QAAQ,OAAO,GAAG,YAAmB;AACxE,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button as Button$1 } from "antd";
|
|
3
|
+
/* empty css */
|
|
4
|
+
const Button = ({ type, size, ghost, danger, shape, ...props }) => {
|
|
5
|
+
return /* @__PURE__ */ jsx(
|
|
6
|
+
Button$1,
|
|
7
|
+
{
|
|
8
|
+
...props,
|
|
9
|
+
type,
|
|
10
|
+
size,
|
|
11
|
+
ghost,
|
|
12
|
+
danger,
|
|
13
|
+
shape,
|
|
14
|
+
children: props.children
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
Button
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import { Button as AntdButton, ButtonProps } from 'antd'\nimport './Button.css'\n\nexport type Props = Expand<ButtonProps>\n\nconst Button = ({ type, size, ghost, danger, shape, ...props }: Props) => {\n return (\n <AntdButton\n {...props}\n type={type}\n size={size}\n ghost={ghost}\n danger={danger}\n shape={shape}\n >\n {props.children}\n </AntdButton>\n )\n}\n\nexport { Button }\n"],"names":["AntdButton"],"mappings":";;;AAKA,MAAM,SAAS,CAAC,EAAE,MAAM,MAAM,OAAO,QAAQ,OAAO,GAAG,YAAmB;AACxE,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const antd = require("antd");
|
|
5
|
+
const cx = require("classnames");
|
|
6
|
+
;/* empty css */
|
|
7
|
+
const Card = ({
|
|
8
|
+
title,
|
|
9
|
+
children,
|
|
10
|
+
loading,
|
|
11
|
+
size = "default",
|
|
12
|
+
innerVariant = "default",
|
|
13
|
+
className,
|
|
14
|
+
...props
|
|
15
|
+
}) => {
|
|
16
|
+
const isInner = props.type === "inner";
|
|
17
|
+
const isInnerBasic = isInner && innerVariant === "basic";
|
|
18
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19
|
+
antd.Card,
|
|
20
|
+
{
|
|
21
|
+
className: cx(
|
|
22
|
+
"j2-card",
|
|
23
|
+
`j2-card-${size}`,
|
|
24
|
+
isInnerBasic && "inner-basic",
|
|
25
|
+
className
|
|
26
|
+
),
|
|
27
|
+
...props,
|
|
28
|
+
size: size === "large" || size === "compact" ? "default" : size,
|
|
29
|
+
title,
|
|
30
|
+
loading,
|
|
31
|
+
children
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
};
|
|
35
|
+
exports.Card = Card;
|
|
36
|
+
//# sourceMappingURL=Card.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import { Card as AntdCard, CardProps } from 'antd'\nimport cx from 'classnames'\n\n// import this file to enable styling defined in there\nimport './Card.css'\n\nexport type Props = Omit<CardProps, 'size'> & {\n /** Card title */\n title?: string\n /** Card contents */\n children: React.ReactNode\n /** Loading state */\n loading?: boolean\n /** Card size */\n size?: 'default' | 'small' | 'compact' | 'large'\n /**\n * Inner card type variant.\n * It allows inner card to have variants independent of other props.\n * Works only with type=\"inner\".\n */\n innerVariant?: 'default' | 'basic'\n}\n\nconst Card = ({\n title,\n children,\n loading,\n size = 'default',\n innerVariant = 'default',\n className,\n ...props\n}: Props) => {\n const isInner = props.type === 'inner'\n const isInnerBasic = isInner && innerVariant === 'basic'\n return (\n <AntdCard\n className={cx(\n 'j2-card',\n `j2-card-${size}`,\n isInnerBasic && 'inner-basic',\n className\n )}\n {...props}\n size={size === 'large' || size === 'compact' ? 'default' : size}\n title={title}\n loading={loading}\n >\n {children}\n </AntdCard>\n )\n}\n\nexport { Card }\n"],"names":["jsx","AntdCard"],"mappings":";;;;;;AAuBA,MAAM,OAAO,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAa;AACX,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,eAAe,WAAW,iBAAiB;AACjD,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WAAW,IAAI;AAAA,QACf,gBAAgB;AAAA,QAChB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MACJ,MAAM,SAAS,WAAW,SAAS,YAAY,YAAY;AAAA,MAC3D;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Card as Card$1 } from "antd";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
/* empty css */
|
|
5
|
+
const Card = ({
|
|
6
|
+
title,
|
|
7
|
+
children,
|
|
8
|
+
loading,
|
|
9
|
+
size = "default",
|
|
10
|
+
innerVariant = "default",
|
|
11
|
+
className,
|
|
12
|
+
...props
|
|
13
|
+
}) => {
|
|
14
|
+
const isInner = props.type === "inner";
|
|
15
|
+
const isInnerBasic = isInner && innerVariant === "basic";
|
|
16
|
+
return /* @__PURE__ */ jsx(
|
|
17
|
+
Card$1,
|
|
18
|
+
{
|
|
19
|
+
className: cx(
|
|
20
|
+
"j2-card",
|
|
21
|
+
`j2-card-${size}`,
|
|
22
|
+
isInnerBasic && "inner-basic",
|
|
23
|
+
className
|
|
24
|
+
),
|
|
25
|
+
...props,
|
|
26
|
+
size: size === "large" || size === "compact" ? "default" : size,
|
|
27
|
+
title,
|
|
28
|
+
loading,
|
|
29
|
+
children
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
export {
|
|
34
|
+
Card
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import { Card as AntdCard, CardProps } from 'antd'\nimport cx from 'classnames'\n\n// import this file to enable styling defined in there\nimport './Card.css'\n\nexport type Props = Omit<CardProps, 'size'> & {\n /** Card title */\n title?: string\n /** Card contents */\n children: React.ReactNode\n /** Loading state */\n loading?: boolean\n /** Card size */\n size?: 'default' | 'small' | 'compact' | 'large'\n /**\n * Inner card type variant.\n * It allows inner card to have variants independent of other props.\n * Works only with type=\"inner\".\n */\n innerVariant?: 'default' | 'basic'\n}\n\nconst Card = ({\n title,\n children,\n loading,\n size = 'default',\n innerVariant = 'default',\n className,\n ...props\n}: Props) => {\n const isInner = props.type === 'inner'\n const isInnerBasic = isInner && innerVariant === 'basic'\n return (\n <AntdCard\n className={cx(\n 'j2-card',\n `j2-card-${size}`,\n isInnerBasic && 'inner-basic',\n className\n )}\n {...props}\n size={size === 'large' || size === 'compact' ? 'default' : size}\n title={title}\n loading={loading}\n >\n {children}\n </AntdCard>\n )\n}\n\nexport { Card }\n"],"names":["AntdCard"],"mappings":";;;;AAuBA,MAAM,OAAO,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAa;AACX,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,eAAe,WAAW,iBAAiB;AACjD,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WAAW,IAAI;AAAA,QACf,gBAAgB;AAAA,QAChB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MACJ,MAAM,SAAS,WAAW,SAAS,YAAY,YAAY;AAAA,MAC3D;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const antd = require("antd");
|
|
5
|
+
const Checkbox = (props) => {
|
|
6
|
+
return /* @__PURE__ */ jsxRuntime.jsx(antd.Checkbox, { ...props });
|
|
7
|
+
};
|
|
8
|
+
Checkbox.Group = antd.Checkbox.Group;
|
|
9
|
+
exports.Checkbox = Checkbox;
|
|
10
|
+
//# sourceMappingURL=Checkbox.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.cjs","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import { Checkbox as AntdCheckbox, CheckboxProps } from 'antd'\n\ntype Props = Expand<CheckboxProps>\n\nexport const Checkbox = (props: Props) => {\n return <AntdCheckbox {...props} />\n}\n\nCheckbox.Group = AntdCheckbox.Group\n"],"names":["jsx","AntdCheckbox"],"mappings":";;;;AAIO,MAAM,WAAW,CAAC,UAAiB;AACxC,SAAOA,+BAACC,KAAAA,UAAA,EAAc,GAAG,MAAA,CAAO;AAClC;AAEA,SAAS,QAAQA,KAAAA,SAAa;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Checkbox as Checkbox$1 } from "antd";
|
|
3
|
+
const Checkbox = (props) => {
|
|
4
|
+
return /* @__PURE__ */ jsx(Checkbox$1, { ...props });
|
|
5
|
+
};
|
|
6
|
+
Checkbox.Group = Checkbox$1.Group;
|
|
7
|
+
export {
|
|
8
|
+
Checkbox
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import { Checkbox as AntdCheckbox, CheckboxProps } from 'antd'\n\ntype Props = Expand<CheckboxProps>\n\nexport const Checkbox = (props: Props) => {\n return <AntdCheckbox {...props} />\n}\n\nCheckbox.Group = AntdCheckbox.Group\n"],"names":["AntdCheckbox"],"mappings":";;AAIO,MAAM,WAAW,CAAC,UAAiB;AACxC,SAAO,oBAACA,YAAA,EAAc,GAAG,MAAA,CAAO;AAClC;AAEA,SAAS,QAAQA,WAAa;"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const TreeNode = require("./TreeNode.cjs");
|
|
6
|
+
const utils = require("./utils.cjs");
|
|
7
|
+
const CheckboxTree = ({
|
|
8
|
+
treeData,
|
|
9
|
+
defaultCheckedKeys = [],
|
|
10
|
+
checkedKeys: controlledCheckedKeys,
|
|
11
|
+
onCheck,
|
|
12
|
+
disabled = false,
|
|
13
|
+
defaultExpandAll = true,
|
|
14
|
+
defaultExpandedKeys,
|
|
15
|
+
expandedKeys: controlledExpandedKeys,
|
|
16
|
+
onExpand,
|
|
17
|
+
className,
|
|
18
|
+
style,
|
|
19
|
+
lazyChildren = false
|
|
20
|
+
}) => {
|
|
21
|
+
const allLeafKeys = React.useMemo(() => utils.getAllLeafKeys(treeData), [treeData]);
|
|
22
|
+
const leafKeySet = React.useMemo(() => new Set(allLeafKeys), [allLeafKeys]);
|
|
23
|
+
const [internalLeafNodeValues, setInternalLeafNodeValues] = React.useState(() => {
|
|
24
|
+
const defaultLeafKeySet = new Set(
|
|
25
|
+
defaultCheckedKeys.filter((key) => leafKeySet.has(key))
|
|
26
|
+
);
|
|
27
|
+
const values = {};
|
|
28
|
+
for (const key of allLeafKeys) {
|
|
29
|
+
values[key] = defaultLeafKeySet.has(key);
|
|
30
|
+
}
|
|
31
|
+
return values;
|
|
32
|
+
});
|
|
33
|
+
const [internalExpandedKeys, setInternalExpandedKeys] = React.useState(() => {
|
|
34
|
+
if (defaultExpandedKeys) return defaultExpandedKeys;
|
|
35
|
+
if (defaultExpandAll) return utils.getAllParentKeys(treeData);
|
|
36
|
+
return [];
|
|
37
|
+
});
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)
|
|
40
|
+
return;
|
|
41
|
+
const allParentKeys = utils.getAllParentKeys(treeData);
|
|
42
|
+
setInternalExpandedKeys((prev) => {
|
|
43
|
+
const prevSet = new Set(prev);
|
|
44
|
+
const newKeys = allParentKeys.filter((key) => !prevSet.has(key));
|
|
45
|
+
if (newKeys.length === 0) return prev;
|
|
46
|
+
return [...prev, ...newKeys];
|
|
47
|
+
});
|
|
48
|
+
}, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys]);
|
|
49
|
+
const expandedKeysSet = React.useMemo(() => {
|
|
50
|
+
const keys = controlledExpandedKeys ?? internalExpandedKeys;
|
|
51
|
+
return new Set(keys);
|
|
52
|
+
}, [controlledExpandedKeys, internalExpandedKeys]);
|
|
53
|
+
const handleToggleExpand = React.useCallback(
|
|
54
|
+
(key) => {
|
|
55
|
+
const currentKeys = controlledExpandedKeys ?? internalExpandedKeys;
|
|
56
|
+
const newKeys = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
|
|
57
|
+
if (!controlledExpandedKeys) {
|
|
58
|
+
setInternalExpandedKeys(newKeys);
|
|
59
|
+
}
|
|
60
|
+
onExpand == null ? void 0 : onExpand(newKeys);
|
|
61
|
+
},
|
|
62
|
+
[controlledExpandedKeys, internalExpandedKeys, onExpand]
|
|
63
|
+
);
|
|
64
|
+
const leafNodeValues = React.useMemo(() => {
|
|
65
|
+
if (!controlledCheckedKeys) {
|
|
66
|
+
return internalLeafNodeValues;
|
|
67
|
+
}
|
|
68
|
+
const controlledLeafKeySet = new Set(
|
|
69
|
+
controlledCheckedKeys.filter((key) => leafKeySet.has(key))
|
|
70
|
+
);
|
|
71
|
+
const values = {};
|
|
72
|
+
for (const key of allLeafKeys) {
|
|
73
|
+
values[key] = controlledLeafKeySet.has(key);
|
|
74
|
+
}
|
|
75
|
+
return values;
|
|
76
|
+
}, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues]);
|
|
77
|
+
const handleCheck = React.useCallback(
|
|
78
|
+
(_key, checked, node) => {
|
|
79
|
+
const newLeafNodeValues = { ...leafNodeValues };
|
|
80
|
+
if (checked) {
|
|
81
|
+
const leafKeys = utils.getLeafKeys(node);
|
|
82
|
+
leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = true);
|
|
83
|
+
} else {
|
|
84
|
+
const leafKeys = utils.getLeafKeys(node);
|
|
85
|
+
leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = false);
|
|
86
|
+
}
|
|
87
|
+
if (!controlledCheckedKeys) {
|
|
88
|
+
setInternalLeafNodeValues(newLeafNodeValues);
|
|
89
|
+
}
|
|
90
|
+
if (onCheck) {
|
|
91
|
+
const checkedLeafNodes = {};
|
|
92
|
+
const allCheckedNodes = [];
|
|
93
|
+
const collectChecked = (current) => {
|
|
94
|
+
let isChecked;
|
|
95
|
+
if (!current.children || current.children.length === 0) {
|
|
96
|
+
isChecked = newLeafNodeValues[current.key] === true;
|
|
97
|
+
if (isChecked) {
|
|
98
|
+
checkedLeafNodes[current.key] = current;
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
isChecked = true;
|
|
102
|
+
for (const child of current.children) {
|
|
103
|
+
if (!collectChecked(child)) {
|
|
104
|
+
isChecked = false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (isChecked) {
|
|
109
|
+
allCheckedNodes.push(current);
|
|
110
|
+
}
|
|
111
|
+
return isChecked;
|
|
112
|
+
};
|
|
113
|
+
treeData.forEach(collectChecked);
|
|
114
|
+
onCheck(newLeafNodeValues, {
|
|
115
|
+
checked,
|
|
116
|
+
checkedLeafNodes,
|
|
117
|
+
allCheckedNodes,
|
|
118
|
+
node
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
[controlledCheckedKeys, onCheck, treeData, leafNodeValues]
|
|
123
|
+
);
|
|
124
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style, children: treeData.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
|
+
TreeNode.TreeNode,
|
|
126
|
+
{
|
|
127
|
+
node,
|
|
128
|
+
level: 0,
|
|
129
|
+
leafNodeValues,
|
|
130
|
+
onCheck: handleCheck,
|
|
131
|
+
disabled,
|
|
132
|
+
expandedKeys: expandedKeysSet,
|
|
133
|
+
onToggleExpand: handleToggleExpand,
|
|
134
|
+
lazyChildren
|
|
135
|
+
},
|
|
136
|
+
node.key
|
|
137
|
+
)) });
|
|
138
|
+
};
|
|
139
|
+
exports.CheckboxTree = CheckboxTree;
|
|
140
|
+
//# sourceMappingURL=CheckboxTree.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxTree.cjs","sources":["../../../../src/components/checkboxTree/CheckboxTree.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useMemo } from 'react'\nimport { TreeNode } from './TreeNode'\nimport { getLeafKeys, getAllLeafKeys, getAllParentKeys } from './utils'\n\nexport type CheckboxTreeDataNode = {\n key: string | number\n title: React.ReactNode\n children?: CheckboxTreeDataNode[]\n disabled?: boolean\n}\n\nexport type CheckboxTreeProps = {\n treeData: CheckboxTreeDataNode[]\n defaultCheckedKeys?: (string | number)[]\n checkedKeys?: (string | number)[]\n onCheck?: (\n values: Record<string | number, boolean>,\n info: {\n checked: boolean\n checkedLeafNodes: Record<string | number, CheckboxTreeDataNode>\n allCheckedNodes: CheckboxTreeDataNode[]\n node: CheckboxTreeDataNode\n }\n ) => void\n disabled?: boolean\n defaultExpandAll?: boolean\n defaultExpandedKeys?: (string | number)[]\n expandedKeys?: (string | number)[]\n onExpand?: (expandedKeys: (string | number)[]) => void\n className?: string\n style?: React.CSSProperties\n lazyChildren?: boolean\n}\n\nexport const CheckboxTree = ({\n treeData,\n defaultCheckedKeys = [],\n checkedKeys: controlledCheckedKeys,\n onCheck,\n disabled = false,\n defaultExpandAll = true,\n defaultExpandedKeys,\n expandedKeys: controlledExpandedKeys,\n onExpand,\n className,\n style,\n lazyChildren = false,\n}: CheckboxTreeProps) => {\n const allLeafKeys = useMemo(() => getAllLeafKeys(treeData), [treeData])\n const leafKeySet = useMemo(() => new Set(allLeafKeys), [allLeafKeys])\n\n const [internalLeafNodeValues, setInternalLeafNodeValues] = useState<\n Record<string | number, boolean>\n >(() => {\n const defaultLeafKeySet = new Set(\n defaultCheckedKeys.filter((key) => leafKeySet.has(key))\n )\n const values: Record<string | number, boolean> = {}\n for (const key of allLeafKeys) {\n values[key] = defaultLeafKeySet.has(key)\n }\n return values\n })\n\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<\n (string | number)[]\n >(() => {\n if (defaultExpandedKeys) return defaultExpandedKeys\n if (defaultExpandAll) return getAllParentKeys(treeData)\n return []\n })\n\n // When defaultExpandAll is true and treeData changes, auto-expand new parent nodes\n useEffect(() => {\n if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)\n return\n const allParentKeys = getAllParentKeys(treeData)\n setInternalExpandedKeys((prev) => {\n const prevSet = new Set(prev)\n const newKeys = allParentKeys.filter((key) => !prevSet.has(key))\n if (newKeys.length === 0) return prev\n return [...prev, ...newKeys]\n })\n }, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys])\n\n const expandedKeysSet = useMemo(() => {\n const keys = controlledExpandedKeys ?? internalExpandedKeys\n return new Set(keys)\n }, [controlledExpandedKeys, internalExpandedKeys])\n\n const handleToggleExpand = useCallback(\n (key: string | number) => {\n const currentKeys = controlledExpandedKeys ?? internalExpandedKeys\n const newKeys = currentKeys.includes(key)\n ? currentKeys.filter((k) => k !== key)\n : [...currentKeys, key]\n\n if (!controlledExpandedKeys) {\n setInternalExpandedKeys(newKeys)\n }\n onExpand?.(newKeys)\n },\n [controlledExpandedKeys, internalExpandedKeys, onExpand]\n )\n\n const leafNodeValues: Record<string | number, boolean> = useMemo(() => {\n if (!controlledCheckedKeys) {\n return internalLeafNodeValues\n }\n\n const controlledLeafKeySet = new Set(\n controlledCheckedKeys.filter((key) => leafKeySet.has(key))\n )\n\n const values: Record<string | number, boolean> = {}\n for (const key of allLeafKeys) {\n values[key] = controlledLeafKeySet.has(key)\n }\n return values\n }, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues])\n\n const handleCheck = useCallback(\n (_key: string | number, checked: boolean, node: CheckboxTreeDataNode) => {\n const newLeafNodeValues = { ...leafNodeValues }\n\n if (checked) {\n // When checking, set all leaf descendants to true\n const leafKeys = getLeafKeys(node)\n leafKeys.forEach((leafKey) => (newLeafNodeValues[leafKey] = true))\n } else {\n // When unchecking, set all leaf descendants to false\n const leafKeys = getLeafKeys(node)\n leafKeys.forEach((leafKey) => (newLeafNodeValues[leafKey] = false))\n }\n\n if (!controlledCheckedKeys) {\n setInternalLeafNodeValues(newLeafNodeValues)\n }\n\n if (onCheck) {\n // Get all checked leaf nodes\n const checkedLeafNodes: Record<string | number, CheckboxTreeDataNode> =\n {}\n\n // Get all nodes that appear checked (including parents)\n const allCheckedNodes: CheckboxTreeDataNode[] = []\n\n const collectChecked = (current: CheckboxTreeDataNode): boolean => {\n let isChecked: boolean\n if (!current.children || current.children.length === 0) {\n isChecked = newLeafNodeValues[current.key] === true\n if (isChecked) {\n checkedLeafNodes[current.key] = current\n }\n } else {\n isChecked = true\n for (const child of current.children) {\n if (!collectChecked(child)) {\n isChecked = false\n }\n }\n }\n if (isChecked) {\n allCheckedNodes.push(current)\n }\n return isChecked\n }\n treeData.forEach(collectChecked)\n\n onCheck(newLeafNodeValues, {\n checked,\n checkedLeafNodes,\n allCheckedNodes,\n node,\n })\n }\n },\n [controlledCheckedKeys, onCheck, treeData, leafNodeValues]\n )\n\n return (\n <div className={className} style={style}>\n {treeData.map((node) => (\n <TreeNode\n key={node.key}\n node={node}\n level={0}\n leafNodeValues={leafNodeValues}\n onCheck={handleCheck}\n disabled={disabled}\n expandedKeys={expandedKeysSet}\n onToggleExpand={handleToggleExpand}\n lazyChildren={lazyChildren}\n />\n ))}\n </div>\n )\n}\n"],"names":["useMemo","getAllLeafKeys","useState","getAllParentKeys","useEffect","useCallback","getLeafKeys","jsx","TreeNode"],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState, useEffect, useCallback } from "react";
|
|
3
|
+
import { TreeNode } from "./TreeNode.js";
|
|
4
|
+
import { getAllLeafKeys, getAllParentKeys, getLeafKeys } from "./utils.js";
|
|
5
|
+
const CheckboxTree = ({
|
|
6
|
+
treeData,
|
|
7
|
+
defaultCheckedKeys = [],
|
|
8
|
+
checkedKeys: controlledCheckedKeys,
|
|
9
|
+
onCheck,
|
|
10
|
+
disabled = false,
|
|
11
|
+
defaultExpandAll = true,
|
|
12
|
+
defaultExpandedKeys,
|
|
13
|
+
expandedKeys: controlledExpandedKeys,
|
|
14
|
+
onExpand,
|
|
15
|
+
className,
|
|
16
|
+
style,
|
|
17
|
+
lazyChildren = false
|
|
18
|
+
}) => {
|
|
19
|
+
const allLeafKeys = useMemo(() => getAllLeafKeys(treeData), [treeData]);
|
|
20
|
+
const leafKeySet = useMemo(() => new Set(allLeafKeys), [allLeafKeys]);
|
|
21
|
+
const [internalLeafNodeValues, setInternalLeafNodeValues] = useState(() => {
|
|
22
|
+
const defaultLeafKeySet = new Set(
|
|
23
|
+
defaultCheckedKeys.filter((key) => leafKeySet.has(key))
|
|
24
|
+
);
|
|
25
|
+
const values = {};
|
|
26
|
+
for (const key of allLeafKeys) {
|
|
27
|
+
values[key] = defaultLeafKeySet.has(key);
|
|
28
|
+
}
|
|
29
|
+
return values;
|
|
30
|
+
});
|
|
31
|
+
const [internalExpandedKeys, setInternalExpandedKeys] = useState(() => {
|
|
32
|
+
if (defaultExpandedKeys) return defaultExpandedKeys;
|
|
33
|
+
if (defaultExpandAll) return getAllParentKeys(treeData);
|
|
34
|
+
return [];
|
|
35
|
+
});
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)
|
|
38
|
+
return;
|
|
39
|
+
const allParentKeys = getAllParentKeys(treeData);
|
|
40
|
+
setInternalExpandedKeys((prev) => {
|
|
41
|
+
const prevSet = new Set(prev);
|
|
42
|
+
const newKeys = allParentKeys.filter((key) => !prevSet.has(key));
|
|
43
|
+
if (newKeys.length === 0) return prev;
|
|
44
|
+
return [...prev, ...newKeys];
|
|
45
|
+
});
|
|
46
|
+
}, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys]);
|
|
47
|
+
const expandedKeysSet = useMemo(() => {
|
|
48
|
+
const keys = controlledExpandedKeys ?? internalExpandedKeys;
|
|
49
|
+
return new Set(keys);
|
|
50
|
+
}, [controlledExpandedKeys, internalExpandedKeys]);
|
|
51
|
+
const handleToggleExpand = useCallback(
|
|
52
|
+
(key) => {
|
|
53
|
+
const currentKeys = controlledExpandedKeys ?? internalExpandedKeys;
|
|
54
|
+
const newKeys = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
|
|
55
|
+
if (!controlledExpandedKeys) {
|
|
56
|
+
setInternalExpandedKeys(newKeys);
|
|
57
|
+
}
|
|
58
|
+
onExpand == null ? void 0 : onExpand(newKeys);
|
|
59
|
+
},
|
|
60
|
+
[controlledExpandedKeys, internalExpandedKeys, onExpand]
|
|
61
|
+
);
|
|
62
|
+
const leafNodeValues = useMemo(() => {
|
|
63
|
+
if (!controlledCheckedKeys) {
|
|
64
|
+
return internalLeafNodeValues;
|
|
65
|
+
}
|
|
66
|
+
const controlledLeafKeySet = new Set(
|
|
67
|
+
controlledCheckedKeys.filter((key) => leafKeySet.has(key))
|
|
68
|
+
);
|
|
69
|
+
const values = {};
|
|
70
|
+
for (const key of allLeafKeys) {
|
|
71
|
+
values[key] = controlledLeafKeySet.has(key);
|
|
72
|
+
}
|
|
73
|
+
return values;
|
|
74
|
+
}, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues]);
|
|
75
|
+
const handleCheck = useCallback(
|
|
76
|
+
(_key, checked, node) => {
|
|
77
|
+
const newLeafNodeValues = { ...leafNodeValues };
|
|
78
|
+
if (checked) {
|
|
79
|
+
const leafKeys = getLeafKeys(node);
|
|
80
|
+
leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = true);
|
|
81
|
+
} else {
|
|
82
|
+
const leafKeys = getLeafKeys(node);
|
|
83
|
+
leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = false);
|
|
84
|
+
}
|
|
85
|
+
if (!controlledCheckedKeys) {
|
|
86
|
+
setInternalLeafNodeValues(newLeafNodeValues);
|
|
87
|
+
}
|
|
88
|
+
if (onCheck) {
|
|
89
|
+
const checkedLeafNodes = {};
|
|
90
|
+
const allCheckedNodes = [];
|
|
91
|
+
const collectChecked = (current) => {
|
|
92
|
+
let isChecked;
|
|
93
|
+
if (!current.children || current.children.length === 0) {
|
|
94
|
+
isChecked = newLeafNodeValues[current.key] === true;
|
|
95
|
+
if (isChecked) {
|
|
96
|
+
checkedLeafNodes[current.key] = current;
|
|
97
|
+
}
|
|
98
|
+
} else {
|
|
99
|
+
isChecked = true;
|
|
100
|
+
for (const child of current.children) {
|
|
101
|
+
if (!collectChecked(child)) {
|
|
102
|
+
isChecked = false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (isChecked) {
|
|
107
|
+
allCheckedNodes.push(current);
|
|
108
|
+
}
|
|
109
|
+
return isChecked;
|
|
110
|
+
};
|
|
111
|
+
treeData.forEach(collectChecked);
|
|
112
|
+
onCheck(newLeafNodeValues, {
|
|
113
|
+
checked,
|
|
114
|
+
checkedLeafNodes,
|
|
115
|
+
allCheckedNodes,
|
|
116
|
+
node
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
[controlledCheckedKeys, onCheck, treeData, leafNodeValues]
|
|
121
|
+
);
|
|
122
|
+
return /* @__PURE__ */ jsx("div", { className, style, children: treeData.map((node) => /* @__PURE__ */ jsx(
|
|
123
|
+
TreeNode,
|
|
124
|
+
{
|
|
125
|
+
node,
|
|
126
|
+
level: 0,
|
|
127
|
+
leafNodeValues,
|
|
128
|
+
onCheck: handleCheck,
|
|
129
|
+
disabled,
|
|
130
|
+
expandedKeys: expandedKeysSet,
|
|
131
|
+
onToggleExpand: handleToggleExpand,
|
|
132
|
+
lazyChildren
|
|
133
|
+
},
|
|
134
|
+
node.key
|
|
135
|
+
)) });
|
|
136
|
+
};
|
|
137
|
+
export {
|
|
138
|
+
CheckboxTree
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=CheckboxTree.js.map
|