@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 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../../../src/components/popover/Popover.tsx"],"sourcesContent":["import { Popover as AntdPopover, PopoverProps as AntdPopoverProps } from 'antd'\nimport cx from 'classnames'\nimport styles from './Popover.module.css'\n\ntype _Props = AntdPopoverProps & {\n contentPadding?: boolean\n scrollable?: boolean\n /* @deprecated use paddingSize instead */\n smallPadding?: boolean\n /* default padding is large */\n paddingSize?: 'xxs' | 'xs' | 'sm' | 'md' | 'xl'\n}\n\nexport type PopoverProps = Expand<_Props>\n\nconst Popover = ({\n children,\n placement = 'top',\n scrollable = false,\n contentPadding = true,\n content,\n smallPadding = false,\n paddingSize,\n arrow = false,\n ...props\n}: PopoverProps) => {\n return (\n <AntdPopover\n overlayClassName={cx(\n styles.j2Popover,\n scrollable && styles.scrollable,\n smallPadding && styles.smallPadding,\n paddingSize && styles[`${paddingSize}Padding`]\n )}\n {...props}\n placement={placement}\n arrow={arrow}\n content={() => {\n if (!contentPadding) {\n return <div>{typeof content == 'function' ? content() : content}</div>\n }\n\n return typeof content == 'function' ? content() : content\n }}\n >\n <div>{children}</div>\n </AntdPopover>\n )\n}\n\nexport { Popover }\n"],"names":["AntdPopover"],"mappings":";;;;AAeA,MAAM,UAAU,CAAC;AAAA,EACf;AAAA,EACA,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,QAAQ;AAAA,EACR,GAAG;AACL,MAAoB;AAClB,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,kBAAkB;AAAA,QAChB,OAAO;AAAA,QACP,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,QACvB,eAAe,OAAO,GAAG,WAAW,SAAS;AAAA,MAAA;AAAA,MAE9C,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAS,MAAM;AACb,YAAI,CAAC,gBAAgB;AACnB,qCAAQ,OAAA,EAAK,UAAA,OAAO,WAAW,aAAa,YAAY,SAAQ;AAAA,QAClE;AAEA,eAAO,OAAO,WAAW,aAAa,QAAA,IAAY;AAAA,MACpD;AAAA,MAEA,UAAA,oBAAC,SAAK,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGrB;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
+
const j2Popover = "_j2Popover_1egkj_1";
|
|
4
|
+
const smallPadding = "_smallPadding_1egkj_6";
|
|
5
|
+
const smPadding = "_smPadding_1egkj_7";
|
|
6
|
+
const xxsPadding = "_xxsPadding_1egkj_11";
|
|
7
|
+
const xsPadding = "_xsPadding_1egkj_15";
|
|
8
|
+
const mdPadding = "_mdPadding_1egkj_19";
|
|
9
|
+
const xlPadding = "_xlPadding_1egkj_23";
|
|
10
|
+
const popoverHeader = "_popoverHeader_1egkj_34";
|
|
11
|
+
const scrollable = "_scrollable_1egkj_40";
|
|
12
|
+
const styles = {
|
|
13
|
+
j2Popover,
|
|
14
|
+
smallPadding,
|
|
15
|
+
smPadding,
|
|
16
|
+
xxsPadding,
|
|
17
|
+
xsPadding,
|
|
18
|
+
mdPadding,
|
|
19
|
+
xlPadding,
|
|
20
|
+
popoverHeader,
|
|
21
|
+
scrollable
|
|
22
|
+
};
|
|
23
|
+
exports.default = styles;
|
|
24
|
+
exports.j2Popover = j2Popover;
|
|
25
|
+
exports.mdPadding = mdPadding;
|
|
26
|
+
exports.popoverHeader = popoverHeader;
|
|
27
|
+
exports.scrollable = scrollable;
|
|
28
|
+
exports.smPadding = smPadding;
|
|
29
|
+
exports.smallPadding = smallPadding;
|
|
30
|
+
exports.xlPadding = xlPadding;
|
|
31
|
+
exports.xsPadding = xsPadding;
|
|
32
|
+
exports.xxsPadding = xxsPadding;
|
|
33
|
+
//# sourceMappingURL=Popover.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
const j2Popover = "_j2Popover_1egkj_1";
|
|
2
|
+
const smallPadding = "_smallPadding_1egkj_6";
|
|
3
|
+
const smPadding = "_smPadding_1egkj_7";
|
|
4
|
+
const xxsPadding = "_xxsPadding_1egkj_11";
|
|
5
|
+
const xsPadding = "_xsPadding_1egkj_15";
|
|
6
|
+
const mdPadding = "_mdPadding_1egkj_19";
|
|
7
|
+
const xlPadding = "_xlPadding_1egkj_23";
|
|
8
|
+
const popoverHeader = "_popoverHeader_1egkj_34";
|
|
9
|
+
const scrollable = "_scrollable_1egkj_40";
|
|
10
|
+
const styles = {
|
|
11
|
+
j2Popover,
|
|
12
|
+
smallPadding,
|
|
13
|
+
smPadding,
|
|
14
|
+
xxsPadding,
|
|
15
|
+
xsPadding,
|
|
16
|
+
mdPadding,
|
|
17
|
+
xlPadding,
|
|
18
|
+
popoverHeader,
|
|
19
|
+
scrollable
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
styles as default,
|
|
23
|
+
j2Popover,
|
|
24
|
+
mdPadding,
|
|
25
|
+
popoverHeader,
|
|
26
|
+
scrollable,
|
|
27
|
+
smPadding,
|
|
28
|
+
smallPadding,
|
|
29
|
+
xlPadding,
|
|
30
|
+
xsPadding,
|
|
31
|
+
xxsPadding
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=Popover.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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 Progress = ({ ...props }) => {
|
|
6
|
+
return /* @__PURE__ */ jsxRuntime.jsx(antd.Progress, { ...props });
|
|
7
|
+
};
|
|
8
|
+
exports.Progress = Progress;
|
|
9
|
+
//# sourceMappingURL=Progress.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Progress.cjs","sources":["../../../../src/components/progress/Progress.tsx"],"sourcesContent":["import { Progress as AntdProgress, ProgressProps } from 'antd'\n\nconst Progress = ({ ...props }: ProgressProps) => {\n return <AntdProgress {...props} />\n}\n\nexport { Progress }\n"],"names":["jsx","AntdProgress"],"mappings":";;;;AAEA,MAAM,WAAW,CAAC,EAAE,GAAG,YAA2B;AAChD,SAAOA,+BAACC,KAAAA,UAAA,EAAc,GAAG,MAAA,CAAO;AAClC;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Progress.js","sources":["../../../../src/components/progress/Progress.tsx"],"sourcesContent":["import { Progress as AntdProgress, ProgressProps } from 'antd'\n\nconst Progress = ({ ...props }: ProgressProps) => {\n return <AntdProgress {...props} />\n}\n\nexport { Progress }\n"],"names":["AntdProgress"],"mappings":";;AAEA,MAAM,WAAW,CAAC,EAAE,GAAG,YAA2B;AAChD,SAAO,oBAACA,YAAA,EAAc,GAAG,MAAA,CAAO;AAClC;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
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 Radio = (props) => {
|
|
6
|
+
return /* @__PURE__ */ jsxRuntime.jsx(antd.Radio, { ...props });
|
|
7
|
+
};
|
|
8
|
+
const RadioGroup = ({
|
|
9
|
+
buttonStyle = "solid",
|
|
10
|
+
optionType = "button",
|
|
11
|
+
...props
|
|
12
|
+
}) => {
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14
|
+
antd.Radio.Group,
|
|
15
|
+
{
|
|
16
|
+
...props,
|
|
17
|
+
buttonStyle,
|
|
18
|
+
optionType
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
};
|
|
22
|
+
exports.Radio = Radio;
|
|
23
|
+
exports.RadioGroup = RadioGroup;
|
|
24
|
+
//# sourceMappingURL=Radio.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.cjs","sources":["../../../../src/components/radio/Radio.tsx"],"sourcesContent":["import {\n Radio as AntdRadio,\n RadioProps as AntdRadioProps,\n RadioGroupProps as AntdRadioGroupProps,\n} from 'antd'\n\ntype RadioProps = Expand<AntdRadioProps>\n\ntype FullRadioGroupProps = AntdRadioGroupProps & {\n buttonStyle?: 'solid' | 'outline'\n optionType?: 'default' | 'button'\n}\ntype RadioGroupProps = Expand<FullRadioGroupProps>\n\nconst Radio = (props: RadioProps) => {\n return <AntdRadio {...props} />\n}\n\nconst RadioGroup = ({\n buttonStyle = 'solid',\n optionType = 'button',\n ...props\n}: RadioGroupProps) => {\n return (\n <AntdRadio.Group\n {...props}\n buttonStyle={buttonStyle}\n optionType={optionType}\n />\n )\n}\n\nexport { Radio, RadioGroup }\n"],"names":["jsx","AntdRadio"],"mappings":";;;;AAcA,MAAM,QAAQ,CAAC,UAAsB;AACnC,SAAOA,+BAACC,KAAAA,OAAA,EAAW,GAAG,MAAA,CAAO;AAC/B;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,MAAuB;AACrB,SACED,2BAAAA;AAAAA,IAACC,KAAAA,MAAU;AAAA,IAAV;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAGN;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Radio as Radio$1 } from "antd";
|
|
3
|
+
const Radio = (props) => {
|
|
4
|
+
return /* @__PURE__ */ jsx(Radio$1, { ...props });
|
|
5
|
+
};
|
|
6
|
+
const RadioGroup = ({
|
|
7
|
+
buttonStyle = "solid",
|
|
8
|
+
optionType = "button",
|
|
9
|
+
...props
|
|
10
|
+
}) => {
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
Radio$1.Group,
|
|
13
|
+
{
|
|
14
|
+
...props,
|
|
15
|
+
buttonStyle,
|
|
16
|
+
optionType
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
Radio,
|
|
22
|
+
RadioGroup
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=Radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.js","sources":["../../../../src/components/radio/Radio.tsx"],"sourcesContent":["import {\n Radio as AntdRadio,\n RadioProps as AntdRadioProps,\n RadioGroupProps as AntdRadioGroupProps,\n} from 'antd'\n\ntype RadioProps = Expand<AntdRadioProps>\n\ntype FullRadioGroupProps = AntdRadioGroupProps & {\n buttonStyle?: 'solid' | 'outline'\n optionType?: 'default' | 'button'\n}\ntype RadioGroupProps = Expand<FullRadioGroupProps>\n\nconst Radio = (props: RadioProps) => {\n return <AntdRadio {...props} />\n}\n\nconst RadioGroup = ({\n buttonStyle = 'solid',\n optionType = 'button',\n ...props\n}: RadioGroupProps) => {\n return (\n <AntdRadio.Group\n {...props}\n buttonStyle={buttonStyle}\n optionType={optionType}\n />\n )\n}\n\nexport { Radio, RadioGroup }\n"],"names":["AntdRadio"],"mappings":";;AAcA,MAAM,QAAQ,CAAC,UAAsB;AACnC,SAAO,oBAACA,SAAA,EAAW,GAAG,MAAA,CAAO;AAC/B;AAEA,MAAM,aAAa,CAAC;AAAA,EAClB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,GAAG;AACL,MAAuB;AACrB,SACE;AAAA,IAACA,QAAU;AAAA,IAAV;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const react = require("@phosphor-icons/react");
|
|
5
|
+
const antd = require("antd");
|
|
6
|
+
;/* empty css */
|
|
7
|
+
const Rate = ({ count = 5, ...props }) => {
|
|
8
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9
|
+
antd.Rate,
|
|
10
|
+
{
|
|
11
|
+
...props,
|
|
12
|
+
className: "j2-rate",
|
|
13
|
+
count,
|
|
14
|
+
disabled: true,
|
|
15
|
+
allowHalf: true,
|
|
16
|
+
allowClear: true,
|
|
17
|
+
character: /* @__PURE__ */ jsxRuntime.jsx(react.StarIcon, { weight: "fill" })
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
};
|
|
21
|
+
exports.Rate = Rate;
|
|
22
|
+
//# sourceMappingURL=Rate.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rate.cjs","sources":["../../../../src/components/rate/Rate.tsx"],"sourcesContent":["import { StarIcon } from '@phosphor-icons/react'\nimport { Rate as AntdRate, RateProps } from 'antd'\nimport './Rate.css'\n\nexport type Props = Expand<RateProps>\n\nexport const Rate = ({ count = 5, ...props }: Props) => {\n return (\n <AntdRate\n {...props}\n className=\"j2-rate\"\n count={count}\n disabled={true}\n allowHalf={true}\n allowClear={true}\n character={<StarIcon weight=\"fill\" />}\n />\n )\n}\n"],"names":["jsx","AntdRate","StarIcon"],"mappings":";;;;;;AAMO,MAAM,OAAO,CAAC,EAAE,QAAQ,GAAG,GAAG,YAAmB;AACtD,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAU;AAAA,MACV;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAWD,2BAAAA,IAACE,MAAAA,UAAA,EAAS,QAAO,OAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGzC;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { StarIcon } from "@phosphor-icons/react";
|
|
3
|
+
import { Rate as Rate$1 } from "antd";
|
|
4
|
+
/* empty css */
|
|
5
|
+
const Rate = ({ count = 5, ...props }) => {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
Rate$1,
|
|
8
|
+
{
|
|
9
|
+
...props,
|
|
10
|
+
className: "j2-rate",
|
|
11
|
+
count,
|
|
12
|
+
disabled: true,
|
|
13
|
+
allowHalf: true,
|
|
14
|
+
allowClear: true,
|
|
15
|
+
character: /* @__PURE__ */ jsx(StarIcon, { weight: "fill" })
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
Rate
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=Rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rate.js","sources":["../../../../src/components/rate/Rate.tsx"],"sourcesContent":["import { StarIcon } from '@phosphor-icons/react'\nimport { Rate as AntdRate, RateProps } from 'antd'\nimport './Rate.css'\n\nexport type Props = Expand<RateProps>\n\nexport const Rate = ({ count = 5, ...props }: Props) => {\n return (\n <AntdRate\n {...props}\n className=\"j2-rate\"\n count={count}\n disabled={true}\n allowHalf={true}\n allowClear={true}\n character={<StarIcon weight=\"fill\" />}\n />\n )\n}\n"],"names":["AntdRate"],"mappings":";;;;AAMO,MAAM,OAAO,CAAC,EAAE,QAAQ,GAAG,GAAG,YAAmB;AACtD,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAU;AAAA,MACV;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW,oBAAC,UAAA,EAAS,QAAO,OAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAGzC;"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 antd = require("antd");
|
|
6
|
+
const Icon = require("@ant-design/icons");
|
|
7
|
+
const react = require("@phosphor-icons/react");
|
|
8
|
+
function _interopNamespaceDefault(e) {
|
|
9
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
10
|
+
if (e) {
|
|
11
|
+
for (const k in e) {
|
|
12
|
+
if (k !== "default") {
|
|
13
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: () => e[k]
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
n.default = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
|
|
25
|
+
const AntdSelect = (props) => {
|
|
26
|
+
var _a;
|
|
27
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
28
|
+
const handleSearch = (value) => {
|
|
29
|
+
if (props.onSearch) {
|
|
30
|
+
props.onSearch(value);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const dropdownRender = React__namespace.useCallback(
|
|
34
|
+
(menu) => {
|
|
35
|
+
if (props.loading) {
|
|
36
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-3 py-1", children: [
|
|
37
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Loading..." }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(antd.Spin, { indicator: /* @__PURE__ */ jsxRuntime.jsx(Icon.LoadingOutlined, { spin: true }), size: "small" })
|
|
39
|
+
] });
|
|
40
|
+
}
|
|
41
|
+
if (!props.options || props.options && props.options.length === 0) {
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-1", children: "No options" });
|
|
43
|
+
}
|
|
44
|
+
return menu;
|
|
45
|
+
},
|
|
46
|
+
[props.loading, (_a = props.options) == null ? void 0 : _a.length]
|
|
47
|
+
);
|
|
48
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
49
|
+
antd.Select,
|
|
50
|
+
{
|
|
51
|
+
suffixIcon: props.loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
52
|
+
antd.Spin,
|
|
53
|
+
{
|
|
54
|
+
indicator: /* @__PURE__ */ jsxRuntime.jsx(Icon.LoadingOutlined, { spin: true }),
|
|
55
|
+
size: "small",
|
|
56
|
+
"data-testid": "loading-spinner"
|
|
57
|
+
}
|
|
58
|
+
) : props.showSearch && isFocused ? /* @__PURE__ */ jsxRuntime.jsx(react.MagnifyingGlassIcon, { size: 14, "data-testid": "magnifying-glass" }) : /* @__PURE__ */ jsxRuntime.jsx(react.CaretDownIcon, { size: 14, "data-testid": "caret-down" }),
|
|
59
|
+
...props,
|
|
60
|
+
popupRender: dropdownRender,
|
|
61
|
+
removeIcon: /* @__PURE__ */ jsxRuntime.jsx(react.XCircleIcon, { size: 12 }),
|
|
62
|
+
allowClear: props.allowClear ? { clearIcon: /* @__PURE__ */ jsxRuntime.jsx(react.XCircleIcon, { size: 14 }) } : false,
|
|
63
|
+
showSearch: props.showSearch,
|
|
64
|
+
onSearch: props.onSearch ? handleSearch : void 0,
|
|
65
|
+
onFocus: () => {
|
|
66
|
+
setIsFocused(true);
|
|
67
|
+
},
|
|
68
|
+
onBlur: () => {
|
|
69
|
+
setIsFocused(false);
|
|
70
|
+
},
|
|
71
|
+
size: props.size || "large"
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
};
|
|
75
|
+
exports.AntdSelect = AntdSelect;
|
|
76
|
+
//# sourceMappingURL=AntdSelect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AntdSelect.cjs","sources":["../../../../src/components/select/AntdSelect.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Select as RawAntDSelect, Spin } from 'antd'\nimport { LoadingOutlined } from '@ant-design/icons'\nimport type { SelectProps as AntDSelectProps } from 'antd'\nimport {\n CaretDownIcon,\n MagnifyingGlassIcon,\n XCircleIcon,\n} from '@phosphor-icons/react'\nimport { useState } from 'react'\n\ntype AntdSelectProps = Expand<AntDSelectProps>\n\nexport const AntdSelect = (props: AntdSelectProps) => {\n const [isFocused, setIsFocused] = useState(false)\n\n const handleSearch = (value: string) => {\n if (props.onSearch) {\n props.onSearch(value)\n }\n }\n\n const dropdownRender = React.useCallback(\n (menu: React.ReactElement): React.ReactElement => {\n if (props.loading) {\n return (\n <div className=\"flex items-center justify-between px-3 py-1\">\n <span>Loading...</span>\n <Spin indicator={<LoadingOutlined spin />} size=\"small\" />\n </div>\n )\n }\n\n if (!props.options || (props.options && props.options.length === 0)) {\n return <div className=\"px-3 py-1\">No options</div>\n }\n\n return menu\n },\n [props.loading, props.options?.length]\n )\n\n return (\n <RawAntDSelect\n suffixIcon={\n props.loading ? (\n <Spin\n indicator={<LoadingOutlined spin />}\n size=\"small\"\n data-testid=\"loading-spinner\"\n />\n ) : props.showSearch && isFocused ? (\n <MagnifyingGlassIcon size={14} data-testid=\"magnifying-glass\" />\n ) : (\n <CaretDownIcon size={14} data-testid=\"caret-down\" />\n )\n }\n {...props}\n popupRender={dropdownRender}\n removeIcon={<XCircleIcon size={12} />}\n allowClear={\n props.allowClear ? { clearIcon: <XCircleIcon size={14} /> } : false\n }\n showSearch={props.showSearch}\n onSearch={props.onSearch ? handleSearch : undefined}\n onFocus={() => {\n setIsFocused(true)\n }}\n onBlur={() => {\n setIsFocused(false)\n }}\n size={props.size || 'large'}\n />\n )\n}\n"],"names":["useState","React","jsxs","jsx","Spin","LoadingOutlined","RawAntDSelect","MagnifyingGlassIcon","CaretDownIcon","XCircleIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAaO,MAAM,aAAa,CAAC,UAA2B;;AACpD,QAAM,CAAC,WAAW,YAAY,IAAIA,MAAAA,SAAS,KAAK;AAEhD,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,MAAM,UAAU;AAClB,YAAM,SAAS,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,iBAAiBC,iBAAM;AAAA,IAC3B,CAAC,SAAiD;AAChD,UAAI,MAAM,SAAS;AACjB,eACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,UAAAC,2BAAAA,IAAC,UAAK,UAAA,aAAA,CAAU;AAAA,UAChBA,2BAAAA,IAACC,KAAAA,QAAK,WAAWD,+BAACE,KAAAA,mBAAgB,MAAI,KAAA,CAAC,GAAI,MAAK,QAAA,CAAQ;AAAA,QAAA,GAC1D;AAAA,MAEJ;AAEA,UAAI,CAAC,MAAM,WAAY,MAAM,WAAW,MAAM,QAAQ,WAAW,GAAI;AACnE,eAAOF,2BAAAA,IAAC,OAAA,EAAI,WAAU,aAAY,UAAA,cAAU;AAAA,MAC9C;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,MAAM,UAAS,WAAM,YAAN,mBAAe,MAAM;AAAA,EAAA;AAGvC,SACEA,2BAAAA;AAAAA,IAACG,KAAAA;AAAAA,IAAA;AAAA,MACC,YACE,MAAM,UACJH,2BAAAA;AAAAA,QAACC,KAAAA;AAAAA,QAAA;AAAA,UACC,WAAWD,2BAAAA,IAACE,KAAAA,iBAAA,EAAgB,MAAI,KAAA,CAAC;AAAA,UACjC,MAAK;AAAA,UACL,eAAY;AAAA,QAAA;AAAA,MAAA,IAEZ,MAAM,cAAc,YACtBF,2BAAAA,IAACI,6BAAoB,MAAM,IAAI,eAAY,oBAAmB,IAE9DJ,2BAAAA,IAACK,qBAAA,EAAc,MAAM,IAAI,eAAY,cAAa;AAAA,MAGrD,GAAG;AAAA,MACJ,aAAa;AAAA,MACb,YAAYL,2BAAAA,IAACM,MAAAA,aAAA,EAAY,MAAM,GAAA,CAAI;AAAA,MACnC,YACE,MAAM,aAAa,EAAE,0CAAYA,MAAAA,aAAA,EAAY,MAAM,GAAA,CAAI,EAAA,IAAO;AAAA,MAEhE,YAAY,MAAM;AAAA,MAClB,UAAU,MAAM,WAAW,eAAe;AAAA,MAC1C,SAAS,MAAM;AACb,qBAAa,IAAI;AAAA,MACnB;AAAA,MACA,QAAQ,MAAM;AACZ,qBAAa,KAAK;AAAA,MACpB;AAAA,MACA,MAAM,MAAM,QAAQ;AAAA,IAAA;AAAA,EAAA;AAG1B;;"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Spin, Select } from "antd";
|
|
5
|
+
import { LoadingOutlined } from "@ant-design/icons";
|
|
6
|
+
import { XCircleIcon, MagnifyingGlassIcon, CaretDownIcon } from "@phosphor-icons/react";
|
|
7
|
+
const AntdSelect = (props) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
10
|
+
const handleSearch = (value) => {
|
|
11
|
+
if (props.onSearch) {
|
|
12
|
+
props.onSearch(value);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const dropdownRender = React.useCallback(
|
|
16
|
+
(menu) => {
|
|
17
|
+
if (props.loading) {
|
|
18
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-3 py-1", children: [
|
|
19
|
+
/* @__PURE__ */ jsx("span", { children: "Loading..." }),
|
|
20
|
+
/* @__PURE__ */ jsx(Spin, { indicator: /* @__PURE__ */ jsx(LoadingOutlined, { spin: true }), size: "small" })
|
|
21
|
+
] });
|
|
22
|
+
}
|
|
23
|
+
if (!props.options || props.options && props.options.length === 0) {
|
|
24
|
+
return /* @__PURE__ */ jsx("div", { className: "px-3 py-1", children: "No options" });
|
|
25
|
+
}
|
|
26
|
+
return menu;
|
|
27
|
+
},
|
|
28
|
+
[props.loading, (_a = props.options) == null ? void 0 : _a.length]
|
|
29
|
+
);
|
|
30
|
+
return /* @__PURE__ */ jsx(
|
|
31
|
+
Select,
|
|
32
|
+
{
|
|
33
|
+
suffixIcon: props.loading ? /* @__PURE__ */ jsx(
|
|
34
|
+
Spin,
|
|
35
|
+
{
|
|
36
|
+
indicator: /* @__PURE__ */ jsx(LoadingOutlined, { spin: true }),
|
|
37
|
+
size: "small",
|
|
38
|
+
"data-testid": "loading-spinner"
|
|
39
|
+
}
|
|
40
|
+
) : props.showSearch && isFocused ? /* @__PURE__ */ jsx(MagnifyingGlassIcon, { size: 14, "data-testid": "magnifying-glass" }) : /* @__PURE__ */ jsx(CaretDownIcon, { size: 14, "data-testid": "caret-down" }),
|
|
41
|
+
...props,
|
|
42
|
+
popupRender: dropdownRender,
|
|
43
|
+
removeIcon: /* @__PURE__ */ jsx(XCircleIcon, { size: 12 }),
|
|
44
|
+
allowClear: props.allowClear ? { clearIcon: /* @__PURE__ */ jsx(XCircleIcon, { size: 14 }) } : false,
|
|
45
|
+
showSearch: props.showSearch,
|
|
46
|
+
onSearch: props.onSearch ? handleSearch : void 0,
|
|
47
|
+
onFocus: () => {
|
|
48
|
+
setIsFocused(true);
|
|
49
|
+
},
|
|
50
|
+
onBlur: () => {
|
|
51
|
+
setIsFocused(false);
|
|
52
|
+
},
|
|
53
|
+
size: props.size || "large"
|
|
54
|
+
}
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
export {
|
|
58
|
+
AntdSelect
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=AntdSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AntdSelect.js","sources":["../../../../src/components/select/AntdSelect.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Select as RawAntDSelect, Spin } from 'antd'\nimport { LoadingOutlined } from '@ant-design/icons'\nimport type { SelectProps as AntDSelectProps } from 'antd'\nimport {\n CaretDownIcon,\n MagnifyingGlassIcon,\n XCircleIcon,\n} from '@phosphor-icons/react'\nimport { useState } from 'react'\n\ntype AntdSelectProps = Expand<AntDSelectProps>\n\nexport const AntdSelect = (props: AntdSelectProps) => {\n const [isFocused, setIsFocused] = useState(false)\n\n const handleSearch = (value: string) => {\n if (props.onSearch) {\n props.onSearch(value)\n }\n }\n\n const dropdownRender = React.useCallback(\n (menu: React.ReactElement): React.ReactElement => {\n if (props.loading) {\n return (\n <div className=\"flex items-center justify-between px-3 py-1\">\n <span>Loading...</span>\n <Spin indicator={<LoadingOutlined spin />} size=\"small\" />\n </div>\n )\n }\n\n if (!props.options || (props.options && props.options.length === 0)) {\n return <div className=\"px-3 py-1\">No options</div>\n }\n\n return menu\n },\n [props.loading, props.options?.length]\n )\n\n return (\n <RawAntDSelect\n suffixIcon={\n props.loading ? (\n <Spin\n indicator={<LoadingOutlined spin />}\n size=\"small\"\n data-testid=\"loading-spinner\"\n />\n ) : props.showSearch && isFocused ? (\n <MagnifyingGlassIcon size={14} data-testid=\"magnifying-glass\" />\n ) : (\n <CaretDownIcon size={14} data-testid=\"caret-down\" />\n )\n }\n {...props}\n popupRender={dropdownRender}\n removeIcon={<XCircleIcon size={12} />}\n allowClear={\n props.allowClear ? { clearIcon: <XCircleIcon size={14} /> } : false\n }\n showSearch={props.showSearch}\n onSearch={props.onSearch ? handleSearch : undefined}\n onFocus={() => {\n setIsFocused(true)\n }}\n onBlur={() => {\n setIsFocused(false)\n }}\n size={props.size || 'large'}\n />\n )\n}\n"],"names":["RawAntDSelect"],"mappings":";;;;;;AAaO,MAAM,aAAa,CAAC,UAA2B;;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,eAAe,CAAC,UAAkB;AACtC,QAAI,MAAM,UAAU;AAClB,YAAM,SAAS,KAAK;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,SAAiD;AAChD,UAAI,MAAM,SAAS;AACjB,eACE,qBAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,UAAA,oBAAC,UAAK,UAAA,aAAA,CAAU;AAAA,UAChB,oBAAC,QAAK,WAAW,oBAAC,mBAAgB,MAAI,KAAA,CAAC,GAAI,MAAK,QAAA,CAAQ;AAAA,QAAA,GAC1D;AAAA,MAEJ;AAEA,UAAI,CAAC,MAAM,WAAY,MAAM,WAAW,MAAM,QAAQ,WAAW,GAAI;AACnE,eAAO,oBAAC,OAAA,EAAI,WAAU,aAAY,UAAA,cAAU;AAAA,MAC9C;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,MAAM,UAAS,WAAM,YAAN,mBAAe,MAAM;AAAA,EAAA;AAGvC,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,YACE,MAAM,UACJ;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,oBAAC,iBAAA,EAAgB,MAAI,KAAA,CAAC;AAAA,UACjC,MAAK;AAAA,UACL,eAAY;AAAA,QAAA;AAAA,MAAA,IAEZ,MAAM,cAAc,YACtB,oBAAC,uBAAoB,MAAM,IAAI,eAAY,oBAAmB,IAE9D,oBAAC,eAAA,EAAc,MAAM,IAAI,eAAY,cAAa;AAAA,MAGrD,GAAG;AAAA,MACJ,aAAa;AAAA,MACb,YAAY,oBAAC,aAAA,EAAY,MAAM,GAAA,CAAI;AAAA,MACnC,YACE,MAAM,aAAa,EAAE,+BAAY,aAAA,EAAY,MAAM,GAAA,CAAI,EAAA,IAAO;AAAA,MAEhE,YAAY,MAAM;AAAA,MAClB,UAAU,MAAM,WAAW,eAAe;AAAA,MAC1C,SAAS,MAAM;AACb,qBAAa,IAAI;AAAA,MACnB;AAAA,MACA,QAAQ,MAAM;AACZ,qBAAa,KAAK;AAAA,MACpB;AAAA,MACA,MAAM,MAAM,QAAQ;AAAA,IAAA;AAAA,EAAA;AAG1B;"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const formikAntd = require("formik-antd");
|
|
5
|
+
const antd = require("antd");
|
|
6
|
+
const Icon = require("@ant-design/icons");
|
|
7
|
+
const react = require("@phosphor-icons/react");
|
|
8
|
+
const React = require("react");
|
|
9
|
+
const formik = require("formik");
|
|
10
|
+
const isGroupOption = (opt) => "options" in opt && Array.isArray(opt.options);
|
|
11
|
+
const flattenOptions = (opts) => {
|
|
12
|
+
if (!opts) return [];
|
|
13
|
+
return opts.flatMap(
|
|
14
|
+
(o) => isGroupOption(o) ? flattenOptions(o.options) : [o]
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
const Select = (props) => {
|
|
18
|
+
var _a;
|
|
19
|
+
const [isFocused, setIsFocused] = React.useState(false);
|
|
20
|
+
const [isSearching, setIsSearching] = React.useState(false);
|
|
21
|
+
const [field, , helpers] = formik.useField(props.name);
|
|
22
|
+
const isMultiple = props.mode === "multiple";
|
|
23
|
+
const hasOptions = (((_a = props.options) == null ? void 0 : _a.length) ?? 0) > 0;
|
|
24
|
+
const currentValue = Array.isArray(field.value) ? field.value : [];
|
|
25
|
+
const showSelectAllFooter = isMultiple && !props.loading && !props.disabled && hasOptions && !isSearching;
|
|
26
|
+
const handleSearch = (value) => {
|
|
27
|
+
setIsSearching(value.length > 0);
|
|
28
|
+
if (props.onSearch) {
|
|
29
|
+
props.onSearch(value);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const handleToggleAll = () => {
|
|
33
|
+
var _a2, _b;
|
|
34
|
+
if (props.disabled) return;
|
|
35
|
+
if (currentValue.length === 0) {
|
|
36
|
+
const flat = flattenOptions(
|
|
37
|
+
props.options
|
|
38
|
+
);
|
|
39
|
+
const allOptions = flat.filter(
|
|
40
|
+
(opt) => opt.value !== void 0 && opt.value !== null && !opt.disabled
|
|
41
|
+
);
|
|
42
|
+
const payload = props.labelInValue ? allOptions.map((opt) => ({ value: opt.value, label: opt.label })) : allOptions.map((opt) => opt.value);
|
|
43
|
+
void helpers.setValue(payload);
|
|
44
|
+
(_a2 = props.onChange) == null ? void 0 : _a2.call(props, payload, allOptions);
|
|
45
|
+
} else {
|
|
46
|
+
void helpers.setValue([]);
|
|
47
|
+
(_b = props.onChange) == null ? void 0 : _b.call(props, [], []);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const dropdownRender = (menu) => {
|
|
51
|
+
if (props.loading) {
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-3 py-1", children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Loading..." }),
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx(antd.Spin, { indicator: /* @__PURE__ */ jsxRuntime.jsx(Icon.LoadingOutlined, { spin: true }), size: "small" })
|
|
55
|
+
] });
|
|
56
|
+
}
|
|
57
|
+
if (!props.options || props.options && props.options.length === 0) {
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3 py-1", children: "No options" });
|
|
59
|
+
}
|
|
60
|
+
if (!showSelectAllFooter) return menu;
|
|
61
|
+
const label = currentValue.length === 0 ? "Select all" : "Clear all";
|
|
62
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
63
|
+
menu,
|
|
64
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 pt-1 border-t border-j2-border-secondary", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
"button",
|
|
66
|
+
{
|
|
67
|
+
type: "button",
|
|
68
|
+
"aria-label": label,
|
|
69
|
+
title: label,
|
|
70
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
71
|
+
onClick: handleToggleAll,
|
|
72
|
+
className: "w-full text-center font-semibold text-sm py-1.5 rounded cursor-pointer text-j2-primary hover:bg-j2-primary-bg-hover bg-transparent border-0",
|
|
73
|
+
children: label
|
|
74
|
+
}
|
|
75
|
+
) })
|
|
76
|
+
] });
|
|
77
|
+
};
|
|
78
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
79
|
+
formikAntd.Select,
|
|
80
|
+
{
|
|
81
|
+
suffixIcon: props.loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
+
antd.Spin,
|
|
83
|
+
{
|
|
84
|
+
indicator: /* @__PURE__ */ jsxRuntime.jsx(Icon.LoadingOutlined, { spin: true }),
|
|
85
|
+
size: "small",
|
|
86
|
+
"data-testid": "loading-spinner"
|
|
87
|
+
}
|
|
88
|
+
) : props.showSearch && isFocused ? /* @__PURE__ */ jsxRuntime.jsx(react.MagnifyingGlassIcon, { size: 14, "data-testid": "magnifying-glass" }) : /* @__PURE__ */ jsxRuntime.jsx(react.CaretDownIcon, { size: 14, "data-testid": "caret-down" }),
|
|
89
|
+
...props,
|
|
90
|
+
popupRender: dropdownRender,
|
|
91
|
+
removeIcon: /* @__PURE__ */ jsxRuntime.jsx(react.XCircleIcon, { size: 12 }),
|
|
92
|
+
allowClear: props.allowClear ? { clearIcon: /* @__PURE__ */ jsxRuntime.jsx(react.XCircleIcon, { size: 14 }) } : false,
|
|
93
|
+
showSearch: props.showSearch,
|
|
94
|
+
onSearch: handleSearch,
|
|
95
|
+
onFocus: () => {
|
|
96
|
+
setIsFocused(true);
|
|
97
|
+
},
|
|
98
|
+
onBlur: () => {
|
|
99
|
+
setIsFocused(false);
|
|
100
|
+
setIsSearching(false);
|
|
101
|
+
},
|
|
102
|
+
size: props.size || "large"
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
exports.Select = Select;
|
|
107
|
+
//# sourceMappingURL=Select.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.cjs","sources":["../../../../src/components/select/Select.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Select as AntDSelect } from 'formik-antd'\nimport { Spin } from 'antd'\nimport { LoadingOutlined } from '@ant-design/icons'\nimport type {\n SelectProps as AntDSelectProps,\n DefaultOptionType,\n} from 'antd/es/select'\nimport {\n CaretDownIcon,\n MagnifyingGlassIcon,\n XCircleIcon,\n} from '@phosphor-icons/react'\nimport { useState } from 'react'\nimport { useField } from 'formik'\n\ntype SelectProps = Expand<AntDSelectProps> & {\n name: string\n}\n\ntype GroupOption = { label?: React.ReactNode; options: DefaultOptionType[] }\n\nconst isGroupOption = (\n opt: DefaultOptionType | GroupOption\n): opt is GroupOption =>\n 'options' in opt && Array.isArray((opt as GroupOption).options)\n\nconst flattenOptions = (\n opts: (DefaultOptionType | GroupOption)[] | undefined\n): DefaultOptionType[] => {\n if (!opts) return []\n return opts.flatMap((o) =>\n isGroupOption(o) ? flattenOptions(o.options) : [o]\n )\n}\n\nexport const Select = (props: SelectProps) => {\n const [isFocused, setIsFocused] = useState(false)\n const [isSearching, setIsSearching] = useState(false)\n const [field, , helpers] = useField(props.name)\n\n const isMultiple = props.mode === 'multiple'\n const hasOptions = (props.options?.length ?? 0) > 0\n const currentValue: unknown[] = Array.isArray(field.value) ? field.value : []\n const showSelectAllFooter =\n isMultiple &&\n !props.loading &&\n !props.disabled &&\n hasOptions &&\n !isSearching\n\n const handleSearch = (value: string) => {\n setIsSearching(value.length > 0)\n if (props.onSearch) {\n props.onSearch(value)\n }\n }\n\n const handleToggleAll = () => {\n if (props.disabled) return\n\n if (currentValue.length === 0) {\n const flat = flattenOptions(\n props.options as (DefaultOptionType | GroupOption)[] | undefined\n )\n const allOptions = flat.filter(\n (opt) => opt.value !== undefined && opt.value !== null && !opt.disabled\n )\n // antd's labelInValue mode expects values shaped as { value, label }\n // rather than raw scalars; mirror that contract so the field state\n // and downstream onChange payload match what consumers expect.\n const payload = props.labelInValue\n ? allOptions.map((opt) => ({ value: opt.value, label: opt.label }))\n : allOptions.map((opt) => opt.value as string | number)\n void helpers.setValue(payload)\n props.onChange?.(payload, allOptions)\n } else {\n void helpers.setValue([])\n props.onChange?.([], [])\n }\n }\n\n const dropdownRender = (menu: React.ReactElement): React.ReactElement => {\n if (props.loading) {\n return (\n <div className=\"flex items-center justify-between px-3 py-1\">\n <span>Loading...</span>\n <Spin indicator={<LoadingOutlined spin />} size=\"small\" />\n </div>\n )\n }\n\n if (!props.options || (props.options && props.options.length === 0)) {\n return <div className=\"px-3 py-1\">No options</div>\n }\n\n if (!showSelectAllFooter) return menu\n\n const label = currentValue.length === 0 ? 'Select all' : 'Clear all'\n\n return (\n <>\n {menu}\n <div className=\"mt-1 pt-1 border-t border-j2-border-secondary\">\n <button\n type=\"button\"\n aria-label={label}\n title={label}\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleToggleAll}\n className=\"w-full text-center font-semibold text-sm py-1.5 rounded cursor-pointer text-j2-primary hover:bg-j2-primary-bg-hover bg-transparent border-0\"\n >\n {label}\n </button>\n </div>\n </>\n )\n }\n\n return (\n <AntDSelect\n suffixIcon={\n props.loading ? (\n <Spin\n indicator={<LoadingOutlined spin />}\n size=\"small\"\n data-testid=\"loading-spinner\"\n />\n ) : props.showSearch && isFocused ? (\n <MagnifyingGlassIcon size={14} data-testid=\"magnifying-glass\" />\n ) : (\n <CaretDownIcon size={14} data-testid=\"caret-down\" />\n )\n }\n {...props}\n popupRender={dropdownRender}\n removeIcon={<XCircleIcon size={12} />}\n allowClear={\n props.allowClear ? { clearIcon: <XCircleIcon size={14} /> } : false\n }\n showSearch={props.showSearch}\n onSearch={handleSearch}\n onFocus={() => {\n setIsFocused(true)\n }}\n onBlur={() => {\n setIsFocused(false)\n setIsSearching(false)\n }}\n size={props.size || 'large'}\n />\n )\n}\n"],"names":["useState","useField","_a","jsxs","jsx","Spin","LoadingOutlined","Fragment","AntDSelect","MagnifyingGlassIcon","CaretDownIcon","XCircleIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Select as Select$1 } from "formik-antd";
|
|
3
|
+
import { Spin } from "antd";
|
|
4
|
+
import { LoadingOutlined } from "@ant-design/icons";
|
|
5
|
+
import { XCircleIcon, MagnifyingGlassIcon, CaretDownIcon } from "@phosphor-icons/react";
|
|
6
|
+
import { useState } from "react";
|
|
7
|
+
import { useField } from "formik";
|
|
8
|
+
const isGroupOption = (opt) => "options" in opt && Array.isArray(opt.options);
|
|
9
|
+
const flattenOptions = (opts) => {
|
|
10
|
+
if (!opts) return [];
|
|
11
|
+
return opts.flatMap(
|
|
12
|
+
(o) => isGroupOption(o) ? flattenOptions(o.options) : [o]
|
|
13
|
+
);
|
|
14
|
+
};
|
|
15
|
+
const Select = (props) => {
|
|
16
|
+
var _a;
|
|
17
|
+
const [isFocused, setIsFocused] = useState(false);
|
|
18
|
+
const [isSearching, setIsSearching] = useState(false);
|
|
19
|
+
const [field, , helpers] = useField(props.name);
|
|
20
|
+
const isMultiple = props.mode === "multiple";
|
|
21
|
+
const hasOptions = (((_a = props.options) == null ? void 0 : _a.length) ?? 0) > 0;
|
|
22
|
+
const currentValue = Array.isArray(field.value) ? field.value : [];
|
|
23
|
+
const showSelectAllFooter = isMultiple && !props.loading && !props.disabled && hasOptions && !isSearching;
|
|
24
|
+
const handleSearch = (value) => {
|
|
25
|
+
setIsSearching(value.length > 0);
|
|
26
|
+
if (props.onSearch) {
|
|
27
|
+
props.onSearch(value);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const handleToggleAll = () => {
|
|
31
|
+
var _a2, _b;
|
|
32
|
+
if (props.disabled) return;
|
|
33
|
+
if (currentValue.length === 0) {
|
|
34
|
+
const flat = flattenOptions(
|
|
35
|
+
props.options
|
|
36
|
+
);
|
|
37
|
+
const allOptions = flat.filter(
|
|
38
|
+
(opt) => opt.value !== void 0 && opt.value !== null && !opt.disabled
|
|
39
|
+
);
|
|
40
|
+
const payload = props.labelInValue ? allOptions.map((opt) => ({ value: opt.value, label: opt.label })) : allOptions.map((opt) => opt.value);
|
|
41
|
+
void helpers.setValue(payload);
|
|
42
|
+
(_a2 = props.onChange) == null ? void 0 : _a2.call(props, payload, allOptions);
|
|
43
|
+
} else {
|
|
44
|
+
void helpers.setValue([]);
|
|
45
|
+
(_b = props.onChange) == null ? void 0 : _b.call(props, [], []);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const dropdownRender = (menu) => {
|
|
49
|
+
if (props.loading) {
|
|
50
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-3 py-1", children: [
|
|
51
|
+
/* @__PURE__ */ jsx("span", { children: "Loading..." }),
|
|
52
|
+
/* @__PURE__ */ jsx(Spin, { indicator: /* @__PURE__ */ jsx(LoadingOutlined, { spin: true }), size: "small" })
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
if (!props.options || props.options && props.options.length === 0) {
|
|
56
|
+
return /* @__PURE__ */ jsx("div", { className: "px-3 py-1", children: "No options" });
|
|
57
|
+
}
|
|
58
|
+
if (!showSelectAllFooter) return menu;
|
|
59
|
+
const label = currentValue.length === 0 ? "Select all" : "Clear all";
|
|
60
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
61
|
+
menu,
|
|
62
|
+
/* @__PURE__ */ jsx("div", { className: "mt-1 pt-1 border-t border-j2-border-secondary", children: /* @__PURE__ */ jsx(
|
|
63
|
+
"button",
|
|
64
|
+
{
|
|
65
|
+
type: "button",
|
|
66
|
+
"aria-label": label,
|
|
67
|
+
title: label,
|
|
68
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
69
|
+
onClick: handleToggleAll,
|
|
70
|
+
className: "w-full text-center font-semibold text-sm py-1.5 rounded cursor-pointer text-j2-primary hover:bg-j2-primary-bg-hover bg-transparent border-0",
|
|
71
|
+
children: label
|
|
72
|
+
}
|
|
73
|
+
) })
|
|
74
|
+
] });
|
|
75
|
+
};
|
|
76
|
+
return /* @__PURE__ */ jsx(
|
|
77
|
+
Select$1,
|
|
78
|
+
{
|
|
79
|
+
suffixIcon: props.loading ? /* @__PURE__ */ jsx(
|
|
80
|
+
Spin,
|
|
81
|
+
{
|
|
82
|
+
indicator: /* @__PURE__ */ jsx(LoadingOutlined, { spin: true }),
|
|
83
|
+
size: "small",
|
|
84
|
+
"data-testid": "loading-spinner"
|
|
85
|
+
}
|
|
86
|
+
) : props.showSearch && isFocused ? /* @__PURE__ */ jsx(MagnifyingGlassIcon, { size: 14, "data-testid": "magnifying-glass" }) : /* @__PURE__ */ jsx(CaretDownIcon, { size: 14, "data-testid": "caret-down" }),
|
|
87
|
+
...props,
|
|
88
|
+
popupRender: dropdownRender,
|
|
89
|
+
removeIcon: /* @__PURE__ */ jsx(XCircleIcon, { size: 12 }),
|
|
90
|
+
allowClear: props.allowClear ? { clearIcon: /* @__PURE__ */ jsx(XCircleIcon, { size: 14 }) } : false,
|
|
91
|
+
showSearch: props.showSearch,
|
|
92
|
+
onSearch: handleSearch,
|
|
93
|
+
onFocus: () => {
|
|
94
|
+
setIsFocused(true);
|
|
95
|
+
},
|
|
96
|
+
onBlur: () => {
|
|
97
|
+
setIsFocused(false);
|
|
98
|
+
setIsSearching(false);
|
|
99
|
+
},
|
|
100
|
+
size: props.size || "large"
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
};
|
|
104
|
+
export {
|
|
105
|
+
Select
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sources":["../../../../src/components/select/Select.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Select as AntDSelect } from 'formik-antd'\nimport { Spin } from 'antd'\nimport { LoadingOutlined } from '@ant-design/icons'\nimport type {\n SelectProps as AntDSelectProps,\n DefaultOptionType,\n} from 'antd/es/select'\nimport {\n CaretDownIcon,\n MagnifyingGlassIcon,\n XCircleIcon,\n} from '@phosphor-icons/react'\nimport { useState } from 'react'\nimport { useField } from 'formik'\n\ntype SelectProps = Expand<AntDSelectProps> & {\n name: string\n}\n\ntype GroupOption = { label?: React.ReactNode; options: DefaultOptionType[] }\n\nconst isGroupOption = (\n opt: DefaultOptionType | GroupOption\n): opt is GroupOption =>\n 'options' in opt && Array.isArray((opt as GroupOption).options)\n\nconst flattenOptions = (\n opts: (DefaultOptionType | GroupOption)[] | undefined\n): DefaultOptionType[] => {\n if (!opts) return []\n return opts.flatMap((o) =>\n isGroupOption(o) ? flattenOptions(o.options) : [o]\n )\n}\n\nexport const Select = (props: SelectProps) => {\n const [isFocused, setIsFocused] = useState(false)\n const [isSearching, setIsSearching] = useState(false)\n const [field, , helpers] = useField(props.name)\n\n const isMultiple = props.mode === 'multiple'\n const hasOptions = (props.options?.length ?? 0) > 0\n const currentValue: unknown[] = Array.isArray(field.value) ? field.value : []\n const showSelectAllFooter =\n isMultiple &&\n !props.loading &&\n !props.disabled &&\n hasOptions &&\n !isSearching\n\n const handleSearch = (value: string) => {\n setIsSearching(value.length > 0)\n if (props.onSearch) {\n props.onSearch(value)\n }\n }\n\n const handleToggleAll = () => {\n if (props.disabled) return\n\n if (currentValue.length === 0) {\n const flat = flattenOptions(\n props.options as (DefaultOptionType | GroupOption)[] | undefined\n )\n const allOptions = flat.filter(\n (opt) => opt.value !== undefined && opt.value !== null && !opt.disabled\n )\n // antd's labelInValue mode expects values shaped as { value, label }\n // rather than raw scalars; mirror that contract so the field state\n // and downstream onChange payload match what consumers expect.\n const payload = props.labelInValue\n ? allOptions.map((opt) => ({ value: opt.value, label: opt.label }))\n : allOptions.map((opt) => opt.value as string | number)\n void helpers.setValue(payload)\n props.onChange?.(payload, allOptions)\n } else {\n void helpers.setValue([])\n props.onChange?.([], [])\n }\n }\n\n const dropdownRender = (menu: React.ReactElement): React.ReactElement => {\n if (props.loading) {\n return (\n <div className=\"flex items-center justify-between px-3 py-1\">\n <span>Loading...</span>\n <Spin indicator={<LoadingOutlined spin />} size=\"small\" />\n </div>\n )\n }\n\n if (!props.options || (props.options && props.options.length === 0)) {\n return <div className=\"px-3 py-1\">No options</div>\n }\n\n if (!showSelectAllFooter) return menu\n\n const label = currentValue.length === 0 ? 'Select all' : 'Clear all'\n\n return (\n <>\n {menu}\n <div className=\"mt-1 pt-1 border-t border-j2-border-secondary\">\n <button\n type=\"button\"\n aria-label={label}\n title={label}\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleToggleAll}\n className=\"w-full text-center font-semibold text-sm py-1.5 rounded cursor-pointer text-j2-primary hover:bg-j2-primary-bg-hover bg-transparent border-0\"\n >\n {label}\n </button>\n </div>\n </>\n )\n }\n\n return (\n <AntDSelect\n suffixIcon={\n props.loading ? (\n <Spin\n indicator={<LoadingOutlined spin />}\n size=\"small\"\n data-testid=\"loading-spinner\"\n />\n ) : props.showSearch && isFocused ? (\n <MagnifyingGlassIcon size={14} data-testid=\"magnifying-glass\" />\n ) : (\n <CaretDownIcon size={14} data-testid=\"caret-down\" />\n )\n }\n {...props}\n popupRender={dropdownRender}\n removeIcon={<XCircleIcon size={12} />}\n allowClear={\n props.allowClear ? { clearIcon: <XCircleIcon size={14} /> } : false\n }\n showSearch={props.showSearch}\n onSearch={handleSearch}\n onFocus={() => {\n setIsFocused(true)\n }}\n onBlur={() => {\n setIsFocused(false)\n setIsSearching(false)\n }}\n size={props.size || 'large'}\n />\n )\n}\n"],"names":["_a","AntDSelect"],"mappings":"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"}
|