@nofinite/nui 1.1.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @nofinite/nui might be problematic. Click here for more details.
- package/LICENSE +201 -201
- package/README.md +61 -48
- package/dist/CHANGELOG.md +8 -0
- package/dist/LICENSE +201 -0
- package/dist/README.md +48 -0
- package/dist/components/accordion/Accordion.cjs +1 -1
- package/dist/components/accordion/Accordion.cjs.map +1 -1
- package/dist/components/accordion/Accordion.js +64 -43
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert/Alert.cjs +1 -1
- package/dist/components/alert/Alert.cjs.map +1 -1
- package/dist/components/alert/Alert.js +39 -25
- package/dist/components/alert/Alert.js.map +1 -1
- package/dist/components/avatar/Avatar.cjs +1 -1
- package/dist/components/avatar/Avatar.cjs.map +1 -1
- package/dist/components/avatar/Avatar.js +58 -44
- package/dist/components/avatar/Avatar.js.map +1 -1
- package/dist/components/avatar/AvatarGroup.cjs +1 -1
- package/dist/components/avatar/AvatarGroup.cjs.map +1 -1
- package/dist/components/avatar/AvatarGroup.js +34 -25
- package/dist/components/avatar/AvatarGroup.js.map +1 -1
- package/dist/components/badge/Badge.cjs +1 -1
- package/dist/components/badge/Badge.cjs.map +1 -1
- package/dist/components/badge/Badge.js +43 -68
- package/dist/components/badge/Badge.js.map +1 -1
- package/dist/components/badge/BadgeGroup.cjs +1 -1
- package/dist/components/badge/BadgeGroup.cjs.map +1 -1
- package/dist/components/badge/BadgeGroup.js +20 -10
- package/dist/components/badge/BadgeGroup.js.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.cjs +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.js +59 -39
- package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/button/Button.cjs +1 -1
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.js +52 -17
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/card/Card.cjs +1 -1
- package/dist/components/card/Card.cjs.map +1 -1
- package/dist/components/card/Card.js +44 -41
- package/dist/components/card/Card.js.map +1 -1
- package/dist/components/checkbox/Checkbox.cjs +1 -1
- package/dist/components/checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/checkbox/Checkbox.js +59 -40
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/chip/Chip.cjs +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.js +67 -47
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/combobox/Combobox.cjs +1 -1
- package/dist/components/combobox/Combobox.cjs.map +1 -1
- package/dist/components/combobox/Combobox.js +123 -108
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/commandpalette/CommandPalette.cjs +1 -1
- package/dist/components/commandpalette/CommandPalette.cjs.map +1 -1
- package/dist/components/commandpalette/CommandPalette.js +96 -73
- package/dist/components/commandpalette/CommandPalette.js.map +1 -1
- package/dist/components/contextmenu/ContextMenu.cjs +1 -1
- package/dist/components/contextmenu/ContextMenu.cjs.map +1 -1
- package/dist/components/contextmenu/ContextMenu.js +79 -58
- package/dist/components/contextmenu/ContextMenu.js.map +1 -1
- package/dist/components/datagrid/DataGrid.cjs +1 -1
- package/dist/components/datagrid/DataGrid.cjs.map +1 -1
- package/dist/components/datagrid/DataGrid.js +184 -202
- package/dist/components/datagrid/DataGrid.js.map +1 -1
- package/dist/components/datepicker/DatePicker.cjs +1 -1
- package/dist/components/datepicker/DatePicker.cjs.map +1 -1
- package/dist/components/datepicker/DatePicker.js +197 -164
- package/dist/components/datepicker/DatePicker.js.map +1 -1
- package/dist/components/daterangepicker/DateRangePicker.cjs +1 -1
- package/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -1
- package/dist/components/daterangepicker/DateRangePicker.js +254 -213
- package/dist/components/daterangepicker/DateRangePicker.js.map +1 -1
- package/dist/components/dialog/DialogProvider.cjs +2 -0
- package/dist/components/dialog/DialogProvider.cjs.map +1 -0
- package/dist/components/dialog/DialogProvider.js +71 -0
- package/dist/components/dialog/DialogProvider.js.map +1 -0
- package/dist/components/dialog/dialogStore.cjs +2 -0
- package/dist/components/dialog/dialogStore.cjs.map +1 -0
- package/dist/components/dialog/dialogStore.js +60 -0
- package/dist/components/dialog/dialogStore.js.map +1 -0
- package/dist/components/drawer/Drawer.cjs +1 -1
- package/dist/components/drawer/Drawer.cjs.map +1 -1
- package/dist/components/drawer/Drawer.js +69 -47
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/dropdown/Dropdown.cjs +1 -1
- package/dist/components/dropdown/Dropdown.cjs.map +1 -1
- package/dist/components/dropdown/Dropdown.js +134 -108
- package/dist/components/dropdown/Dropdown.js.map +1 -1
- package/dist/components/fileuploader/FileUploader.cjs +1 -1
- package/dist/components/fileuploader/FileUploader.cjs.map +1 -1
- package/dist/components/fileuploader/FileUploader.js +96 -61
- package/dist/components/fileuploader/FileUploader.js.map +1 -1
- package/dist/components/hovercard/HoverCard.cjs +1 -1
- package/dist/components/hovercard/HoverCard.cjs.map +1 -1
- package/dist/components/hovercard/HoverCard.js +124 -69
- package/dist/components/hovercard/HoverCard.js.map +1 -1
- package/dist/components/input/Input.cjs +1 -1
- package/dist/components/input/Input.cjs.map +1 -1
- package/dist/components/input/Input.js +62 -37
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/layout/Container.cjs +1 -1
- package/dist/components/layout/Container.cjs.map +1 -1
- package/dist/components/layout/Container.js +21 -30
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Flex.cjs +1 -1
- package/dist/components/layout/Flex.cjs.map +1 -1
- package/dist/components/layout/Flex.js +36 -19
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Grid.cjs +1 -1
- package/dist/components/layout/Grid.cjs.map +1 -1
- package/dist/components/layout/Grid.js +30 -18
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/link/Link.cjs +2 -0
- package/dist/components/link/Link.cjs.map +1 -0
- package/dist/components/link/Link.js +41 -0
- package/dist/components/link/Link.js.map +1 -0
- package/dist/components/megamenu/MegaMenu.cjs +1 -1
- package/dist/components/megamenu/MegaMenu.cjs.map +1 -1
- package/dist/components/megamenu/MegaMenu.js +107 -38
- package/dist/components/megamenu/MegaMenu.js.map +1 -1
- package/dist/components/modal/Modal.cjs +1 -1
- package/dist/components/modal/Modal.cjs.map +1 -1
- package/dist/components/modal/Modal.js +91 -83
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/multiselect/MultiSelect.cjs +2 -0
- package/dist/components/multiselect/MultiSelect.cjs.map +1 -0
- package/dist/components/multiselect/MultiSelect.js +176 -0
- package/dist/components/multiselect/MultiSelect.js.map +1 -0
- package/dist/components/nuiprovider/NUIProvider.cjs +2 -0
- package/dist/components/nuiprovider/NUIProvider.cjs.map +1 -0
- package/dist/components/nuiprovider/NUIProvider.js +36 -0
- package/dist/components/nuiprovider/NUIProvider.js.map +1 -0
- package/dist/components/pagination/Pagination.cjs +1 -1
- package/dist/components/pagination/Pagination.cjs.map +1 -1
- package/dist/components/pagination/Pagination.js +74 -41
- package/dist/components/pagination/Pagination.js.map +1 -1
- package/dist/components/popover/Popover.cjs +1 -1
- package/dist/components/popover/Popover.cjs.map +1 -1
- package/dist/components/popover/Popover.js +99 -100
- package/dist/components/popover/Popover.js.map +1 -1
- package/dist/components/progress/Progress.cjs +1 -1
- package/dist/components/progress/Progress.cjs.map +1 -1
- package/dist/components/progress/Progress.js +44 -22
- package/dist/components/progress/Progress.js.map +1 -1
- package/dist/components/radiogroup/RadioGroup.cjs +1 -1
- package/dist/components/radiogroup/RadioGroup.cjs.map +1 -1
- package/dist/components/radiogroup/RadioGroup.js +69 -74
- package/dist/components/radiogroup/RadioGroup.js.map +1 -1
- package/dist/components/rating/Rating.cjs +1 -1
- package/dist/components/rating/Rating.cjs.map +1 -1
- package/dist/components/rating/Rating.js +72 -33
- package/dist/components/rating/Rating.js.map +1 -1
- package/dist/components/resizable/Resizable.cjs +2 -0
- package/dist/components/resizable/Resizable.cjs.map +1 -0
- package/dist/components/resizable/Resizable.js +134 -0
- package/dist/components/resizable/Resizable.js.map +1 -0
- package/dist/components/select/Select.cjs +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.js +114 -113
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/skeleton/Skeleton.cjs +1 -1
- package/dist/components/skeleton/Skeleton.cjs.map +1 -1
- package/dist/components/skeleton/Skeleton.js +90 -67
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.cjs +1 -1
- package/dist/components/slider/Slider.cjs.map +1 -1
- package/dist/components/slider/Slider.js +85 -82
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.cjs +1 -1
- package/dist/components/spinner/Spinner.cjs.map +1 -1
- package/dist/components/spinner/Spinner.js +60 -17
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/stepper/Stepper.cjs +1 -5
- package/dist/components/stepper/Stepper.cjs.map +1 -1
- package/dist/components/stepper/Stepper.js +65 -39
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/switch/Switch.cjs +1 -1
- package/dist/components/switch/Switch.cjs.map +1 -1
- package/dist/components/switch/Switch.js +89 -62
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/table/Table.cjs +1 -1
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.js +62 -35
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/tabs/Tabs.cjs +1 -1
- package/dist/components/tabs/Tabs.cjs.map +1 -1
- package/dist/components/tabs/Tabs.js +110 -50
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/textarea/Textarea.cjs +1 -1
- package/dist/components/textarea/Textarea.cjs.map +1 -1
- package/dist/components/textarea/Textarea.js +63 -58
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/timepicker/TimePicker.cjs +2 -0
- package/dist/components/timepicker/TimePicker.cjs.map +1 -0
- package/dist/components/timepicker/TimePicker.js +159 -0
- package/dist/components/timepicker/TimePicker.js.map +1 -0
- package/dist/components/timerangepicker/TimeRangePicker.cjs +2 -0
- package/dist/components/timerangepicker/TimeRangePicker.cjs.map +1 -0
- package/dist/components/timerangepicker/TimeRangePicker.js +208 -0
- package/dist/components/timerangepicker/TimeRangePicker.js.map +1 -0
- package/dist/components/toast/Toast.cjs +1 -1
- package/dist/components/toast/Toast.cjs.map +1 -1
- package/dist/components/toast/Toast.js +91 -38
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs +1 -1
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.js +72 -56
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/treeview/TreeView.cjs +1 -1
- package/dist/components/treeview/TreeView.cjs.map +1 -1
- package/dist/components/treeview/TreeView.js +120 -90
- package/dist/components/treeview/TreeView.js.map +1 -1
- package/dist/components/virtuallist/VirtualList.cjs +1 -1
- package/dist/components/virtuallist/VirtualList.cjs.map +1 -1
- package/dist/components/virtuallist/VirtualList.js +52 -34
- package/dist/components/virtuallist/VirtualList.js.map +1 -1
- package/dist/dist/components/accordion/Accordion.cjs +2 -0
- package/dist/dist/components/accordion/Accordion.cjs.map +1 -0
- package/dist/dist/components/accordion/Accordion.js +51 -0
- package/dist/dist/components/accordion/Accordion.js.map +1 -0
- package/dist/dist/components/alert/Alert.cjs +2 -0
- package/dist/dist/components/alert/Alert.cjs.map +1 -0
- package/dist/dist/components/alert/Alert.js +32 -0
- package/dist/dist/components/alert/Alert.js.map +1 -0
- package/dist/dist/components/avatar/Avatar.cjs +2 -0
- package/dist/dist/components/avatar/Avatar.cjs.map +1 -0
- package/dist/dist/components/avatar/Avatar.js +51 -0
- package/dist/dist/components/avatar/Avatar.js.map +1 -0
- package/dist/dist/components/avatar/AvatarGroup.cjs +2 -0
- package/dist/dist/components/avatar/AvatarGroup.cjs.map +1 -0
- package/dist/dist/components/avatar/AvatarGroup.js +32 -0
- package/dist/dist/components/avatar/AvatarGroup.js.map +1 -0
- package/dist/dist/components/badge/Badge.cjs +2 -0
- package/dist/dist/components/badge/Badge.cjs.map +1 -0
- package/dist/dist/components/badge/Badge.js +81 -0
- package/dist/dist/components/badge/Badge.js.map +1 -0
- package/dist/dist/components/badge/BadgeGroup.cjs +2 -0
- package/dist/dist/components/badge/BadgeGroup.cjs.map +1 -0
- package/dist/dist/components/badge/BadgeGroup.js +17 -0
- package/dist/dist/components/badge/BadgeGroup.js.map +1 -0
- package/dist/dist/components/breadcrumbs/Breadcrumbs.cjs +2 -0
- package/dist/dist/components/breadcrumbs/Breadcrumbs.cjs.map +1 -0
- package/dist/dist/components/breadcrumbs/Breadcrumbs.js +46 -0
- package/dist/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/dist/components/button/Button.cjs +2 -0
- package/dist/dist/components/button/Button.cjs.map +1 -0
- package/dist/dist/components/button/Button.js +21 -0
- package/dist/dist/components/button/Button.js.map +1 -0
- package/dist/dist/components/card/Card.cjs +2 -0
- package/dist/dist/components/card/Card.cjs.map +1 -0
- package/dist/dist/components/card/Card.js +50 -0
- package/dist/dist/components/card/Card.js.map +1 -0
- package/dist/dist/components/checkbox/Checkbox.cjs +2 -0
- package/dist/dist/components/checkbox/Checkbox.cjs.map +1 -0
- package/dist/dist/components/checkbox/Checkbox.js +46 -0
- package/dist/dist/components/checkbox/Checkbox.js.map +1 -0
- package/dist/dist/components/chip/Chip.cjs +2 -0
- package/dist/dist/components/chip/Chip.cjs.map +1 -0
- package/dist/dist/components/chip/Chip.js +51 -0
- package/dist/dist/components/chip/Chip.js.map +1 -0
- package/dist/dist/components/combobox/Combobox.cjs +2 -0
- package/dist/dist/components/combobox/Combobox.cjs.map +1 -0
- package/dist/dist/components/combobox/Combobox.js +114 -0
- package/dist/dist/components/combobox/Combobox.js.map +1 -0
- package/dist/dist/components/commandpalette/CommandPalette.cjs +2 -0
- package/dist/dist/components/commandpalette/CommandPalette.cjs.map +1 -0
- package/dist/dist/components/commandpalette/CommandPalette.js +111 -0
- package/dist/dist/components/commandpalette/CommandPalette.js.map +1 -0
- package/dist/dist/components/contextmenu/ContextMenu.cjs +2 -0
- package/dist/dist/components/contextmenu/ContextMenu.cjs.map +1 -0
- package/dist/dist/components/contextmenu/ContextMenu.js +104 -0
- package/dist/dist/components/contextmenu/ContextMenu.js.map +1 -0
- package/dist/dist/components/datagrid/DataGrid.cjs +2 -0
- package/dist/dist/components/datagrid/DataGrid.cjs.map +1 -0
- package/dist/dist/components/datagrid/DataGrid.js +227 -0
- package/dist/dist/components/datagrid/DataGrid.js.map +1 -0
- package/dist/dist/components/datepicker/DatePicker.cjs +2 -0
- package/dist/dist/components/datepicker/DatePicker.cjs.map +1 -0
- package/dist/dist/components/datepicker/DatePicker.js +265 -0
- package/dist/dist/components/datepicker/DatePicker.js.map +1 -0
- package/dist/dist/components/daterangepicker/DateRangePicker.cjs +2 -0
- package/dist/dist/components/daterangepicker/DateRangePicker.cjs.map +1 -0
- package/dist/dist/components/daterangepicker/DateRangePicker.js +322 -0
- package/dist/dist/components/daterangepicker/DateRangePicker.js.map +1 -0
- package/dist/dist/components/drawer/Drawer.cjs +2 -0
- package/dist/dist/components/drawer/Drawer.cjs.map +1 -0
- package/dist/dist/components/drawer/Drawer.js +57 -0
- package/dist/dist/components/drawer/Drawer.js.map +1 -0
- package/dist/dist/components/dropdown/Dropdown.cjs +2 -0
- package/dist/dist/components/dropdown/Dropdown.cjs.map +1 -0
- package/dist/dist/components/dropdown/Dropdown.js +115 -0
- package/dist/dist/components/dropdown/Dropdown.js.map +1 -0
- package/dist/dist/components/fileuploader/FileUploader.cjs +2 -0
- package/dist/dist/components/fileuploader/FileUploader.cjs.map +1 -0
- package/dist/dist/components/fileuploader/FileUploader.js +83 -0
- package/dist/dist/components/fileuploader/FileUploader.js.map +1 -0
- package/dist/dist/components/hovercard/HoverCard.cjs +2 -0
- package/dist/dist/components/hovercard/HoverCard.cjs.map +1 -0
- package/dist/dist/components/hovercard/HoverCard.js +78 -0
- package/dist/dist/components/hovercard/HoverCard.js.map +1 -0
- package/dist/dist/components/input/Input.cjs +2 -0
- package/dist/dist/components/input/Input.cjs.map +1 -0
- package/dist/dist/components/input/Input.js +41 -0
- package/dist/dist/components/input/Input.js.map +1 -0
- package/dist/dist/components/layout/Container.cjs +2 -0
- package/dist/dist/components/layout/Container.cjs.map +1 -0
- package/dist/dist/components/layout/Container.js +33 -0
- package/dist/dist/components/layout/Container.js.map +1 -0
- package/dist/dist/components/layout/Flex.cjs +2 -0
- package/dist/dist/components/layout/Flex.cjs.map +1 -0
- package/dist/dist/components/layout/Flex.js +26 -0
- package/dist/dist/components/layout/Flex.js.map +1 -0
- package/dist/dist/components/layout/Grid.cjs +2 -0
- package/dist/dist/components/layout/Grid.cjs.map +1 -0
- package/dist/dist/components/layout/Grid.js +21 -0
- package/dist/dist/components/layout/Grid.js.map +1 -0
- package/dist/dist/components/layout/HStack.cjs.map +1 -0
- package/dist/dist/components/layout/HStack.js.map +1 -0
- package/dist/dist/components/layout/Stack.cjs.map +1 -0
- package/dist/dist/components/layout/Stack.js.map +1 -0
- package/dist/dist/components/megamenu/MegaMenu.cjs +2 -0
- package/dist/dist/components/megamenu/MegaMenu.cjs.map +1 -0
- package/dist/dist/components/megamenu/MegaMenu.js +43 -0
- package/dist/dist/components/megamenu/MegaMenu.js.map +1 -0
- package/dist/dist/components/modal/Modal.cjs +2 -0
- package/dist/dist/components/modal/Modal.cjs.map +1 -0
- package/dist/dist/components/modal/Modal.js +91 -0
- package/dist/dist/components/modal/Modal.js.map +1 -0
- package/dist/dist/components/pagination/Pagination.cjs +2 -0
- package/dist/dist/components/pagination/Pagination.cjs.map +1 -0
- package/dist/dist/components/pagination/Pagination.js +62 -0
- package/dist/dist/components/pagination/Pagination.js.map +1 -0
- package/dist/dist/components/popover/Popover.cjs +2 -0
- package/dist/dist/components/popover/Popover.cjs.map +1 -0
- package/dist/dist/components/popover/Popover.js +123 -0
- package/dist/dist/components/popover/Popover.js.map +1 -0
- package/dist/dist/components/progress/Progress.cjs +2 -0
- package/dist/dist/components/progress/Progress.cjs.map +1 -0
- package/dist/dist/components/progress/Progress.js +33 -0
- package/dist/dist/components/progress/Progress.js.map +1 -0
- package/dist/dist/components/radiogroup/RadioGroup.cjs +2 -0
- package/dist/dist/components/radiogroup/RadioGroup.cjs.map +1 -0
- package/dist/dist/components/radiogroup/RadioGroup.js +79 -0
- package/dist/dist/components/radiogroup/RadioGroup.js.map +1 -0
- package/dist/dist/components/rating/Rating.cjs +2 -0
- package/dist/dist/components/rating/Rating.cjs.map +1 -0
- package/dist/dist/components/rating/Rating.js +49 -0
- package/dist/dist/components/rating/Rating.js.map +1 -0
- package/dist/dist/components/skeleton/Skeleton.cjs +2 -0
- package/dist/dist/components/skeleton/Skeleton.cjs.map +1 -0
- package/dist/dist/components/skeleton/Skeleton.js +86 -0
- package/dist/dist/components/skeleton/Skeleton.js.map +1 -0
- package/dist/dist/components/slider/Slider.cjs +2 -0
- package/dist/dist/components/slider/Slider.cjs.map +1 -0
- package/dist/dist/components/slider/Slider.js +116 -0
- package/dist/dist/components/slider/Slider.js.map +1 -0
- package/dist/dist/components/spinner/Spinner.cjs +2 -0
- package/dist/dist/components/spinner/Spinner.cjs.map +1 -0
- package/dist/dist/components/spinner/Spinner.js +21 -0
- package/dist/dist/components/spinner/Spinner.js.map +1 -0
- package/dist/dist/components/stepper/Stepper.cjs +6 -0
- package/dist/dist/components/stepper/Stepper.cjs.map +1 -0
- package/dist/dist/components/stepper/Stepper.js +43 -0
- package/dist/dist/components/stepper/Stepper.js.map +1 -0
- package/dist/dist/components/switch/Switch.cjs +2 -0
- package/dist/dist/components/switch/Switch.cjs.map +1 -0
- package/dist/dist/components/switch/Switch.js +67 -0
- package/dist/dist/components/switch/Switch.js.map +1 -0
- package/dist/dist/components/table/Table.cjs +2 -0
- package/dist/dist/components/table/Table.cjs.map +1 -0
- package/dist/dist/components/table/Table.js +46 -0
- package/dist/dist/components/table/Table.js.map +1 -0
- package/dist/dist/components/tabs/Tabs.cjs +2 -0
- package/dist/dist/components/tabs/Tabs.cjs.map +1 -0
- package/dist/dist/components/tabs/Tabs.js +56 -0
- package/dist/dist/components/tabs/Tabs.js.map +1 -0
- package/dist/dist/components/textarea/Textarea.cjs +2 -0
- package/dist/dist/components/textarea/Textarea.cjs.map +1 -0
- package/dist/dist/components/textarea/Textarea.js +75 -0
- package/dist/dist/components/textarea/Textarea.js.map +1 -0
- package/dist/dist/components/toast/Toast.cjs +2 -0
- package/dist/dist/components/toast/Toast.cjs.map +1 -0
- package/dist/dist/components/toast/Toast.js +52 -0
- package/dist/dist/components/toast/Toast.js.map +1 -0
- package/dist/dist/components/tooltip/Tooltip.cjs +2 -0
- package/dist/dist/components/tooltip/Tooltip.cjs.map +1 -0
- package/dist/dist/components/tooltip/Tooltip.js +73 -0
- package/dist/dist/components/tooltip/Tooltip.js.map +1 -0
- package/dist/dist/components/treeview/TreeView.cjs +2 -0
- package/dist/dist/components/treeview/TreeView.cjs.map +1 -0
- package/dist/dist/components/treeview/TreeView.js +98 -0
- package/dist/dist/components/treeview/TreeView.js.map +1 -0
- package/dist/dist/components/virtuallist/VirtualList.cjs +2 -0
- package/dist/dist/components/virtuallist/VirtualList.cjs.map +1 -0
- package/dist/dist/components/virtuallist/VirtualList.js +58 -0
- package/dist/dist/components/virtuallist/VirtualList.js.map +1 -0
- package/dist/dist/index.cjs +2 -0
- package/dist/dist/index.cjs.map +1 -0
- package/dist/dist/index.js +109 -0
- package/dist/dist/index.js.map +1 -0
- package/dist/dist/styles/index.css +1 -0
- package/dist/dist/theme/NUIProvider.cjs.map +1 -0
- package/dist/dist/theme/NUIProvider.js.map +1 -0
- package/dist/dist/theme/useTheme.cjs.map +1 -0
- package/dist/dist/theme/useTheme.js.map +1 -0
- package/dist/dist/types/components/accordion/Accordion.d.ts +18 -0
- package/dist/dist/types/components/accordion/Accordion.d.ts.map +1 -0
- package/dist/dist/types/components/alert/Alert.d.ts +13 -0
- package/dist/dist/types/components/alert/Alert.d.ts.map +1 -0
- package/dist/dist/types/components/avatar/Avatar.d.ts +18 -0
- package/dist/dist/types/components/avatar/Avatar.d.ts.map +1 -0
- package/dist/dist/types/components/avatar/AvatarGroup.d.ts +10 -0
- package/dist/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -0
- package/dist/dist/types/components/badge/Badge.d.ts +22 -0
- package/dist/dist/types/components/badge/Badge.d.ts.map +1 -0
- package/dist/dist/types/components/badge/BadgeGroup.d.ts +9 -0
- package/dist/dist/types/components/badge/BadgeGroup.d.ts.map +1 -0
- package/dist/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +15 -0
- package/dist/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -0
- package/dist/dist/types/components/button/Button.d.ts +15 -0
- package/dist/dist/types/components/button/Button.d.ts.map +1 -0
- package/dist/dist/types/components/card/Card.d.ts +27 -0
- package/dist/dist/types/components/card/Card.d.ts.map +1 -0
- package/dist/dist/types/components/checkbox/Checkbox.d.ts +15 -0
- package/dist/dist/types/components/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/dist/types/components/chip/Chip.d.ts +21 -0
- package/dist/dist/types/components/chip/Chip.d.ts.map +1 -0
- package/dist/dist/types/components/combobox/Combobox.d.ts +24 -0
- package/dist/dist/types/components/combobox/Combobox.d.ts.map +1 -0
- package/dist/dist/types/components/commandpalette/CommandPalette.d.ts +21 -0
- package/dist/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -0
- package/dist/dist/types/components/contextmenu/ContextMenu.d.ts +17 -0
- package/dist/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -0
- package/dist/dist/types/components/datagrid/DataGrid.d.ts +28 -0
- package/dist/dist/types/components/datagrid/DataGrid.d.ts.map +1 -0
- package/dist/dist/types/components/datepicker/DatePicker.d.ts +14 -0
- package/dist/dist/types/components/datepicker/DatePicker.d.ts.map +1 -0
- package/dist/dist/types/components/daterangepicker/DateRangePicker.d.ts +19 -0
- package/dist/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -0
- package/dist/dist/types/components/drawer/Drawer.d.ts +12 -0
- package/dist/dist/types/components/drawer/Drawer.d.ts.map +1 -0
- package/dist/dist/types/components/dropdown/Dropdown.d.ts +18 -0
- package/dist/dist/types/components/dropdown/Dropdown.d.ts.map +1 -0
- package/dist/dist/types/components/fileuploader/FileUploader.d.ts +9 -0
- package/dist/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -0
- package/dist/dist/types/components/hovercard/HoverCard.d.ts +10 -0
- package/dist/dist/types/components/hovercard/HoverCard.d.ts.map +1 -0
- package/dist/dist/types/components/input/Input.d.ts +15 -0
- package/dist/dist/types/components/input/Input.d.ts.map +1 -0
- package/dist/dist/types/components/layout/Container.d.ts +8 -0
- package/dist/dist/types/components/layout/Container.d.ts.map +1 -0
- package/dist/dist/types/components/layout/Flex.d.ts +14 -0
- package/dist/dist/types/components/layout/Flex.d.ts.map +1 -0
- package/dist/dist/types/components/layout/Grid.d.ts +10 -0
- package/dist/dist/types/components/layout/Grid.d.ts.map +1 -0
- package/dist/dist/types/components/layout/HStack.d.ts.map +1 -0
- package/dist/dist/types/components/layout/Stack.d.ts.map +1 -0
- package/dist/dist/types/components/megamenu/MegaMenu.d.ts +12 -0
- package/dist/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -0
- package/dist/dist/types/components/modal/Modal.d.ts +16 -0
- package/dist/dist/types/components/modal/Modal.d.ts.map +1 -0
- package/dist/dist/types/components/pagination/Pagination.d.ts +9 -0
- package/dist/dist/types/components/pagination/Pagination.d.ts.map +1 -0
- package/dist/dist/types/components/popover/Popover.d.ts +21 -0
- package/dist/dist/types/components/popover/Popover.d.ts.map +1 -0
- package/dist/dist/types/components/progress/Progress.d.ts +13 -0
- package/dist/dist/types/components/progress/Progress.d.ts.map +1 -0
- package/dist/dist/types/components/radiogroup/RadioGroup.d.ts +18 -0
- package/dist/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -0
- package/dist/dist/types/components/rating/Rating.d.ts +19 -0
- package/dist/dist/types/components/rating/Rating.d.ts.map +1 -0
- package/dist/dist/types/components/select/Select.d.ts +20 -0
- package/dist/dist/types/components/select/Select.d.ts.map +1 -0
- package/dist/dist/types/components/skeleton/Skeleton.d.ts +44 -0
- package/dist/dist/types/components/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/dist/types/components/slider/Slider.d.ts +13 -0
- package/dist/dist/types/components/slider/Slider.d.ts.map +1 -0
- package/dist/dist/types/components/spinner/Spinner.d.ts +7 -0
- package/dist/dist/types/components/spinner/Spinner.d.ts.map +1 -0
- package/dist/dist/types/components/stepper/Stepper.d.ts +12 -0
- package/dist/dist/types/components/stepper/Stepper.d.ts.map +1 -0
- package/dist/dist/types/components/switch/Switch.d.ts +15 -0
- package/dist/dist/types/components/switch/Switch.d.ts.map +1 -0
- package/dist/dist/types/components/table/Table.d.ts +14 -0
- package/dist/dist/types/components/table/Table.d.ts.map +1 -0
- package/dist/dist/types/components/tabs/Tabs.d.ts +14 -0
- package/dist/dist/types/components/tabs/Tabs.d.ts.map +1 -0
- package/dist/dist/types/components/textarea/Textarea.d.ts +14 -0
- package/dist/dist/types/components/textarea/Textarea.d.ts.map +1 -0
- package/dist/dist/types/components/toast/Toast.d.ts +16 -0
- package/dist/dist/types/components/toast/Toast.d.ts.map +1 -0
- package/dist/dist/types/components/tooltip/Tooltip.d.ts +10 -0
- package/dist/dist/types/components/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/dist/types/components/treeview/TreeView.d.ts +16 -0
- package/dist/dist/types/components/treeview/TreeView.d.ts.map +1 -0
- package/dist/dist/types/components/virtuallist/VirtualList.d.ts +23 -0
- package/dist/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -0
- package/dist/dist/types/index.d.ts +50 -0
- package/dist/dist/types/index.d.ts.map +1 -0
- package/dist/dist/types/theme/NUIProvider.d.ts.map +1 -0
- package/dist/dist/types/theme/useTheme.d.ts.map +1 -0
- package/dist/dist/types/utils/generateid/generateId.d.ts +2 -0
- package/dist/dist/types/utils/generateid/generateId.d.ts.map +1 -0
- package/dist/dist/types/utils/index.d.ts +9 -0
- package/dist/dist/types/utils/index.d.ts.map +1 -0
- package/dist/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
- package/dist/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -0
- package/dist/dist/types/utils/keyboardnav/keyboardNav.d.ts +11 -0
- package/dist/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -0
- package/dist/dist/types/utils/onclickoutside/onClickOutside.d.ts +3 -0
- package/dist/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -0
- package/dist/dist/types/utils/portal/portal.d.ts +4 -0
- package/dist/dist/types/utils/portal/portal.d.ts.map +1 -0
- package/dist/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -0
- package/dist/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -0
- package/dist/dist/types/utils/scrolllock/scrollLock.d.ts +11 -0
- package/dist/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -0
- package/dist/dist/types/utils/trapfocus/trapFocus.d.ts +8 -0
- package/dist/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -0
- package/dist/dist/utils/generateid/generateId.cjs.map +1 -0
- package/dist/dist/utils/generateid/generateId.js.map +1 -0
- package/dist/dist/utils/inertmanager/inertManager.cjs +2 -0
- package/dist/dist/utils/inertmanager/inertManager.cjs.map +1 -0
- package/dist/dist/utils/inertmanager/inertManager.js +18 -0
- package/dist/dist/utils/inertmanager/inertManager.js.map +1 -0
- package/dist/dist/utils/keyboardnav/keyboardNav.cjs.map +1 -0
- package/dist/dist/utils/keyboardnav/keyboardNav.js.map +1 -0
- package/dist/dist/utils/onclickoutside/onClickOutside.cjs +2 -0
- package/dist/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -0
- package/dist/dist/utils/onclickoutside/onClickOutside.js +11 -0
- package/dist/dist/utils/onclickoutside/onClickOutside.js.map +1 -0
- package/dist/dist/utils/portal/portal.cjs +2 -0
- package/dist/dist/utils/portal/portal.cjs.map +1 -0
- package/dist/dist/utils/portal/portal.js +8 -0
- package/dist/dist/utils/portal/portal.js.map +1 -0
- package/dist/dist/utils/restorefocus/restoreFocus.cjs +2 -0
- package/dist/dist/utils/restorefocus/restoreFocus.cjs.map +1 -0
- package/dist/dist/utils/restorefocus/restoreFocus.js +7 -0
- package/dist/dist/utils/restorefocus/restoreFocus.js.map +1 -0
- package/dist/dist/utils/scrolllock/scrollLock.cjs +2 -0
- package/dist/dist/utils/scrolllock/scrollLock.cjs.map +1 -0
- package/dist/dist/utils/scrolllock/scrollLock.js +12 -0
- package/dist/dist/utils/scrolllock/scrollLock.js.map +1 -0
- package/dist/dist/utils/trapfocus/trapFocus.cjs +3 -0
- package/dist/dist/utils/trapfocus/trapFocus.cjs.map +1 -0
- package/dist/dist/utils/trapfocus/trapFocus.js +14 -0
- package/dist/dist/utils/trapfocus/trapFocus.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +118 -107
- package/dist/index.js.map +1 -1
- package/dist/package.json +2 -2
- package/dist/styles/nui.css +1 -1
- package/dist/types/components/accordion/Accordion.d.ts +7 -3
- package/dist/types/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/types/components/alert/Alert.d.ts +18 -5
- package/dist/types/components/alert/Alert.d.ts.map +1 -1
- package/dist/types/components/avatar/Avatar.d.ts +12 -8
- package/dist/types/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/types/components/avatar/AvatarGroup.d.ts +11 -4
- package/dist/types/components/avatar/AvatarGroup.d.ts.map +1 -1
- package/dist/types/components/badge/Badge.d.ts +19 -11
- package/dist/types/components/badge/Badge.d.ts.map +1 -1
- package/dist/types/components/badge/BadgeGroup.d.ts +7 -4
- package/dist/types/components/badge/BadgeGroup.d.ts.map +1 -1
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +14 -6
- package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/components/button/Button.d.ts +25 -10
- package/dist/types/components/button/Button.d.ts.map +1 -1
- package/dist/types/components/card/Card.d.ts +12 -21
- package/dist/types/components/card/Card.d.ts.map +1 -1
- package/dist/types/components/checkbox/Checkbox.d.ts +12 -7
- package/dist/types/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/chip/Chip.d.ts +14 -11
- package/dist/types/components/chip/Chip.d.ts.map +1 -1
- package/dist/types/components/combobox/Combobox.d.ts +15 -4
- package/dist/types/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/commandpalette/CommandPalette.d.ts +12 -3
- package/dist/types/components/commandpalette/CommandPalette.d.ts.map +1 -1
- package/dist/types/components/contextmenu/ContextMenu.d.ts +14 -6
- package/dist/types/components/contextmenu/ContextMenu.d.ts.map +1 -1
- package/dist/types/components/datagrid/DataGrid.d.ts +16 -4
- package/dist/types/components/datagrid/DataGrid.d.ts.map +1 -1
- package/dist/types/components/datepicker/DatePicker.d.ts +13 -1
- package/dist/types/components/datepicker/DatePicker.d.ts.map +1 -1
- package/dist/types/components/daterangepicker/DateRangePicker.d.ts +3 -1
- package/dist/types/components/daterangepicker/DateRangePicker.d.ts.map +1 -1
- package/dist/types/components/dialog/DialogProvider.d.ts +2 -0
- package/dist/types/components/dialog/DialogProvider.d.ts.map +1 -0
- package/dist/types/components/dialog/dialogStore.d.ts +42 -0
- package/dist/types/components/dialog/dialogStore.d.ts.map +1 -0
- package/dist/types/components/drawer/Drawer.d.ts +18 -4
- package/dist/types/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/types/components/dropdown/Dropdown.d.ts +21 -16
- package/dist/types/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/types/components/fileuploader/FileUploader.d.ts +22 -3
- package/dist/types/components/fileuploader/FileUploader.d.ts.map +1 -1
- package/dist/types/components/hovercard/HoverCard.d.ts +45 -5
- package/dist/types/components/hovercard/HoverCard.d.ts.map +1 -1
- package/dist/types/components/input/Input.d.ts +20 -10
- package/dist/types/components/input/Input.d.ts.map +1 -1
- package/dist/types/components/layout/Container.d.ts +8 -4
- package/dist/types/components/layout/Container.d.ts.map +1 -1
- package/dist/types/components/layout/Flex.d.ts +27 -10
- package/dist/types/components/layout/Flex.d.ts.map +1 -1
- package/dist/types/components/layout/Grid.d.ts +11 -5
- package/dist/types/components/layout/Grid.d.ts.map +1 -1
- package/dist/types/components/link/Link.d.ts +22 -0
- package/dist/types/components/link/Link.d.ts.map +1 -0
- package/dist/types/components/megamenu/MegaMenu.d.ts +8 -11
- package/dist/types/components/megamenu/MegaMenu.d.ts.map +1 -1
- package/dist/types/components/modal/Modal.d.ts +8 -7
- package/dist/types/components/modal/Modal.d.ts.map +1 -1
- package/dist/types/components/multiselect/MultiSelect.d.ts +33 -0
- package/dist/types/components/multiselect/MultiSelect.d.ts.map +1 -0
- package/dist/types/components/nuiprovider/NUIProvider.d.ts +29 -0
- package/dist/types/components/nuiprovider/NUIProvider.d.ts.map +1 -0
- package/dist/types/components/pagination/Pagination.d.ts +17 -3
- package/dist/types/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/popover/Popover.d.ts +54 -16
- package/dist/types/components/popover/Popover.d.ts.map +1 -1
- package/dist/types/components/progress/Progress.d.ts +17 -7
- package/dist/types/components/progress/Progress.d.ts.map +1 -1
- package/dist/types/components/radiogroup/RadioGroup.d.ts +15 -10
- package/dist/types/components/radiogroup/RadioGroup.d.ts.map +1 -1
- package/dist/types/components/rating/Rating.d.ts +24 -10
- package/dist/types/components/rating/Rating.d.ts.map +1 -1
- package/dist/types/components/resizable/Resizable.d.ts +24 -0
- package/dist/types/components/resizable/Resizable.d.ts.map +1 -0
- package/dist/types/components/select/Select.d.ts +17 -8
- package/dist/types/components/select/Select.d.ts.map +1 -1
- package/dist/types/components/skeleton/Skeleton.d.ts +37 -36
- package/dist/types/components/skeleton/Skeleton.d.ts.map +1 -1
- package/dist/types/components/slider/Slider.d.ts +15 -4
- package/dist/types/components/slider/Slider.d.ts.map +1 -1
- package/dist/types/components/spinner/Spinner.d.ts +14 -4
- package/dist/types/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/types/components/stepper/Stepper.d.ts +17 -3
- package/dist/types/components/stepper/Stepper.d.ts.map +1 -1
- package/dist/types/components/switch/Switch.d.ts +20 -5
- package/dist/types/components/switch/Switch.d.ts.map +1 -1
- package/dist/types/components/table/Table.d.ts +24 -4
- package/dist/types/components/table/Table.d.ts.map +1 -1
- package/dist/types/components/tabs/Tabs.d.ts +25 -12
- package/dist/types/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/types/components/textarea/Textarea.d.ts +8 -5
- package/dist/types/components/textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/timepicker/TimePicker.d.ts +26 -0
- package/dist/types/components/timepicker/TimePicker.d.ts.map +1 -0
- package/dist/types/components/timerangepicker/TimeRangePicker.d.ts +32 -0
- package/dist/types/components/timerangepicker/TimeRangePicker.d.ts.map +1 -0
- package/dist/types/components/toast/Toast.d.ts +23 -7
- package/dist/types/components/toast/Toast.d.ts.map +1 -1
- package/dist/types/components/tooltip/Tooltip.d.ts +13 -2
- package/dist/types/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/treeview/TreeView.d.ts +20 -6
- package/dist/types/components/treeview/TreeView.d.ts.map +1 -1
- package/dist/types/components/virtuallist/VirtualList.d.ts +12 -16
- package/dist/types/components/virtuallist/VirtualList.d.ts.map +1 -1
- package/dist/types/index.d.ts +8 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/utils/cn/cn.d.ts +19 -0
- package/dist/types/utils/cn/cn.d.ts.map +1 -0
- package/dist/types/utils/generateid/generateId.d.ts +7 -0
- package/dist/types/utils/generateid/generateId.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/inertmanager/inertManager.d.ts +13 -0
- package/dist/types/utils/inertmanager/inertManager.d.ts.map +1 -1
- package/dist/types/utils/keyboardnav/keyboardNav.d.ts +17 -6
- package/dist/types/utils/keyboardnav/keyboardNav.d.ts.map +1 -1
- package/dist/types/utils/onclickoutside/onClickOutside.d.ts +9 -1
- package/dist/types/utils/onclickoutside/onClickOutside.d.ts.map +1 -1
- package/dist/types/utils/portal/portal.d.ts +14 -1
- package/dist/types/utils/portal/portal.d.ts.map +1 -1
- package/dist/types/utils/restorefocus/restoreFocus.d.ts +8 -4
- package/dist/types/utils/restorefocus/restoreFocus.d.ts.map +1 -1
- package/dist/types/utils/scrolllock/scrollLock.d.ts +10 -2
- package/dist/types/utils/scrolllock/scrollLock.d.ts.map +1 -1
- package/dist/types/utils/slot/slot.d.ts +12 -0
- package/dist/types/utils/slot/slot.d.ts.map +1 -0
- package/dist/types/utils/trapfocus/trapFocus.d.ts +6 -2
- package/dist/types/utils/trapfocus/trapFocus.d.ts.map +1 -1
- package/dist/utils/cn/cn.cjs +2 -0
- package/dist/utils/cn/cn.cjs.map +1 -0
- package/dist/utils/cn/cn.js +21 -0
- package/dist/utils/cn/cn.js.map +1 -0
- package/dist/utils/inertmanager/inertManager.cjs.map +1 -1
- package/dist/utils/inertmanager/inertManager.js.map +1 -1
- package/dist/utils/onclickoutside/onClickOutside.cjs +1 -1
- package/dist/utils/onclickoutside/onClickOutside.cjs.map +1 -1
- package/dist/utils/onclickoutside/onClickOutside.js +10 -6
- package/dist/utils/onclickoutside/onClickOutside.js.map +1 -1
- package/dist/utils/portal/portal.cjs.map +1 -1
- package/dist/utils/portal/portal.js.map +1 -1
- package/dist/utils/restorefocus/restoreFocus.cjs.map +1 -1
- package/dist/utils/restorefocus/restoreFocus.js.map +1 -1
- package/dist/utils/scrolllock/scrollLock.cjs.map +1 -1
- package/dist/utils/scrolllock/scrollLock.js +7 -0
- package/dist/utils/scrolllock/scrollLock.js.map +1 -1
- package/dist/utils/slot/slot.cjs +2 -0
- package/dist/utils/slot/slot.cjs.map +1 -0
- package/dist/utils/slot/slot.js +57 -0
- package/dist/utils/slot/slot.js.map +1 -0
- package/dist/utils/trapfocus/trapFocus.cjs.map +1 -1
- package/dist/utils/trapfocus/trapFocus.js.map +1 -1
- package/package.json +2 -2
- package/dist/components/layout/HStack.cjs.map +0 -1
- package/dist/components/layout/HStack.js.map +0 -1
- package/dist/components/layout/Stack.cjs.map +0 -1
- package/dist/components/layout/Stack.js.map +0 -1
- package/dist/theme/NUIProvider.cjs.map +0 -1
- package/dist/theme/NUIProvider.js.map +0 -1
- package/dist/theme/useTheme.cjs.map +0 -1
- package/dist/theme/useTheme.js.map +0 -1
- package/dist/types/components/layout/HStack.d.ts.map +0 -1
- package/dist/types/components/layout/Stack.d.ts.map +0 -1
- package/dist/types/theme/NUIProvider.d.ts.map +0 -1
- package/dist/types/theme/useTheme.d.ts.map +0 -1
- package/dist/utils/generateid/generateId.cjs.map +0 -1
- package/dist/utils/generateid/generateId.js.map +0 -1
- package/dist/utils/keyboardnav/keyboardNav.cjs.map +0 -1
- package/dist/utils/keyboardnav/keyboardNav.js.map +0 -1
- /package/dist/{components → dist/components}/layout/HStack.cjs +0 -0
- /package/dist/{components → dist/components}/layout/HStack.js +0 -0
- /package/dist/{components → dist/components}/layout/Stack.cjs +0 -0
- /package/dist/{components → dist/components}/layout/Stack.js +0 -0
- /package/dist/{theme → dist/theme}/NUIProvider.cjs +0 -0
- /package/dist/{theme → dist/theme}/NUIProvider.js +0 -0
- /package/dist/{theme → dist/theme}/useTheme.cjs +0 -0
- /package/dist/{theme → dist/theme}/useTheme.js +0 -0
- /package/dist/{types → dist/types}/components/layout/HStack.d.ts +0 -0
- /package/dist/{types → dist/types}/components/layout/Stack.d.ts +0 -0
- /package/dist/{types → dist/types}/theme/NUIProvider.d.ts +0 -0
- /package/dist/{types → dist/types}/theme/useTheme.d.ts +0 -0
- /package/dist/{utils → dist/utils}/generateid/generateId.cjs +0 -0
- /package/dist/{utils → dist/utils}/generateid/generateId.js +0 -0
- /package/dist/{utils → dist/utils}/keyboardnav/keyboardNav.cjs +0 -0
- /package/dist/{utils → dist/utils}/keyboardnav/keyboardNav.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGrid.cjs","sources":["../../../../src/components/datagrid/DataGrid.tsx"],"sourcesContent":["/**\r\n * DataGrid.tsx\r\n * -------------\r\n * Vercel-style DataGrid for NUI\r\n *\r\n * Features:\r\n * - Sortable columns\r\n * - Sticky header\r\n * - Optional row selection (checkbox)\r\n * - Row actions slot\r\n * - Pagination (client-side)\r\n * - Keyboard navigation & focus\r\n * - Accessible (aria-sort, aria-selected, table/grid roles)\r\n */\r\n\r\nimport React, { useMemo, useState } from 'react';\r\nimport './DataGrid.css';\r\n\r\nexport type DataRow = Record<string, unknown> & {\r\n id?: string | number;\r\n};\r\n\r\nexport type DataGridColumn<T extends DataRow = DataRow> = {\r\n key: keyof T & string;\r\n title: React.ReactNode;\r\n sortable?: boolean;\r\n width?: number | string;\r\n align?: 'left' | 'center' | 'right';\r\n render?: (row: T) => React.ReactNode;\r\n};\r\n\r\nexport interface DataGridProps<T extends DataRow = DataRow> {\r\n columns: DataGridColumn<T>[];\r\n rows: T[];\r\n\r\n page?: number;\r\n pageSize?: number;\r\n onPageChange?: (page: number) => void;\r\n\r\n selectable?: boolean;\r\n selectedRowIds?: Set<string | number>;\r\n onSelectionChange?: (ids: Set<string | number>) => void;\r\n\r\n onRowClick?: (row: T) => void;\r\n renderRowActions?: (row: T) => React.ReactNode;\r\n\r\n className?: string;\r\n disablePagination?: boolean;\r\n}\r\n\r\ntype SortState = { key: string | null; dir: 'asc' | 'desc' | null };\r\n\r\nexport function DataGrid<T extends DataRow = DataRow>({\r\n columns,\r\n rows,\r\n page: controlledPage,\r\n pageSize = 10,\r\n onPageChange,\r\n\r\n selectable = false,\r\n selectedRowIds,\r\n onSelectionChange,\r\n\r\n onRowClick,\r\n renderRowActions,\r\n className = '',\r\n disablePagination = false,\r\n}: DataGridProps<T>) {\r\n const [sort, setSort] = useState<SortState>({ key: null, dir: null });\r\n const [internalPage, setInternalPage] = useState(1);\r\n const currentPage = controlledPage ?? internalPage;\r\n\r\n const [internalSelection, setInternalSelection] = useState<\r\n Set<string | number>\r\n >(new Set());\r\n\r\n const selection = selectedRowIds ?? internalSelection;\r\n\r\n const totalPages = useMemo(() => {\r\n if (disablePagination) return 1;\r\n return Math.max(1, Math.ceil(rows.length / pageSize));\r\n }, [rows.length, pageSize, disablePagination]);\r\n\r\n const sortedRows = useMemo(() => {\r\n if (!sort.key || !sort.dir) return [...rows];\r\n\r\n const key = sort.key as keyof T;\r\n const dir = sort.dir === 'asc' ? 1 : -1;\r\n\r\n return [...rows].sort((a, b) => {\r\n const va = a[key];\r\n const vb = b[key];\r\n\r\n if (va === undefined && vb !== undefined) return -1 * dir;\r\n if (vb === undefined && va !== undefined) return 1 * dir;\r\n\r\n if (typeof va === 'number' && typeof vb === 'number') {\r\n return (va - vb) * dir;\r\n }\r\n\r\n if (va instanceof Date && vb instanceof Date) {\r\n return (va.getTime() - vb.getTime()) * dir;\r\n }\r\n\r\n return String(va ?? '').localeCompare(String(vb ?? '')) * dir;\r\n });\r\n }, [rows, sort]);\r\n\r\n const paginatedRows = useMemo(() => {\r\n if (disablePagination) return sortedRows;\r\n const start = (currentPage - 1) * pageSize;\r\n return sortedRows.slice(start, start + pageSize);\r\n }, [sortedRows, currentPage, pageSize, disablePagination]);\r\n\r\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\r\n\r\n const rowId = (r: T, idx: number) =>\r\n r.id ?? `row-${idx}-${Math.random().toString(36).slice(2, 7)}`;\r\n\r\n const toggleSort = (key: string) => {\r\n setSort((prev) => {\r\n if (prev.key !== key) return { key, dir: 'asc' };\r\n if (prev.dir === 'asc') return { key, dir: 'desc' };\r\n return { key: null, dir: null };\r\n });\r\n };\r\n\r\n const setPage = (page: number) => {\r\n const next = Math.max(1, Math.min(totalPages, page));\r\n if (controlledPage === undefined) setInternalPage(next);\r\n onPageChange?.(next);\r\n };\r\n\r\n const toggleSelectRow = (id: string | number) => {\r\n const update = (set: Set<string | number>) => {\r\n const next = new Set(set);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n return next;\r\n };\r\n\r\n if (selectedRowIds) {\r\n const next = update(selection);\r\n onSelectionChange?.(next);\r\n } else {\r\n setInternalSelection((prev) => {\r\n const next = update(prev);\r\n onSelectionChange?.(next);\r\n return next;\r\n });\r\n }\r\n };\r\n\r\n const selectAllOnPage = () => {\r\n const ids = paginatedRows.map((r, i) => r.id ?? rowId(r, i));\r\n const allSelected = ids.every((id) => selection.has(id));\r\n\r\n const update = (set: Set<string | number>) => {\r\n const next = new Set(set);\r\n if (allSelected) ids.forEach((id) => next.delete(id));\r\n else ids.forEach((id) => next.add(id));\r\n return next;\r\n };\r\n\r\n if (selectedRowIds) {\r\n const next = update(selection);\r\n onSelectionChange?.(next);\r\n } else {\r\n setInternalSelection((prev) => {\r\n const next = update(prev);\r\n onSelectionChange?.(next);\r\n return next;\r\n });\r\n }\r\n };\r\n\r\n const onKeyDownTable = (e: React.KeyboardEvent<HTMLDivElement>): void => {\r\n if (paginatedRows.length === 0) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n setFocusedIndex((prev) =>\r\n prev === null ? 0 : Math.min(paginatedRows.length - 1, prev + 1)\r\n );\r\n break;\r\n\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n setFocusedIndex((prev) => (prev === null ? 0 : Math.max(0, prev - 1)));\r\n break;\r\n\r\n case 'PageDown':\r\n e.preventDefault();\r\n setPage(currentPage + 1);\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'PageUp':\r\n e.preventDefault();\r\n setPage(currentPage - 1);\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'Home':\r\n e.preventDefault();\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'End':\r\n e.preventDefault();\r\n setFocusedIndex(paginatedRows.length - 1);\r\n break;\r\n\r\n case 'Enter':\r\n e.preventDefault();\r\n if (focusedIndex !== null) {\r\n const row = paginatedRows[focusedIndex];\r\n const id = row.id ?? rowId(row, focusedIndex);\r\n if (selectable) toggleSelectRow(id);\r\n onRowClick?.(row);\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const showActions = Boolean(renderRowActions);\r\n\r\n return (\r\n <div\r\n className={`ui-datagrid ${className}`}\r\n onKeyDown={onKeyDownTable}\r\n tabIndex={0}\r\n role=\"grid\"\r\n aria-rowcount={rows.length}\r\n >\r\n <div className=\"ui-datagrid-table\">\r\n {/* HEADER */}\r\n <div className=\"ui-datagrid-header\" role=\"row\">\r\n {selectable && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--select\">\r\n <input\r\n type=\"checkbox\"\r\n aria-label=\"Select all on page\"\r\n onChange={selectAllOnPage}\r\n checked={\r\n paginatedRows.length > 0 &&\r\n paginatedRows.every((r, i) =>\r\n selection.has(r.id ?? rowId(r, i))\r\n )\r\n }\r\n />\r\n </div>\r\n )}\r\n\r\n {columns.map((col) => {\r\n const isSorted = sort.key === col.key;\r\n return (\r\n <div\r\n key={col.key}\r\n className={`ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--${\r\n col.align ?? 'left'\r\n }`}\r\n role=\"columnheader\"\r\n style={{ width: col.width }}\r\n aria-sort={\r\n isSorted\r\n ? sort.dir === 'asc'\r\n ? 'ascending'\r\n : 'descending'\r\n : 'none'\r\n }\r\n onClick={() => col.sortable && toggleSort(col.key)}\r\n >\r\n <div className=\"ui-datagrid-header-content\">\r\n <span>{col.title}</span>\r\n {col.sortable && (\r\n <span className=\"ui-datagrid-sort-indicator\">\r\n {isSorted ? (sort.dir === 'asc' ? '▲' : '▼') : '⤓'}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n\r\n {showActions && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--actions\" />\r\n )}\r\n </div>\r\n\r\n {/* BODY */}\r\n <div className=\"ui-datagrid-body\" role=\"rowgroup\">\r\n {paginatedRows.length === 0 ? (\r\n <div className=\"ui-datagrid-empty\">No data</div>\r\n ) : (\r\n paginatedRows.map((row, idx) => {\r\n const rid = row.id ?? rowId(row, idx);\r\n const isSelected = selection.has(rid);\r\n const focused = focusedIndex === idx;\r\n\r\n return (\r\n <div\r\n key={String(rid)}\r\n className={[\r\n 'ui-datagrid-row',\r\n isSelected ? 'selected' : '',\r\n focused ? 'focused' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n role=\"row\"\r\n tabIndex={focused ? 0 : -1}\r\n aria-selected={isSelected || undefined}\r\n onClick={() => {\r\n if (selectable) toggleSelectRow(rid);\r\n onRowClick?.(row);\r\n setFocusedIndex(idx);\r\n }}\r\n onFocus={() => setFocusedIndex(idx)}\r\n >\r\n {selectable && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--select\">\r\n <input\r\n type=\"checkbox\"\r\n checked={isSelected}\r\n onClick={(e) => e.stopPropagation()}\r\n onChange={() => toggleSelectRow(rid)}\r\n aria-label={`Select row ${String(rid)}`}\r\n />\r\n </div>\r\n )}\r\n\r\n {columns.map((col) => (\r\n <div\r\n key={col.key}\r\n role=\"gridcell\"\r\n className={`ui-datagrid-cell ui-datagrid-cell--${\r\n col.align ?? 'left'\r\n }`}\r\n style={{ width: col.width }}\r\n >\r\n {col.render\r\n ? col.render(row)\r\n : String(row[col.key] ?? '')}\r\n </div>\r\n ))}\r\n\r\n {showActions && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--actions\">\r\n {renderRowActions?.(row)}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })\r\n )}\r\n </div>\r\n\r\n {/* PAGINATION */}\r\n {!disablePagination && totalPages > 1 && (\r\n <div className=\"ui-datagrid-footer\">\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(1)}\r\n disabled={currentPage === 1}\r\n >\r\n «\r\n </button>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(currentPage - 1)}\r\n disabled={currentPage === 1}\r\n >\r\n ‹\r\n </button>\r\n\r\n <div className=\"ui-datagrid-page-info\">\r\n Page {currentPage} of {totalPages}\r\n </div>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(currentPage + 1)}\r\n disabled={currentPage === totalPages}\r\n >\r\n ›\r\n </button>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(totalPages)}\r\n disabled={currentPage === totalPages}\r\n >\r\n »\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["DataGrid","columns","rows","controlledPage","pageSize","onPageChange","selectable","selectedRowIds","onSelectionChange","onRowClick","renderRowActions","className","disablePagination","sort","setSort","useState","internalPage","setInternalPage","currentPage","internalSelection","setInternalSelection","selection","totalPages","useMemo","sortedRows","key","dir","a","b","va","vb","paginatedRows","start","focusedIndex","setFocusedIndex","rowId","r","idx","toggleSort","prev","setPage","page","next","toggleSelectRow","id","update","set","selectAllOnPage","ids","allSelected","onKeyDownTable","row","showActions","jsx","jsxs","i","col","isSorted","rid","isSelected","focused","e"],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
2
|
+
import { useState as x, useMemo as M } from "react";
|
|
3
|
+
/* empty css */
|
|
4
|
+
function Q({
|
|
5
|
+
columns: C,
|
|
6
|
+
rows: u,
|
|
7
|
+
page: $,
|
|
8
|
+
pageSize: m = 10,
|
|
9
|
+
onPageChange: A,
|
|
10
|
+
selectable: k = !1,
|
|
11
|
+
selectedRowIds: D,
|
|
12
|
+
onSelectionChange: b,
|
|
13
|
+
onRowClick: I,
|
|
14
|
+
renderRowActions: P,
|
|
15
|
+
className: T = "",
|
|
16
|
+
disablePagination: p = !1
|
|
17
|
+
}) {
|
|
18
|
+
const [c, B] = x({ key: null, dir: null }), [F, K] = x(1), l = $ ?? F, [U, E] = x(/* @__PURE__ */ new Set()), v = D ?? U, g = M(() => p ? 1 : Math.max(1, Math.ceil(u.length / m)), [u.length, m, p]), w = M(() => {
|
|
19
|
+
if (!c.key || !c.dir) return [...u];
|
|
20
|
+
const e = c.key, t = c.dir === "asc" ? 1 : -1;
|
|
21
|
+
return [...u].sort((i, a) => {
|
|
22
|
+
const r = i[e], n = a[e];
|
|
23
|
+
return r === void 0 && n !== void 0 ? -1 * t : n === void 0 && r !== void 0 ? 1 * t : typeof r == "number" && typeof n == "number" ? (r - n) * t : r instanceof Date && n instanceof Date ? (r.getTime() - n.getTime()) * t : String(r ?? "").localeCompare(String(n ?? "")) * t;
|
|
24
|
+
});
|
|
25
|
+
}, [u, c]), s = M(() => {
|
|
26
|
+
if (p) return w;
|
|
27
|
+
const e = (l - 1) * m;
|
|
28
|
+
return w.slice(e, e + m);
|
|
29
|
+
}, [w, l, m, p]), [y, o] = x(null), N = (e, t) => e.id ?? `row-${t}-${Math.random().toString(36).slice(2, 7)}`, G = (e) => {
|
|
30
|
+
B((t) => t.key !== e ? { key: e, dir: "asc" } : t.dir === "asc" ? { key: e, dir: "desc" } : { key: null, dir: null });
|
|
31
|
+
}, h = (e) => {
|
|
32
|
+
const t = Math.max(1, Math.min(g, e));
|
|
33
|
+
$ === void 0 && K(t), A?.(t);
|
|
34
|
+
}, S = (e) => {
|
|
35
|
+
const t = (i) => {
|
|
36
|
+
const a = new Set(i);
|
|
37
|
+
return a.has(e) ? a.delete(e) : a.add(e), a;
|
|
38
|
+
};
|
|
39
|
+
if (D) {
|
|
40
|
+
const i = t(v);
|
|
41
|
+
b?.(i);
|
|
42
|
+
} else
|
|
43
|
+
E((i) => {
|
|
44
|
+
const a = t(i);
|
|
45
|
+
return b?.(a), a;
|
|
46
|
+
});
|
|
47
|
+
}, H = () => {
|
|
48
|
+
const e = s.map((a, r) => a.id ?? N(a, r)), t = e.every((a) => v.has(a)), i = (a) => {
|
|
49
|
+
const r = new Set(a);
|
|
50
|
+
return t ? e.forEach((n) => r.delete(n)) : e.forEach((n) => r.add(n)), r;
|
|
51
|
+
};
|
|
52
|
+
if (D) {
|
|
53
|
+
const a = i(v);
|
|
54
|
+
b?.(a);
|
|
55
|
+
} else
|
|
56
|
+
E((a) => {
|
|
57
|
+
const r = i(a);
|
|
58
|
+
return b?.(r), r;
|
|
59
|
+
});
|
|
60
|
+
}, O = (e) => {
|
|
61
|
+
if (s.length !== 0)
|
|
62
|
+
switch (e.key) {
|
|
63
|
+
case "ArrowDown":
|
|
64
|
+
e.preventDefault(), o(
|
|
65
|
+
(t) => t === null ? 0 : Math.min(s.length - 1, t + 1)
|
|
66
|
+
);
|
|
67
|
+
break;
|
|
68
|
+
case "ArrowUp":
|
|
69
|
+
e.preventDefault(), o((t) => t === null ? 0 : Math.max(0, t - 1));
|
|
70
|
+
break;
|
|
71
|
+
case "PageDown":
|
|
72
|
+
e.preventDefault(), h(l + 1), o(0);
|
|
73
|
+
break;
|
|
74
|
+
case "PageUp":
|
|
75
|
+
e.preventDefault(), h(l - 1), o(0);
|
|
76
|
+
break;
|
|
77
|
+
case "Home":
|
|
78
|
+
e.preventDefault(), o(0);
|
|
79
|
+
break;
|
|
80
|
+
case "End":
|
|
81
|
+
e.preventDefault(), o(s.length - 1);
|
|
82
|
+
break;
|
|
83
|
+
case "Enter":
|
|
84
|
+
if (e.preventDefault(), y !== null) {
|
|
85
|
+
const t = s[y], i = t.id ?? N(t, y);
|
|
86
|
+
k && S(i), I?.(t);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}, j = !!P;
|
|
91
|
+
return /* @__PURE__ */ d(
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
className: `ui-datagrid ${T}`,
|
|
95
|
+
onKeyDown: O,
|
|
96
|
+
tabIndex: 0,
|
|
97
|
+
role: "grid",
|
|
98
|
+
"aria-rowcount": u.length,
|
|
99
|
+
children: /* @__PURE__ */ f("div", { className: "ui-datagrid-table", children: [
|
|
100
|
+
/* @__PURE__ */ f("div", { className: "ui-datagrid-header", role: "row", children: [
|
|
101
|
+
k && /* @__PURE__ */ d("div", { className: "ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--select", children: /* @__PURE__ */ d(
|
|
102
|
+
"input",
|
|
103
|
+
{
|
|
104
|
+
type: "checkbox",
|
|
105
|
+
"aria-label": "Select all on page",
|
|
106
|
+
onChange: H,
|
|
107
|
+
checked: s.length > 0 && s.every(
|
|
108
|
+
(e, t) => v.has(e.id ?? N(e, t))
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
) }),
|
|
112
|
+
C.map((e) => {
|
|
113
|
+
const t = c.key === e.key;
|
|
114
|
+
return /* @__PURE__ */ d(
|
|
115
|
+
"div",
|
|
116
|
+
{
|
|
117
|
+
className: `ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--${e.align ?? "left"}`,
|
|
118
|
+
role: "columnheader",
|
|
119
|
+
style: { width: e.width },
|
|
120
|
+
"aria-sort": t ? c.dir === "asc" ? "ascending" : "descending" : "none",
|
|
121
|
+
onClick: () => e.sortable && G(e.key),
|
|
122
|
+
children: /* @__PURE__ */ f("div", { className: "ui-datagrid-header-content", children: [
|
|
123
|
+
/* @__PURE__ */ d("span", { children: e.title }),
|
|
124
|
+
e.sortable && /* @__PURE__ */ d("span", { className: "ui-datagrid-sort-indicator", children: t ? c.dir === "asc" ? "▲" : "▼" : "⤓" })
|
|
125
|
+
] })
|
|
126
|
+
},
|
|
127
|
+
e.key
|
|
128
|
+
);
|
|
129
|
+
}),
|
|
130
|
+
j && /* @__PURE__ */ d("div", { className: "ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--actions" })
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ d("div", { className: "ui-datagrid-body", role: "rowgroup", children: s.length === 0 ? /* @__PURE__ */ d("div", { className: "ui-datagrid-empty", children: "No data" }) : s.map((e, t) => {
|
|
133
|
+
const i = e.id ?? N(e, t), a = v.has(i), r = y === t;
|
|
134
|
+
return /* @__PURE__ */ f(
|
|
135
|
+
"div",
|
|
136
|
+
{
|
|
137
|
+
className: [
|
|
138
|
+
"ui-datagrid-row",
|
|
139
|
+
a ? "selected" : "",
|
|
140
|
+
r ? "focused" : ""
|
|
141
|
+
].filter(Boolean).join(" "),
|
|
142
|
+
role: "row",
|
|
143
|
+
tabIndex: r ? 0 : -1,
|
|
144
|
+
"aria-selected": a || void 0,
|
|
145
|
+
onClick: () => {
|
|
146
|
+
k && S(i), I?.(e), o(t);
|
|
147
|
+
},
|
|
148
|
+
onFocus: () => o(t),
|
|
149
|
+
children: [
|
|
150
|
+
k && /* @__PURE__ */ d("div", { className: "ui-datagrid-cell ui-datagrid-cell--select", children: /* @__PURE__ */ d(
|
|
151
|
+
"input",
|
|
152
|
+
{
|
|
153
|
+
type: "checkbox",
|
|
154
|
+
checked: a,
|
|
155
|
+
onClick: (n) => n.stopPropagation(),
|
|
156
|
+
onChange: () => S(i),
|
|
157
|
+
"aria-label": `Select row ${String(i)}`
|
|
158
|
+
}
|
|
159
|
+
) }),
|
|
160
|
+
C.map((n) => /* @__PURE__ */ d(
|
|
161
|
+
"div",
|
|
162
|
+
{
|
|
163
|
+
role: "gridcell",
|
|
164
|
+
className: `ui-datagrid-cell ui-datagrid-cell--${n.align ?? "left"}`,
|
|
165
|
+
style: { width: n.width },
|
|
166
|
+
children: n.render ? n.render(e) : String(e[n.key] ?? "")
|
|
167
|
+
},
|
|
168
|
+
n.key
|
|
169
|
+
)),
|
|
170
|
+
j && /* @__PURE__ */ d("div", { className: "ui-datagrid-cell ui-datagrid-cell--actions", children: P?.(e) })
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
String(i)
|
|
174
|
+
);
|
|
175
|
+
}) }),
|
|
176
|
+
!p && g > 1 && /* @__PURE__ */ f("div", { className: "ui-datagrid-footer", children: [
|
|
177
|
+
/* @__PURE__ */ d(
|
|
178
|
+
"button",
|
|
179
|
+
{
|
|
180
|
+
className: "ui-datagrid-page-btn",
|
|
181
|
+
onClick: () => h(1),
|
|
182
|
+
disabled: l === 1,
|
|
183
|
+
children: "«"
|
|
184
|
+
}
|
|
185
|
+
),
|
|
186
|
+
/* @__PURE__ */ d(
|
|
187
|
+
"button",
|
|
188
|
+
{
|
|
189
|
+
className: "ui-datagrid-page-btn",
|
|
190
|
+
onClick: () => h(l - 1),
|
|
191
|
+
disabled: l === 1,
|
|
192
|
+
children: "‹"
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ f("div", { className: "ui-datagrid-page-info", children: [
|
|
196
|
+
"Page ",
|
|
197
|
+
l,
|
|
198
|
+
" of ",
|
|
199
|
+
g
|
|
200
|
+
] }),
|
|
201
|
+
/* @__PURE__ */ d(
|
|
202
|
+
"button",
|
|
203
|
+
{
|
|
204
|
+
className: "ui-datagrid-page-btn",
|
|
205
|
+
onClick: () => h(l + 1),
|
|
206
|
+
disabled: l === g,
|
|
207
|
+
children: "›"
|
|
208
|
+
}
|
|
209
|
+
),
|
|
210
|
+
/* @__PURE__ */ d(
|
|
211
|
+
"button",
|
|
212
|
+
{
|
|
213
|
+
className: "ui-datagrid-page-btn",
|
|
214
|
+
onClick: () => h(g),
|
|
215
|
+
disabled: l === g,
|
|
216
|
+
children: "»"
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
] })
|
|
220
|
+
] })
|
|
221
|
+
}
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
export {
|
|
225
|
+
Q as DataGrid
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=DataGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGrid.js","sources":["../../../../src/components/datagrid/DataGrid.tsx"],"sourcesContent":["/**\r\n * DataGrid.tsx\r\n * -------------\r\n * Vercel-style DataGrid for NUI\r\n *\r\n * Features:\r\n * - Sortable columns\r\n * - Sticky header\r\n * - Optional row selection (checkbox)\r\n * - Row actions slot\r\n * - Pagination (client-side)\r\n * - Keyboard navigation & focus\r\n * - Accessible (aria-sort, aria-selected, table/grid roles)\r\n */\r\n\r\nimport React, { useMemo, useState } from 'react';\r\nimport './DataGrid.css';\r\n\r\nexport type DataRow = Record<string, unknown> & {\r\n id?: string | number;\r\n};\r\n\r\nexport type DataGridColumn<T extends DataRow = DataRow> = {\r\n key: keyof T & string;\r\n title: React.ReactNode;\r\n sortable?: boolean;\r\n width?: number | string;\r\n align?: 'left' | 'center' | 'right';\r\n render?: (row: T) => React.ReactNode;\r\n};\r\n\r\nexport interface DataGridProps<T extends DataRow = DataRow> {\r\n columns: DataGridColumn<T>[];\r\n rows: T[];\r\n\r\n page?: number;\r\n pageSize?: number;\r\n onPageChange?: (page: number) => void;\r\n\r\n selectable?: boolean;\r\n selectedRowIds?: Set<string | number>;\r\n onSelectionChange?: (ids: Set<string | number>) => void;\r\n\r\n onRowClick?: (row: T) => void;\r\n renderRowActions?: (row: T) => React.ReactNode;\r\n\r\n className?: string;\r\n disablePagination?: boolean;\r\n}\r\n\r\ntype SortState = { key: string | null; dir: 'asc' | 'desc' | null };\r\n\r\nexport function DataGrid<T extends DataRow = DataRow>({\r\n columns,\r\n rows,\r\n page: controlledPage,\r\n pageSize = 10,\r\n onPageChange,\r\n\r\n selectable = false,\r\n selectedRowIds,\r\n onSelectionChange,\r\n\r\n onRowClick,\r\n renderRowActions,\r\n className = '',\r\n disablePagination = false,\r\n}: DataGridProps<T>) {\r\n const [sort, setSort] = useState<SortState>({ key: null, dir: null });\r\n const [internalPage, setInternalPage] = useState(1);\r\n const currentPage = controlledPage ?? internalPage;\r\n\r\n const [internalSelection, setInternalSelection] = useState<\r\n Set<string | number>\r\n >(new Set());\r\n\r\n const selection = selectedRowIds ?? internalSelection;\r\n\r\n const totalPages = useMemo(() => {\r\n if (disablePagination) return 1;\r\n return Math.max(1, Math.ceil(rows.length / pageSize));\r\n }, [rows.length, pageSize, disablePagination]);\r\n\r\n const sortedRows = useMemo(() => {\r\n if (!sort.key || !sort.dir) return [...rows];\r\n\r\n const key = sort.key as keyof T;\r\n const dir = sort.dir === 'asc' ? 1 : -1;\r\n\r\n return [...rows].sort((a, b) => {\r\n const va = a[key];\r\n const vb = b[key];\r\n\r\n if (va === undefined && vb !== undefined) return -1 * dir;\r\n if (vb === undefined && va !== undefined) return 1 * dir;\r\n\r\n if (typeof va === 'number' && typeof vb === 'number') {\r\n return (va - vb) * dir;\r\n }\r\n\r\n if (va instanceof Date && vb instanceof Date) {\r\n return (va.getTime() - vb.getTime()) * dir;\r\n }\r\n\r\n return String(va ?? '').localeCompare(String(vb ?? '')) * dir;\r\n });\r\n }, [rows, sort]);\r\n\r\n const paginatedRows = useMemo(() => {\r\n if (disablePagination) return sortedRows;\r\n const start = (currentPage - 1) * pageSize;\r\n return sortedRows.slice(start, start + pageSize);\r\n }, [sortedRows, currentPage, pageSize, disablePagination]);\r\n\r\n const [focusedIndex, setFocusedIndex] = useState<number | null>(null);\r\n\r\n const rowId = (r: T, idx: number) =>\r\n r.id ?? `row-${idx}-${Math.random().toString(36).slice(2, 7)}`;\r\n\r\n const toggleSort = (key: string) => {\r\n setSort((prev) => {\r\n if (prev.key !== key) return { key, dir: 'asc' };\r\n if (prev.dir === 'asc') return { key, dir: 'desc' };\r\n return { key: null, dir: null };\r\n });\r\n };\r\n\r\n const setPage = (page: number) => {\r\n const next = Math.max(1, Math.min(totalPages, page));\r\n if (controlledPage === undefined) setInternalPage(next);\r\n onPageChange?.(next);\r\n };\r\n\r\n const toggleSelectRow = (id: string | number) => {\r\n const update = (set: Set<string | number>) => {\r\n const next = new Set(set);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n return next;\r\n };\r\n\r\n if (selectedRowIds) {\r\n const next = update(selection);\r\n onSelectionChange?.(next);\r\n } else {\r\n setInternalSelection((prev) => {\r\n const next = update(prev);\r\n onSelectionChange?.(next);\r\n return next;\r\n });\r\n }\r\n };\r\n\r\n const selectAllOnPage = () => {\r\n const ids = paginatedRows.map((r, i) => r.id ?? rowId(r, i));\r\n const allSelected = ids.every((id) => selection.has(id));\r\n\r\n const update = (set: Set<string | number>) => {\r\n const next = new Set(set);\r\n if (allSelected) ids.forEach((id) => next.delete(id));\r\n else ids.forEach((id) => next.add(id));\r\n return next;\r\n };\r\n\r\n if (selectedRowIds) {\r\n const next = update(selection);\r\n onSelectionChange?.(next);\r\n } else {\r\n setInternalSelection((prev) => {\r\n const next = update(prev);\r\n onSelectionChange?.(next);\r\n return next;\r\n });\r\n }\r\n };\r\n\r\n const onKeyDownTable = (e: React.KeyboardEvent<HTMLDivElement>): void => {\r\n if (paginatedRows.length === 0) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n setFocusedIndex((prev) =>\r\n prev === null ? 0 : Math.min(paginatedRows.length - 1, prev + 1)\r\n );\r\n break;\r\n\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n setFocusedIndex((prev) => (prev === null ? 0 : Math.max(0, prev - 1)));\r\n break;\r\n\r\n case 'PageDown':\r\n e.preventDefault();\r\n setPage(currentPage + 1);\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'PageUp':\r\n e.preventDefault();\r\n setPage(currentPage - 1);\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'Home':\r\n e.preventDefault();\r\n setFocusedIndex(0);\r\n break;\r\n\r\n case 'End':\r\n e.preventDefault();\r\n setFocusedIndex(paginatedRows.length - 1);\r\n break;\r\n\r\n case 'Enter':\r\n e.preventDefault();\r\n if (focusedIndex !== null) {\r\n const row = paginatedRows[focusedIndex];\r\n const id = row.id ?? rowId(row, focusedIndex);\r\n if (selectable) toggleSelectRow(id);\r\n onRowClick?.(row);\r\n }\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const showActions = Boolean(renderRowActions);\r\n\r\n return (\r\n <div\r\n className={`ui-datagrid ${className}`}\r\n onKeyDown={onKeyDownTable}\r\n tabIndex={0}\r\n role=\"grid\"\r\n aria-rowcount={rows.length}\r\n >\r\n <div className=\"ui-datagrid-table\">\r\n {/* HEADER */}\r\n <div className=\"ui-datagrid-header\" role=\"row\">\r\n {selectable && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--select\">\r\n <input\r\n type=\"checkbox\"\r\n aria-label=\"Select all on page\"\r\n onChange={selectAllOnPage}\r\n checked={\r\n paginatedRows.length > 0 &&\r\n paginatedRows.every((r, i) =>\r\n selection.has(r.id ?? rowId(r, i))\r\n )\r\n }\r\n />\r\n </div>\r\n )}\r\n\r\n {columns.map((col) => {\r\n const isSorted = sort.key === col.key;\r\n return (\r\n <div\r\n key={col.key}\r\n className={`ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--${\r\n col.align ?? 'left'\r\n }`}\r\n role=\"columnheader\"\r\n style={{ width: col.width }}\r\n aria-sort={\r\n isSorted\r\n ? sort.dir === 'asc'\r\n ? 'ascending'\r\n : 'descending'\r\n : 'none'\r\n }\r\n onClick={() => col.sortable && toggleSort(col.key)}\r\n >\r\n <div className=\"ui-datagrid-header-content\">\r\n <span>{col.title}</span>\r\n {col.sortable && (\r\n <span className=\"ui-datagrid-sort-indicator\">\r\n {isSorted ? (sort.dir === 'asc' ? '▲' : '▼') : '⤓'}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n\r\n {showActions && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--header ui-datagrid-cell--actions\" />\r\n )}\r\n </div>\r\n\r\n {/* BODY */}\r\n <div className=\"ui-datagrid-body\" role=\"rowgroup\">\r\n {paginatedRows.length === 0 ? (\r\n <div className=\"ui-datagrid-empty\">No data</div>\r\n ) : (\r\n paginatedRows.map((row, idx) => {\r\n const rid = row.id ?? rowId(row, idx);\r\n const isSelected = selection.has(rid);\r\n const focused = focusedIndex === idx;\r\n\r\n return (\r\n <div\r\n key={String(rid)}\r\n className={[\r\n 'ui-datagrid-row',\r\n isSelected ? 'selected' : '',\r\n focused ? 'focused' : '',\r\n ]\r\n .filter(Boolean)\r\n .join(' ')}\r\n role=\"row\"\r\n tabIndex={focused ? 0 : -1}\r\n aria-selected={isSelected || undefined}\r\n onClick={() => {\r\n if (selectable) toggleSelectRow(rid);\r\n onRowClick?.(row);\r\n setFocusedIndex(idx);\r\n }}\r\n onFocus={() => setFocusedIndex(idx)}\r\n >\r\n {selectable && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--select\">\r\n <input\r\n type=\"checkbox\"\r\n checked={isSelected}\r\n onClick={(e) => e.stopPropagation()}\r\n onChange={() => toggleSelectRow(rid)}\r\n aria-label={`Select row ${String(rid)}`}\r\n />\r\n </div>\r\n )}\r\n\r\n {columns.map((col) => (\r\n <div\r\n key={col.key}\r\n role=\"gridcell\"\r\n className={`ui-datagrid-cell ui-datagrid-cell--${\r\n col.align ?? 'left'\r\n }`}\r\n style={{ width: col.width }}\r\n >\r\n {col.render\r\n ? col.render(row)\r\n : String(row[col.key] ?? '')}\r\n </div>\r\n ))}\r\n\r\n {showActions && (\r\n <div className=\"ui-datagrid-cell ui-datagrid-cell--actions\">\r\n {renderRowActions?.(row)}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })\r\n )}\r\n </div>\r\n\r\n {/* PAGINATION */}\r\n {!disablePagination && totalPages > 1 && (\r\n <div className=\"ui-datagrid-footer\">\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(1)}\r\n disabled={currentPage === 1}\r\n >\r\n «\r\n </button>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(currentPage - 1)}\r\n disabled={currentPage === 1}\r\n >\r\n ‹\r\n </button>\r\n\r\n <div className=\"ui-datagrid-page-info\">\r\n Page {currentPage} of {totalPages}\r\n </div>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(currentPage + 1)}\r\n disabled={currentPage === totalPages}\r\n >\r\n ›\r\n </button>\r\n\r\n <button\r\n className=\"ui-datagrid-page-btn\"\r\n onClick={() => setPage(totalPages)}\r\n disabled={currentPage === totalPages}\r\n >\r\n »\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n"],"names":["DataGrid","columns","rows","controlledPage","pageSize","onPageChange","selectable","selectedRowIds","onSelectionChange","onRowClick","renderRowActions","className","disablePagination","sort","setSort","useState","internalPage","setInternalPage","currentPage","internalSelection","setInternalSelection","selection","totalPages","useMemo","sortedRows","key","dir","a","b","va","vb","paginatedRows","start","focusedIndex","setFocusedIndex","rowId","r","idx","toggleSort","prev","setPage","page","next","toggleSelectRow","id","update","set","selectAllOnPage","ids","i","allSelected","onKeyDownTable","row","showActions","jsx","jsxs","col","isSorted","rid","isSelected","focused","e"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),l=require("react");;/* empty css */const oe=require("../../utils/onclickoutside/onClickOutside.cjs"),le=require("../../utils/restorefocus/restoreFocus.cjs"),ie=require("../../utils/portal/portal.cjs"),_=n=>n<10?`0${n}`:`${n}`,U=n=>`${n.getFullYear()}-${_(n.getMonth()+1)}-${_(n.getDate())}`;function $(n){if(!n)return null;const[h,v,N]=n.split("-").map(Number),D=new Date(h,v-1,N);return Number.isNaN(D.getTime())?null:D}const B=n=>new Date(n.getFullYear(),n.getMonth(),1),k=(n,h)=>new Date(n.getFullYear(),n.getMonth()+h,1),K=n=>new Date(n.getFullYear(),n.getMonth()+1,0).getDate();function ce({value:n,defaultValue:h,onChange:v,minDate:N,maxDate:D,placeholder:T="Select date",name:S,locale:g="en-US",id:V,className:z=""}){const F=n!==void 0,[G,H]=l.useState(h),b=F?n:G,J=$(b)??new Date,[a,f]=l.useState(B(J)),[c,p]=l.useState(!1),[j,d]=l.useState(!1),w=l.useRef(null),C=l.useRef(null),R=l.useRef({}),x=$(N)??void 0,y=$(D)??void 0,A=e=>!!(x&&e<x||y&&e>y);l.useEffect(()=>{if(c)return oe.onClickOutside(C,()=>{p(!1),d(!1)})},[c]),l.useEffect(()=>{if(!c)return;const e=w.current;return()=>{le.restoreFocus(e??null),d(!1)}},[c]);const[M,Q]=l.useState(null);l.useEffect(()=>{if(!c||!w.current)return;const e=w.current.getBoundingClientRect();Q({top:e.bottom+8,left:e.left})},[c,a]);const m=l.useMemo(()=>{const t=B(a).getDay(),r=K(a),i=[];for(let o=0;o<t;o++)i.push(null);for(let o=1;o<=r;o++)i.push(o);for(;i.length%7!==0;)i.push(null);return i},[a]),W=l.useMemo(()=>Array.from({length:7}).map((e,t)=>new Date(2020,5,7+t).toLocaleDateString(g,{weekday:"short"})),[g]),X=a.getFullYear(),P=100,I=X-P,Z=l.useMemo(()=>Array.from({length:P*2+1}).map((e,t)=>I+t),[I]),ee=l.useMemo(()=>Array.from({length:12}).map((e,t)=>new Date(2020,t,1).toLocaleDateString(g,{month:"short"})),[g]),te=(e,t)=>{const r=new Date(e,t,1),i=new Date(e,t,K(r));return!!(x&&i<x||y&&r>y)},O=e=>{const t=new Date(a.getFullYear(),a.getMonth(),e);if(A(t))return;const r=U(t);F||H(r),v?.(r),p(!1),d(!1)},se=e=>{f(new Date(a.getFullYear(),e,1)),d(!1)},ne=e=>{f(new Date(e,a.getMonth(),1))},re=e=>{if(e<0||e>=m.length)return;const t=m[e];if(!t)return;const r=`${a.getFullYear()}-${a.getMonth()}-${t}`;R.current[r]?.focus()},ae=(e,t)=>{const r=m.findIndex(u=>u===t);if(r===-1)return;const i=7;let o=null;switch(e.key){case"ArrowRight":o=r+1;break;case"ArrowLeft":o=r-1;break;case"ArrowDown":o=r+i;break;case"ArrowUp":o=r-i;break;case"Enter":case" ":e.preventDefault(),O(t);return;case"PageUp":f(u=>k(u,-1));return;case"PageDown":f(u=>k(u,1));return;case"Escape":p(!1);return;default:return}e.preventDefault(),o!==null&&(o<0||o>=m.length||m[o]!=null&&re(o))},q=a.toLocaleDateString(g,{month:"long"}),E=a.getFullYear();return s.jsxs("div",{className:`ui-datepicker minimal ${z}`,children:[S&&s.jsx("input",{type:"hidden",name:S,value:b??""}),s.jsx("button",{id:V,ref:w,type:"button",className:"ui-datepicker-input","aria-haspopup":"dialog","aria-expanded":c,onClick:()=>{p(e=>!e),d(!1)},children:b??T}),c&&M&&s.jsx(ie.Portal,{children:s.jsx("div",{ref:C,className:"ui-datepicker-popover",style:{position:"fixed",top:M.top,left:M.left},children:s.jsxs("div",{className:"ui-datepicker-panel minimal",children:[s.jsxs("div",{className:"ui-header-row",children:[s.jsx("button",{className:"ui-arrow","aria-label":"Previous month",onClick:()=>f(e=>k(e,-1)),children:"‹"}),s.jsxs("button",{className:"ui-header-center",onClick:()=>d(e=>!e),"aria-expanded":j,children:[q," ",E]}),s.jsx("button",{className:"ui-arrow","aria-label":"Next month",onClick:()=>f(e=>k(e,1)),children:"›"})]}),j&&s.jsxs("div",{className:"ui-ym-panel",children:[s.jsx("div",{className:"ui-year-grid",children:Z.map(e=>{const t=e===a.getFullYear();return s.jsx("button",{className:`ui-year-item ${t?"selected":""}`,onClick:()=>ne(e),children:e},e)})}),s.jsx("div",{className:"ui-month-grid",children:ee.map((e,t)=>{const r=te(a.getFullYear(),t),i=t===a.getMonth();return s.jsx("button",{className:`ui-month-item ${r?"disabled":""} ${i?"selected":""}`,disabled:r?!0:void 0,onClick:()=>!r&&se(t),children:e},t)})})]}),!j&&s.jsxs("div",{className:"ui-calendar minimal",role:"grid","aria-label":`${q} ${E}`,children:[s.jsx("div",{className:"ui-weekdays",children:W.map((e,t)=>s.jsx("div",{className:"ui-weekday",children:e},t))}),s.jsx("div",{className:"ui-days-grid",children:m.map((e,t)=>{if(e===null)return s.jsx("div",{className:"ui-day-empty"},t);const r=new Date(a.getFullYear(),a.getMonth(),e),i=U(r),o=A(r),u=b===i,L=`${a.getFullYear()}-${a.getMonth()}-${e}`;return s.jsx("button",{ref:Y=>{R.current[L]=Y},className:`ui-day ${u?"selected":""}`,"aria-selected":u||void 0,onClick:()=>!o&&O(e),onKeyDown:Y=>ae(Y,e),disabled:o?!0:void 0,children:e},L)})})]}),s.jsx("div",{className:"ui-footer",children:s.jsx("button",{onClick:()=>{p(!1),d(!1)},children:"Close"})})]})})})]})}exports.DatePicker=ce;
|
|
2
|
+
//# sourceMappingURL=DatePicker.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.cjs","sources":["../../../../src/components/datepicker/DatePicker.tsx"],"sourcesContent":["// DatePicker.tsx\r\n// Final Version — Minimal, Elegant, Inline Year + Month Selector\r\n// Calendar hides during year/month selection. No dependencies. Zero warnings.\r\n\r\nimport { useState, useRef, useEffect, KeyboardEvent, useMemo } from 'react';\r\nimport './DatePicker.css';\r\nimport { Portal, onClickOutside, restoreFocus } from '../../utils/index';\r\n\r\n/* ------------------------------------------\r\n Helpers\r\n------------------------------------------- */\r\n\r\nconst pad = (n: number) => (n < 10 ? `0${n}` : `${n}`);\r\nconst toISO = (d: Date) =>\r\n `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;\r\n\r\nfunction fromISO(s?: string | null): Date | null {\r\n if (!s) return null;\r\n const [y, m, d] = s.split('-').map(Number);\r\n const dt = new Date(y, m - 1, d);\r\n return Number.isNaN(dt.getTime()) ? null : dt;\r\n}\r\n\r\nconst startOfMonth = (d: Date) => new Date(d.getFullYear(), d.getMonth(), 1);\r\nconst addMonths = (d: Date, n: number) =>\r\n new Date(d.getFullYear(), d.getMonth() + n, 1);\r\nconst daysInMonth = (d: Date) =>\r\n new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();\r\n\r\n/* ------------------------------------------\r\n Component Props\r\n------------------------------------------- */\r\n\r\nexport interface DatePickerProps {\r\n value?: string; // YYYY-MM-DD\r\n defaultValue?: string;\r\n onChange?: (v: string) => void;\r\n minDate?: string;\r\n maxDate?: string;\r\n placeholder?: string;\r\n name?: string;\r\n locale?: string;\r\n id?: string;\r\n className?: string;\r\n}\r\n\r\n/* ------------------------------------------\r\n Component\r\n------------------------------------------- */\r\n\r\nexport function DatePicker({\r\n value,\r\n defaultValue,\r\n onChange,\r\n minDate,\r\n maxDate,\r\n placeholder = 'Select date',\r\n name,\r\n locale = 'en-US',\r\n id,\r\n className = '',\r\n}: DatePickerProps) {\r\n const controlled = value !== undefined;\r\n const [internal, setInternal] = useState<string | undefined>(defaultValue);\r\n const selected = controlled ? value : internal;\r\n const selectedDate = fromISO(selected) ?? new Date();\r\n\r\n const [visible, setVisible] = useState<Date>(startOfMonth(selectedDate));\r\n const [open, setOpen] = useState(false);\r\n const [showYMM, setShowYMM] = useState(false);\r\n\r\n const triggerRef = useRef<HTMLButtonElement | null>(null);\r\n const popRef = useRef<HTMLDivElement | null>(null);\r\n const gridDayRefs = useRef<Record<string, HTMLButtonElement | null>>({});\r\n\r\n /* ------------------------------------------\r\n Min/Max handling\r\n ------------------------------------------- */\r\n\r\n const minDt = fromISO(minDate) ?? undefined;\r\n const maxDt = fromISO(maxDate) ?? undefined;\r\n\r\n const isDisabledDate = (d: Date): boolean => {\r\n if (minDt && d < minDt) return true;\r\n if (maxDt && d > maxDt) return true;\r\n return false;\r\n };\r\n\r\n /* ------------------------------------------\r\n Click outside\r\n ------------------------------------------- */\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n return onClickOutside(popRef, () => {\r\n setOpen(false);\r\n setShowYMM(false);\r\n });\r\n }, [open]);\r\n\r\n /* ------------------------------------------\r\n Restore focus when closing\r\n ------------------------------------------- */\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n const t = triggerRef.current;\r\n return () => {\r\n restoreFocus(t ?? null);\r\n setShowYMM(false);\r\n };\r\n }, [open]);\r\n\r\n /* ------------------------------------------\r\n Positioning\r\n ------------------------------------------- */\r\n\r\n const [pos, setPos] = useState<{ top: number; left: number } | null>(null);\r\n\r\n useEffect(() => {\r\n if (!open || !triggerRef.current) return;\r\n const r = triggerRef.current.getBoundingClientRect();\r\n setPos({ top: r.bottom + 8, left: r.left });\r\n }, [open, visible]);\r\n\r\n /* ------------------------------------------\r\n Calendar Grid\r\n ------------------------------------------- */\r\n const grid = useMemo(() => {\r\n const first = startOfMonth(visible);\r\n const startDow = first.getDay();\r\n const totalDays = daysInMonth(visible);\r\n\r\n const cells: (number | null)[] = [];\r\n\r\n for (let i = 0; i < startDow; i++) cells.push(null);\r\n for (let d = 1; d <= totalDays; d++) cells.push(d);\r\n while (cells.length % 7 !== 0) cells.push(null);\r\n\r\n return cells;\r\n }, [visible]);\r\n\r\n const weekdays = useMemo(\r\n () =>\r\n Array.from({ length: 7 }).map((_, i) =>\r\n new Date(2020, 5, 7 + i).toLocaleDateString(locale, {\r\n weekday: 'short',\r\n })\r\n ),\r\n [locale]\r\n );\r\n\r\n /* ------------------------------------------\r\n Year & Month Overlay Grids\r\n ------------------------------------------- */\r\n\r\n const visibleYear = visible.getFullYear();\r\n const YEAR_SPAN = 100;\r\n const yearStart = visibleYear - YEAR_SPAN;\r\n\r\n const years = useMemo(\r\n () =>\r\n Array.from({ length: YEAR_SPAN * 2 + 1 }).map((_, i) => yearStart + i),\r\n [yearStart]\r\n );\r\n\r\n const months = useMemo(\r\n () =>\r\n Array.from({ length: 12 }).map((_, i) =>\r\n new Date(2020, i, 1).toLocaleDateString(locale, { month: 'short' })\r\n ),\r\n [locale]\r\n );\r\n\r\n const isMonthDisabled = (year: number, month: number): boolean => {\r\n const start = new Date(year, month, 1);\r\n const end = new Date(year, month, daysInMonth(start));\r\n if (minDt && end < minDt) return true;\r\n if (maxDt && start > maxDt) return true;\r\n return false;\r\n };\r\n\r\n /* ------------------------------------------\r\n Commit selections\r\n ------------------------------------------- */\r\n\r\n const commitDay = (d: number) => {\r\n const dt = new Date(visible.getFullYear(), visible.getMonth(), d);\r\n if (isDisabledDate(dt)) return;\r\n\r\n const iso = toISO(dt);\r\n if (!controlled) setInternal(iso);\r\n onChange?.(iso);\r\n\r\n setOpen(false);\r\n setShowYMM(false);\r\n };\r\n\r\n const commitMonth = (month: number) => {\r\n setVisible(new Date(visible.getFullYear(), month, 1));\r\n setShowYMM(false); // close overlay\r\n };\r\n\r\n const commitYear = (year: number) => {\r\n setVisible(new Date(year, visible.getMonth(), 1));\r\n // leave overlay open for month selection\r\n };\r\n\r\n /* ------------------------------------------\r\n Keyboard navigation for days\r\n ------------------------------------------- */\r\n\r\n const focusDayByIndex = (idx: number) => {\r\n if (idx < 0 || idx >= grid.length) return;\r\n const day = grid[idx];\r\n if (!day) return;\r\n const key = `${visible.getFullYear()}-${visible.getMonth()}-${day}`;\r\n gridDayRefs.current[key]?.focus();\r\n };\r\n\r\n const onDayKey = (e: KeyboardEvent<HTMLButtonElement>, day: number) => {\r\n const idx = grid.findIndex((c) => c === day);\r\n if (idx === -1) return;\r\n\r\n const cols = 7;\r\n let nextIdx: number | null = null;\r\n\r\n switch (e.key) {\r\n case 'ArrowRight':\r\n nextIdx = idx + 1;\r\n break;\r\n case 'ArrowLeft':\r\n nextIdx = idx - 1;\r\n break;\r\n case 'ArrowDown':\r\n nextIdx = idx + cols;\r\n break;\r\n case 'ArrowUp':\r\n nextIdx = idx - cols;\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n e.preventDefault();\r\n commitDay(day);\r\n return;\r\n case 'PageUp':\r\n setVisible((v) => addMonths(v, -1));\r\n return;\r\n case 'PageDown':\r\n setVisible((v) => addMonths(v, 1));\r\n return;\r\n case 'Escape':\r\n setOpen(false);\r\n return;\r\n default:\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n if (nextIdx === null) return;\r\n if (nextIdx < 0 || nextIdx >= grid.length) return;\r\n\r\n if (grid[nextIdx] != null) focusDayByIndex(nextIdx);\r\n };\r\n\r\n /* ------------------------------------------\r\n Labels\r\n ------------------------------------------- */\r\n\r\n const headerMonthLabel = visible.toLocaleDateString(locale, {\r\n month: 'long',\r\n });\r\n const headerYearLabel = visible.getFullYear();\r\n\r\n /* ------------------------------------------\r\n Render\r\n ------------------------------------------- */\r\n\r\n return (\r\n <div className={`ui-datepicker minimal ${className}`}>\r\n {name && <input type=\"hidden\" name={name} value={selected ?? ''} />}\r\n\r\n <button\r\n id={id}\r\n ref={triggerRef}\r\n type=\"button\"\r\n className=\"ui-datepicker-input\"\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n onClick={() => {\r\n setOpen((s) => !s);\r\n setShowYMM(false);\r\n }}\r\n >\r\n {selected ?? placeholder}\r\n </button>\r\n\r\n {open && pos && (\r\n <Portal>\r\n <div\r\n ref={popRef}\r\n className=\"ui-datepicker-popover\"\r\n style={{\r\n position: 'fixed',\r\n top: pos.top,\r\n left: pos.left,\r\n }}\r\n >\r\n <div className=\"ui-datepicker-panel minimal\">\r\n {/* Header */}\r\n <div className=\"ui-header-row\">\r\n <button\r\n className=\"ui-arrow\"\r\n aria-label=\"Previous month\"\r\n onClick={() => setVisible((v) => addMonths(v, -1))}\r\n >\r\n ‹\r\n </button>\r\n\r\n <button\r\n className=\"ui-header-center\"\r\n onClick={() => setShowYMM((s) => !s)}\r\n aria-expanded={showYMM}\r\n >\r\n {headerMonthLabel} {headerYearLabel}\r\n </button>\r\n\r\n <button\r\n className=\"ui-arrow\"\r\n aria-label=\"Next month\"\r\n onClick={() => setVisible((v) => addMonths(v, 1))}\r\n >\r\n ›\r\n </button>\r\n </div>\r\n\r\n {/* Year + Month Selector */}\r\n {showYMM && (\r\n <div className=\"ui-ym-panel\">\r\n <div className=\"ui-year-grid\">\r\n {years.map((y) => {\r\n const sel = y === visible.getFullYear();\r\n return (\r\n <button\r\n key={y}\r\n className={`ui-year-item ${sel ? 'selected' : ''}`}\r\n onClick={() => commitYear(y)}\r\n >\r\n {y}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"ui-month-grid\">\r\n {months.map((label, i) => {\r\n const disabled = isMonthDisabled(\r\n visible.getFullYear(),\r\n i\r\n );\r\n const sel = i === visible.getMonth();\r\n\r\n return (\r\n <button\r\n key={i}\r\n className={`ui-month-item ${\r\n disabled ? 'disabled' : ''\r\n } ${sel ? 'selected' : ''}`}\r\n disabled={disabled ? true : undefined}\r\n onClick={() => !disabled && commitMonth(i)}\r\n >\r\n {label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Calendar ONLY when overlay hidden */}\r\n {!showYMM && (\r\n <div\r\n className=\"ui-calendar minimal\"\r\n role=\"grid\"\r\n aria-label={`${headerMonthLabel} ${headerYearLabel}`}\r\n >\r\n <div className=\"ui-weekdays\">\r\n {weekdays.map((w, i) => (\r\n <div key={i} className=\"ui-weekday\">\r\n {w}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div className=\"ui-days-grid\">\r\n {grid.map((cell, idx) => {\r\n if (cell === null)\r\n return <div key={idx} className=\"ui-day-empty\" />;\r\n\r\n const dt = new Date(\r\n visible.getFullYear(),\r\n visible.getMonth(),\r\n cell\r\n );\r\n const iso = toISO(dt);\r\n const disabled = isDisabledDate(dt);\r\n const sel = selected === iso;\r\n const key = `${visible.getFullYear()}-${visible.getMonth()}-${cell}`;\r\n\r\n return (\r\n <button\r\n key={key}\r\n ref={(el) => {\r\n gridDayRefs.current[key] = el;\r\n }}\r\n className={`ui-day ${sel ? 'selected' : ''}`}\r\n aria-selected={sel || undefined}\r\n onClick={() => !disabled && commitDay(cell)}\r\n onKeyDown={(e) => onDayKey(e, cell)}\r\n disabled={disabled ? true : undefined}\r\n >\r\n {cell}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"ui-footer\">\r\n <button\r\n onClick={() => {\r\n setOpen(false);\r\n setShowYMM(false);\r\n }}\r\n >\r\n Close\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </Portal>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"names":["pad","toISO","d","fromISO","s","y","m","dt","startOfMonth","addMonths","n","daysInMonth","DatePicker","value","defaultValue","onChange","minDate","maxDate","placeholder","name","locale","id","className","controlled","internal","setInternal","useState","selected","selectedDate","visible","setVisible","open","setOpen","showYMM","setShowYMM","triggerRef","useRef","popRef","gridDayRefs","minDt","maxDt","isDisabledDate","useEffect","onClickOutside","t","restoreFocus","pos","setPos","r","grid","useMemo","startDow","totalDays","cells","i","weekdays","_","visibleYear","YEAR_SPAN","yearStart","years","months","isMonthDisabled","year","month","start","end","commitDay","iso","commitMonth","commitYear","focusDayByIndex","idx","day","key","onDayKey","c","cols","nextIdx","v","headerMonthLabel","headerYearLabel","jsxs","jsx","Portal","sel","label","disabled","w","cell","el","e"],"mappings":"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"}
|