@umodeapporg/ui 0.1.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.
- package/dist/assets/images/common-pngs/sparkles.png.js +5 -0
- package/dist/assets/images/common-pngs/sparkles.png.js.map +1 -0
- package/dist/assets/umode-ui.css +182 -0
- package/dist/components/DateTime/DatePicker.d.ts +19 -0
- package/dist/components/DateTime/DatePicker.js +121 -0
- package/dist/components/DateTime/DatePicker.js.map +1 -0
- package/dist/components/DateTime/DateRangePicker.d.ts +19 -0
- package/dist/components/DateTime/DateRangePicker.js +205 -0
- package/dist/components/DateTime/DateRangePicker.js.map +1 -0
- package/dist/components/Form/ControlledButton.d.ts +13 -0
- package/dist/components/Form/ControlledButton.js +68 -0
- package/dist/components/Form/ControlledButton.js.map +1 -0
- package/dist/components/Form/ControlledCheckbox.d.ts +12 -0
- package/dist/components/Form/ControlledCheckbox.js +101 -0
- package/dist/components/Form/ControlledCheckbox.js.map +1 -0
- package/dist/components/Form/ControlledDialog.d.ts +44 -0
- package/dist/components/Form/ControlledDialog.js +185 -0
- package/dist/components/Form/ControlledDialog.js.map +1 -0
- package/dist/components/Form/ControlledDialogPrimitives.d.ts +30 -0
- package/dist/components/Form/ControlledDialogPrimitives.js +121 -0
- package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledDrawer.d.ts +37 -0
- package/dist/components/Form/ControlledDrawer.js +237 -0
- package/dist/components/Form/ControlledDrawer.js.map +1 -0
- package/dist/components/Form/ControlledForm/InputField.d.ts +11 -0
- package/dist/components/Form/ControlledForm/InputField.js +75 -0
- package/dist/components/Form/ControlledForm/InputField.js.map +1 -0
- package/dist/components/Form/ControlledForm/index.d.ts +27 -0
- package/dist/components/Form/ControlledForm/index.js +113 -0
- package/dist/components/Form/ControlledForm/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/Img.d.ts +11 -0
- package/dist/components/Form/ControlledImage/Img.js +29 -0
- package/dist/components/Form/ControlledImage/Img.js.map +1 -0
- package/dist/components/Form/ControlledImage/index.d.ts +30 -0
- package/dist/components/Form/ControlledImage/index.js +107 -0
- package/dist/components/Form/ControlledImage/index.js.map +1 -0
- package/dist/components/Form/ControlledImage/useImage.d.ts +9 -0
- package/dist/components/Form/ControlledImage/useImage.js +110 -0
- package/dist/components/Form/ControlledImage/useImage.js.map +1 -0
- package/dist/components/Form/ControlledInput.d.ts +23 -0
- package/dist/components/Form/ControlledInput.js +52 -0
- package/dist/components/Form/ControlledInput.js.map +1 -0
- package/dist/components/Form/ControlledRadio.d.ts +15 -0
- package/dist/components/Form/ControlledRadio.js +91 -0
- package/dist/components/Form/ControlledRadio.js.map +1 -0
- package/dist/components/Form/ControlledSelect.d.ts +44 -0
- package/dist/components/Form/ControlledSelect.js +545 -0
- package/dist/components/Form/ControlledSelect.js.map +1 -0
- package/dist/components/Form/ControlledSwitch.d.ts +14 -0
- package/dist/components/Form/ControlledSwitch.js +88 -0
- package/dist/components/Form/ControlledSwitch.js.map +1 -0
- package/dist/components/Form/ControlledTabs.d.ts +70 -0
- package/dist/components/Form/ControlledTabs.js +470 -0
- package/dist/components/Form/ControlledTabs.js.map +1 -0
- package/dist/components/Form/ControlledTabsPrimitives.d.ts +43 -0
- package/dist/components/Form/ControlledTabsPrimitives.js +47 -0
- package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -0
- package/dist/components/Form/ControlledTextarea.d.ts +22 -0
- package/dist/components/Form/ControlledTextarea.js +46 -0
- package/dist/components/Form/ControlledTextarea.js.map +1 -0
- package/dist/components/Form/ControlledTimeline.d.ts +26 -0
- package/dist/components/Form/ControlledTimeline.js +57 -0
- package/dist/components/Form/ControlledTimeline.js.map +1 -0
- package/dist/components/Form/ControlledViewToggle.d.ts +74 -0
- package/dist/components/Form/ControlledViewToggle.js +157 -0
- package/dist/components/Form/ControlledViewToggle.js.map +1 -0
- package/dist/components/Form/ControlledVoiceTextarea.d.ts +11 -0
- package/dist/components/Form/ControlledVoiceTextarea.js +88 -0
- package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -0
- package/dist/components/Form/CurrencyInput.d.ts +8 -0
- package/dist/components/Form/CurrencyInput.js +17 -0
- package/dist/components/Form/CurrencyInput.js.map +1 -0
- package/dist/components/Form/RichTextEditor.d.ts +80 -0
- package/dist/components/Form/RichTextEditor.js +546 -0
- package/dist/components/Form/RichTextEditor.js.map +1 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.d.ts +8 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js +71 -0
- package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -0
- package/dist/components/Form/attachments/FileDropzone.d.ts +12 -0
- package/dist/components/Form/attachments/FileDropzone.js +84 -0
- package/dist/components/Form/attachments/FileDropzone.js.map +1 -0
- package/dist/components/Navigation/ControlledBreadcrumb.d.ts +13 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js +23 -0
- package/dist/components/Navigation/ControlledBreadcrumb.js.map +1 -0
- package/dist/components/Navigation/ErrorPage.d.ts +2 -0
- package/dist/components/Navigation/ErrorPage.js +27 -0
- package/dist/components/Navigation/ErrorPage.js.map +1 -0
- package/dist/components/Navigation/PageTitle.d.ts +41 -0
- package/dist/components/Navigation/PageTitle.js +147 -0
- package/dist/components/Navigation/PageTitle.js.map +1 -0
- package/dist/components/Navigation/PageTitleNavigationContext.d.ts +21 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js +17 -0
- package/dist/components/Navigation/PageTitleNavigationContext.js.map +1 -0
- package/dist/components/Search/UnifiedSearchBar.d.ts +31 -0
- package/dist/components/Search/UnifiedSearchBar.js +167 -0
- package/dist/components/Search/UnifiedSearchBar.js.map +1 -0
- package/dist/components/Search/filters/ActiveFiltersBar.d.ts +15 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js +48 -0
- package/dist/components/Search/filters/ActiveFiltersBar.js.map +1 -0
- package/dist/components/Search/filters/FilterChipsRow.d.ts +17 -0
- package/dist/components/Search/filters/FilterChipsRow.js +113 -0
- package/dist/components/Search/filters/FilterChipsRow.js.map +1 -0
- package/dist/components/Search/filters/FilterFieldControl.d.ts +19 -0
- package/dist/components/Search/filters/FilterFieldControl.js +387 -0
- package/dist/components/Search/filters/FilterFieldControl.js.map +1 -0
- package/dist/components/Search/filters/FiltersButton.d.ts +24 -0
- package/dist/components/Search/filters/FiltersButton.js +52 -0
- package/dist/components/Search/filters/FiltersButton.js.map +1 -0
- package/dist/components/Search/filters/FiltersForm.d.ts +18 -0
- package/dist/components/Search/filters/FiltersForm.js +112 -0
- package/dist/components/Search/filters/FiltersForm.js.map +1 -0
- package/dist/components/Search/filters/FiltersPanel.d.ts +32 -0
- package/dist/components/Search/filters/FiltersPanel.js +264 -0
- package/dist/components/Search/filters/FiltersPanel.js.map +1 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.d.ts +20 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js +26 -0
- package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -0
- package/dist/components/Search/filters/filterTypes.d.ts +162 -0
- package/dist/components/Search/filters/filterTypes.js +2 -0
- package/dist/components/Search/filters/filterTypes.js.map +1 -0
- package/dist/components/Search/filters/filterValues.d.ts +22 -0
- package/dist/components/Search/filters/filterValues.js +91 -0
- package/dist/components/Search/filters/filterValues.js.map +1 -0
- package/dist/components/Search/filters/filtersLayout.d.ts +4 -0
- package/dist/components/Search/filters/filtersLayout.js +18 -0
- package/dist/components/Search/filters/filtersLayout.js.map +1 -0
- package/dist/components/Search/filters/index.d.ts +11 -0
- package/dist/components/Search/filters/index.js +32 -0
- package/dist/components/Search/filters/index.js.map +1 -0
- package/dist/components/Search/filters/useFilters.d.ts +33 -0
- package/dist/components/Search/filters/useFilters.js +162 -0
- package/dist/components/Search/filters/useFilters.js.map +1 -0
- package/dist/components/Search/index.d.ts +2 -0
- package/dist/components/Search/index.js +34 -0
- package/dist/components/Search/index.js.map +1 -0
- package/dist/components/UI/AccordionIcon.d.ts +10 -0
- package/dist/components/UI/AccordionIcon.js +22 -0
- package/dist/components/UI/AccordionIcon.js.map +1 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.d.ts +2 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js +22 -0
- package/dist/components/UI/AlertInfo/dismissedAlertsStore.js.map +1 -0
- package/dist/components/UI/AlertInfo/index.d.ts +30 -0
- package/dist/components/UI/AlertInfo/index.js +78 -0
- package/dist/components/UI/AlertInfo/index.js.map +1 -0
- package/dist/components/UI/BaseDataCard.d.ts +25 -0
- package/dist/components/UI/BaseDataCard.js +163 -0
- package/dist/components/UI/BaseDataCard.js.map +1 -0
- package/dist/components/UI/BulkActionBar.d.ts +35 -0
- package/dist/components/UI/BulkActionBar.js +125 -0
- package/dist/components/UI/BulkActionBar.js.map +1 -0
- package/dist/components/UI/Chips/OutlinedChip.d.ts +42 -0
- package/dist/components/UI/Chips/OutlinedChip.js +183 -0
- package/dist/components/UI/Chips/OutlinedChip.js.map +1 -0
- package/dist/components/UI/Chips/StatusChip.d.ts +8 -0
- package/dist/components/UI/Chips/StatusChip.js +33 -0
- package/dist/components/UI/Chips/StatusChip.js.map +1 -0
- package/dist/components/UI/Chips/chipTones.d.ts +6 -0
- package/dist/components/UI/Chips/chipTones.js +53 -0
- package/dist/components/UI/Chips/chipTones.js.map +1 -0
- package/dist/components/UI/ColorSwatch.d.ts +30 -0
- package/dist/components/UI/ColorSwatch.js +53 -0
- package/dist/components/UI/ColorSwatch.js.map +1 -0
- package/dist/components/UI/Colors.d.ts +10 -0
- package/dist/components/UI/Colors.js +41 -0
- package/dist/components/UI/Colors.js.map +1 -0
- package/dist/components/UI/ControlledAccordion.d.ts +38 -0
- package/dist/components/UI/ControlledAccordion.js +89 -0
- package/dist/components/UI/ControlledAccordion.js.map +1 -0
- package/dist/components/UI/ControlledCollapse.d.ts +13 -0
- package/dist/components/UI/ControlledCollapse.js +32 -0
- package/dist/components/UI/ControlledCollapse.js.map +1 -0
- package/dist/components/UI/ControlledMenu.d.ts +73 -0
- package/dist/components/UI/ControlledMenu.js +231 -0
- package/dist/components/UI/ControlledMenu.js.map +1 -0
- package/dist/components/UI/ControlledPopover.d.ts +44 -0
- package/dist/components/UI/ControlledPopover.js +144 -0
- package/dist/components/UI/ControlledPopover.js.map +1 -0
- package/dist/components/UI/ControlledProgress.d.ts +13 -0
- package/dist/components/UI/ControlledProgress.js +46 -0
- package/dist/components/UI/ControlledProgress.js.map +1 -0
- package/dist/components/UI/ControlledSlider.d.ts +13 -0
- package/dist/components/UI/ControlledSlider.js +29 -0
- package/dist/components/UI/ControlledSlider.js.map +1 -0
- package/dist/components/UI/ControlledTooltip.d.ts +21 -0
- package/dist/components/UI/ControlledTooltip.js +140 -0
- package/dist/components/UI/ControlledTooltip.js.map +1 -0
- package/dist/components/UI/CustomBadge.d.ts +15 -0
- package/dist/components/UI/CustomBadge.js +34 -0
- package/dist/components/UI/CustomBadge.js.map +1 -0
- package/dist/components/UI/CustomCard.d.ts +13 -0
- package/dist/components/UI/CustomCard.js +36 -0
- package/dist/components/UI/CustomCard.js.map +1 -0
- package/dist/components/UI/CustomChart.d.ts +21 -0
- package/dist/components/UI/CustomChart.js +108 -0
- package/dist/components/UI/CustomChart.js.map +1 -0
- package/dist/components/UI/DataTable/DataTable.d.ts +100 -0
- package/dist/components/UI/DataTable/DataTable.js +546 -0
- package/dist/components/UI/DataTable/DataTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js +39 -0
- package/dist/components/UI/DataTable/DataTableAutoCard.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBody.d.ts +29 -0
- package/dist/components/UI/DataTable/DataTableBody.js +243 -0
- package/dist/components/UI/DataTable/DataTableBody.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js +77 -0
- package/dist/components/UI/DataTable/DataTableBodyCell.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.d.ts +11 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js +24 -0
- package/dist/components/UI/DataTable/DataTableBulkEditButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.d.ts +25 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +251 -0
- package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.d.ts +34 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js +168 -0
- package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js +109 -0
- package/dist/components/UI/DataTable/DataTableDetailModal.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.d.ts +21 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js +51 -0
- package/dist/components/UI/DataTable/DataTableDetailPanel.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.d.ts +35 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js +129 -0
- package/dist/components/UI/DataTable/DataTableDetailTable.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.d.ts +12 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js +29 -0
- package/dist/components/UI/DataTable/DataTableEditModeButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableFilters.d.ts +20 -0
- package/dist/components/UI/DataTable/DataTableFilters.js +64 -0
- package/dist/components/UI/DataTable/DataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableHead.d.ts +27 -0
- package/dist/components/UI/DataTable/DataTableHead.js +198 -0
- package/dist/components/UI/DataTable/DataTableHead.js.map +1 -0
- package/dist/components/UI/DataTable/DataTablePagination.d.ts +15 -0
- package/dist/components/UI/DataTable/DataTablePagination.js +145 -0
- package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.d.ts +13 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js +21 -0
- package/dist/components/UI/DataTable/DataTableSaveButton.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.d.ts +8 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js +35 -0
- package/dist/components/UI/DataTable/DataTableSegmentedTabs.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableStates.d.ts +17 -0
- package/dist/components/UI/DataTable/DataTableStates.js +59 -0
- package/dist/components/UI/DataTable/DataTableStates.js.map +1 -0
- package/dist/components/UI/DataTable/DataTableToolbar.d.ts +28 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js +109 -0
- package/dist/components/UI/DataTable/DataTableToolbar.js.map +1 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.d.ts +16 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js +53 -0
- package/dist/components/UI/DataTable/applyDataTableFilters.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js +55 -0
- package/dist/components/UI/DataTable/cells/DataTableActionsCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.d.ts +15 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js +63 -0
- package/dist/components/UI/DataTable/cells/DataTableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCodeCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.d.ts +7 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableColorCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableCountCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.d.ts +5 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js +12 -0
- package/dist/components/UI/DataTable/cells/DataTableDateCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.d.ts +23 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +242 -0
- package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.d.ts +10 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableOriginCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js +24 -0
- package/dist/components/UI/DataTable/cells/DataTableStatusCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js +25 -0
- package/dist/components/UI/DataTable/cells/DataTableTagCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js +7 -0
- package/dist/components/UI/DataTable/cells/DataTableTextCell.js.map +1 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.d.ts +6 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js +10 -0
- package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableClasses.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableClasses.js +29 -0
- package/dist/components/UI/DataTable/dataTableClasses.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.d.ts +15 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js +153 -0
- package/dist/components/UI/DataTable/dataTableColumnWidths.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.d.ts +12 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js +68 -0
- package/dist/components/UI/DataTable/dataTableColumnsStore.js.map +1 -0
- package/dist/components/UI/DataTable/dataTableMotion.d.ts +6 -0
- package/dist/components/UI/DataTable/dataTableMotion.js +15 -0
- package/dist/components/UI/DataTable/dataTableMotion.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.d.ts +8 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js +70 -0
- package/dist/components/UI/DataTable/grid/GridFillHandle.js.map +1 -0
- package/dist/components/UI/DataTable/grid/GridProvider.d.ts +31 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js +85 -0
- package/dist/components/UI/DataTable/grid/GridProvider.js.map +1 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.d.ts +19 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js +73 -0
- package/dist/components/UI/DataTable/grid/fill/fillStrategies.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridStore.d.ts +69 -0
- package/dist/components/UI/DataTable/grid/gridStore.js +219 -0
- package/dist/components/UI/DataTable/grid/gridStore.js.map +1 -0
- package/dist/components/UI/DataTable/grid/gridTypes.d.ts +47 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js +27 -0
- package/dist/components/UI/DataTable/grid/gridTypes.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.d.ts +18 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js +74 -0
- package/dist/components/UI/DataTable/grid/useGridFillApply.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.d.ts +27 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js +41 -0
- package/dist/components/UI/DataTable/grid/useGridInstance.js.map +1 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.d.ts +17 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js +114 -0
- package/dist/components/UI/DataTable/grid/useGridKeyboard.js.map +1 -0
- package/dist/components/UI/DataTable/index.d.ts +19 -0
- package/dist/components/UI/DataTable/index.js +34 -0
- package/dist/components/UI/DataTable/index.js.map +1 -0
- package/dist/components/UI/DataTable/types.d.ts +513 -0
- package/dist/components/UI/DataTable/types.js +13 -0
- package/dist/components/UI/DataTable/types.js.map +1 -0
- package/dist/components/UI/DataTable/useCellEditingState.d.ts +20 -0
- package/dist/components/UI/DataTable/useCellEditingState.js +33 -0
- package/dist/components/UI/DataTable/useCellEditingState.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnOrder.d.ts +25 -0
- package/dist/components/UI/DataTable/useColumnOrder.js +94 -0
- package/dist/components/UI/DataTable/useColumnOrder.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnSizing.d.ts +9 -0
- package/dist/components/UI/DataTable/useColumnSizing.js +21 -0
- package/dist/components/UI/DataTable/useColumnSizing.js.map +1 -0
- package/dist/components/UI/DataTable/useColumnVisibility.d.ts +19 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js +47 -0
- package/dist/components/UI/DataTable/useColumnVisibility.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.d.ts +69 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js +220 -0
- package/dist/components/UI/DataTable/useDataTableCommitQueue.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.d.ts +36 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js +29 -0
- package/dist/components/UI/DataTable/useDataTableEditBuffer.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableInstance.d.ts +65 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js +306 -0
- package/dist/components/UI/DataTable/useDataTableInstance.js.map +1 -0
- package/dist/components/UI/DataTable/useDataTableSource.d.ts +85 -0
- package/dist/components/UI/DataTable/useDataTableSource.js +199 -0
- package/dist/components/UI/DataTable/useDataTableSource.js.map +1 -0
- package/dist/components/UI/DataTable/useFlipRows.d.ts +22 -0
- package/dist/components/UI/DataTable/useFlipRows.js +90 -0
- package/dist/components/UI/DataTable/useFlipRows.js.map +1 -0
- package/dist/components/UI/ErrorBoundary.d.ts +20 -0
- package/dist/components/UI/ErrorBoundary.js +36 -0
- package/dist/components/UI/ErrorBoundary.js.map +1 -0
- package/dist/components/UI/GeneratedByAI.d.ts +2 -0
- package/dist/components/UI/GeneratedByAI.js +12 -0
- package/dist/components/UI/GeneratedByAI.js.map +1 -0
- package/dist/components/UI/HorizontalScrollArea.d.ts +22 -0
- package/dist/components/UI/HorizontalScrollArea.js +73 -0
- package/dist/components/UI/HorizontalScrollArea.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.d.ts +15 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js +144 -0
- package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js.map +1 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.d.ts +29 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js +84 -0
- package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.d.ts +12 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js +267 -0
- package/dist/components/UI/ImageAnnotator/AnnotationEditor.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js +58 -0
- package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.d.ts +28 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js +56 -0
- package/dist/components/UI/ImageAnnotator/annotationStyle.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.d.ts +17 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js +329 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js +125 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.d.ts +19 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js +216 -0
- package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js +77 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.d.ts +11 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +69 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js +58 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.d.ts +13 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js +183 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js +78 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js +46 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.d.ts +10 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js +80 -0
- package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.d.ts +21 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js +45 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js +165 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.d.ts +15 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js +23 -0
- package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.d.ts +8 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js +10 -0
- package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.d.ts +9 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js +56 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.d.ts +27 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js +149 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.d.ts +14 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js +79 -0
- package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.d.ts +5 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js +23 -0
- package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.d.ts +2 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js +27 -0
- package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js.map +1 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.d.ts +89 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js +13 -0
- package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js.map +1 -0
- package/dist/components/UI/ImagePlaceholder.d.ts +24 -0
- package/dist/components/UI/ImagePlaceholder.js +26 -0
- package/dist/components/UI/ImagePlaceholder.js.map +1 -0
- package/dist/components/UI/ImageZoomOverlay.d.ts +7 -0
- package/dist/components/UI/ImageZoomOverlay.js +49 -0
- package/dist/components/UI/ImageZoomOverlay.js.map +1 -0
- package/dist/components/UI/InformationCard.d.ts +26 -0
- package/dist/components/UI/InformationCard.js +89 -0
- package/dist/components/UI/InformationCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanBoard.d.ts +26 -0
- package/dist/components/UI/Kanban/KanbanBoard.js +89 -0
- package/dist/components/UI/Kanban/KanbanBoard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanCard.d.ts +22 -0
- package/dist/components/UI/Kanban/KanbanCard.js +47 -0
- package/dist/components/UI/Kanban/KanbanCard.js.map +1 -0
- package/dist/components/UI/Kanban/KanbanLane.d.ts +37 -0
- package/dist/components/UI/Kanban/KanbanLane.js +77 -0
- package/dist/components/UI/Kanban/KanbanLane.js.map +1 -0
- package/dist/components/UI/Kanban/index.d.ts +4 -0
- package/dist/components/UI/Kanban/index.js +11 -0
- package/dist/components/UI/Kanban/index.js.map +1 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.d.ts +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js +13 -0
- package/dist/components/UI/Kanban/kanbanBoardContext.js.map +1 -0
- package/dist/components/UI/LazyMarkdown.d.ts +5 -0
- package/dist/components/UI/LazyMarkdown.js +8 -0
- package/dist/components/UI/LazyMarkdown.js.map +1 -0
- package/dist/components/UI/LoadingPage.d.ts +2 -0
- package/dist/components/UI/LoadingPage.js +13 -0
- package/dist/components/UI/LoadingPage.js.map +1 -0
- package/dist/components/UI/LoadingSpinner.d.ts +14 -0
- package/dist/components/UI/LoadingSpinner.js +32 -0
- package/dist/components/UI/LoadingSpinner.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/consts.d.ts +2 -0
- package/dist/components/UI/MaterialSymbol/consts.js +3472 -0
- package/dist/components/UI/MaterialSymbol/consts.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/index.d.ts +18 -0
- package/dist/components/UI/MaterialSymbol/index.js +46 -0
- package/dist/components/UI/MaterialSymbol/index.js.map +1 -0
- package/dist/components/UI/MaterialSymbol/types.d.ts +37 -0
- package/dist/components/UI/MaterialSymbol/types.js +2 -0
- package/dist/components/UI/MaterialSymbol/types.js.map +1 -0
- package/dist/components/UI/NoDataFound/index.d.ts +31 -0
- package/dist/components/UI/NoDataFound/index.js +215 -0
- package/dist/components/UI/NoDataFound/index.js.map +1 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.d.ts +31 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js +99 -0
- package/dist/components/UI/NoDataFound/noDataFoundPresets.js.map +1 -0
- package/dist/components/UI/ReferenceCard.d.ts +16 -0
- package/dist/components/UI/ReferenceCard.js +59 -0
- package/dist/components/UI/ReferenceCard.js.map +1 -0
- package/dist/components/UI/RichTextContent.d.ts +14 -0
- package/dist/components/UI/RichTextContent.js +28 -0
- package/dist/components/UI/RichTextContent.js.map +1 -0
- package/dist/components/UI/SkeletonLoading.d.ts +9 -0
- package/dist/components/UI/SkeletonLoading.js +20 -0
- package/dist/components/UI/SkeletonLoading.js.map +1 -0
- package/dist/components/UI/ThreeDots.d.ts +11 -0
- package/dist/components/UI/ThreeDots.js +18 -0
- package/dist/components/UI/ThreeDots.js.map +1 -0
- package/dist/components/UI/Toast.d.ts +16 -0
- package/dist/components/UI/Toast.js +81 -0
- package/dist/components/UI/Toast.js.map +1 -0
- package/dist/components/UI/ToastHost.d.ts +2 -0
- package/dist/components/UI/ToastHost.js +25 -0
- package/dist/components/UI/ToastHost.js.map +1 -0
- package/dist/components/UI/TypingEffect.d.ts +10 -0
- package/dist/components/UI/TypingEffect.js +31 -0
- package/dist/components/UI/TypingEffect.js.map +1 -0
- package/dist/components/UI/UmodeLogo.d.ts +10 -0
- package/dist/components/UI/UmodeLogo.js +128 -0
- package/dist/components/UI/UmodeLogo.js.map +1 -0
- package/dist/components/UI/UsersAvatar.d.ts +7 -0
- package/dist/components/UI/UsersAvatar.js +29 -0
- package/dist/components/UI/UsersAvatar.js.map +1 -0
- package/dist/components/UI/access/UiAccessContext.d.ts +21 -0
- package/dist/components/UI/access/UiAccessContext.js +14 -0
- package/dist/components/UI/access/UiAccessContext.js.map +1 -0
- package/dist/components/UI/cells/ArrayCell.d.ts +5 -0
- package/dist/components/UI/cells/ArrayCell.js +25 -0
- package/dist/components/UI/cells/ArrayCell.js.map +1 -0
- package/dist/components/UI/cells/BooleanCell.d.ts +5 -0
- package/dist/components/UI/cells/BooleanCell.js +22 -0
- package/dist/components/UI/cells/BooleanCell.js.map +1 -0
- package/dist/components/UI/cells/DetailsTableCell.d.ts +7 -0
- package/dist/components/UI/cells/DetailsTableCell.js +30 -0
- package/dist/components/UI/cells/DetailsTableCell.js.map +1 -0
- package/dist/components/UI/cells/ProductImageCell.d.ts +5 -0
- package/dist/components/UI/cells/ProductImageCell.js +21 -0
- package/dist/components/UI/cells/ProductImageCell.js.map +1 -0
- package/dist/components/UI/cells/UrlLinkCell.d.ts +6 -0
- package/dist/components/UI/cells/UrlLinkCell.js +19 -0
- package/dist/components/UI/cells/UrlLinkCell.js.map +1 -0
- package/dist/components/Upload/SimpleUploaderComponent.d.ts +9 -0
- package/dist/components/Upload/SimpleUploaderComponent.js +72 -0
- package/dist/components/Upload/SimpleUploaderComponent.js.map +1 -0
- package/dist/components/Upload/UploaderComponent.d.ts +29 -0
- package/dist/components/Upload/UploaderComponent.js +241 -0
- package/dist/components/Upload/UploaderComponent.js.map +1 -0
- package/dist/components/Upload/XlsExportButton.d.ts +13 -0
- package/dist/components/Upload/XlsExportButton.js +47 -0
- package/dist/components/Upload/XlsExportButton.js.map +1 -0
- package/dist/helpers/composeRefs.d.ts +7 -0
- package/dist/helpers/composeRefs.js +14 -0
- package/dist/helpers/composeRefs.js.map +1 -0
- package/dist/helpers/dateHelpers.d.ts +47 -0
- package/dist/helpers/dateHelpers.js +69 -0
- package/dist/helpers/dateHelpers.js.map +1 -0
- package/dist/helpers/fileAttachments.d.ts +3 -0
- package/dist/helpers/fileAttachments.js +17 -0
- package/dist/helpers/fileAttachments.js.map +1 -0
- package/dist/helpers/formatHelpers.d.ts +36 -0
- package/dist/helpers/formatHelpers.js +65 -0
- package/dist/helpers/formatHelpers.js.map +1 -0
- package/dist/helpers/imageCompression.d.ts +5 -0
- package/dist/helpers/imageCompression.js +49 -0
- package/dist/helpers/imageCompression.js.map +1 -0
- package/dist/helpers/imageFile.d.ts +16 -0
- package/dist/helpers/imageFile.js +59 -0
- package/dist/helpers/imageFile.js.map +1 -0
- package/dist/helpers/layeredSurfaces.d.ts +10 -0
- package/dist/helpers/layeredSurfaces.js +14 -0
- package/dist/helpers/layeredSurfaces.js.map +1 -0
- package/dist/helpers/mathHelpers.d.ts +14 -0
- package/dist/helpers/mathHelpers.js +13 -0
- package/dist/helpers/mathHelpers.js.map +1 -0
- package/dist/helpers/mergeClasses.d.ts +6 -0
- package/dist/helpers/mergeClasses.js +12 -0
- package/dist/helpers/mergeClasses.js.map +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.d.ts +1 -0
- package/dist/helpers/moduleLoadErrorHelpers.js +25 -0
- package/dist/helpers/moduleLoadErrorHelpers.js.map +1 -0
- package/dist/helpers/objectHelpers.d.ts +13 -0
- package/dist/helpers/objectHelpers.js +60 -0
- package/dist/helpers/objectHelpers.js.map +1 -0
- package/dist/helpers/richText.d.ts +37 -0
- package/dist/helpers/richText.js +171 -0
- package/dist/helpers/richText.js.map +1 -0
- package/dist/helpers/stringHelpers.d.ts +45 -0
- package/dist/helpers/stringHelpers.js +57 -0
- package/dist/helpers/stringHelpers.js.map +1 -0
- package/dist/helpers/themeTokens.d.ts +28 -0
- package/dist/helpers/themeTokens.js +33 -0
- package/dist/helpers/themeTokens.js.map +1 -0
- package/dist/helpers/uiErrorPresenter.d.ts +21 -0
- package/dist/helpers/uiErrorPresenter.js +10 -0
- package/dist/helpers/uiErrorPresenter.js.map +1 -0
- package/dist/helpers/uiLogger.d.ts +8 -0
- package/dist/helpers/uiLogger.js +16 -0
- package/dist/helpers/uiLogger.js.map +1 -0
- package/dist/helpers/uiPreferences.d.ts +13 -0
- package/dist/helpers/uiPreferences.js +35 -0
- package/dist/helpers/uiPreferences.js.map +1 -0
- package/dist/helpers/urlParamSync.d.ts +19 -0
- package/dist/helpers/urlParamSync.js +54 -0
- package/dist/helpers/urlParamSync.js.map +1 -0
- package/dist/helpers/utilityHelpers.d.ts +81 -0
- package/dist/helpers/utilityHelpers.js +133 -0
- package/dist/helpers/utilityHelpers.js.map +1 -0
- package/dist/helpers/validationHelpers.d.ts +36 -0
- package/dist/helpers/validationHelpers.js +44 -0
- package/dist/helpers/validationHelpers.js.map +1 -0
- package/dist/hooks/useAnchoredFloating.d.ts +22 -0
- package/dist/hooks/useAnchoredFloating.js +59 -0
- package/dist/hooks/useAnchoredFloating.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +16 -0
- package/dist/hooks/useBreakpoint.js +47 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +8 -0
- package/dist/hooks/useDebounce.js +36 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useFileAttachments.d.ts +43 -0
- package/dist/hooks/useFileAttachments.js +158 -0
- package/dist/hooks/useFileAttachments.js.map +1 -0
- package/dist/hooks/useHoverCapable.d.ts +6 -0
- package/dist/hooks/useHoverCapable.js +28 -0
- package/dist/hooks/useHoverCapable.js.map +1 -0
- package/dist/hooks/useInlineEditor.d.ts +5 -0
- package/dist/hooks/useInlineEditor.js +41 -0
- package/dist/hooks/useInlineEditor.js.map +1 -0
- package/dist/hooks/useMobile.d.ts +7 -0
- package/dist/hooks/useMobile.js +8 -0
- package/dist/hooks/useMobile.js.map +1 -0
- package/dist/hooks/useNotification.d.ts +38 -0
- package/dist/hooks/useNotification.js +39 -0
- package/dist/hooks/useNotification.js.map +1 -0
- package/dist/hooks/useResolvedTheme.d.ts +7 -0
- package/dist/hooks/useResolvedTheme.js +15 -0
- package/dist/hooks/useResolvedTheme.js.map +1 -0
- package/dist/hooks/useVoiceTranscription.d.ts +25 -0
- package/dist/hooks/useVoiceTranscription.js +106 -0
- package/dist/hooks/useVoiceTranscription.js.map +1 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IFileAttachment.d.ts +18 -0
- package/dist/interfaces/IFileAttachment.js +2 -0
- package/dist/interfaces/IFileAttachment.js.map +1 -0
- package/dist/interfaces/IFilterOption.d.ts +10 -0
- package/dist/interfaces/IFilterOption.js +2 -0
- package/dist/interfaces/IFilterOption.js.map +1 -0
- package/dist/locales/en/ui.json.d.ts +470 -0
- package/dist/locales/en/ui.json.js +99 -0
- package/dist/locales/en/ui.json.js.map +1 -0
- package/dist/locales/index.d.ts +938 -0
- package/dist/locales/index.js +7 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/pt/ui.json.d.ts +470 -0
- package/dist/locales/pt/ui.json.js +99 -0
- package/dist/locales/pt/ui.json.js.map +1 -0
- package/dist/motion/index.d.ts +2 -0
- package/dist/motion/index.js +17 -0
- package/dist/motion/index.js.map +1 -0
- package/dist/motion/motionPresets.d.ts +44 -0
- package/dist/motion/motionPresets.js +67 -0
- package/dist/motion/motionPresets.js.map +1 -0
- package/dist/motion/motionTokens.d.ts +40 -0
- package/dist/motion/motionTokens.js +29 -0
- package/dist/motion/motionTokens.js.map +1 -0
- package/package.json +174 -0
- package/src/assets/styles/theme.css +381 -0
- package/tailwind-plugins/glass.js +167 -0
- package/tailwind.preset.js +367 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useRef, useCallback } from "react";
|
|
2
|
+
import { useDataTableCommitQueue } from "./useDataTableCommitQueue.js";
|
|
3
|
+
const DEFAULT_AUTO_FLUSH_MS = 5e3;
|
|
4
|
+
function useDataTableEditBuffer({
|
|
5
|
+
rows,
|
|
6
|
+
onBatchUpdate,
|
|
7
|
+
autoFlushMs = DEFAULT_AUTO_FLUSH_MS
|
|
8
|
+
}) {
|
|
9
|
+
const onBatchUpdateRef = useRef(onBatchUpdate);
|
|
10
|
+
onBatchUpdateRef.current = onBatchUpdate;
|
|
11
|
+
const saveBatch = useCallback(async (items) => {
|
|
12
|
+
await onBatchUpdateRef.current(items.map((item) => ({ id: item.row.id, data: item.changes })));
|
|
13
|
+
}, []);
|
|
14
|
+
const queue = useDataTableCommitQueue({ rows, saveBatch, debounceMs: autoFlushMs });
|
|
15
|
+
return {
|
|
16
|
+
mergedRows: queue.mergedRows,
|
|
17
|
+
onCellChange: queue.onCellChange,
|
|
18
|
+
onFillCells: queue.onFillCells,
|
|
19
|
+
flush: queue.flush,
|
|
20
|
+
isDirty: queue.isDirty,
|
|
21
|
+
queueSize: queue.pendingCount,
|
|
22
|
+
loading: queue.isSaving,
|
|
23
|
+
statuses: queue.statuses
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
useDataTableEditBuffer
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=useDataTableEditBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableEditBuffer.js","sources":["../../../../src/components/UI/DataTable/useDataTableEditBuffer.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nimport type { IDataTableRow } from './types';\nimport { type IDataTableCommitItem, useDataTableCommitQueue } from './useDataTableCommitQueue';\n\nconst DEFAULT_AUTO_FLUSH_MS = 5000;\n\nexport interface IDataTableEditBufferItem<T> {\n id: string;\n data: Partial<T>;\n}\n\ninterface IUseDataTableEditBufferParams<T extends IDataTableRow> {\n rows: Array<T>;\n onBatchUpdate: (items: Array<IDataTableEditBufferItem<T>>) => Promise<void>;\n autoFlushMs?: number;\n}\n\ninterface IUseDataTableEditBufferResult<T extends IDataTableRow> {\n /** `rows` with pending edits applied, so editable `getValue` reflects typing. */\n mergedRows: Array<T>;\n /** Wire to `editing.onCellChange`: records the edit and enqueues the batch save. */\n onCellChange: (row: T, columnId: string, value: unknown) => void;\n /** Wire to `spreadsheet.fill.onFillCells`: a whole fill range in one update. */\n onFillCells: (changes: Array<{ row: T; columnId: string; value: unknown }>) => void;\n /** Manual save: flushes the pending queue to the host handler. */\n flush: () => Promise<void>;\n isDirty: boolean;\n queueSize: number;\n loading: boolean;\n statuses: ReadonlyMap<string, string>;\n}\n\n/**\n * Backwards-compatible façade over `useDataTableCommitQueue`, kept because five\n * report tables already speak this shape (`onBatchUpdate` receiving `{ id, data }`).\n * Everything underneath is the queue, so those tables inherit the dedupe, the\n * stale-response guard, the flush on unmount and the per-cell status for free.\n */\nexport function useDataTableEditBuffer<T extends IDataTableRow>({\n rows,\n onBatchUpdate,\n autoFlushMs = DEFAULT_AUTO_FLUSH_MS,\n}: IUseDataTableEditBufferParams<T>): IUseDataTableEditBufferResult<T> {\n const onBatchUpdateRef = useRef(onBatchUpdate);\n onBatchUpdateRef.current = onBatchUpdate;\n\n const saveBatch = useCallback(async (items: Array<IDataTableCommitItem<T>>) => {\n await onBatchUpdateRef.current(items.map((item) => ({ id: item.row.id, data: item.changes as Partial<T> })));\n }, []);\n\n const queue = useDataTableCommitQueue<T>({ rows, saveBatch, debounceMs: autoFlushMs });\n\n return {\n mergedRows: queue.mergedRows,\n onCellChange: queue.onCellChange,\n onFillCells: queue.onFillCells,\n flush: queue.flush,\n isDirty: queue.isDirty,\n queueSize: queue.pendingCount,\n loading: queue.isSaving,\n statuses: queue.statuses,\n };\n}\n"],"names":[],"mappings":";;AAKA,MAAM,wBAAwB;AAkCvB,SAAS,uBAAgD;AAAA,EAC9D;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAuE;AACrE,QAAM,mBAAmB,OAAO,aAAa;AAC7C,mBAAiB,UAAU;AAE3B,QAAM,YAAY,YAAY,OAAO,UAA0C;AAC7E,UAAM,iBAAiB,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,QAAA,EAAwB,CAAC;AAAA,EAC7G,GAAG,CAAA,CAAE;AAEL,QAAM,QAAQ,wBAA2B,EAAE,MAAM,WAAW,YAAY,aAAa;AAErF,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,IAClB,cAAc,MAAM;AAAA,IACpB,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM;AAAA,IACb,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,SAAS,MAAM;AAAA,IACf,UAAU,MAAM;AAAA,EAAA;AAEpB;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { ColumnSizingState, Updater, VisibilityState } from '@tanstack/react-table';
|
|
2
|
+
import { IDataTableColumnConfig, IDataTableConfig, IDataTableRow, IDataTableSortState } from './types';
|
|
3
|
+
export interface IDataTableClientPaginationState {
|
|
4
|
+
page: number;
|
|
5
|
+
pageSize: number;
|
|
6
|
+
}
|
|
7
|
+
export interface IDataTablePagination {
|
|
8
|
+
pageSize: number;
|
|
9
|
+
numberOfPages: number;
|
|
10
|
+
currentPage: number;
|
|
11
|
+
setCurrentPage: (page: number) => void;
|
|
12
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
13
|
+
/** Total de registros. Presente, a barra mostra o intervalo em vez do número da página. */
|
|
14
|
+
totalItems?: number;
|
|
15
|
+
}
|
|
16
|
+
interface IUseDataTableInstanceParams<T extends IDataTableRow, C extends IDataTableRow = IDataTableRow> {
|
|
17
|
+
config: IDataTableConfig<T, C>;
|
|
18
|
+
rows: Array<T>;
|
|
19
|
+
loading: boolean;
|
|
20
|
+
sort?: IDataTableSortState | null;
|
|
21
|
+
onSortChange?: (sort: IDataTableSortState | null) => void;
|
|
22
|
+
onSearch?: (value: string) => void;
|
|
23
|
+
initialSearch?: string;
|
|
24
|
+
onSearchTermChange?: (value: string) => void;
|
|
25
|
+
pagination?: IDataTablePagination;
|
|
26
|
+
/** Client mode: seeds the internal page/pageSize (1-based page), e.g. from the URL. */
|
|
27
|
+
initialClientPagination?: IDataTableClientPaginationState;
|
|
28
|
+
/** Client mode: reports every page/pageSize change so the host can persist it (URL, storage). */
|
|
29
|
+
onClientPaginationChange?: (pagination: IDataTableClientPaginationState) => void;
|
|
30
|
+
columnVisibility: VisibilityState;
|
|
31
|
+
onColumnVisibilityChange: (updater: Updater<VisibilityState>) => void;
|
|
32
|
+
columnOrder: Array<string>;
|
|
33
|
+
onColumnOrderChange: (updater: Updater<Array<string>>) => void;
|
|
34
|
+
columnSizing: ColumnSizingState;
|
|
35
|
+
onColumnSizingChange: (updater: Updater<ColumnSizingState>) => void;
|
|
36
|
+
onFilteredCountChange?: (count: number) => void;
|
|
37
|
+
}
|
|
38
|
+
export declare const useDataTableInstance: <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>({ config, rows, loading, sort, onSortChange, onSearch, initialSearch, onSearchTermChange, pagination, initialClientPagination, onClientPaginationChange, columnVisibility, onColumnVisibilityChange, columnOrder, onColumnOrderChange, columnSizing, onColumnSizingChange, onFilteredCountChange, }: IUseDataTableInstanceParams<T, C>) => {
|
|
39
|
+
table: import('@tanstack/table-core').Table<T>;
|
|
40
|
+
isClientMode: boolean;
|
|
41
|
+
columnContentWidths: Map<string, number>;
|
|
42
|
+
registerRow: (id: string) => (element: HTMLElement | null) => void;
|
|
43
|
+
beginRowsExit: (ids: Array<string>) => void;
|
|
44
|
+
visibleRows: import('@tanstack/table-core').Row<T>[];
|
|
45
|
+
orderedRowIds: string;
|
|
46
|
+
filteredCount: number;
|
|
47
|
+
activeTab: string;
|
|
48
|
+
tabs: import('./types').IDataTableTab<T>[] | undefined;
|
|
49
|
+
handleTabChange: (value: string) => void;
|
|
50
|
+
handleSearchInput: (value: string) => void;
|
|
51
|
+
handleHeaderSortClick: (columnConfig: IDataTableColumnConfig<T>) => void;
|
|
52
|
+
resolveSortDirection: (columnConfig: IDataTableColumnConfig<T>) => false | "asc" | "desc";
|
|
53
|
+
clientPaginationProps: IDataTablePagination | undefined;
|
|
54
|
+
isUpdating: boolean;
|
|
55
|
+
showUpdatingBar: boolean;
|
|
56
|
+
contentOpacityStyle: {
|
|
57
|
+
opacity: number;
|
|
58
|
+
transition: string;
|
|
59
|
+
} | undefined;
|
|
60
|
+
dataTableOpacityTransitionClass: string;
|
|
61
|
+
showSkeleton: boolean;
|
|
62
|
+
hasRows: boolean;
|
|
63
|
+
clientSearchDebounceMs: number;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo, useRef, useEffect } from "react";
|
|
3
|
+
import { normalizeText } from "../../../helpers/stringHelpers.js";
|
|
4
|
+
import { createColumnHelper, useReactTable, getExpandedRowModel, getPaginationRowModel, getSortedRowModel, getFilteredRowModel, getCoreRowModel } from "@tanstack/react-table";
|
|
5
|
+
import DataTableActionsCell from "./cells/DataTableActionsCell.js";
|
|
6
|
+
import DataTableCell from "./cells/DataTableCell.js";
|
|
7
|
+
import { computeColumnContentWidths, resolveColumnMinWidthPx } from "./dataTableColumnWidths.js";
|
|
8
|
+
import { prefersReducedMotion, DATA_TABLE_UPDATING_BAR_DELAY_MS, DATA_TABLE_CROSSFADE_DIP_OPACITY, DATA_TABLE_OPACITY_TRANSITION_MS, DATA_TABLE_UPDATING_OPACITY, dataTableOpacityTransitionClass } from "./dataTableMotion.js";
|
|
9
|
+
import { isDataTablePanelExpansion, isDataTableDetailTableExpansion, isDataTableTableExpansion, isDataTableSubRowsExpansion } from "./types.js";
|
|
10
|
+
import { useFlipRows } from "./useFlipRows.js";
|
|
11
|
+
const CLIENT_SEARCH_DEBOUNCE_MS = 150;
|
|
12
|
+
const useDataTableInstance = ({
|
|
13
|
+
config,
|
|
14
|
+
rows,
|
|
15
|
+
loading,
|
|
16
|
+
sort,
|
|
17
|
+
onSortChange,
|
|
18
|
+
onSearch,
|
|
19
|
+
initialSearch = "",
|
|
20
|
+
onSearchTermChange,
|
|
21
|
+
pagination,
|
|
22
|
+
initialClientPagination,
|
|
23
|
+
onClientPaginationChange,
|
|
24
|
+
columnVisibility,
|
|
25
|
+
onColumnVisibilityChange,
|
|
26
|
+
columnOrder,
|
|
27
|
+
onColumnOrderChange,
|
|
28
|
+
columnSizing,
|
|
29
|
+
onColumnSizingChange,
|
|
30
|
+
onFilteredCountChange
|
|
31
|
+
}) => {
|
|
32
|
+
const isClientMode = config.dataMode === "client";
|
|
33
|
+
const tabs = config.tabs;
|
|
34
|
+
const [activeTab, setActiveTab] = useState(() => tabs?.[0]?.value ?? "");
|
|
35
|
+
const tabFilteredRows = useMemo(() => {
|
|
36
|
+
if (!isClientMode || !tabs?.length) return rows;
|
|
37
|
+
const predicate = tabs.find((tab) => tab.value === activeTab)?.clientPredicate;
|
|
38
|
+
if (!predicate) return rows;
|
|
39
|
+
return rows.filter(predicate);
|
|
40
|
+
}, [isClientMode, tabs, activeTab, rows]);
|
|
41
|
+
const columnHelper = useMemo(() => createColumnHelper(), []);
|
|
42
|
+
const columnContentWidths = useMemo(
|
|
43
|
+
() => computeColumnContentWidths(config.columns, tabFilteredRows),
|
|
44
|
+
[config.columns, tabFilteredRows]
|
|
45
|
+
);
|
|
46
|
+
const columnContentWidthsRef = useRef(columnContentWidths);
|
|
47
|
+
columnContentWidthsRef.current = columnContentWidths;
|
|
48
|
+
const columns = useMemo(() => {
|
|
49
|
+
const contentWidths = columnContentWidthsRef.current;
|
|
50
|
+
const columnDefs = config.columns.map((columnConfig, columnIndex) => {
|
|
51
|
+
const accessorFn = (row) => {
|
|
52
|
+
if (columnConfig.sortAccessor) return columnConfig.sortAccessor(row);
|
|
53
|
+
const value = columnConfig.accessor?.(row);
|
|
54
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
return "";
|
|
58
|
+
};
|
|
59
|
+
const isFirstColumn = columnIndex === 0;
|
|
60
|
+
const columnWidth = contentWidths.get(columnConfig.id) ?? resolveColumnMinWidthPx(columnConfig, {
|
|
61
|
+
isFirstColumn,
|
|
62
|
+
hasColumnToggle: isFirstColumn
|
|
63
|
+
});
|
|
64
|
+
return columnHelper.accessor(accessorFn, {
|
|
65
|
+
id: columnConfig.id,
|
|
66
|
+
header: columnConfig.header,
|
|
67
|
+
enableSorting: !!columnConfig.sortable,
|
|
68
|
+
size: columnWidth,
|
|
69
|
+
minSize: columnWidth,
|
|
70
|
+
enableResizing: columnConfig.type !== "actions" && columnConfig.resizable !== false,
|
|
71
|
+
cell: ({ row }) => columnConfig.type === "actions" && columnConfig.actions ? /* @__PURE__ */ jsx(DataTableActionsCell, { row: row.original, actions: columnConfig.actions }) : /* @__PURE__ */ jsx(
|
|
72
|
+
DataTableCell,
|
|
73
|
+
{
|
|
74
|
+
column: columnConfig,
|
|
75
|
+
row: row.original,
|
|
76
|
+
gridRowId: row.id,
|
|
77
|
+
onCellChange: config.editing?.onCellChange,
|
|
78
|
+
keyboardNav: config.editing?.keyboardNav,
|
|
79
|
+
clickToEdit: config.editing?.clickToEdit
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
return columnDefs;
|
|
85
|
+
}, [config.columns, config.editing, columnHelper]);
|
|
86
|
+
const [clientSorting, setClientSorting] = useState([]);
|
|
87
|
+
const [globalFilter, setGlobalFilter] = useState(initialSearch);
|
|
88
|
+
const [clientPagination, setClientPagination] = useState(() => ({
|
|
89
|
+
pageIndex: Math.max(0, (initialClientPagination?.page ?? 1) - 1),
|
|
90
|
+
pageSize: initialClientPagination?.pageSize ?? 20
|
|
91
|
+
}));
|
|
92
|
+
const onClientPaginationChangeRef = useRef(onClientPaginationChange);
|
|
93
|
+
onClientPaginationChangeRef.current = onClientPaginationChange;
|
|
94
|
+
useEffect(() => {
|
|
95
|
+
onClientPaginationChangeRef.current?.({
|
|
96
|
+
page: clientPagination.pageIndex + 1,
|
|
97
|
+
pageSize: clientPagination.pageSize
|
|
98
|
+
});
|
|
99
|
+
}, [clientPagination.pageIndex, clientPagination.pageSize]);
|
|
100
|
+
const [expanded, setExpanded] = useState({});
|
|
101
|
+
const expansion = config.expansion;
|
|
102
|
+
const hasExpansion = !!expansion;
|
|
103
|
+
const isPanelExpansion = !!expansion && isDataTablePanelExpansion(expansion);
|
|
104
|
+
const isDetailTableExpansion = !!expansion && isDataTableDetailTableExpansion(expansion);
|
|
105
|
+
const isTableExpansion = !!expansion && isDataTableTableExpansion(expansion);
|
|
106
|
+
const subRowsExpansion = expansion && isDataTableSubRowsExpansion(expansion) ? expansion : null;
|
|
107
|
+
const getSearchableText = config.getSearchableText;
|
|
108
|
+
const globalFilterFn = useMemo(
|
|
109
|
+
() => (row, _columnId, filterValue) => {
|
|
110
|
+
const term = normalizeText(String(filterValue ?? "")).trim();
|
|
111
|
+
if (!term) return true;
|
|
112
|
+
const haystack = getSearchableText ? getSearchableText(row.original) : "";
|
|
113
|
+
return normalizeText(haystack).includes(term);
|
|
114
|
+
},
|
|
115
|
+
[getSearchableText]
|
|
116
|
+
);
|
|
117
|
+
const serverSortingState = useMemo(() => {
|
|
118
|
+
if (!sort) return [];
|
|
119
|
+
const columnForField = config.columns.find((column) => column.sortField === sort.sortBy);
|
|
120
|
+
if (!columnForField) return [];
|
|
121
|
+
return [{ id: columnForField.id, desc: sort.sortDir === "desc" }];
|
|
122
|
+
}, [sort, config.columns]);
|
|
123
|
+
const table = useReactTable({
|
|
124
|
+
data: tabFilteredRows,
|
|
125
|
+
columns,
|
|
126
|
+
// The row id IS the entity id (prefixed by the parent for nested rows), not the
|
|
127
|
+
// default positional index: the spreadsheet layer and the commit queue address
|
|
128
|
+
// cells by it, so it has to survive sorting, filtering and pagination.
|
|
129
|
+
getRowId: (row, index, parent) => {
|
|
130
|
+
const ownId = row.id ?? String(index);
|
|
131
|
+
return parent ? `${parent.id}.${ownId}` : ownId;
|
|
132
|
+
},
|
|
133
|
+
state: isClientMode ? {
|
|
134
|
+
sorting: clientSorting,
|
|
135
|
+
globalFilter,
|
|
136
|
+
pagination: clientPagination,
|
|
137
|
+
columnVisibility,
|
|
138
|
+
columnOrder,
|
|
139
|
+
columnSizing,
|
|
140
|
+
expanded
|
|
141
|
+
} : { sorting: serverSortingState, columnVisibility, columnOrder, columnSizing, expanded },
|
|
142
|
+
manualSorting: !isClientMode,
|
|
143
|
+
manualFiltering: !isClientMode,
|
|
144
|
+
manualPagination: !isClientMode,
|
|
145
|
+
// A host that persists the page (URL) expects an in-place row update to keep it;
|
|
146
|
+
// TanStack would otherwise jump back to page 1 whenever `rows` changes reference.
|
|
147
|
+
autoResetPageIndex: onClientPaginationChange ? false : void 0,
|
|
148
|
+
enableColumnResizing: true,
|
|
149
|
+
// `onChange`: columns follow the cursor live during the drag (fluid, ag-grid
|
|
150
|
+
// style) rather than snapping only on release.
|
|
151
|
+
columnResizeMode: "onChange",
|
|
152
|
+
onColumnVisibilityChange,
|
|
153
|
+
onColumnOrderChange,
|
|
154
|
+
onColumnSizingChange,
|
|
155
|
+
onSortingChange: isClientMode ? setClientSorting : void 0,
|
|
156
|
+
onGlobalFilterChange: isClientMode ? setGlobalFilter : void 0,
|
|
157
|
+
onPaginationChange: isClientMode ? setClientPagination : void 0,
|
|
158
|
+
onExpandedChange: hasExpansion ? setExpanded : void 0,
|
|
159
|
+
globalFilterFn: isClientMode ? globalFilterFn : void 0,
|
|
160
|
+
// Panel and detailTable modes have no nested rows in the row model. Omit
|
|
161
|
+
// getSubRows so TanStack never looks for children. SubRows mode keeps the
|
|
162
|
+
// existing lazy-children path.
|
|
163
|
+
getSubRows: subRowsExpansion?.getSubRows,
|
|
164
|
+
getRowCanExpand: expansion ? (row) => {
|
|
165
|
+
if (expansion.canExpand) return expansion.canExpand(row.original);
|
|
166
|
+
if (isPanelExpansion || isDetailTableExpansion || isTableExpansion) return true;
|
|
167
|
+
return row.subRows.length > 0;
|
|
168
|
+
} : void 0,
|
|
169
|
+
// Client mode keeps children glued to their parent (not counted toward the
|
|
170
|
+
// page size). The pagination row model re-inserts them. Server mode has NO
|
|
171
|
+
// pagination row model, so `false` would leave `getExpandedRowModel` without
|
|
172
|
+
// anything to flatten the children and they would never render; `true` makes
|
|
173
|
+
// the expanded model flatten them itself (server already paginates parents).
|
|
174
|
+
// Panel and detailTable modes have no child rows, so the flag is irrelevant.
|
|
175
|
+
paginateExpandedRows: !isClientMode,
|
|
176
|
+
getCoreRowModel: getCoreRowModel(),
|
|
177
|
+
getFilteredRowModel: isClientMode ? getFilteredRowModel() : void 0,
|
|
178
|
+
getSortedRowModel: isClientMode ? getSortedRowModel() : void 0,
|
|
179
|
+
getPaginationRowModel: isClientMode ? getPaginationRowModel() : void 0,
|
|
180
|
+
getExpandedRowModel: hasExpansion ? getExpandedRowModel() : void 0
|
|
181
|
+
});
|
|
182
|
+
const visibleRows = table.getRowModel().rows;
|
|
183
|
+
const orderedRowIds = useMemo(() => visibleRows.map((row) => row.id).join("|"), [visibleRows]);
|
|
184
|
+
const flipDurationMs = subRowsExpansion ? 420 : void 0;
|
|
185
|
+
const { registerRow, beginExit: beginRowsExit } = useFlipRows(
|
|
186
|
+
useMemo(() => orderedRowIds.split("|"), [orderedRowIds]),
|
|
187
|
+
flipDurationMs
|
|
188
|
+
);
|
|
189
|
+
const filteredCount = isClientMode ? table.getFilteredRowModel().rows.length : rows.length;
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
onFilteredCountChange?.(filteredCount);
|
|
192
|
+
}, [filteredCount, onFilteredCountChange]);
|
|
193
|
+
const handleHeaderSortClick = (columnConfig) => {
|
|
194
|
+
if (!columnConfig.sortable) return;
|
|
195
|
+
if (isClientMode) {
|
|
196
|
+
table.getColumn(columnConfig.id)?.toggleSorting(void 0, false);
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (!columnConfig.sortField || !onSortChange) return;
|
|
200
|
+
const isActive = sort?.sortBy === columnConfig.sortField;
|
|
201
|
+
let nextDir = "asc";
|
|
202
|
+
if (isActive && sort?.sortDir === "asc") nextDir = "desc";
|
|
203
|
+
else if (isActive && sort?.sortDir === "desc") {
|
|
204
|
+
onSortChange(null);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
onSortChange({ sortBy: columnConfig.sortField, sortDir: nextDir });
|
|
208
|
+
};
|
|
209
|
+
const resolveSortDirection = (columnConfig) => {
|
|
210
|
+
if (isClientMode) {
|
|
211
|
+
const direction = table.getColumn(columnConfig.id)?.getIsSorted();
|
|
212
|
+
return direction ?? false;
|
|
213
|
+
}
|
|
214
|
+
if (sort?.sortBy !== columnConfig.sortField) return false;
|
|
215
|
+
return sort?.sortDir ?? "asc";
|
|
216
|
+
};
|
|
217
|
+
const handleSearchInput = (value) => {
|
|
218
|
+
onSearchTermChange?.(value);
|
|
219
|
+
if (isClientMode) {
|
|
220
|
+
setGlobalFilter(value);
|
|
221
|
+
table.setPageIndex(0);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
onSearch?.(value);
|
|
225
|
+
};
|
|
226
|
+
const handleTabChange = (value) => {
|
|
227
|
+
setActiveTab(value);
|
|
228
|
+
if (isClientMode) table.setPageIndex(0);
|
|
229
|
+
};
|
|
230
|
+
const showSkeleton = loading && rows.length === 0;
|
|
231
|
+
const isUpdating = !isClientMode && loading && rows.length > 0;
|
|
232
|
+
const [showUpdatingBar, setShowUpdatingBar] = useState(false);
|
|
233
|
+
const [contentOpacity, setContentOpacity] = useState(1);
|
|
234
|
+
const wasUpdatingRef = useRef(false);
|
|
235
|
+
useEffect(() => {
|
|
236
|
+
if (!isUpdating) {
|
|
237
|
+
setShowUpdatingBar(false);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (prefersReducedMotion()) return;
|
|
241
|
+
const timer = window.setTimeout(() => setShowUpdatingBar(true), DATA_TABLE_UPDATING_BAR_DELAY_MS);
|
|
242
|
+
return () => window.clearTimeout(timer);
|
|
243
|
+
}, [isUpdating]);
|
|
244
|
+
useEffect(() => {
|
|
245
|
+
const reducedMotion = prefersReducedMotion();
|
|
246
|
+
if (wasUpdatingRef.current && !isUpdating && !isClientMode) {
|
|
247
|
+
if (reducedMotion) {
|
|
248
|
+
setContentOpacity(1);
|
|
249
|
+
} else {
|
|
250
|
+
setContentOpacity(DATA_TABLE_CROSSFADE_DIP_OPACITY);
|
|
251
|
+
const frame = window.requestAnimationFrame(() => setContentOpacity(1));
|
|
252
|
+
wasUpdatingRef.current = isUpdating;
|
|
253
|
+
return () => window.cancelAnimationFrame(frame);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
wasUpdatingRef.current = isUpdating;
|
|
257
|
+
}, [isUpdating, isClientMode]);
|
|
258
|
+
const contentOpacityStyle = useMemo(() => {
|
|
259
|
+
if (prefersReducedMotion()) return void 0;
|
|
260
|
+
const opacity = isUpdating ? DATA_TABLE_UPDATING_OPACITY : contentOpacity;
|
|
261
|
+
return {
|
|
262
|
+
opacity,
|
|
263
|
+
transition: `opacity ${DATA_TABLE_OPACITY_TRANSITION_MS}ms ease-enter`
|
|
264
|
+
};
|
|
265
|
+
}, [isUpdating, contentOpacity]);
|
|
266
|
+
const clientPaginationProps = isClientMode ? {
|
|
267
|
+
pageSize: clientPagination.pageSize,
|
|
268
|
+
numberOfPages: table.getPageCount(),
|
|
269
|
+
currentPage: clientPagination.pageIndex + 1,
|
|
270
|
+
totalItems: table.getFilteredRowModel().rows.length,
|
|
271
|
+
setCurrentPage: (page) => table.setPageIndex(page - 1),
|
|
272
|
+
onPageSizeChange: (size) => {
|
|
273
|
+
table.setPageSize(size);
|
|
274
|
+
table.setPageIndex(0);
|
|
275
|
+
}
|
|
276
|
+
} : pagination;
|
|
277
|
+
const hasRows = visibleRows.length > 0;
|
|
278
|
+
return {
|
|
279
|
+
table,
|
|
280
|
+
isClientMode,
|
|
281
|
+
columnContentWidths,
|
|
282
|
+
registerRow,
|
|
283
|
+
beginRowsExit,
|
|
284
|
+
visibleRows,
|
|
285
|
+
orderedRowIds,
|
|
286
|
+
filteredCount,
|
|
287
|
+
activeTab,
|
|
288
|
+
tabs,
|
|
289
|
+
handleTabChange,
|
|
290
|
+
handleSearchInput,
|
|
291
|
+
handleHeaderSortClick,
|
|
292
|
+
resolveSortDirection,
|
|
293
|
+
clientPaginationProps,
|
|
294
|
+
isUpdating,
|
|
295
|
+
showUpdatingBar,
|
|
296
|
+
contentOpacityStyle,
|
|
297
|
+
dataTableOpacityTransitionClass,
|
|
298
|
+
showSkeleton,
|
|
299
|
+
hasRows,
|
|
300
|
+
clientSearchDebounceMs: CLIENT_SEARCH_DEBOUNCE_MS
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
export {
|
|
304
|
+
useDataTableInstance
|
|
305
|
+
};
|
|
306
|
+
//# sourceMappingURL=useDataTableInstance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDataTableInstance.js","sources":["../../../../src/components/UI/DataTable/useDataTableInstance.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { normalizeText } from '@/helpers/stringHelpers';\nimport {\n type ColumnSizingState,\n createColumnHelper,\n type ExpandedState,\n type FilterFn,\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type SortingState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table';\n\nimport DataTableActionsCell from './cells/DataTableActionsCell';\nimport DataTableCell from './cells/DataTableCell';\nimport { computeColumnContentWidths, resolveColumnMinWidthPx } from './dataTableColumnWidths';\nimport {\n DATA_TABLE_CROSSFADE_DIP_OPACITY,\n DATA_TABLE_OPACITY_TRANSITION_MS,\n DATA_TABLE_UPDATING_BAR_DELAY_MS,\n DATA_TABLE_UPDATING_OPACITY,\n dataTableOpacityTransitionClass,\n prefersReducedMotion,\n} from './dataTableMotion';\nimport {\n type IDataTableColumnConfig,\n type IDataTableConfig,\n type IDataTableRow,\n type IDataTableSortState,\n isDataTableDetailTableExpansion,\n isDataTablePanelExpansion,\n isDataTableSubRowsExpansion,\n isDataTableTableExpansion,\n type TDataTableSortDirection,\n} from './types';\nimport { useFlipRows } from './useFlipRows';\n\nconst CLIENT_SEARCH_DEBOUNCE_MS = 150;\n\nexport interface IDataTableClientPaginationState {\n page: number;\n pageSize: number;\n}\n\nexport interface IDataTablePagination {\n pageSize: number;\n numberOfPages: number;\n currentPage: number;\n setCurrentPage: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n /** Total de registros. Presente, a barra mostra o intervalo em vez do número da página. */\n totalItems?: number;\n}\n\ninterface IUseDataTableInstanceParams<T extends IDataTableRow, C extends IDataTableRow = IDataTableRow> {\n config: IDataTableConfig<T, C>;\n rows: Array<T>;\n loading: boolean;\n sort?: IDataTableSortState | null;\n onSortChange?: (sort: IDataTableSortState | null) => void;\n onSearch?: (value: string) => void;\n initialSearch?: string;\n onSearchTermChange?: (value: string) => void;\n pagination?: IDataTablePagination;\n /** Client mode: seeds the internal page/pageSize (1-based page), e.g. from the URL. */\n initialClientPagination?: IDataTableClientPaginationState;\n /** Client mode: reports every page/pageSize change so the host can persist it (URL, storage). */\n onClientPaginationChange?: (pagination: IDataTableClientPaginationState) => void;\n columnVisibility: VisibilityState;\n onColumnVisibilityChange: (updater: Updater<VisibilityState>) => void;\n columnOrder: Array<string>;\n onColumnOrderChange: (updater: Updater<Array<string>>) => void;\n columnSizing: ColumnSizingState;\n onColumnSizingChange: (updater: Updater<ColumnSizingState>) => void;\n onFilteredCountChange?: (count: number) => void;\n}\n\nexport const useDataTableInstance = <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>({\n config,\n rows,\n loading,\n sort,\n onSortChange,\n onSearch,\n initialSearch = '',\n onSearchTermChange,\n pagination,\n initialClientPagination,\n onClientPaginationChange,\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange,\n columnSizing,\n onColumnSizingChange,\n onFilteredCountChange,\n}: IUseDataTableInstanceParams<T, C>) => {\n const isClientMode = config.dataMode === 'client';\n\n const tabs = config.tabs;\n const [activeTab, setActiveTab] = useState(() => tabs?.[0]?.value ?? '');\n\n // Active tab predicate filters rows BEFORE search/sort/pagination (client mode).\n const tabFilteredRows = useMemo(() => {\n if (!isClientMode || !tabs?.length) return rows;\n const predicate = tabs.find((tab) => tab.value === activeTab)?.clientPredicate;\n if (!predicate) return rows;\n\n return rows.filter(predicate);\n }, [isClientMode, tabs, activeTab, rows]);\n\n const columnHelper = useMemo(() => createColumnHelper<T>(), []);\n\n // Actions and badge columns are sized from the current rows (visible action\n // count / widest chip) so the actions column scales with its buttons and badge\n // labels are never clipped. Other columns fall back to the config-only seed.\n // Both are derived in one memo so the hook signature stays unchanged.\n // Row-derived widths (actions/badge columns) kept in their own memo and read by the\n // column defs through a ref, so editing a cell (which changes the rows) does NOT\n // rebuild the column defs. Rebuilding them hands TanStack a new columns array every\n // keystroke and tears down / remounts every cell, dropping input focus.\n const columnContentWidths = useMemo(\n () => computeColumnContentWidths(config.columns, tabFilteredRows),\n [config.columns, tabFilteredRows],\n );\n const columnContentWidthsRef = useRef(columnContentWidths);\n columnContentWidthsRef.current = columnContentWidths;\n\n const columns = useMemo(() => {\n const contentWidths = columnContentWidthsRef.current;\n\n const columnDefs = config.columns.map((columnConfig, columnIndex) => {\n const accessorFn = (row: T): string | number | boolean => {\n if (columnConfig.sortAccessor) return columnConfig.sortAccessor(row);\n\n const value = columnConfig.accessor?.(row);\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return value;\n }\n\n return '';\n };\n\n const isFirstColumn = columnIndex === 0;\n const columnWidth =\n contentWidths.get(columnConfig.id) ??\n resolveColumnMinWidthPx(columnConfig, {\n isFirstColumn,\n hasColumnToggle: isFirstColumn,\n });\n\n return columnHelper.accessor(accessorFn, {\n id: columnConfig.id,\n header: columnConfig.header,\n enableSorting: !!columnConfig.sortable,\n size: columnWidth,\n minSize: columnWidth,\n enableResizing: columnConfig.type !== 'actions' && columnConfig.resizable !== false,\n cell: ({ row }) =>\n columnConfig.type === 'actions' && columnConfig.actions ? (\n <DataTableActionsCell row={row.original} actions={columnConfig.actions} />\n ) : (\n <DataTableCell\n column={columnConfig}\n row={row.original}\n gridRowId={row.id}\n onCellChange={config.editing?.onCellChange}\n keyboardNav={config.editing?.keyboardNav}\n clickToEdit={config.editing?.clickToEdit}\n />\n ),\n });\n });\n\n return columnDefs;\n }, [config.columns, config.editing, columnHelper]);\n\n // ----- Client-mode internal state -----\n const [clientSorting, setClientSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState(initialSearch);\n const [clientPagination, setClientPagination] = useState<PaginationState>(() => ({\n pageIndex: Math.max(0, (initialClientPagination?.page ?? 1) - 1),\n pageSize: initialClientPagination?.pageSize ?? 20,\n }));\n\n const onClientPaginationChangeRef = useRef(onClientPaginationChange);\n onClientPaginationChangeRef.current = onClientPaginationChange;\n\n useEffect(() => {\n onClientPaginationChangeRef.current?.({\n page: clientPagination.pageIndex + 1,\n pageSize: clientPagination.pageSize,\n });\n }, [clientPagination.pageIndex, clientPagination.pageSize]);\n const [expanded, setExpanded] = useState<ExpandedState>({});\n\n const expansion = config.expansion;\n const hasExpansion = !!expansion;\n const isPanelExpansion = !!expansion && isDataTablePanelExpansion(expansion);\n const isDetailTableExpansion = !!expansion && isDataTableDetailTableExpansion(expansion);\n const isTableExpansion = !!expansion && isDataTableTableExpansion(expansion);\n const subRowsExpansion = expansion && isDataTableSubRowsExpansion(expansion) ? expansion : null;\n\n const getSearchableText = config.getSearchableText;\n\n const globalFilterFn: FilterFn<T> = useMemo(\n () => (row, _columnId, filterValue) => {\n const term = normalizeText(String(filterValue ?? '')).trim();\n if (!term) return true;\n\n const haystack = getSearchableText ? getSearchableText(row.original) : '';\n\n return normalizeText(haystack).includes(term);\n },\n [getSearchableText],\n );\n\n // ----- Server-mode external sort mapping -----\n const serverSortingState: SortingState = useMemo(() => {\n if (!sort) return [];\n const columnForField = config.columns.find((column) => column.sortField === sort.sortBy);\n if (!columnForField) return [];\n\n return [{ id: columnForField.id, desc: sort.sortDir === 'desc' }];\n }, [sort, config.columns]);\n\n const table = useReactTable({\n data: tabFilteredRows,\n columns,\n // The row id IS the entity id (prefixed by the parent for nested rows), not the\n // default positional index: the spreadsheet layer and the commit queue address\n // cells by it, so it has to survive sorting, filtering and pagination.\n getRowId: (row, index, parent) => {\n const ownId = row.id ?? String(index);\n return parent ? `${parent.id}.${ownId}` : ownId;\n },\n state: isClientMode\n ? {\n sorting: clientSorting,\n globalFilter,\n pagination: clientPagination,\n columnVisibility,\n columnOrder,\n columnSizing,\n expanded,\n }\n : { sorting: serverSortingState, columnVisibility, columnOrder, columnSizing, expanded },\n manualSorting: !isClientMode,\n manualFiltering: !isClientMode,\n manualPagination: !isClientMode,\n // A host that persists the page (URL) expects an in-place row update to keep it;\n // TanStack would otherwise jump back to page 1 whenever `rows` changes reference.\n autoResetPageIndex: onClientPaginationChange ? false : undefined,\n enableColumnResizing: true,\n // `onChange`: columns follow the cursor live during the drag (fluid, ag-grid\n // style) rather than snapping only on release.\n columnResizeMode: 'onChange',\n onColumnVisibilityChange,\n onColumnOrderChange,\n onColumnSizingChange,\n onSortingChange: isClientMode ? setClientSorting : undefined,\n onGlobalFilterChange: isClientMode ? setGlobalFilter : undefined,\n onPaginationChange: isClientMode ? setClientPagination : undefined,\n onExpandedChange: hasExpansion ? setExpanded : undefined,\n globalFilterFn: isClientMode ? globalFilterFn : undefined,\n // Panel and detailTable modes have no nested rows in the row model. Omit\n // getSubRows so TanStack never looks for children. SubRows mode keeps the\n // existing lazy-children path.\n getSubRows: subRowsExpansion?.getSubRows,\n getRowCanExpand: expansion\n ? (row) => {\n if (expansion.canExpand) return expansion.canExpand(row.original);\n // Panel/detailTable/table: every row is expandable unless canExpand says otherwise.\n if (isPanelExpansion || isDetailTableExpansion || isTableExpansion) return true;\n return row.subRows.length > 0;\n }\n : undefined,\n // Client mode keeps children glued to their parent (not counted toward the\n // page size). The pagination row model re-inserts them. Server mode has NO\n // pagination row model, so `false` would leave `getExpandedRowModel` without\n // anything to flatten the children and they would never render; `true` makes\n // the expanded model flatten them itself (server already paginates parents).\n // Panel and detailTable modes have no child rows, so the flag is irrelevant.\n paginateExpandedRows: !isClientMode,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: isClientMode ? getFilteredRowModel() : undefined,\n getSortedRowModel: isClientMode ? getSortedRowModel() : undefined,\n getPaginationRowModel: isClientMode ? getPaginationRowModel() : undefined,\n getExpandedRowModel: hasExpansion ? getExpandedRowModel() : undefined,\n });\n\n const visibleRows = table.getRowModel().rows;\n const orderedRowIds = useMemo(() => visibleRows.map((row) => row.id).join('|'), [visibleRows]);\n // SubRows expansion uses a slower slide so the subgroup open/close reads clearly.\n // Panel and detailTable expansion only toggle a content row. Keep the default\n // FLIP timing for those.\n const flipDurationMs = subRowsExpansion ? 420 : undefined;\n const { registerRow, beginExit: beginRowsExit } = useFlipRows(\n useMemo(() => orderedRowIds.split('|'), [orderedRowIds]),\n flipDurationMs,\n );\n\n const filteredCount = isClientMode ? table.getFilteredRowModel().rows.length : rows.length;\n\n useEffect(() => {\n onFilteredCountChange?.(filteredCount);\n }, [filteredCount, onFilteredCountChange]);\n\n // In server mode, header click round-trips through the host. In client mode\n // TanStack drives the sorting state directly (cycle: asc -> desc -> none).\n const handleHeaderSortClick = (columnConfig: IDataTableColumnConfig<T>) => {\n if (!columnConfig.sortable) return;\n\n if (isClientMode) {\n table.getColumn(columnConfig.id)?.toggleSorting(undefined, false);\n return;\n }\n\n if (!columnConfig.sortField || !onSortChange) return;\n\n const isActive = sort?.sortBy === columnConfig.sortField;\n let nextDir: TDataTableSortDirection = 'asc';\n\n if (isActive && sort?.sortDir === 'asc') nextDir = 'desc';\n else if (isActive && sort?.sortDir === 'desc') {\n onSortChange(null);\n return;\n }\n\n onSortChange({ sortBy: columnConfig.sortField, sortDir: nextDir });\n };\n\n const resolveSortDirection = (columnConfig: IDataTableColumnConfig<T>): false | 'asc' | 'desc' => {\n if (isClientMode) {\n const direction = table.getColumn(columnConfig.id)?.getIsSorted();\n return direction ?? false;\n }\n\n if (sort?.sortBy !== columnConfig.sortField) return false;\n return sort?.sortDir ?? 'asc';\n };\n\n const handleSearchInput = (value: string) => {\n onSearchTermChange?.(value);\n\n if (isClientMode) {\n setGlobalFilter(value);\n table.setPageIndex(0);\n return;\n }\n\n onSearch?.(value);\n };\n\n const handleTabChange = (value: string) => {\n setActiveTab(value);\n if (isClientMode) table.setPageIndex(0);\n };\n\n // Skeleton is shown ONLY on the very first load (no rows yet). Filter/sort/\n // pagination never swap the loaded table for skeletons. That is the \"blink\".\n const showSkeleton = loading && rows.length === 0;\n // Server mode keeps rows visible during a refetch with a subtle updating state.\n const isUpdating = !isClientMode && loading && rows.length > 0;\n\n const [showUpdatingBar, setShowUpdatingBar] = useState(false);\n const [contentOpacity, setContentOpacity] = useState(1);\n const wasUpdatingRef = useRef(false);\n\n useEffect(() => {\n if (!isUpdating) {\n setShowUpdatingBar(false);\n return;\n }\n\n if (prefersReducedMotion()) return;\n\n const timer = window.setTimeout(() => setShowUpdatingBar(true), DATA_TABLE_UPDATING_BAR_DELAY_MS);\n return () => window.clearTimeout(timer);\n }, [isUpdating]);\n\n useEffect(() => {\n const reducedMotion = prefersReducedMotion();\n\n if (wasUpdatingRef.current && !isUpdating && !isClientMode) {\n if (reducedMotion) {\n setContentOpacity(1);\n } else {\n setContentOpacity(DATA_TABLE_CROSSFADE_DIP_OPACITY);\n const frame = window.requestAnimationFrame(() => setContentOpacity(1));\n wasUpdatingRef.current = isUpdating;\n return () => window.cancelAnimationFrame(frame);\n }\n }\n\n wasUpdatingRef.current = isUpdating;\n }, [isUpdating, isClientMode]);\n\n const contentOpacityStyle = useMemo(() => {\n if (prefersReducedMotion()) return undefined;\n\n const opacity = isUpdating ? DATA_TABLE_UPDATING_OPACITY : contentOpacity;\n\n return {\n opacity,\n transition: `opacity ${DATA_TABLE_OPACITY_TRANSITION_MS}ms ease-enter`,\n };\n }, [isUpdating, contentOpacity]);\n\n const clientPaginationProps: IDataTablePagination | undefined = isClientMode\n ? {\n pageSize: clientPagination.pageSize,\n numberOfPages: table.getPageCount(),\n currentPage: clientPagination.pageIndex + 1,\n totalItems: table.getFilteredRowModel().rows.length,\n setCurrentPage: (page: number) => table.setPageIndex(page - 1),\n onPageSizeChange: (size: number) => {\n table.setPageSize(size);\n table.setPageIndex(0);\n },\n }\n : pagination;\n\n const hasRows = visibleRows.length > 0;\n\n return {\n table,\n isClientMode,\n columnContentWidths,\n registerRow,\n beginRowsExit,\n visibleRows,\n orderedRowIds,\n filteredCount,\n activeTab,\n tabs,\n handleTabChange,\n handleSearchInput,\n handleHeaderSortClick,\n resolveSortDirection,\n clientPaginationProps,\n isUpdating,\n showUpdatingBar,\n contentOpacityStyle,\n dataTableOpacityTransitionClass,\n showSkeleton,\n hasRows,\n clientSearchDebounceMs: CLIENT_SEARCH_DEBOUNCE_MS,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { IDataTableFiltersConfig, IDataTableRow, IDataTableSortState, TDataTableDataMode, TDataTableFilterValues, TDataTableViewMode } from './types';
|
|
2
|
+
import { IDataTablePagination } from './useDataTableInstance';
|
|
3
|
+
export interface IDataTableFetchParams {
|
|
4
|
+
page: number;
|
|
5
|
+
size: number;
|
|
6
|
+
/** Server mode only. */
|
|
7
|
+
search?: string;
|
|
8
|
+
/** Server mode only. */
|
|
9
|
+
sort?: IDataTableSortState | null;
|
|
10
|
+
/** Server mode only: built from the active filters' `toServerParams`. */
|
|
11
|
+
filterParams: Record<string, unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* Server mode only. Aborted when this load is superseded (params changed) or the
|
|
14
|
+
* table unmounts. Pass it to the HTTP layer (axios `signal`) so stale requests are
|
|
15
|
+
* cancelled instead of left pending.
|
|
16
|
+
*/
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}
|
|
19
|
+
export interface IDataTableFetchResult<T> {
|
|
20
|
+
data: Array<T>;
|
|
21
|
+
total: number;
|
|
22
|
+
}
|
|
23
|
+
export type TDataTableFetchPage<T> = (params: IDataTableFetchParams) => Promise<IDataTableFetchResult<T>>;
|
|
24
|
+
interface IUseDataTableSourceParams<T extends IDataTableRow> {
|
|
25
|
+
/** The single switch: mirror `config.dataMode`. `client` = bulk + in-memory; `server` = paginated. */
|
|
26
|
+
dataMode: TDataTableDataMode | undefined;
|
|
27
|
+
/** The table's filter config: drives in-memory (client) or server params. */
|
|
28
|
+
filters?: IDataTableFiltersConfig<T>;
|
|
29
|
+
/** Fetches one page of ALREADY ROW-SHAPED data. Same function feeds both modes. */
|
|
30
|
+
fetchPage: TDataTableFetchPage<T>;
|
|
31
|
+
/** Drawer filter values (applied in memory in client mode, sent as params in server mode). */
|
|
32
|
+
filterValues?: TDataTableFilterValues;
|
|
33
|
+
/**
|
|
34
|
+
* Server mode only: page-level backend params outside the drawer filters (time
|
|
35
|
+
* window, partner scope). Merged into `filterParams` and into the reload key, so
|
|
36
|
+
* changing them refetches from page 1 — closures inside `fetchPage` do NOT
|
|
37
|
+
* retrigger loads (the fetch runs through a ref) and silently go stale.
|
|
38
|
+
* MUST be reference-stable per value (useMemo); an inline object literal here
|
|
39
|
+
* recreates the params every render and re-fires the load effect.
|
|
40
|
+
*/
|
|
41
|
+
serverParams?: Record<string, unknown>;
|
|
42
|
+
/** Bump to force a reload (e.g. after a mutation). */
|
|
43
|
+
reloadToken?: number;
|
|
44
|
+
bulkPageSize?: number;
|
|
45
|
+
serverPageSize?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Current view mode (server mode only). When `cards`, server pages are appended
|
|
48
|
+
* for infinite scroll (`cardsInfinite`); when `list`, they replace, page by page.
|
|
49
|
+
*/
|
|
50
|
+
viewMode?: TDataTableViewMode;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Everything a `DataTable` consumer needs, decided by `dataMode` alone. Spread the
|
|
54
|
+
* server-mode props (`onSearch`/`sort`/`onSortChange`/`pagination`) into the table;
|
|
55
|
+
* in client mode they are `undefined` and the table does search/sort/pagination
|
|
56
|
+
* itself. Read `filteredCount`/`totalCount` for the "Showing X of Y" headline.
|
|
57
|
+
*/
|
|
58
|
+
export interface IDataTableSource<T extends IDataTableRow> {
|
|
59
|
+
rows: Array<T>;
|
|
60
|
+
loading: boolean;
|
|
61
|
+
error: boolean;
|
|
62
|
+
/** The caught error itself, for the surface to say WHY the load failed. */
|
|
63
|
+
errorCause: unknown;
|
|
64
|
+
onRetry: () => void;
|
|
65
|
+
reload: () => void;
|
|
66
|
+
filteredCount: number;
|
|
67
|
+
totalCount: number;
|
|
68
|
+
onFilteredCountChange: (count: number) => void;
|
|
69
|
+
onSearch?: (value: string) => void;
|
|
70
|
+
sort?: IDataTableSortState | null;
|
|
71
|
+
onSortChange?: (sort: IDataTableSortState | null) => void;
|
|
72
|
+
pagination?: IDataTablePagination;
|
|
73
|
+
/**
|
|
74
|
+
* Server mode + Cards view only. Drives the cards infinite scroll: the table
|
|
75
|
+
* observes the bottom sentinel and calls `loadMore` while `hasMore`. Undefined
|
|
76
|
+
* in list view or client mode (both keep their existing paging behaviour).
|
|
77
|
+
*/
|
|
78
|
+
cardsInfinite?: {
|
|
79
|
+
hasMore: boolean;
|
|
80
|
+
loadingMore: boolean;
|
|
81
|
+
loadMore: () => void;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export declare const useDataTableSource: <T extends IDataTableRow>({ dataMode, filters, fetchPage, filterValues, serverParams, reloadToken, bulkPageSize, serverPageSize, viewMode, }: IUseDataTableSourceParams<T>) => IDataTableSource<T>;
|
|
85
|
+
export {};
|