pixelize-design-library 2.2.197 → 2.3.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +24 -0
- package/coverage/clover.xml +638 -0
- package/coverage/coverage-final.json +20 -0
- package/coverage/lcov-report/Table/CompactSelect.tsx.html +379 -0
- package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +514 -0
- package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +373 -0
- package/coverage/lcov-report/Table/Components/Pagination.tsx.html +574 -0
- package/coverage/lcov-report/Table/Components/TableActions.tsx.html +574 -0
- package/coverage/lcov-report/Table/Components/TableBody.tsx.html +1027 -0
- package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +397 -0
- package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +1060 -0
- package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +361 -0
- package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +337 -0
- package/coverage/lcov-report/Table/Components/index.html +266 -0
- package/coverage/lcov-report/Table/Components/useDebounce.ts.html +178 -0
- package/coverage/lcov-report/Table/Components/useTable.ts.html +778 -0
- package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +1810 -0
- package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +178 -0
- package/coverage/lcov-report/Table/Table.tsx.html +1567 -0
- package/coverage/lcov-report/Table/TableProps.tsx.html +658 -0
- package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +619 -0
- package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +229 -0
- package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +532 -0
- package/coverage/lcov-report/Table/TableSettings/index.html +146 -0
- package/coverage/lcov-report/Table/TableToDo.tsx.html +973 -0
- package/coverage/lcov-report/Table/TextOperationControls.tsx.html +271 -0
- package/coverage/lcov-report/Table/filterTypes.ts.html +97 -0
- package/coverage/lcov-report/Table/index.html +176 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +146 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +1836 -0
- package/dist/App.d.ts +4 -0
- package/dist/App.js +131 -0
- package/dist/Assets/defaultLogo.tsx +31 -0
- package/dist/Components/Button/Button.styles.js +44 -3
- package/dist/Components/Button/ButtonProps.d.ts +1 -1
- package/dist/Components/ButtonGroupIcon/ButtonGoupIconProps.d.ts +2 -2
- package/dist/Components/ButtonGroupIcon/ButtonGroupIcon.js +50 -38
- package/dist/Components/Checkbox/Checkbox.js +2 -2
- package/dist/Components/Checkbox/Checkbox.styles.js +2 -0
- package/dist/Components/Common/FormLabel.d.ts +2 -1
- package/dist/Components/Common/FormLabel.js +8 -9
- package/dist/Components/Common/fieldStyles.d.ts +22 -0
- package/dist/Components/Common/fieldStyles.js +42 -0
- package/dist/Components/DatePicker/CalendarPanel.d.ts +2 -0
- package/dist/Components/DatePicker/CalendarPanel.js +104 -65
- package/dist/Components/DatePicker/RangeDatePicker.js +37 -16
- package/dist/Components/DatePicker/SingleDatePicker.js +16 -16
- package/dist/Components/DatePicker/TimePicker.js +4 -4
- package/dist/Components/Input/Input/Input.d.ts +1 -1
- package/dist/Components/Input/Input/Input.js +5 -4
- package/dist/Components/Input/Input/InputProps.d.ts +2 -0
- package/dist/Components/Input/TextInput.styles.js +2 -1
- package/dist/Components/InputTextArea/InputTextArea.style.js +2 -1
- package/dist/Components/KanbanBoard/KanbanBoard.js +5 -5
- package/dist/Components/KanbanBoard/MeasuredItem.js +21 -8
- package/dist/Components/MultiSelect/MultiSelect.js +11 -12
- package/dist/Components/NavigationBar/NavigationBar.d.ts +1 -1
- package/dist/Components/NavigationBar/NavigationBar.js +54 -27
- package/dist/Components/NavigationBar/NavigationBarProps.d.ts +1 -0
- package/dist/Components/NoteTextArea/NoteTextArea.js +44 -40
- package/dist/Components/NumberInput/NumberInput.styles.js +2 -1
- package/dist/Components/PinInput/PinInput.d.ts +1 -1
- package/dist/Components/PinInput/PinInput.js +3 -2
- package/dist/Components/PinInput/PinInputProps.d.ts +4 -0
- package/dist/Components/RadioButton/RadioButton.js +1 -1
- package/dist/Components/SearchSelect/SearchSelect.d.ts +1 -1
- package/dist/Components/SearchSelect/SearchSelect.js +3 -3
- package/dist/Components/SearchSelect/SearchSelectProps.d.ts +2 -0
- package/dist/Components/Select/Select.styles.js +2 -1
- package/dist/Components/SelectSearch/SelectSearch.js +7 -4
- package/dist/Components/SideBar/SecondaryBar.js +20 -18
- package/dist/Components/SideBar/SideBar.d.ts +1 -1
- package/dist/Components/SideBar/SideBar.js +58 -43
- package/dist/Components/SideBar/SideBarProps.d.ts +14 -3
- package/dist/Components/SideBar/components/MenuItemBox.js +28 -24
- package/dist/Components/SideBar/components/MenuItems.js +16 -2
- package/dist/Components/SideBar/components/MenuPopoverContent.js +16 -16
- package/dist/Components/SideBar/components/OtherApps.js +16 -14
- package/dist/Components/Table/Components/TableBody.d.ts +5 -1
- package/dist/Components/Table/Components/TableBody.js +133 -31
- package/dist/Components/Table/Components/TableGroupRow.d.ts +15 -0
- package/dist/Components/Table/Components/TableGroupRow.js +27 -0
- package/dist/Components/Table/Components/TableHeader.js +23 -9
- package/dist/Components/Table/Table.d.ts +1 -1
- package/dist/Components/Table/Table.js +119 -38
- package/dist/Components/Table/TableProps.d.ts +34 -2
- package/dist/Components/Table/filters/ActiveFilters.d.ts +9 -0
- package/dist/Components/Table/filters/ActiveFilters.js +132 -0
- package/dist/Components/Table/filters/CompactSelect.d.ts +15 -0
- package/dist/Components/Table/filters/CompactSelect.js +69 -0
- package/dist/Components/Table/filters/LeftFilterPane.d.ts +36 -0
- package/dist/Components/Table/filters/LeftFilterPane.js +273 -0
- package/dist/Components/Table/filters/SelectOperationControls.d.ts +8 -0
- package/dist/Components/Table/filters/SelectOperationControls.js +15 -0
- package/dist/Components/Table/filters/TableFilters.d.ts +7 -0
- package/dist/Components/Table/filters/TableFilters.js +89 -0
- package/dist/Components/Table/filters/TextOperationControls.d.ts +12 -0
- package/dist/Components/Table/filters/TextOperationControls.js +29 -0
- package/dist/Components/Table/hooks/useDebounce.d.ts +2 -0
- package/dist/Components/Table/hooks/useDebounce.js +28 -0
- package/dist/Components/Table/hooks/useTable.d.ts +47 -0
- package/dist/Components/Table/hooks/useTable.js +219 -0
- package/dist/Components/Table/settings/ManageColumns.d.ts +12 -0
- package/dist/Components/Table/settings/ManageColumns.js +166 -0
- package/dist/Components/Table/settings/ManageColumns.test.d.ts +1 -0
- package/dist/Components/Table/settings/ManageColumns.test.js +146 -0
- package/dist/Components/Table/settings/TableSettings.d.ts +10 -0
- package/dist/Components/Table/settings/TableSettings.js +141 -0
- package/dist/Layout.d.ts +3 -0
- package/dist/Layout.js +292 -0
- package/dist/Pages/TInput.d.ts +3 -0
- package/dist/Pages/TInput.js +56 -0
- package/dist/Pages/accordion.d.ts +3 -0
- package/dist/Pages/accordion.js +42 -0
- package/dist/Pages/alertdialog.d.ts +3 -0
- package/dist/Pages/alertdialog.js +54 -0
- package/dist/Pages/button.d.ts +3 -0
- package/dist/Pages/button.js +46 -0
- package/dist/Pages/card.d.ts +3 -0
- package/dist/Pages/card.js +117 -0
- package/dist/Pages/chart.d.ts +4 -0
- package/dist/Pages/chart.js +40 -0
- package/dist/Pages/checkbox.d.ts +3 -0
- package/dist/Pages/checkbox.js +12 -0
- package/dist/Pages/contactForm.d.ts +3 -0
- package/dist/Pages/contactForm.js +16 -0
- package/dist/Pages/datePick.d.ts +3 -0
- package/dist/Pages/datePick.js +88 -0
- package/dist/Pages/drawer.d.ts +3 -0
- package/dist/Pages/drawer.js +58 -0
- package/dist/Pages/dropdown.d.ts +3 -0
- package/dist/Pages/dropdown.js +24 -0
- package/dist/Pages/editor.d.ts +3 -0
- package/dist/Pages/editor.js +14 -0
- package/dist/Pages/feedback.d.ts +2 -0
- package/dist/Pages/feedback.js +15 -0
- package/dist/Pages/fileUpload.d.ts +2 -0
- package/dist/Pages/fileUpload.js +82 -0
- package/dist/Pages/input.d.ts +3 -0
- package/dist/Pages/input.js +92 -0
- package/dist/Pages/kanbanboard.d.ts +3 -0
- package/dist/Pages/kanbanboard.js +224 -0
- package/dist/Pages/modal.d.ts +3 -0
- package/dist/Pages/modal.js +65 -0
- package/dist/Pages/multiSelect.d.ts +3 -0
- package/dist/Pages/multiSelect.js +55 -0
- package/dist/Pages/noteArea.d.ts +3 -0
- package/dist/Pages/noteArea.js +59 -0
- package/dist/Pages/notification.d.ts +3 -0
- package/dist/Pages/notification.js +25 -0
- package/dist/Pages/numberInput.d.ts +3 -0
- package/dist/Pages/numberInput.js +49 -0
- package/dist/Pages/photoViewer.d.ts +3 -0
- package/dist/Pages/photoViewer.js +12 -0
- package/dist/Pages/pinInputs.d.ts +3 -0
- package/dist/Pages/pinInputs.js +12 -0
- package/dist/Pages/productCaard.d.ts +3 -0
- package/dist/Pages/productCaard.js +311 -0
- package/dist/Pages/productDetailCard.d.ts +3 -0
- package/dist/Pages/productDetailCard.js +78 -0
- package/dist/Pages/productFilter.d.ts +3 -0
- package/dist/Pages/productFilter.js +202 -0
- package/dist/Pages/progressbar.d.ts +3 -0
- package/dist/Pages/progressbar.js +12 -0
- package/dist/Pages/radioButton.d.ts +3 -0
- package/dist/Pages/radioButton.js +54 -0
- package/dist/Pages/search.d.ts +3 -0
- package/dist/Pages/search.js +54 -0
- package/dist/Pages/searchSelect.d.ts +3 -0
- package/dist/Pages/searchSelect.js +133 -0
- package/dist/Pages/select.d.ts +3 -0
- package/dist/Pages/select.js +53 -0
- package/dist/Pages/selectSearch.d.ts +3 -0
- package/dist/Pages/selectSearch.js +103 -0
- package/dist/Pages/skeleton.d.ts +3 -0
- package/dist/Pages/skeleton.js +22 -0
- package/dist/Pages/switch.d.ts +3 -0
- package/dist/Pages/switch.js +50 -0
- package/dist/Pages/table.d.ts +3 -0
- package/dist/Pages/table.js +174 -0
- package/dist/Pages/textArea.d.ts +3 -0
- package/dist/Pages/textArea.js +15 -0
- package/dist/Pages/timeline.d.ts +3 -0
- package/dist/Pages/timeline.js +74 -0
- package/dist/Pages/tooltip.d.ts +3 -0
- package/dist/Pages/tooltip.js +12 -0
- package/dist/Pages/toster.d.ts +3 -0
- package/dist/Pages/toster.js +68 -0
- package/dist/Pages/verifyEmail.d.ts +3 -0
- package/dist/Pages/verifyEmail.js +18 -0
- package/dist/Theme/Dark/palette.d.ts +370 -0
- package/dist/Theme/Dark/palette.js +372 -0
- package/dist/Theme/Default/palette.d.ts +4 -0
- package/dist/Theme/Default/palette.js +3 -0
- package/dist/Theme/Emerald/palette.d.ts +4 -0
- package/dist/Theme/Emerald/palette.js +2 -1
- package/dist/Theme/Meadow/palette.d.ts +4 -0
- package/dist/Theme/Meadow/palette.js +2 -1
- package/dist/Theme/Radiant/palette.d.ts +4 -0
- package/dist/Theme/Radiant/palette.js +2 -1
- package/dist/Theme/Rosewood/palette.d.ts +4 -0
- package/dist/Theme/Rosewood/palette.js +2 -1
- package/dist/Theme/Skyline/palette.d.ts +4 -0
- package/dist/Theme/Skyline/palette.js +2 -1
- package/dist/Theme/Slate/palette.d.ts +4 -0
- package/dist/Theme/Slate/palette.js +2 -1
- package/dist/Theme/themeProps.d.ts +4 -0
- package/dist/Utils/table.d.ts +21 -0
- package/dist/Utils/table.js +98 -14
- package/dist/bootstrap.d.ts +1 -0
- package/dist/bootstrap.js +14 -0
- package/dist/components-v2/AlertDialog/AlertDialog.d.ts +23 -0
- package/dist/components-v2/AlertDialog/AlertDialog.js +98 -0
- package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +14 -0
- package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +66 -0
- package/dist/components-v2/Charts/AreaChart.d.ts +23 -0
- package/dist/components-v2/Charts/AreaChart.js +63 -0
- package/dist/components-v2/Charts/BarChart.d.ts +25 -0
- package/dist/components-v2/Charts/BarChart.js +57 -0
- package/dist/components-v2/Charts/LineChart.d.ts +23 -0
- package/dist/components-v2/Charts/LineChart.js +55 -0
- package/dist/components-v2/Charts/PieChart.d.ts +15 -0
- package/dist/components-v2/Charts/PieChart.js +54 -0
- package/dist/components-v2/Charts/PolarChart.d.ts +14 -0
- package/dist/components-v2/Charts/PolarChart.js +54 -0
- package/dist/components-v2/Charts/chartOptions.d.ts +7 -0
- package/dist/components-v2/Charts/chartOptions.js +41 -0
- package/dist/components-v2/Charts/useChartTheme.d.ts +22 -0
- package/dist/components-v2/Charts/useChartTheme.js +106 -0
- package/dist/components-v2/ContactForm/ContactForm.d.ts +25 -0
- package/dist/components-v2/ContactForm/ContactForm.js +116 -0
- package/dist/components-v2/DatePicker/Calendar.d.ts +19 -0
- package/dist/components-v2/DatePicker/Calendar.js +212 -0
- package/dist/components-v2/DatePicker/DatePicker.d.ts +46 -0
- package/dist/components-v2/DatePicker/DatePicker.js +189 -0
- package/dist/components-v2/DatePicker/TimePicker.d.ts +12 -0
- package/dist/components-v2/DatePicker/TimePicker.js +105 -0
- package/dist/components-v2/DatePicker/utils.d.ts +31 -0
- package/dist/components-v2/DatePicker/utils.js +109 -0
- package/dist/components-v2/Drawer/Drawer.d.ts +27 -0
- package/dist/components-v2/Drawer/Drawer.js +132 -0
- package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +26 -0
- package/dist/components-v2/FeedbackForm/FeedbackForm.js +112 -0
- package/dist/components-v2/FileUploader/FileUploader.d.ts +28 -0
- package/dist/components-v2/FileUploader/FileUploader.js +127 -0
- package/dist/components-v2/Input/TextInput.d.ts +41 -0
- package/dist/components-v2/Input/TextInput.js +169 -0
- package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +39 -0
- package/dist/components-v2/KanbanBoard/KanbanBoard.js +101 -0
- package/dist/components-v2/Layout/AppLayout.d.ts +22 -0
- package/dist/components-v2/Layout/AppLayout.js +53 -0
- package/dist/components-v2/Loading/Loading.d.ts +19 -0
- package/dist/components-v2/Loading/Loading.js +55 -0
- package/dist/components-v2/Modal/Modal.d.ts +30 -0
- package/dist/components-v2/Modal/Modal.js +82 -0
- package/dist/components-v2/NavigationBar/NavigationBar.d.ts +47 -0
- package/dist/components-v2/NavigationBar/NavigationBar.js +148 -0
- package/dist/components-v2/Notification/Notification.d.ts +22 -0
- package/dist/components-v2/Notification/Notification.js +113 -0
- package/dist/components-v2/NumberInput/NumberInput.d.ts +37 -0
- package/dist/components-v2/NumberInput/NumberInput.js +210 -0
- package/dist/components-v2/PinInput/PinInput.d.ts +26 -0
- package/dist/components-v2/PinInput/PinInput.js +138 -0
- package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +18 -0
- package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +91 -0
- package/dist/components-v2/Select/Select.d.ts +41 -0
- package/dist/components-v2/Select/Select.js +284 -0
- package/dist/components-v2/Sidebar/Sidebar.d.ts +41 -0
- package/dist/components-v2/Sidebar/Sidebar.js +182 -0
- package/dist/components-v2/Slider/Slider.d.ts +18 -0
- package/dist/components-v2/Slider/Slider.js +101 -0
- package/dist/components-v2/Table/Table.d.ts +7 -0
- package/dist/components-v2/Table/Table.js +172 -0
- package/dist/components-v2/Table/TableProps.d.ts +139 -0
- package/dist/components-v2/Table/TableProps.js +9 -0
- package/dist/components-v2/Table/components/ActiveFilters.d.ts +10 -0
- package/dist/components-v2/Table/components/ActiveFilters.js +70 -0
- package/dist/components-v2/Table/components/BulkActionBar.d.ts +11 -0
- package/dist/components-v2/Table/components/BulkActionBar.js +92 -0
- package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +7 -0
- package/dist/components-v2/Table/components/ColumnResizeHandle.js +41 -0
- package/dist/components-v2/Table/components/Pagination.d.ts +11 -0
- package/dist/components-v2/Table/components/Pagination.js +92 -0
- package/dist/components-v2/Table/components/TableBody.d.ts +23 -0
- package/dist/components-v2/Table/components/TableBody.js +69 -0
- package/dist/components-v2/Table/components/TableCell.d.ts +14 -0
- package/dist/components-v2/Table/components/TableCell.js +63 -0
- package/dist/components-v2/Table/components/TableEmptyState.d.ts +12 -0
- package/dist/components-v2/Table/components/TableEmptyState.js +55 -0
- package/dist/components-v2/Table/components/TableErrorState.d.ts +6 -0
- package/dist/components-v2/Table/components/TableErrorState.js +52 -0
- package/dist/components-v2/Table/components/TableHeader.d.ts +21 -0
- package/dist/components-v2/Table/components/TableHeader.js +94 -0
- package/dist/components-v2/Table/components/TableRow.d.ts +20 -0
- package/dist/components-v2/Table/components/TableRow.js +64 -0
- package/dist/components-v2/Table/components/TableSearch.d.ts +8 -0
- package/dist/components-v2/Table/components/TableSearch.js +47 -0
- package/dist/components-v2/Table/filters/FilterChips.d.ts +6 -0
- package/dist/components-v2/Table/filters/FilterChips.js +9 -0
- package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +17 -0
- package/dist/components-v2/Table/filters/LeftFilterPane.js +105 -0
- package/dist/components-v2/Table/filters/TableFilters.d.ts +12 -0
- package/dist/components-v2/Table/filters/TableFilters.js +127 -0
- package/dist/components-v2/Table/hooks/useColumnResize.d.ts +15 -0
- package/dist/components-v2/Table/hooks/useColumnResize.js +104 -0
- package/dist/components-v2/Table/hooks/useTable.d.ts +58 -0
- package/dist/components-v2/Table/hooks/useTable.js +254 -0
- package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +25 -0
- package/dist/components-v2/Table/hooks/useTableKeyboard.js +112 -0
- package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +29 -0
- package/dist/components-v2/Table/hooks/useVirtualScroll.js +83 -0
- package/dist/components-v2/Table/settings/ManageColumns.d.ts +12 -0
- package/dist/components-v2/Table/settings/ManageColumns.js +59 -0
- package/dist/components-v2/Table/settings/TableSettings.d.ts +12 -0
- package/dist/components-v2/Table/settings/TableSettings.js +57 -0
- package/dist/components-v2/Table/utils/filterUtils.d.ts +7 -0
- package/dist/components-v2/Table/utils/filterUtils.js +149 -0
- package/dist/components-v2/Table/utils/sortUtils.d.ts +6 -0
- package/dist/components-v2/Table/utils/sortUtils.js +65 -0
- package/dist/components-v2/Tag/Tag.d.ts +15 -0
- package/dist/components-v2/Tag/Tag.js +87 -0
- package/dist/components-v2/Timeline/Timeline.d.ts +18 -0
- package/dist/components-v2/Timeline/Timeline.js +76 -0
- package/dist/components-v2/Toaster/Toaster.d.ts +61 -0
- package/dist/components-v2/Toaster/Toaster.js +63 -0
- package/dist/components-v2/Toggle/Toggle.d.ts +28 -0
- package/dist/components-v2/Toggle/Toggle.js +90 -0
- package/dist/components-v2/ui/accordion.d.ts +12 -0
- package/dist/components-v2/ui/accordion.js +104 -0
- package/dist/components-v2/ui/alert.d.ts +18 -0
- package/dist/components-v2/ui/alert.js +99 -0
- package/dist/components-v2/ui/avatar.d.ts +12 -0
- package/dist/components-v2/ui/avatar.js +80 -0
- package/dist/components-v2/ui/badge.d.ts +10 -0
- package/dist/components-v2/ui/badge.js +76 -0
- package/dist/components-v2/ui/button.d.ts +18 -0
- package/dist/components-v2/ui/button.js +97 -0
- package/dist/components-v2/ui/checkbox.d.ts +15 -0
- package/dist/components-v2/ui/checkbox.js +86 -0
- package/dist/components-v2/ui/dialog.d.ts +30 -0
- package/dist/components-v2/ui/dialog.js +115 -0
- package/dist/components-v2/ui/dropdown-menu.d.ts +26 -0
- package/dist/components-v2/ui/dropdown-menu.js +121 -0
- package/dist/components-v2/ui/field.d.ts +32 -0
- package/dist/components-v2/ui/field.js +62 -0
- package/dist/components-v2/ui/form-field.d.ts +25 -0
- package/dist/components-v2/ui/form-field.js +96 -0
- package/dist/components-v2/ui/input.d.ts +9 -0
- package/dist/components-v2/ui/input.js +73 -0
- package/dist/components-v2/ui/label.d.ts +10 -0
- package/dist/components-v2/ui/label.js +70 -0
- package/dist/components-v2/ui/popover.d.ts +9 -0
- package/dist/components-v2/ui/popover.js +60 -0
- package/dist/components-v2/ui/progress.d.ts +12 -0
- package/dist/components-v2/ui/progress.js +75 -0
- package/dist/components-v2/ui/radio-group.d.ts +17 -0
- package/dist/components-v2/ui/radio-group.js +91 -0
- package/dist/components-v2/ui/select.d.ts +24 -0
- package/dist/components-v2/ui/select.js +122 -0
- package/dist/components-v2/ui/separator.d.ts +5 -0
- package/dist/components-v2/ui/separator.js +55 -0
- package/dist/components-v2/ui/skeleton.d.ts +9 -0
- package/dist/components-v2/ui/skeleton.js +68 -0
- package/dist/components-v2/ui/spinner.d.ts +16 -0
- package/dist/components-v2/ui/spinner.js +64 -0
- package/dist/components-v2/ui/switch.d.ts +10 -0
- package/dist/components-v2/ui/switch.js +81 -0
- package/dist/components-v2/ui/tabs.d.ts +13 -0
- package/dist/components-v2/ui/tabs.js +95 -0
- package/dist/components-v2/ui/textarea.d.ts +10 -0
- package/dist/components-v2/ui/textarea.js +96 -0
- package/dist/components-v2/ui/tooltip.d.ts +17 -0
- package/dist/components-v2/ui/tooltip.js +75 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +8 -0
- package/dist/theme-v2/ThemeProvider.d.ts +19 -0
- package/dist/theme-v2/ThemeProvider.js +149 -0
- package/dist/theme-v2/dark.css +47 -0
- package/dist/theme-v2/tokens.css +72 -0
- package/package.json +2 -2
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
@@ -11,10 +22,44 @@ var lucide_react_1 = require("lucide-react");
|
|
|
11
22
|
var Button_1 = __importDefault(require("../Button/Button"));
|
|
12
23
|
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
13
24
|
var CalendarPanel = function (_a) {
|
|
14
|
-
var
|
|
25
|
+
var _b;
|
|
26
|
+
var currentMonth = _a.currentMonth, setCurrentMonth = _a.setCurrentMonth, today = _a.today, isRange = _a.isRange, tempDate = _a.tempDate, tempRangeStart = _a.tempRangeStart, tempRangeEnd = _a.tempRangeEnd, isSameDay = _a.isSameDay, isBefore = _a.isBefore, isAfter = _a.isAfter, minDate = _a.minDate, maxDate = _a.maxDate, disablePastDates = _a.disablePastDates, disableFutureDates = _a.disableFutureDates, disableToday = _a.disableToday, onDaySelect = _a.onDaySelect, hoveredDate = _a.hoveredDate, onDayHover = _a.onDayHover, renderWeekdays = _a.renderWeekdays;
|
|
15
27
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
28
|
+
var rangeBg = theme.colors.primary.opacity[16];
|
|
16
29
|
var isViewingCurrentMonth = currentMonth.getFullYear() === today.getFullYear() &&
|
|
17
30
|
currentMonth.getMonth() === today.getMonth();
|
|
31
|
+
// Effective range end: the committed end, or a tentative end from hover.
|
|
32
|
+
var tentativeEnd = isRange && tempRangeStart && !tempRangeEnd && hoveredDate && isAfter(hoveredDate, tempRangeStart)
|
|
33
|
+
? hoveredDate
|
|
34
|
+
: null;
|
|
35
|
+
var rangeStart = tempRangeStart;
|
|
36
|
+
var rangeEnd = tempRangeEnd !== null && tempRangeEnd !== void 0 ? tempRangeEnd : tentativeEnd;
|
|
37
|
+
var isTentative = !tempRangeEnd && !!tentativeEnd;
|
|
38
|
+
var hasRange = !!(rangeStart && rangeEnd && !isSameDay(rangeStart, rangeEnd));
|
|
39
|
+
var selectStyles = {
|
|
40
|
+
border: "1px solid",
|
|
41
|
+
borderColor: (_b = theme.colors.boxborder) === null || _b === void 0 ? void 0 : _b[300],
|
|
42
|
+
borderRadius: "md",
|
|
43
|
+
px: 2,
|
|
44
|
+
py: 1,
|
|
45
|
+
fontSize: "xs",
|
|
46
|
+
fontWeight: 600,
|
|
47
|
+
color: theme.colors.text[700],
|
|
48
|
+
cursor: "pointer",
|
|
49
|
+
bg: theme.colors.white,
|
|
50
|
+
outline: "none",
|
|
51
|
+
_hover: { borderColor: theme.colors.primary[300] },
|
|
52
|
+
_focus: {
|
|
53
|
+
outline: "none",
|
|
54
|
+
borderColor: theme.colors.primary[500],
|
|
55
|
+
boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
|
|
56
|
+
},
|
|
57
|
+
style: {
|
|
58
|
+
WebkitAppearance: "menulist",
|
|
59
|
+
MozAppearance: "menulist",
|
|
60
|
+
appearance: "menulist",
|
|
61
|
+
},
|
|
62
|
+
};
|
|
18
63
|
var renderDays = function () {
|
|
19
64
|
var monthStart = (0, date_fns_1.startOfMonth)(currentMonth);
|
|
20
65
|
var monthEnd = (0, date_fns_1.endOfMonth)(currentMonth);
|
|
@@ -28,90 +73,84 @@ var CalendarPanel = function (_a) {
|
|
|
28
73
|
var thisDay = day;
|
|
29
74
|
var isInCurrentMonth = thisDay.getMonth() === currentMonth.getMonth();
|
|
30
75
|
var isToday = isSameDay(thisDay, today);
|
|
31
|
-
var isStart = isRange &&
|
|
32
|
-
var isEnd = isRange &&
|
|
33
|
-
var isInRange = isRange &&
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
isBefore(thisDay, tempRangeEnd);
|
|
38
|
-
var isSelected = !isRange && tempDate && isSameDay(thisDay, tempDate);
|
|
76
|
+
var isStart = !!(isRange && rangeStart && isSameDay(thisDay, rangeStart));
|
|
77
|
+
var isEnd = !!(isRange && rangeEnd && isSameDay(thisDay, rangeEnd));
|
|
78
|
+
var isInRange = !!(isRange && rangeStart && rangeEnd && isAfter(thisDay, rangeStart) && isBefore(thisDay, rangeEnd));
|
|
79
|
+
var isSelected = !!(!isRange && tempDate && isSameDay(thisDay, tempDate));
|
|
80
|
+
var isTentativeEnd = isEnd && isTentative;
|
|
81
|
+
var circleSolid = !!(isSelected || (isRange && isStart) || (isEnd && !isTentative));
|
|
39
82
|
var disabled = !isInCurrentMonth ||
|
|
40
|
-
(minDate && isBefore(thisDay, minDate)) ||
|
|
41
|
-
(maxDate && isAfter(thisDay, maxDate)) ||
|
|
42
|
-
(disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||
|
|
43
|
-
(disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today)) ||
|
|
44
|
-
(disableToday && isToday);
|
|
45
|
-
|
|
83
|
+
!!(minDate && isBefore(thisDay, minDate)) ||
|
|
84
|
+
!!(maxDate && isAfter(thisDay, maxDate)) ||
|
|
85
|
+
!!(disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||
|
|
86
|
+
!!(disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today)) ||
|
|
87
|
+
!!(disableToday && isToday);
|
|
88
|
+
// Connected range band painted on the cell background; start/end use a
|
|
89
|
+
// half gradient so the band meets the solid day circle cleanly.
|
|
90
|
+
var cellBg = void 0;
|
|
91
|
+
if (isRange && hasRange) {
|
|
92
|
+
if (isInRange)
|
|
93
|
+
cellBg = rangeBg;
|
|
94
|
+
else if (isStart && isEnd)
|
|
95
|
+
cellBg = undefined;
|
|
96
|
+
else if (isStart)
|
|
97
|
+
cellBg = "linear-gradient(to right, transparent 50%, ".concat(rangeBg, " 50%)");
|
|
98
|
+
else if (isEnd)
|
|
99
|
+
cellBg = "linear-gradient(to right, ".concat(rangeBg, " 50%, transparent 50%)");
|
|
100
|
+
}
|
|
101
|
+
var circleColor = circleSolid
|
|
102
|
+
? theme.colors.white
|
|
103
|
+
: isInCurrentMonth
|
|
104
|
+
? theme.colors.text[700]
|
|
105
|
+
: theme.colors.gray[400];
|
|
106
|
+
var circleBorder = circleSolid
|
|
107
|
+
? "1px solid transparent"
|
|
108
|
+
: isTentativeEnd
|
|
109
|
+
? "1px solid ".concat(theme.colors.primary[400])
|
|
110
|
+
: isToday
|
|
111
|
+
? "1px solid ".concat(theme.colors.primary[300])
|
|
112
|
+
: "1px solid transparent";
|
|
113
|
+
days.push(react_1.default.createElement(react_2.Box, { key: thisDay.toString(), h: "2rem", display: "flex", alignItems: "center", justifyContent: "center", style: cellBg ? { background: cellBg } : undefined },
|
|
114
|
+
react_1.default.createElement(react_2.Box, { as: "button", type: "button", disabled: disabled, onClick: function () { return !disabled && onDaySelect(new Date(thisDay)); }, onMouseEnter: function () { return !disabled && (onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(new Date(thisDay))); }, w: "1.75rem", h: "1.75rem", borderRadius: "full", display: "flex", alignItems: "center", justifyContent: "center", fontSize: "0.8125rem", fontWeight: circleSolid ? 600 : 500, lineHeight: "1", cursor: disabled ? "not-allowed" : "pointer", bg: circleSolid ? theme.colors.primary[500] : "transparent", color: circleColor, border: circleBorder, transition: "background 0.12s, color 0.12s", _hover: disabled
|
|
115
|
+
? {}
|
|
116
|
+
: circleSolid
|
|
117
|
+
? { bg: theme.colors.primary[600] }
|
|
118
|
+
: { bg: rangeBg } }, (0, date_fns_1.format)(thisDay, "d"))));
|
|
46
119
|
day = (0, date_fns_1.addDays)(day, 1);
|
|
47
120
|
};
|
|
48
121
|
for (var i = 0; i < 7; i++) {
|
|
49
122
|
_loop_1(i);
|
|
50
123
|
}
|
|
51
|
-
rows.push(react_1.default.createElement(react_2.Grid, { key: day.toString(), templateColumns: "repeat(7, 1fr)", gap: 0
|
|
124
|
+
rows.push(react_1.default.createElement(react_2.Grid, { key: day.toString(), templateColumns: "repeat(7, 1fr)", gap: 0 }, days));
|
|
52
125
|
}
|
|
53
126
|
return rows;
|
|
54
127
|
};
|
|
55
|
-
return (react_1.default.createElement(
|
|
56
|
-
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb:
|
|
57
|
-
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() - 1, 1); }); }, "aria-label": "Previous month" },
|
|
58
|
-
react_1.default.createElement(lucide_react_1.ChevronLeftIcon, { size:
|
|
59
|
-
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap:
|
|
60
|
-
react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getMonth(), onChange: function (e) {
|
|
128
|
+
return (react_1.default.createElement(react_2.Box, null,
|
|
129
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 2, gap: 1 },
|
|
130
|
+
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() - 1, 1); }); }, "aria-label": "Previous month" },
|
|
131
|
+
react_1.default.createElement(lucide_react_1.ChevronLeftIcon, { size: 16 })),
|
|
132
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1.5, minW: 0 },
|
|
133
|
+
react_1.default.createElement(react_2.Box, __assign({ as: "select", value: currentMonth.getMonth(), onChange: function (e) {
|
|
61
134
|
var newMonth = parseInt(e.target.value, 10);
|
|
62
135
|
setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), newMonth, 1); });
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
borderWidth: "1px",
|
|
66
|
-
borderStyle: "solid",
|
|
67
|
-
}, _focus: {
|
|
68
|
-
outline: "none",
|
|
69
|
-
borderColor: theme.colors.primary[500],
|
|
70
|
-
borderWidth: "1px",
|
|
71
|
-
borderStyle: "solid",
|
|
72
|
-
boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
|
|
73
|
-
}, style: {
|
|
74
|
-
border: "1px solid ".concat(theme.colors.gray[300]),
|
|
75
|
-
fontSize: "12px",
|
|
76
|
-
lineHeight: "1.25rem",
|
|
77
|
-
WebkitAppearance: "menulist",
|
|
78
|
-
MozAppearance: "menulist",
|
|
79
|
-
appearance: "menulist",
|
|
80
|
-
} }, Array.from({ length: 12 }).map(function (_, i) { return (react_1.default.createElement("option", { key: i, value: i }, (0, date_fns_1.format)(new Date(2000, i, 1), "MMMM"))); })),
|
|
81
|
-
react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getFullYear(), onChange: function (e) {
|
|
136
|
+
} }, selectStyles), Array.from({ length: 12 }).map(function (_, i) { return (react_1.default.createElement("option", { key: i, value: i }, (0, date_fns_1.format)(new Date(2000, i, 1), "MMMM"))); })),
|
|
137
|
+
react_1.default.createElement(react_2.Box, __assign({ as: "select", value: currentMonth.getFullYear(), onChange: function (e) {
|
|
82
138
|
var newYear = parseInt(e.target.value, 10);
|
|
83
139
|
setCurrentMonth(function (prev) { return new Date(newYear, prev.getMonth(), 1); });
|
|
84
|
-
},
|
|
85
|
-
borderColor: "gray.400",
|
|
86
|
-
borderWidth: "1px",
|
|
87
|
-
borderStyle: "solid",
|
|
88
|
-
}, _focus: {
|
|
89
|
-
outline: "none",
|
|
90
|
-
borderColor: theme.colors.primary[500],
|
|
91
|
-
borderWidth: "1px",
|
|
92
|
-
borderStyle: "solid",
|
|
93
|
-
boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
|
|
94
|
-
}, style: {
|
|
95
|
-
border: "1px solid ".concat(theme.colors.gray[300]),
|
|
96
|
-
fontSize: "12px",
|
|
97
|
-
lineHeight: "1.25rem",
|
|
98
|
-
WebkitAppearance: "menulist",
|
|
99
|
-
MozAppearance: "menulist",
|
|
100
|
-
appearance: "menulist",
|
|
101
|
-
} }, Array.from({ length: 100 }).map(function (_, i) {
|
|
140
|
+
} }, selectStyles), Array.from({ length: 100 }).map(function (_, i) {
|
|
102
141
|
var year = new Date().getFullYear() - 50 + i;
|
|
103
142
|
return (react_1.default.createElement("option", { key: year, value: year }, year));
|
|
104
143
|
}))),
|
|
105
|
-
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1 },
|
|
106
|
-
!isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () {
|
|
144
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1, flexShrink: 0 },
|
|
145
|
+
!isRange && !isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () {
|
|
107
146
|
setCurrentMonth(function (_prev) { return new Date(today.getFullYear(), today.getMonth(), 1); });
|
|
108
147
|
if (!disableToday) {
|
|
109
148
|
onDaySelect(new Date(today));
|
|
110
149
|
}
|
|
111
|
-
}, "aria-label": "Today", sx: { fontSize: "0.7rem", px: 2 }, isDisabled: disableToday }, "Today")),
|
|
112
|
-
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() + 1, 1); }); }, "aria-label": "Next month" },
|
|
113
|
-
react_1.default.createElement(lucide_react_1.ChevronRightIcon, { size:
|
|
114
|
-
renderDays()));
|
|
150
|
+
}, "aria-label": "Today", sx: { fontSize: "0.7rem", px: 2, flexShrink: 0 }, isDisabled: disableToday }, "Today")),
|
|
151
|
+
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", sx: { flexShrink: 0 }, onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() + 1, 1); }); }, "aria-label": "Next month" },
|
|
152
|
+
react_1.default.createElement(lucide_react_1.ChevronRightIcon, { size: 16 })))), renderWeekdays !== null && renderWeekdays !== void 0 ? renderWeekdays : (react_1.default.createElement(react_2.Grid, { templateColumns: "repeat(7, 1fr)", gap: 0, mb: 1 }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(function (day) { return (react_1.default.createElement(react_2.Box, { textAlign: "center", key: day, fontSize: "0.7rem", fontWeight: 600, textTransform: "uppercase", letterSpacing: "0.02em", color: theme.colors.gray[500], py: 1 }, day)); }))),
|
|
153
|
+
react_1.default.createElement(react_2.Box, { onMouseLeave: function () { return onDayHover === null || onDayHover === void 0 ? void 0 : onDayHover(null); } }, renderDays())));
|
|
115
154
|
};
|
|
116
155
|
exports.CalendarPanel = CalendarPanel;
|
|
117
156
|
exports.default = exports.CalendarPanel;
|
|
@@ -56,24 +56,25 @@ var setTimeFrom = function (base, time) {
|
|
|
56
56
|
return new Date(b.getFullYear(), b.getMonth(), b.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), 0);
|
|
57
57
|
};
|
|
58
58
|
var RangeDatePicker = function (props) {
|
|
59
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
60
|
-
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText,
|
|
59
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
60
|
+
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText, _q = props.dateFormat, dateFormat = _q === void 0 ? "dd/MM/yyyy" : _q, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, _r = props.autoComplete, autoComplete = _r === void 0 ? "off" : _r, disabled = props.disabled, _s = props.width, width = _s === void 0 ? "100%" : _s, _t = props.disableToday, disableToday = _t === void 0 ? false : _t, _u = props.size, size = _u === void 0 ? "md" : _u;
|
|
61
61
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
62
62
|
var sizeKey = typeof size === "string" ? size : "md";
|
|
63
63
|
var calendarIconPx = (0, textInputIconSize_1.getTextInputIconSizePx)(sizeKey);
|
|
64
64
|
var calendarIconWrapperSx = (0, textInputIconSize_1.getTextInputIconWrapperSx)(sizeKey);
|
|
65
|
-
var
|
|
65
|
+
var _v = (0, react_2.useDisclosure)(), isOpen = _v.isOpen, onOpen = _v.onOpen, onClose = _v.onClose;
|
|
66
66
|
var inputRef = (0, react_1.useRef)(null);
|
|
67
67
|
var triggerRef = (0, react_1.useRef)(null);
|
|
68
68
|
var popoverRef = (0, react_1.useRef)(null);
|
|
69
69
|
var today = new Date();
|
|
70
70
|
var placeholder = (0, react_1.useMemo)(function () { return placeholderText || "".concat(dateFormat, " - ").concat(dateFormat); }, [placeholderText, dateFormat]);
|
|
71
71
|
var selectedRange = (_b = (_a = props.value) !== null && _a !== void 0 ? _a : props.selectedDate) !== null && _b !== void 0 ? _b : null;
|
|
72
|
-
var
|
|
73
|
-
var
|
|
74
|
-
var
|
|
75
|
-
var
|
|
76
|
-
var
|
|
72
|
+
var _w = (0, react_1.useState)(new Date()), currentMonth = _w[0], setCurrentMonthState = _w[1];
|
|
73
|
+
var _x = (0, react_1.useState)((_c = selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) !== null && _c !== void 0 ? _c : null), tempRangeStart = _x[0], setTempRangeStart = _x[1];
|
|
74
|
+
var _y = (0, react_1.useState)((_d = selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to) !== null && _d !== void 0 ? _d : null), tempRangeEnd = _y[0], setTempRangeEnd = _y[1];
|
|
75
|
+
var _z = (0, react_1.useState)(true), selectingStart = _z[0], setSelectingStart = _z[1];
|
|
76
|
+
var _0 = (0, react_1.useState)(""), inputValue = _0[0], setInputValue = _0[1];
|
|
77
|
+
var _1 = (0, react_1.useState)(null), hoveredDate = _1[0], setHoveredDate = _1[1];
|
|
77
78
|
var formatHasTime = (0, react_1.useMemo)(function () { return /(h{1,2}|H{1,2})/.test(dateFormat); }, [dateFormat]);
|
|
78
79
|
var formatHasSeconds = (0, react_1.useMemo)(function () { return /s{1,2}/i.test(dateFormat); }, [dateFormat]);
|
|
79
80
|
var shouldUseSelectTimePicker = formatHasTime && !formatHasSeconds;
|
|
@@ -143,9 +144,25 @@ var RangeDatePicker = function (props) {
|
|
|
143
144
|
setTempRangeStart(finalStart);
|
|
144
145
|
setTempRangeEnd(finalEnd);
|
|
145
146
|
setSelectingStart(true);
|
|
147
|
+
setHoveredDate(null);
|
|
146
148
|
// no auto-close; wait for OK
|
|
147
149
|
}
|
|
148
150
|
};
|
|
151
|
+
var applyPreset = function (from, to) {
|
|
152
|
+
setTempRangeStart(from);
|
|
153
|
+
setTempRangeEnd(to);
|
|
154
|
+
setSelectingStart(true);
|
|
155
|
+
setHoveredDate(null);
|
|
156
|
+
setCurrentMonthState(from);
|
|
157
|
+
setInputValue("".concat((0, date_fns_1.format)(from, dateFormat), " - ").concat((0, date_fns_1.format)(to, dateFormat)));
|
|
158
|
+
};
|
|
159
|
+
var presets = [
|
|
160
|
+
{ label: "Today", getRange: function () { return [today, today]; } },
|
|
161
|
+
{ label: "Yesterday", getRange: function () { var d = (0, date_fns_1.subDays)(today, 1); return [d, d]; } },
|
|
162
|
+
{ label: "Last 7 days", getRange: function () { return [(0, date_fns_1.subDays)(today, 6), today]; } },
|
|
163
|
+
{ label: "Last 30 days", getRange: function () { return [(0, date_fns_1.subDays)(today, 29), today]; } },
|
|
164
|
+
{ label: "This month", getRange: function () { return [(0, date_fns_1.startOfMonth)(today), (0, date_fns_1.endOfMonth)(today)]; } },
|
|
165
|
+
];
|
|
149
166
|
(0, react_1.useEffect)(function () {
|
|
150
167
|
if (!isOpen)
|
|
151
168
|
return;
|
|
@@ -200,13 +217,17 @@ var RangeDatePicker = function (props) {
|
|
|
200
217
|
}, _hover: {
|
|
201
218
|
borderColor: error ? (_m = (_l = theme.colors.semantic) === null || _l === void 0 ? void 0 : _l.error) === null || _m === void 0 ? void 0 : _m[500] : undefined,
|
|
202
219
|
}, cursor: "pointer" }),
|
|
203
|
-
react_1.default.createElement(react_2.InputRightElement, {
|
|
220
|
+
react_1.default.createElement(react_2.InputRightElement, { height: "100%", display: "flex", alignItems: "center", pointerEvents: "auto", style: { cursor: "pointer" }, onClick: function () { return (isOpen ? onClose() : handleOpen()); } },
|
|
204
221
|
react_1.default.createElement(react_2.Box, { as: "span", sx: calendarIconWrapperSx },
|
|
205
222
|
react_1.default.createElement(lucide_react_1.CalendarIcon, { size: calendarIconPx, color: theme.colors.gray[500] })))))),
|
|
206
|
-
react_1.default.createElement(react_2.PopoverContent, {
|
|
207
|
-
react_1.default.createElement(react_2.PopoverBody,
|
|
208
|
-
react_1.default.createElement(
|
|
209
|
-
|
|
223
|
+
react_1.default.createElement(react_2.PopoverContent, { w: "18rem", maxW: "18rem", p: 3, ref: popoverRef, boxShadow: "lg", borderRadius: "0.75rem", border: "1px solid", borderColor: (_o = theme.colors.boxborder) === null || _o === void 0 ? void 0 : _o[500] },
|
|
224
|
+
react_1.default.createElement(react_2.PopoverBody, { p: 0 },
|
|
225
|
+
react_1.default.createElement(react_2.Box, { display: "flex", flexWrap: "wrap", gap: 2, mb: 3 }, presets.map(function (p) { return (react_1.default.createElement(Button_1.default, { key: p.label, size: "xs", variant: "outline", colorScheme: "gray", sx: { flex: "1 1 auto" }, onClick: function () {
|
|
226
|
+
var _a = p.getRange(), from = _a[0], to = _a[1];
|
|
227
|
+
applyPreset(from, to);
|
|
228
|
+
} }, p.label)); })),
|
|
229
|
+
react_1.default.createElement(CalendarPanel_1.default, { currentMonth: currentMonth, setCurrentMonth: function (updater) { return setCurrentMonthState(function (prev) { return updater(prev); }); }, today: today, isRange: true, tempDate: null, tempRangeStart: tempRangeStart, tempRangeEnd: tempRangeEnd, hoveredDate: hoveredDate, onDayHover: setHoveredDate, isSameDay: date_fns_1.isSameDay, isBefore: date_fns_1.isBefore, isAfter: date_fns_1.isAfter, minDate: minDate, maxDate: maxDate, disablePastDates: disablePastDates, disableFutureDates: disableFutureDates, disableToday: disableToday, onDaySelect: handleDaySelect }),
|
|
230
|
+
formatHasTime && (react_1.default.createElement(react_2.Box, { mt: 3, display: "grid", gridTemplateColumns: "1fr", gap: 2 },
|
|
210
231
|
react_1.default.createElement(react_2.Box, null,
|
|
211
232
|
react_1.default.createElement(react_2.Box, { fontSize: "xs", color: "gray.600", mb: 1 }, "Start time"),
|
|
212
233
|
shouldUseSelectTimePicker ? (react_1.default.createElement(TimePicker_1.default, { date: startTimeBaseDate, onChange: function (updated) {
|
|
@@ -239,9 +260,9 @@ var RangeDatePicker = function (props) {
|
|
|
239
260
|
}
|
|
240
261
|
setTempRangeEnd(setTimeFrom(endTimeBaseDate, t));
|
|
241
262
|
}, dateFormat: timePickerFormat, disabled: disabled || !tempRangeEnd, size: sizeKey }))))),
|
|
242
|
-
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt:
|
|
243
|
-
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: handleClear }, "Clear"),
|
|
244
|
-
react_1.default.createElement(Button_1.default, { size: "sm",
|
|
263
|
+
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: (_p = theme.colors.boxborder) === null || _p === void 0 ? void 0 : _p[300] },
|
|
264
|
+
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", colorScheme: "gray", onClick: handleClear }, "Clear"),
|
|
265
|
+
react_1.default.createElement(Button_1.default, { size: "sm", variant: "gradient", onClick: requestClose }, "Apply"))))),
|
|
245
266
|
error && errorMessage && react_1.default.createElement(ErrorMessage_1.default, { errorMessage: errorMessage }),
|
|
246
267
|
helperText && !error && react_1.default.createElement(HelperText_1.default, { helperText: helperText })));
|
|
247
268
|
};
|
|
@@ -275,13 +275,13 @@ var normalizeTimeBuffer = function (tokenChar, rawBuffer, segmentLength, is12Hou
|
|
|
275
275
|
return { value: buf, completed: buf.length >= segmentLength };
|
|
276
276
|
};
|
|
277
277
|
var SingleDatePicker = function (props) {
|
|
278
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
279
|
-
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText,
|
|
278
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
279
|
+
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText, _o = props.dateFormat, dateFormat = _o === void 0 ? "dd/MM/yyyy" : _o, pickerType = props.pickerType, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, _p = props.autoComplete, autoComplete = _p === void 0 ? "off" : _p, disabled = props.disabled, _q = props.width, width = _q === void 0 ? "100%" : _q, _r = props.disableToday, disableToday = _r === void 0 ? false : _r, _s = props.size, size = _s === void 0 ? "md" : _s;
|
|
280
280
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
281
281
|
var sizeKey = typeof size === "string" ? size : "md";
|
|
282
282
|
var calendarIconPx = (0, textInputIconSize_1.getTextInputIconSizePx)(sizeKey);
|
|
283
283
|
var calendarIconWrapperSx = (0, textInputIconSize_1.getTextInputIconWrapperSx)(sizeKey);
|
|
284
|
-
var
|
|
284
|
+
var _t = (0, react_2.useDisclosure)(), isOpen = _t.isOpen, onOpen = _t.onOpen, onClose = _t.onClose;
|
|
285
285
|
var inputRef = (0, react_1.useRef)(null);
|
|
286
286
|
var popoverRef = (0, react_1.useRef)(null);
|
|
287
287
|
var triggerRef = (0, react_1.useRef)(null);
|
|
@@ -339,18 +339,18 @@ var SingleDatePicker = function (props) {
|
|
|
339
339
|
resolvedDateFormat.toLowerCase().includes("mm") ||
|
|
340
340
|
resolvedDateFormat.toLowerCase().includes("ss");
|
|
341
341
|
var selectedDate = ((_a = props.value) !== null && _a !== void 0 ? _a : props.selectedDate);
|
|
342
|
-
var
|
|
342
|
+
var _u = (0, react_1.useState)(selectedDate
|
|
343
343
|
? disableToday && (0, date_fns_1.isSameDay)(selectedDate, today)
|
|
344
344
|
? tomorrow
|
|
345
345
|
: selectedDate
|
|
346
346
|
: disableToday
|
|
347
347
|
? tomorrow
|
|
348
|
-
: today), currentMonth =
|
|
349
|
-
var
|
|
350
|
-
var
|
|
351
|
-
var
|
|
352
|
-
var
|
|
353
|
-
var
|
|
348
|
+
: today), currentMonth = _u[0], setCurrentMonth = _u[1];
|
|
349
|
+
var _v = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _v[0], setTempDate = _v[1];
|
|
350
|
+
var _w = (0, react_1.useState)(""), inputValue = _w[0], setInputValue = _w[1];
|
|
351
|
+
var _x = (0, react_1.useState)(false), isTyping = _x[0], setIsTyping = _x[1];
|
|
352
|
+
var _y = (0, react_1.useState)(false), isMaskActive = _y[0], setIsMaskActive = _y[1];
|
|
353
|
+
var _z = (0, react_1.useState)(0), setCurrentSegmentIndex = _z[1];
|
|
354
354
|
var lastSegmentIndexRef = (0, react_1.useRef)(0);
|
|
355
355
|
var resetCommitGuardAndOpen = function () {
|
|
356
356
|
didCommitRef.current = false;
|
|
@@ -965,7 +965,7 @@ var SingleDatePicker = function (props) {
|
|
|
965
965
|
}, _hover: {
|
|
966
966
|
borderColor: error ? (_j = (_h = theme.colors.semantic) === null || _h === void 0 ? void 0 : _h.error) === null || _j === void 0 ? void 0 : _j[500] : undefined,
|
|
967
967
|
}, cursor: "text", boxShadow: error ? "0 0 0 0.125rem ".concat((_k = theme.colors.boxShadow) === null || _k === void 0 ? void 0 : _k.error) : "" }),
|
|
968
|
-
react_1.default.createElement(react_2.InputRightElement, {
|
|
968
|
+
react_1.default.createElement(react_2.InputRightElement, { height: "100%", display: "flex", alignItems: "center", pointerEvents: "auto", onClick: function (e) {
|
|
969
969
|
e.stopPropagation();
|
|
970
970
|
if (!isOpen) {
|
|
971
971
|
handleOpen();
|
|
@@ -976,8 +976,8 @@ var SingleDatePicker = function (props) {
|
|
|
976
976
|
}, style: { cursor: "pointer" } },
|
|
977
977
|
react_1.default.createElement(react_2.Box, { as: "span", sx: calendarIconWrapperSx },
|
|
978
978
|
react_1.default.createElement(lucide_react_1.CalendarIcon, { size: calendarIconPx, color: theme.colors.gray[500] })))))),
|
|
979
|
-
react_1.default.createElement(react_2.PopoverContent, { width: "auto", p:
|
|
980
|
-
react_1.default.createElement(react_2.PopoverBody,
|
|
979
|
+
react_1.default.createElement(react_2.PopoverContent, { width: "auto", p: 3, ref: popoverRef, boxShadow: "lg", borderRadius: "0.75rem", border: "1px solid", borderColor: (_l = theme.colors.boxborder) === null || _l === void 0 ? void 0 : _l[500] },
|
|
980
|
+
react_1.default.createElement(react_2.PopoverBody, { p: 0 },
|
|
981
981
|
showDate && (react_1.default.createElement(CalendarPanel_1.default, { currentMonth: currentMonth, setCurrentMonth: function (updater) { return setCurrentMonth(function (prev) { return updater(prev); }); }, today: today, isRange: false, tempDate: tempDate, tempRangeStart: null, tempRangeEnd: null, isSameDay: date_fns_1.isSameDay, isBefore: date_fns_1.isBefore, isAfter: date_fns_1.isAfter, minDate: minDate, maxDate: maxDate, disablePastDates: disablePastDates, disableFutureDates: disableFutureDates, disableToday: disableToday, onDaySelect: handleDaySelect })),
|
|
982
982
|
showTime && (react_1.default.createElement(react_2.Box, { mt: showDate ? 3 : 0 }, resolvedPickerType === "time" ? (react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempDate, onChange: function (updatedDate) {
|
|
983
983
|
setTempDate(updatedDate);
|
|
@@ -988,12 +988,12 @@ var SingleDatePicker = function (props) {
|
|
|
988
988
|
setInputValue((0, date_fns_1.format)(updatedDate, resolvedDateFormat));
|
|
989
989
|
setIsTyping(false);
|
|
990
990
|
}, disabled: disabled })))),
|
|
991
|
-
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt:
|
|
992
|
-
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: function () {
|
|
991
|
+
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", alignItems: "center", mt: 3, pt: 3, borderTop: "1px solid", borderColor: (_m = theme.colors.boxborder) === null || _m === void 0 ? void 0 : _m[300] },
|
|
992
|
+
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", colorScheme: "gray", onClick: function () {
|
|
993
993
|
setTempDate(null);
|
|
994
994
|
requestClose(null);
|
|
995
995
|
} }, "Clear"),
|
|
996
|
-
react_1.default.createElement(Button_1.default, { size: "sm",
|
|
996
|
+
react_1.default.createElement(Button_1.default, { size: "sm", variant: "gradient", onClick: function () { return requestClose(); } }, "Apply"))))),
|
|
997
997
|
error && errorMessage && react_1.default.createElement(ErrorMessage_1.default, { errorMessage: errorMessage }),
|
|
998
998
|
helperText && !error && react_1.default.createElement(HelperText_1.default, { helperText: helperText })));
|
|
999
999
|
};
|
|
@@ -85,13 +85,13 @@ var TimePicker = function (_a) {
|
|
|
85
85
|
updateTime(hour, minute, newMeridiem);
|
|
86
86
|
};
|
|
87
87
|
var displayHour = is12HourFormat ? (hour % 12 === 0 ? 12 : hour % 12) : hour;
|
|
88
|
-
return (react_1.default.createElement(react_2.HStack, { spacing: 1.5,
|
|
89
|
-
react_1.default.createElement(react_2.Select, { value: displayHour, onChange: handleHourChange,
|
|
88
|
+
return (react_1.default.createElement(react_2.HStack, { spacing: 1.5, w: "100%" },
|
|
89
|
+
react_1.default.createElement(react_2.Select, { value: displayHour, onChange: handleHourChange, flex: "1", minW: 0, size: "sm", isDisabled: disabled }, Array.from({ length: is12HourFormat ? 12 : 24 }, function (_, i) {
|
|
90
90
|
var value = is12HourFormat ? i + 1 : i;
|
|
91
91
|
return (react_1.default.createElement("option", { key: value, value: value }, value.toString().padStart(2, "0")));
|
|
92
92
|
})),
|
|
93
|
-
react_1.default.createElement(react_2.Select, { value: minute, onChange: handleMinuteChange,
|
|
94
|
-
is12HourFormat && (react_1.default.createElement(react_2.Select, { value: ampm, onChange: handleAmpmChange,
|
|
93
|
+
react_1.default.createElement(react_2.Select, { value: minute, onChange: handleMinuteChange, flex: "1", minW: 0, size: "sm", isDisabled: disabled }, Array.from({ length: 60 }, function (_, i) { return (react_1.default.createElement("option", { key: i, value: i }, i.toString().padStart(2, "0"))); })),
|
|
94
|
+
is12HourFormat && (react_1.default.createElement(react_2.Select, { value: ampm, onChange: handleAmpmChange, flex: "1", minW: 0, size: "sm", isDisabled: disabled },
|
|
95
95
|
react_1.default.createElement("option", { value: "AM" }, "AM"),
|
|
96
96
|
react_1.default.createElement("option", { value: "PM" }, "PM")))));
|
|
97
97
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { InputProps } from "./InputProps";
|
|
3
|
-
declare const _default: React.MemoExoticComponent<({ label, type, value, onChange, error, placeholder, className, inputBoxClassName, isRequired, }: InputProps) => React.JSX.Element>;
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ label, type, value, onChange, error, placeholder, className, inputBoxClassName, isRequired, isInformation, informationMessage, }: InputProps) => React.JSX.Element>;
|
|
4
4
|
export default _default;
|
|
@@ -39,11 +39,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
39
|
var react_1 = __importStar(require("react"));
|
|
40
40
|
var react_2 = require("@chakra-ui/react");
|
|
41
41
|
var lucide_react_1 = require("lucide-react");
|
|
42
|
-
var
|
|
42
|
+
var FormLabel_1 = require("../../Common/FormLabel");
|
|
43
|
+
var fieldStyles_1 = require("../../Common/fieldStyles");
|
|
43
44
|
var ErrorComponent_1 = __importDefault(require("../../Common/ErrorComponent"));
|
|
44
45
|
var Input = function (_a) {
|
|
45
46
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
46
|
-
var label = _a.label, type = _a.type, value = _a.value, onChange = _a.onChange, error = _a.error, placeholder = _a.placeholder, className = _a.className, inputBoxClassName = _a.inputBoxClassName, isRequired = _a.isRequired;
|
|
47
|
+
var label = _a.label, type = _a.type, value = _a.value, onChange = _a.onChange, error = _a.error, placeholder = _a.placeholder, className = _a.className, inputBoxClassName = _a.inputBoxClassName, isRequired = _a.isRequired, isInformation = _a.isInformation, informationMessage = _a.informationMessage;
|
|
47
48
|
var theme = (0, react_2.useTheme)();
|
|
48
49
|
var colors = theme.colors;
|
|
49
50
|
var _s = (0, react_1.useState)(false), showPassword = _s[0], setShowPassword = _s[1];
|
|
@@ -57,9 +58,9 @@ var Input = function (_a) {
|
|
|
57
58
|
var shadowPrimary = (_f = colors.boxShadow) === null || _f === void 0 ? void 0 : _f.primary;
|
|
58
59
|
var shadowError = (_g = colors.boxShadow) === null || _g === void 0 ? void 0 : _g.error;
|
|
59
60
|
return (react_1.default.createElement(react_2.Box, { className: inputBoxClassName, mb: 4 },
|
|
60
|
-
react_1.default.createElement(
|
|
61
|
+
react_1.default.createElement(FormLabel_1.TextLabel, { label: label, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage }),
|
|
61
62
|
react_1.default.createElement(react_2.Box, { position: "relative", w: "100%", overflow: "hidden" },
|
|
62
|
-
react_1.default.createElement(react_2.Input, { type: inputType, value: value, onChange: function (e) { return onChange(e.target.value); }, placeholder: placeholder, className: className, px: 4, py: 2, borderRadius:
|
|
63
|
+
react_1.default.createElement(react_2.Input, { type: inputType, value: value, onChange: function (e) { return onChange(e.target.value); }, placeholder: placeholder, className: className, px: 4, py: 2, borderRadius: fieldStyles_1.FIELD_RADIUS, borderWidth: "1px", borderColor: borderColor, color: (_h = colors.secondary) === null || _h === void 0 ? void 0 : _h[500], pr: isPassword ? 10 : 4, _hover: {
|
|
63
64
|
borderColor: error
|
|
64
65
|
? (_k = (_j = colors.semantic) === null || _j === void 0 ? void 0 : _j.error) === null || _k === void 0 ? void 0 : _k[600]
|
|
65
66
|
: value
|
|
@@ -79,8 +79,8 @@ var KanbanRow = react_1.default.memo(function (_a) {
|
|
|
79
79
|
return react_1.default.createElement("div", { style: style });
|
|
80
80
|
}
|
|
81
81
|
return (react_1.default.createElement("div", { style: style },
|
|
82
|
-
react_1.default.createElement(
|
|
83
|
-
react_1.default.createElement(
|
|
82
|
+
react_1.default.createElement("div", { style: { paddingBottom: KANBAN_CARD_GAP } },
|
|
83
|
+
react_1.default.createElement(MeasuredItem_1.default, { index: index, setSize: function (i, h) { return setSize(i, h, colId); } },
|
|
84
84
|
react_1.default.createElement(dnd_1.Draggable, { draggableId: account.id.toString(), index: index, key: account.id, isDragDisabled: !canDrag }, function (provided) {
|
|
85
85
|
var _a;
|
|
86
86
|
return (react_1.default.createElement("div", __assign({ ref: provided.innerRef }, provided.draggableProps, provided.dragHandleProps, { style: provided.draggableProps.style }), (account === null || account === void 0 ? void 0 : account.customNode) ? (_a = account === null || account === void 0 ? void 0 : account.customNode) === null || _a === void 0 ? void 0 : _a.call(account) : (react_1.default.createElement(AccountCard_1.default, { key: account.id, account: account, index: index, onDelete: onDelete, onOpen: onOpen, isExpanded: expanded[account.id], onToggleExpand: function () {
|
|
@@ -248,8 +248,8 @@ var KanbanBoard = function (_a) {
|
|
|
248
248
|
return changed ? pruned : prev;
|
|
249
249
|
});
|
|
250
250
|
}, [columns]);
|
|
251
|
-
// AccountCard
|
|
252
|
-
var DEFAULT_ITEM_HEIGHT = 80
|
|
251
|
+
// AccountCard's minHeight floor — kept tight so unmeasured rows don't reserve excess space; KANBAN_CARD_GAP is added below.
|
|
252
|
+
var DEFAULT_ITEM_HEIGHT = 80;
|
|
253
253
|
// update height for an item
|
|
254
254
|
var setSize = (0, react_1.useCallback)(function (index, size, colId) {
|
|
255
255
|
var key = "".concat(colId, "-").concat(index);
|
|
@@ -265,7 +265,7 @@ var KanbanBoard = function (_a) {
|
|
|
265
265
|
}, []);
|
|
266
266
|
var getItemSize = (0, react_1.useCallback)(function (index, _items, colId) {
|
|
267
267
|
var key = "".concat(colId, "-").concat(index);
|
|
268
|
-
return sizes[key] || DEFAULT_ITEM_HEIGHT;
|
|
268
|
+
return (sizes[key] || DEFAULT_ITEM_HEIGHT) + KANBAN_CARD_GAP;
|
|
269
269
|
}, [sizes]);
|
|
270
270
|
// Calculate container height
|
|
271
271
|
(0, react_1.useEffect)(function () {
|
|
@@ -38,19 +38,26 @@ var MeasuredItem = function (_a) {
|
|
|
38
38
|
var index = _a.index, setSize = _a.setSize, children = _a.children;
|
|
39
39
|
var ref = (0, react_1.useRef)(null);
|
|
40
40
|
var prevHeight = (0, react_1.useRef)(null);
|
|
41
|
+
// Stable ref to the latest setSize so we don't tear down the ResizeObserver on every render.
|
|
42
|
+
var setSizeRef = (0, react_1.useRef)(setSize);
|
|
43
|
+
setSizeRef.current = setSize;
|
|
44
|
+
var indexRef = (0, react_1.useRef)(index);
|
|
45
|
+
indexRef.current = index;
|
|
41
46
|
var measure = function () {
|
|
42
47
|
if (ref.current) {
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
// offsetHeight is the integer border-box layout height — more reliable than getBoundingClientRect for our purposes.
|
|
49
|
+
var height = ref.current.offsetHeight;
|
|
50
|
+
if (height > 0 && prevHeight.current !== height) {
|
|
45
51
|
prevHeight.current = height;
|
|
46
|
-
|
|
52
|
+
setSizeRef.current(indexRef.current, height);
|
|
47
53
|
}
|
|
48
54
|
}
|
|
49
55
|
};
|
|
50
56
|
(0, react_1.useLayoutEffect)(function () {
|
|
51
|
-
var element = ref.current;
|
|
52
|
-
// Initial measure
|
|
57
|
+
var element = ref.current;
|
|
53
58
|
measure();
|
|
59
|
+
// A second measure after paint catches any layout that finishes after the synchronous tick (font loads, async CSS, etc).
|
|
60
|
+
var raf = requestAnimationFrame(measure);
|
|
54
61
|
var ro;
|
|
55
62
|
if (typeof ResizeObserver !== "undefined" && element) {
|
|
56
63
|
ro = new ResizeObserver(function () {
|
|
@@ -59,18 +66,24 @@ var MeasuredItem = function (_a) {
|
|
|
59
66
|
ro.observe(element);
|
|
60
67
|
}
|
|
61
68
|
else {
|
|
62
|
-
// Fallback for browsers without ResizeObserver
|
|
63
69
|
window.addEventListener("resize", measure);
|
|
64
70
|
}
|
|
65
71
|
return function () {
|
|
66
|
-
|
|
72
|
+
cancelAnimationFrame(raf);
|
|
67
73
|
if (ro && element)
|
|
68
74
|
ro.unobserve(element);
|
|
69
75
|
if (!ro)
|
|
70
76
|
window.removeEventListener("resize", measure);
|
|
71
77
|
};
|
|
78
|
+
// Intentionally empty deps — setSize/index are read through refs so the observer is set up exactly once per mount.
|
|
72
79
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
73
|
-
}, [
|
|
80
|
+
}, []);
|
|
81
|
+
// If index changes for the same DOM node (item shuffled), re-report the cached size under the new index.
|
|
82
|
+
(0, react_1.useEffect)(function () {
|
|
83
|
+
if (prevHeight.current != null) {
|
|
84
|
+
setSizeRef.current(indexRef.current, prevHeight.current);
|
|
85
|
+
}
|
|
86
|
+
}, [index]);
|
|
74
87
|
return react_1.default.createElement("div", { ref: ref }, children);
|
|
75
88
|
};
|
|
76
89
|
exports.default = MeasuredItem;
|