@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,109 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { useTranslation } from "react-i18next";
|
|
5
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
6
|
+
import ControlledDialog from "../../Form/ControlledDialog.js";
|
|
7
|
+
import Colors from "../Colors.js";
|
|
8
|
+
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
9
|
+
import DataTableStatusCell from "./cells/DataTableStatusCell.js";
|
|
10
|
+
const DataTableDetailModal = ({
|
|
11
|
+
open,
|
|
12
|
+
row,
|
|
13
|
+
config,
|
|
14
|
+
size = "md",
|
|
15
|
+
onClose,
|
|
16
|
+
onEdit,
|
|
17
|
+
isEditDisabled,
|
|
18
|
+
onToggleStatus,
|
|
19
|
+
isActive,
|
|
20
|
+
canToggleStatus
|
|
21
|
+
}) => {
|
|
22
|
+
const { t } = useTranslation("ui");
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!open) return void 0;
|
|
25
|
+
const handleKeyDown = (event) => {
|
|
26
|
+
if (event.key === "Escape") onClose();
|
|
27
|
+
};
|
|
28
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
29
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
30
|
+
}, [open, onClose]);
|
|
31
|
+
if (!row) return null;
|
|
32
|
+
const status = config.status?.(row) ?? null;
|
|
33
|
+
const color = config.color?.(row) ?? null;
|
|
34
|
+
const thumbnail = config.thumbnail?.(row) ?? null;
|
|
35
|
+
const code = config.code?.(row) ?? null;
|
|
36
|
+
const detailContent = config.content?.(row) ?? null;
|
|
37
|
+
const hasDetailContent = detailContent !== null && detailContent !== void 0 && detailContent !== false;
|
|
38
|
+
const rowIsActive = isActive?.(row) ?? false;
|
|
39
|
+
const hasFooterActions = !!onToggleStatus && !!canToggleStatus?.(row) || !!onEdit;
|
|
40
|
+
return (
|
|
41
|
+
// With a `content` block the dialog body must not scroll: the block itself is the only
|
|
42
|
+
// scroller, so the header, the fields and the actions stay put while the list moves.
|
|
43
|
+
/* @__PURE__ */ jsx(ControlledDialog, { open, size, title: "", onCancel: onClose, useFooter: false, fitBody: hasDetailContent, children: /* @__PURE__ */ jsxs("div", { className: classNames("flex flex-col gap-4 p-4", hasDetailContent && "max-h-[70vh]"), children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-start gap-4 pr-8", children: [
|
|
45
|
+
color?.hex && /* @__PURE__ */ jsx(
|
|
46
|
+
Colors,
|
|
47
|
+
{
|
|
48
|
+
colors: [color.hex],
|
|
49
|
+
isSquare: true,
|
|
50
|
+
label: color.label,
|
|
51
|
+
className: "h-24 min-h-24 w-24 min-w-24 shrink-0 rounded-lg"
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
thumbnail?.src && /* @__PURE__ */ jsx(
|
|
55
|
+
"img",
|
|
56
|
+
{
|
|
57
|
+
src: thumbnail.src,
|
|
58
|
+
alt: thumbnail.label ?? "",
|
|
59
|
+
className: "h-24 min-h-24 w-24 min-w-24 shrink-0 rounded-lg border border-border object-cover"
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
63
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [
|
|
64
|
+
/* @__PURE__ */ jsx("span", { className: "text-xl font-semibold leading-tight text-foreground", children: config.title(row) }),
|
|
65
|
+
status && /* @__PURE__ */ jsx(DataTableStatusCell, { value: status })
|
|
66
|
+
] }),
|
|
67
|
+
code && /* @__PURE__ */ jsx("span", { className: "font-mono text-sm text-foreground-subtle", children: code })
|
|
68
|
+
] })
|
|
69
|
+
] }),
|
|
70
|
+
/* @__PURE__ */ jsx("hr", { className: "shrink-0 border-border-subtle" }),
|
|
71
|
+
/* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-wrap gap-y-4", children: config.fields(row).map((field, index) => /* @__PURE__ */ jsxs("div", { className: "flex basis-1/2 flex-col gap-0.5 pr-4", children: [
|
|
72
|
+
/* @__PURE__ */ jsx("span", { className: "text-xxs font-semibold uppercase text-foreground-faint", children: field.label }),
|
|
73
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-foreground", children: field.value })
|
|
74
|
+
] }, `${field.label}-${index}`)) }),
|
|
75
|
+
hasDetailContent && /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-y-auto pr-1", children: detailContent }),
|
|
76
|
+
hasFooterActions && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center justify-end gap-2 border-t border-border-subtle pt-3", children: [
|
|
77
|
+
onToggleStatus && canToggleStatus?.(row) && /* @__PURE__ */ jsxs(
|
|
78
|
+
ControlledButton,
|
|
79
|
+
{
|
|
80
|
+
variant: "outlined",
|
|
81
|
+
className: "flex items-center gap-1.5",
|
|
82
|
+
onClick: () => onToggleStatus(row),
|
|
83
|
+
children: [
|
|
84
|
+
/* @__PURE__ */ jsx(MaterialSymbol, { icon: rowIsActive ? "visibility_off" : "visibility", size: 16 }),
|
|
85
|
+
rowIsActive ? t("actions.deactivate") : t("actions.activate")
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
onEdit && /* @__PURE__ */ jsxs(
|
|
90
|
+
ControlledButton,
|
|
91
|
+
{
|
|
92
|
+
variant: "filled",
|
|
93
|
+
className: "flex items-center gap-1.5 bg-brand hover:bg-brand-hover disabled:bg-brand-soft-hover",
|
|
94
|
+
onClick: () => onEdit(row),
|
|
95
|
+
disabled: isEditDisabled?.(row),
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsx(MaterialSymbol, { icon: "edit", size: 16, color: "white" }),
|
|
98
|
+
t("actions.edit")
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
] })
|
|
103
|
+
] }) })
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
export {
|
|
107
|
+
DataTableDetailModal as default
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=DataTableDetailModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableDetailModal.js","sources":["../../../../src/components/UI/DataTable/DataTableDetailModal.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledDialog from '@/components/Form/ControlledDialog';\nimport type { TDialogSize } from '@/components/Form/ControlledDialogPrimitives';\nimport Colors from '@/components/UI/Colors';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\n\nimport DataTableStatusCell from './cells/DataTableStatusCell';\nimport type { IDataTableDetailConfig, IDataTableRow } from './types';\n\ninterface IDataTableDetailModalProps<T extends IDataTableRow> {\n open: boolean;\n row: T | null;\n config: IDataTableDetailConfig<T>;\n /** Widen the dialog when the detail carries a `content` block. Defaults to the compact `md`. */\n size?: TDialogSize;\n onClose: () => void;\n onEdit?: (row: T) => void;\n isEditDisabled?: (row: T) => boolean;\n onToggleStatus?: (row: T) => void;\n isActive?: (row: T) => boolean;\n canToggleStatus?: (row: T) => boolean;\n}\n\nconst DataTableDetailModal = <T extends IDataTableRow>({\n open,\n row,\n config,\n size = 'md',\n onClose,\n onEdit,\n isEditDisabled,\n onToggleStatus,\n isActive,\n canToggleStatus,\n}: IDataTableDetailModalProps<T>) => {\n const { t } = useTranslation('ui');\n\n useEffect(() => {\n if (!open) return undefined;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose();\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [open, onClose]);\n\n if (!row) return null;\n\n const status = config.status?.(row) ?? null;\n const color = config.color?.(row) ?? null;\n const thumbnail = config.thumbnail?.(row) ?? null;\n const code = config.code?.(row) ?? null;\n const detailContent = config.content?.(row) ?? null;\n const hasDetailContent = detailContent !== null && detailContent !== undefined && detailContent !== false;\n const rowIsActive = isActive?.(row) ?? false;\n const hasFooterActions = (!!onToggleStatus && !!canToggleStatus?.(row)) || !!onEdit;\n\n return (\n // With a `content` block the dialog body must not scroll: the block itself is the only\n // scroller, so the header, the fields and the actions stay put while the list moves.\n <ControlledDialog open={open} size={size} title=\"\" onCancel={onClose} useFooter={false} fitBody={hasDetailContent}>\n <div className={classNames('flex flex-col gap-4 p-4', hasDetailContent && 'max-h-[70vh]')}>\n <div className=\"flex shrink-0 items-start gap-4 pr-8\">\n {color?.hex && (\n <Colors\n colors={[color.hex]}\n isSquare\n label={color.label}\n className=\"h-24 min-h-24 w-24 min-w-24 shrink-0 rounded-lg\"\n />\n )}\n\n {thumbnail?.src && (\n <img\n src={thumbnail.src}\n alt={thumbnail.label ?? ''}\n className=\"h-24 min-h-24 w-24 min-w-24 shrink-0 rounded-lg border border-border object-cover\"\n />\n )}\n\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n <div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n <span className=\"text-xl font-semibold leading-tight text-foreground\">{config.title(row)}</span>\n {status && <DataTableStatusCell value={status} />}\n </div>\n {code && <span className=\"font-mono text-sm text-foreground-subtle\">{code}</span>}\n </div>\n </div>\n\n <hr className=\"shrink-0 border-border-subtle\" />\n\n <div className=\"flex shrink-0 flex-wrap gap-y-4\">\n {config.fields(row).map((field, index) => (\n <div key={`${field.label}-${index}`} className=\"flex basis-1/2 flex-col gap-0.5 pr-4\">\n <span className=\"text-xxs font-semibold uppercase text-foreground-faint\">{field.label}</span>\n <span className=\"text-sm text-foreground\">{field.value}</span>\n </div>\n ))}\n </div>\n\n {hasDetailContent && <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto pr-1\">{detailContent}</div>}\n\n {hasFooterActions && (\n <div className=\"flex shrink-0 items-center justify-end gap-2 border-t border-border-subtle pt-3\">\n {onToggleStatus && canToggleStatus?.(row) && (\n <ControlledButton\n variant=\"outlined\"\n className=\"flex items-center gap-1.5\"\n onClick={() => onToggleStatus(row)}\n >\n <MaterialSymbol icon={rowIsActive ? 'visibility_off' : 'visibility'} size={16} />\n {rowIsActive ? t('actions.deactivate') : t('actions.activate')}\n </ControlledButton>\n )}\n\n {onEdit && (\n <ControlledButton\n variant=\"filled\"\n className=\"flex items-center gap-1.5 bg-brand hover:bg-brand-hover disabled:bg-brand-soft-hover\"\n onClick={() => onEdit(row)}\n disabled={isEditDisabled?.(row)}\n >\n <MaterialSymbol icon=\"edit\" size={16} color=\"white\" />\n {t('actions.edit')}\n </ControlledButton>\n )}\n </div>\n )}\n </div>\n </ControlledDialog>\n );\n};\n\nexport default DataTableDetailModal;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IDataTableDetailColumnsState } from './DataTableDetailTable';
|
|
2
|
+
import { IDataTableColumnConfig, IDataTableRow } from './types';
|
|
3
|
+
interface IDataTableDetailPanelProps<C extends IDataTableRow> {
|
|
4
|
+
columns: Array<IDataTableColumnConfig<C>>;
|
|
5
|
+
rows: Array<C>;
|
|
6
|
+
loading?: boolean;
|
|
7
|
+
onRowClick?: (row: C) => void;
|
|
8
|
+
rowIsDimmed?: (row: C) => boolean;
|
|
9
|
+
emptyMessage?: string;
|
|
10
|
+
columnsState?: IDataTableDetailColumnsState;
|
|
11
|
+
/** Scrollport clientWidth: pins the panel to the visible area (sticky left). */
|
|
12
|
+
slotWidth?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Inset, visually-distinct nested panel for a `detailTable` expansion (AG-Grid
|
|
16
|
+
* style). Owns the card's own scroll context and detects its horizontal
|
|
17
|
+
* overflow so the nested table can show the frozen-column shadow only while the
|
|
18
|
+
* card actually scrolls sideways (no always-on divider line otherwise).
|
|
19
|
+
*/
|
|
20
|
+
declare const DataTableDetailPanel: <C extends IDataTableRow>({ columns, rows, loading, onRowClick, rowIsDimmed, emptyMessage, columnsState, slotWidth, }: IDataTableDetailPanelProps<C>) => import("react").JSX.Element;
|
|
21
|
+
export default DataTableDetailPanel;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState, useEffect } from "react";
|
|
3
|
+
import LoadingSpinner from "../LoadingSpinner.js";
|
|
4
|
+
import DataTableDetailTable from "./DataTableDetailTable.js";
|
|
5
|
+
const DataTableDetailPanel = ({
|
|
6
|
+
columns,
|
|
7
|
+
rows,
|
|
8
|
+
loading = false,
|
|
9
|
+
onRowClick,
|
|
10
|
+
rowIsDimmed,
|
|
11
|
+
emptyMessage,
|
|
12
|
+
columnsState,
|
|
13
|
+
slotWidth
|
|
14
|
+
}) => {
|
|
15
|
+
const scrollRef = useRef(null);
|
|
16
|
+
const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const scroller = scrollRef.current;
|
|
19
|
+
if (!scroller) return void 0;
|
|
20
|
+
const updateOverflow = () => setHasHorizontalOverflow(scroller.scrollWidth > scroller.clientWidth + 1);
|
|
21
|
+
updateOverflow();
|
|
22
|
+
const observer = new ResizeObserver(updateOverflow);
|
|
23
|
+
observer.observe(scroller);
|
|
24
|
+
const nestedTable = scroller.querySelector("table");
|
|
25
|
+
if (nestedTable) observer.observe(nestedTable);
|
|
26
|
+
return () => observer.disconnect();
|
|
27
|
+
}, [loading, rows.length, columns.length]);
|
|
28
|
+
return /* @__PURE__ */ jsx("div", { className: "sticky left-0", style: slotWidth ? { width: slotWidth } : void 0, children: /* @__PURE__ */ jsx(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
ref: scrollRef,
|
|
32
|
+
className: "mx-3 my-2 max-h-[26rem] overflow-auto rounded-lg border border-border bg-surface [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border-emphasis hover:[&::-webkit-scrollbar-thumb]:bg-foreground-faint [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:h-2.5 [&::-webkit-scrollbar]:w-2.5",
|
|
33
|
+
children: loading ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-4", children: /* @__PURE__ */ jsx(LoadingSpinner, { size: 5, color: "foreground-faint" }) }) : /* @__PURE__ */ jsx(
|
|
34
|
+
DataTableDetailTable,
|
|
35
|
+
{
|
|
36
|
+
columns,
|
|
37
|
+
rows,
|
|
38
|
+
onRowClick,
|
|
39
|
+
rowIsDimmed,
|
|
40
|
+
emptyMessage,
|
|
41
|
+
columnsState,
|
|
42
|
+
showFrozenShadow: hasHorizontalOverflow
|
|
43
|
+
}
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
47
|
+
};
|
|
48
|
+
export {
|
|
49
|
+
DataTableDetailPanel as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=DataTableDetailPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableDetailPanel.js","sources":["../../../../src/components/UI/DataTable/DataTableDetailPanel.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport LoadingSpinner from '@/components/UI/LoadingSpinner';\n\nimport DataTableDetailTable, { type IDataTableDetailColumnsState } from './DataTableDetailTable';\nimport type { IDataTableColumnConfig, IDataTableRow } from './types';\n\ninterface IDataTableDetailPanelProps<C extends IDataTableRow> {\n columns: Array<IDataTableColumnConfig<C>>;\n rows: Array<C>;\n loading?: boolean;\n onRowClick?: (row: C) => void;\n rowIsDimmed?: (row: C) => boolean;\n emptyMessage?: string;\n columnsState?: IDataTableDetailColumnsState;\n /** Scrollport clientWidth: pins the panel to the visible area (sticky left). */\n slotWidth?: number;\n}\n\n/**\n * Inset, visually-distinct nested panel for a `detailTable` expansion (AG-Grid\n * style). Owns the card's own scroll context and detects its horizontal\n * overflow so the nested table can show the frozen-column shadow only while the\n * card actually scrolls sideways (no always-on divider line otherwise).\n */\nconst DataTableDetailPanel = <C extends IDataTableRow>({\n columns,\n rows,\n loading = false,\n onRowClick,\n rowIsDimmed,\n emptyMessage,\n columnsState,\n slotWidth,\n}: IDataTableDetailPanelProps<C>) => {\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const [hasHorizontalOverflow, setHasHorizontalOverflow] = useState(false);\n\n useEffect(() => {\n const scroller = scrollRef.current;\n if (!scroller) return undefined;\n\n const updateOverflow = () => setHasHorizontalOverflow(scroller.scrollWidth > scroller.clientWidth + 1);\n updateOverflow();\n\n const observer = new ResizeObserver(updateOverflow);\n observer.observe(scroller);\n const nestedTable = scroller.querySelector('table');\n if (nestedTable) observer.observe(nestedTable);\n\n return () => observer.disconnect();\n }, [loading, rows.length, columns.length]);\n\n return (\n <div className=\"sticky left-0\" style={slotWidth ? { width: slotWidth } : undefined}>\n <div\n ref={scrollRef}\n className=\"mx-3 my-2 max-h-[26rem] overflow-auto rounded-lg border border-border bg-surface [scrollbar-width:thin] [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border-emphasis hover:[&::-webkit-scrollbar-thumb]:bg-foreground-faint [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar]:h-2.5 [&::-webkit-scrollbar]:w-2.5\"\n >\n {loading ? (\n <div className=\"flex items-center justify-center py-4\">\n <LoadingSpinner size={5} color=\"foreground-faint\" />\n </div>\n ) : (\n <DataTableDetailTable\n columns={columns}\n rows={rows}\n onRowClick={onRowClick}\n rowIsDimmed={rowIsDimmed}\n emptyMessage={emptyMessage}\n columnsState={columnsState}\n showFrozenShadow={hasHorizontalOverflow}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default DataTableDetailPanel;\n"],"names":[],"mappings":";;;;AAyBA,MAAM,uBAAuB,CAA0B;AAAA,EACrD;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAqC;AACnC,QAAM,YAAY,OAA8B,IAAI;AACpD,QAAM,CAAC,uBAAuB,wBAAwB,IAAI,SAAS,KAAK;AAExE,YAAU,MAAM;AACd,UAAM,WAAW,UAAU;AAC3B,QAAI,CAAC,SAAU,QAAO;AAEtB,UAAM,iBAAiB,MAAM,yBAAyB,SAAS,cAAc,SAAS,cAAc,CAAC;AACrG,mBAAA;AAEA,UAAM,WAAW,IAAI,eAAe,cAAc;AAClD,aAAS,QAAQ,QAAQ;AACzB,UAAM,cAAc,SAAS,cAAc,OAAO;AAClD,QAAI,YAAa,UAAS,QAAQ,WAAW;AAE7C,WAAO,MAAM,SAAS,WAAA;AAAA,EACxB,GAAG,CAAC,SAAS,KAAK,QAAQ,QAAQ,MAAM,CAAC;AAEzC,SACE,oBAAC,OAAA,EAAI,WAAU,iBAAgB,OAAO,YAAY,EAAE,OAAO,UAAA,IAAc,QACvE,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAU;AAAA,MAET,UAAA,UACC,oBAAC,OAAA,EAAI,WAAU,yCACb,UAAA,oBAAC,gBAAA,EAAe,MAAM,GAAG,OAAM,mBAAA,CAAmB,EAAA,CACpD,IAEA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,kBAAkB;AAAA,QAAA;AAAA,MAAA;AAAA,IACpB;AAAA,EAAA,GAGN;AAEJ;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Updater, VisibilityState } from '@tanstack/react-table';
|
|
2
|
+
import { IDataTableColumnConfig, IDataTableRow } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Column preferences of the nested detail table, owned by the DataTable (one
|
|
5
|
+
* shared state for every expanded row) and persisted under `${entityKey}:detail`.
|
|
6
|
+
*/
|
|
7
|
+
export interface IDataTableDetailColumnsState {
|
|
8
|
+
visibility: VisibilityState;
|
|
9
|
+
toggleVisibility: (columnId: string) => void;
|
|
10
|
+
order: Array<string>;
|
|
11
|
+
onOrderChange: (updater: Updater<Array<string>>) => void;
|
|
12
|
+
resetOrder: () => void;
|
|
13
|
+
}
|
|
14
|
+
interface IDataTableDetailTableProps<C extends IDataTableRow> {
|
|
15
|
+
columns: Array<IDataTableColumnConfig<C>>;
|
|
16
|
+
rows: Array<C>;
|
|
17
|
+
onRowClick?: (row: C) => void;
|
|
18
|
+
rowIsDimmed?: (row: C) => boolean;
|
|
19
|
+
emptyMessage?: string;
|
|
20
|
+
columnsState?: IDataTableDetailColumnsState;
|
|
21
|
+
/** Show the frozen actions column shadow (set while the card scrolls sideways). */
|
|
22
|
+
showFrozenShadow?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Nested table rendered inside the detail panel card of a `detailTable`
|
|
26
|
+
* expansion (see DataTableBody for the inset/tinted card that makes it read as
|
|
27
|
+
* content belonging to the parent row). The card is its own scroll context:
|
|
28
|
+
* the header pins at the card top, the first column freezes left and the actions
|
|
29
|
+
* column freezes right, all relative to the card. Reuses the standard cell
|
|
30
|
+
* renderer catalog and carries its own "Colunas" menu (visibility + drag
|
|
31
|
+
* reordering, shared with the parent toggle); it has no toolbar, sorting or
|
|
32
|
+
* pagination.
|
|
33
|
+
*/
|
|
34
|
+
declare const DataTableDetailTable: <C extends IDataTableRow>({ columns: columnsProp, rows: rowsProp, onRowClick, rowIsDimmed, emptyMessage, columnsState, showFrozenShadow, }: IDataTableDetailTableProps<C>) => import("react").JSX.Element;
|
|
35
|
+
export default DataTableDetailTable;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import classNames from "classnames";
|
|
4
|
+
import { useTranslation } from "react-i18next";
|
|
5
|
+
import NoDataFound from "../NoDataFound/index.js";
|
|
6
|
+
import DataTableActionsCell from "./cells/DataTableActionsCell.js";
|
|
7
|
+
import DataTableCell from "./cells/DataTableCell.js";
|
|
8
|
+
import { alignClass, resolveColumnWidthClass, FROZEN_COLUMN_SHADOW } from "./dataTableClasses.js";
|
|
9
|
+
import { DataTableColumnMenu } from "./DataTableColumnToggle.js";
|
|
10
|
+
import { isBadgeColumnType } from "./dataTableColumnWidths.js";
|
|
11
|
+
const DataTableDetailTable = ({
|
|
12
|
+
columns: columnsProp,
|
|
13
|
+
rows: rowsProp,
|
|
14
|
+
onRowClick,
|
|
15
|
+
rowIsDimmed,
|
|
16
|
+
emptyMessage,
|
|
17
|
+
columnsState,
|
|
18
|
+
showFrozenShadow = false
|
|
19
|
+
}) => {
|
|
20
|
+
const { t } = useTranslation("ui");
|
|
21
|
+
const columns = useMemo(() => Array.isArray(columnsProp) ? columnsProp : [], [columnsProp]);
|
|
22
|
+
const rows = useMemo(() => Array.isArray(rowsProp) ? rowsProp : [], [rowsProp]);
|
|
23
|
+
const columnOrder = columnsState?.order;
|
|
24
|
+
const columnVisibility = columnsState?.visibility;
|
|
25
|
+
const orderedColumns = useMemo(() => {
|
|
26
|
+
if (!columnOrder?.length) return columns;
|
|
27
|
+
const columnById = new Map(columns.map((column) => [column.id, column]));
|
|
28
|
+
const ordered = columnOrder.map((columnId) => columnById.get(columnId)).filter((column) => !!column);
|
|
29
|
+
const orderedIds = new Set(ordered.map((column) => column.id));
|
|
30
|
+
for (const column of columns) if (!orderedIds.has(column.id)) ordered.push(column);
|
|
31
|
+
return ordered;
|
|
32
|
+
}, [columns, columnOrder]);
|
|
33
|
+
const visibleColumns = useMemo(
|
|
34
|
+
() => orderedColumns.filter((column) => {
|
|
35
|
+
if (column.hideable === false) return true;
|
|
36
|
+
if (columnVisibility) return columnVisibility[column.id] !== false;
|
|
37
|
+
return !column.defaultHidden;
|
|
38
|
+
}),
|
|
39
|
+
[orderedColumns, columnVisibility]
|
|
40
|
+
);
|
|
41
|
+
const flexColumnId = useMemo(() => {
|
|
42
|
+
const candidates = visibleColumns.filter(
|
|
43
|
+
(column, index) => index > 0 && column.type !== "actions" && !isBadgeColumnType(column.type)
|
|
44
|
+
);
|
|
45
|
+
return candidates[candidates.length - 1]?.id ?? null;
|
|
46
|
+
}, [visibleColumns]);
|
|
47
|
+
if (rows.length === 0) {
|
|
48
|
+
return /* @__PURE__ */ jsx("div", { className: "px-4 py-3", children: /* @__PURE__ */ jsx(NoDataFound, { compact: true, message: emptyMessage ?? t("dataTable.empty") }) });
|
|
49
|
+
}
|
|
50
|
+
const lastColumnIndex = visibleColumns.length - 1;
|
|
51
|
+
const isActionsColumn = (column, index) => index === lastColumnIndex && column.type === "actions";
|
|
52
|
+
return /* @__PURE__ */ jsxs("table", { className: "w-full table-auto border-separate border-spacing-0", children: [
|
|
53
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { className: "bg-muted", children: visibleColumns.map((column, columnIndex) => {
|
|
54
|
+
const isFirstColumn = columnIndex === 0;
|
|
55
|
+
const isActions = isActionsColumn(column, columnIndex);
|
|
56
|
+
return /* @__PURE__ */ jsx(
|
|
57
|
+
"th",
|
|
58
|
+
{
|
|
59
|
+
className: classNames(
|
|
60
|
+
// Header band pinned to the top of the enclosing card (the
|
|
61
|
+
// card provides the border and rounded corners, so no per-cell
|
|
62
|
+
// rounding here). z tiers are local to the card's own scroll
|
|
63
|
+
// context: header above rows, frozen first/actions header
|
|
64
|
+
// cells above the scrolling header cells.
|
|
65
|
+
"sticky top-0 z-20 whitespace-nowrap border-b border-border bg-muted px-4 py-2.5 text-xxs font-semibold uppercase tracking-wide text-foreground-subtle",
|
|
66
|
+
alignClass(column.headerAlign ?? column.cellAlign),
|
|
67
|
+
resolveColumnWidthClass(column, "", { isFlexColumn: column.id === flexColumnId }),
|
|
68
|
+
isFirstColumn && "left-0 z-30",
|
|
69
|
+
isActions && "right-0 z-30",
|
|
70
|
+
isActions && showFrozenShadow && FROZEN_COLUMN_SHADOW
|
|
71
|
+
),
|
|
72
|
+
children: isFirstColumn ? /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center justify-between gap-2", children: [
|
|
73
|
+
/* @__PURE__ */ jsx("span", { children: column.header }),
|
|
74
|
+
columnsState && /* @__PURE__ */ jsx(
|
|
75
|
+
DataTableColumnMenu,
|
|
76
|
+
{
|
|
77
|
+
columns,
|
|
78
|
+
columnOrder: columnsState.order,
|
|
79
|
+
onColumnOrderChange: columnsState.onOrderChange,
|
|
80
|
+
resetColumnOrder: columnsState.resetOrder,
|
|
81
|
+
isColumnVisible: (columnId) => columnsState.visibility[columnId] !== false,
|
|
82
|
+
onToggleColumnVisibility: columnsState.toggleVisibility
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
] }) : column.header
|
|
86
|
+
},
|
|
87
|
+
column.id
|
|
88
|
+
);
|
|
89
|
+
}) }) }),
|
|
90
|
+
/* @__PURE__ */ jsx("tbody", { className: "[&_tr:last-child_td]:border-b-0", children: rows.map((row) => {
|
|
91
|
+
const isDimmed = rowIsDimmed?.(row) ?? false;
|
|
92
|
+
return /* @__PURE__ */ jsx(
|
|
93
|
+
"tr",
|
|
94
|
+
{
|
|
95
|
+
onClick: () => onRowClick?.(row),
|
|
96
|
+
className: classNames("bg-surface transition-colors", {
|
|
97
|
+
"cursor-pointer hover:bg-muted": !!onRowClick
|
|
98
|
+
}),
|
|
99
|
+
children: visibleColumns.map((column, columnIndex) => {
|
|
100
|
+
const isFirstColumn = columnIndex === 0;
|
|
101
|
+
const isActions = isActionsColumn(column, columnIndex);
|
|
102
|
+
const cellContent = column.type === "actions" && column.actions ? /* @__PURE__ */ jsx(DataTableActionsCell, { row, actions: column.actions }) : /* @__PURE__ */ jsx(DataTableCell, { column, row });
|
|
103
|
+
return /* @__PURE__ */ jsx(
|
|
104
|
+
"td",
|
|
105
|
+
{
|
|
106
|
+
className: classNames(
|
|
107
|
+
"border-b border-border bg-inherit px-4 py-2 align-middle",
|
|
108
|
+
alignClass(column.cellAlign),
|
|
109
|
+
resolveColumnWidthClass(column, "", { isFlexColumn: column.id === flexColumnId }),
|
|
110
|
+
{ "opacity-60": isDimmed && column.type !== "actions" },
|
|
111
|
+
isFirstColumn && "sticky left-0 z-10",
|
|
112
|
+
isActions && "sticky right-0 z-10",
|
|
113
|
+
isActions && showFrozenShadow && FROZEN_COLUMN_SHADOW
|
|
114
|
+
),
|
|
115
|
+
children: isFirstColumn ? /* @__PURE__ */ jsx("div", { className: "min-w-0", children: cellContent }) : cellContent
|
|
116
|
+
},
|
|
117
|
+
column.id
|
|
118
|
+
);
|
|
119
|
+
})
|
|
120
|
+
},
|
|
121
|
+
row.id
|
|
122
|
+
);
|
|
123
|
+
}) })
|
|
124
|
+
] });
|
|
125
|
+
};
|
|
126
|
+
export {
|
|
127
|
+
DataTableDetailTable as default
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=DataTableDetailTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableDetailTable.js","sources":["../../../../src/components/UI/DataTable/DataTableDetailTable.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport type { Updater, VisibilityState } from '@tanstack/react-table';\n\nimport NoDataFound from '../NoDataFound';\n\nimport DataTableActionsCell from './cells/DataTableActionsCell';\nimport DataTableCell from './cells/DataTableCell';\nimport { alignClass, FROZEN_COLUMN_SHADOW, isBadgeColumnType, resolveColumnWidthClass } from './dataTableClasses';\nimport { DataTableColumnMenu } from './DataTableColumnToggle';\nimport type { IDataTableColumnConfig, IDataTableRow } from './types';\n\n/**\n * Column preferences of the nested detail table, owned by the DataTable (one\n * shared state for every expanded row) and persisted under `${entityKey}:detail`.\n */\nexport interface IDataTableDetailColumnsState {\n visibility: VisibilityState;\n toggleVisibility: (columnId: string) => void;\n order: Array<string>;\n onOrderChange: (updater: Updater<Array<string>>) => void;\n resetOrder: () => void;\n}\n\ninterface IDataTableDetailTableProps<C extends IDataTableRow> {\n columns: Array<IDataTableColumnConfig<C>>;\n rows: Array<C>;\n onRowClick?: (row: C) => void;\n rowIsDimmed?: (row: C) => boolean;\n emptyMessage?: string;\n columnsState?: IDataTableDetailColumnsState;\n /** Show the frozen actions column shadow (set while the card scrolls sideways). */\n showFrozenShadow?: boolean;\n}\n\n/**\n * Nested table rendered inside the detail panel card of a `detailTable`\n * expansion (see DataTableBody for the inset/tinted card that makes it read as\n * content belonging to the parent row). The card is its own scroll context:\n * the header pins at the card top, the first column freezes left and the actions\n * column freezes right, all relative to the card. Reuses the standard cell\n * renderer catalog and carries its own \"Colunas\" menu (visibility + drag\n * reordering, shared with the parent toggle); it has no toolbar, sorting or\n * pagination.\n */\nconst DataTableDetailTable = <C extends IDataTableRow>({\n columns: columnsProp,\n rows: rowsProp,\n onRowClick,\n rowIsDimmed,\n emptyMessage,\n columnsState,\n showFrozenShadow = false,\n}: IDataTableDetailTableProps<C>) => {\n const { t } = useTranslation('ui');\n\n const columns = useMemo(() => (Array.isArray(columnsProp) ? columnsProp : []), [columnsProp]);\n const rows = useMemo(() => (Array.isArray(rowsProp) ? rowsProp : []), [rowsProp]);\n\n const columnOrder = columnsState?.order;\n const columnVisibility = columnsState?.visibility;\n\n // Config columns re-sequenced by the persisted order; ids missing from the\n // order (defensive) are appended in config order.\n const orderedColumns = useMemo(() => {\n if (!columnOrder?.length) return columns;\n\n const columnById = new Map(columns.map((column) => [column.id, column]));\n const ordered = columnOrder\n .map((columnId) => columnById.get(columnId))\n .filter((column): column is IDataTableColumnConfig<C> => !!column);\n\n const orderedIds = new Set(ordered.map((column) => column.id));\n for (const column of columns) if (!orderedIds.has(column.id)) ordered.push(column);\n\n return ordered;\n }, [columns, columnOrder]);\n\n const visibleColumns = useMemo(\n () =>\n orderedColumns.filter((column) => {\n if (column.hideable === false) return true;\n if (columnVisibility) return columnVisibility[column.id] !== false;\n return !column.defaultHidden;\n }),\n [orderedColumns, columnVisibility],\n );\n\n // Under table-auto layout, width classes are only minimum hints: leftover\n // width spreads across every column, including actions, which would render it\n // wider than the parent's. One data column must absorb all slack (w-full) so\n // the actions column keeps its intrinsic width. When no visible column\n // declares w-full (e.g. the configured absorber was hidden), fall back to the\n // last non-actions column that is not the sticky first one.\n const flexColumnId = useMemo(() => {\n const candidates = visibleColumns.filter(\n (column, index) => index > 0 && column.type !== 'actions' && !isBadgeColumnType(column.type),\n );\n return candidates[candidates.length - 1]?.id ?? null;\n }, [visibleColumns]);\n\n if (rows.length === 0) {\n return (\n <div className=\"px-4 py-3\">\n <NoDataFound compact message={emptyMessage ?? t('dataTable.empty')} />\n </div>\n );\n }\n\n const lastColumnIndex = visibleColumns.length - 1;\n const isActionsColumn = (column: IDataTableColumnConfig<C>, index: number) =>\n index === lastColumnIndex && column.type === 'actions';\n\n return (\n <table className=\"w-full table-auto border-separate border-spacing-0\">\n <thead>\n <tr className=\"bg-muted\">\n {visibleColumns.map((column, columnIndex) => {\n const isFirstColumn = columnIndex === 0;\n const isActions = isActionsColumn(column, columnIndex);\n\n return (\n <th\n key={column.id}\n className={classNames(\n // Header band pinned to the top of the enclosing card (the\n // card provides the border and rounded corners, so no per-cell\n // rounding here). z tiers are local to the card's own scroll\n // context: header above rows, frozen first/actions header\n // cells above the scrolling header cells.\n 'sticky top-0 z-20 whitespace-nowrap border-b border-border bg-muted px-4 py-2.5 text-xxs font-semibold uppercase tracking-wide text-foreground-subtle',\n alignClass(column.headerAlign ?? column.cellAlign),\n resolveColumnWidthClass(column, '', { isFlexColumn: column.id === flexColumnId }),\n isFirstColumn && 'left-0 z-30',\n isActions && 'right-0 z-30',\n isActions && showFrozenShadow && FROZEN_COLUMN_SHADOW,\n )}\n >\n {isFirstColumn ? (\n <div className=\"flex min-w-0 items-center justify-between gap-2\">\n <span>{column.header}</span>\n {columnsState && (\n <DataTableColumnMenu\n columns={columns}\n columnOrder={columnsState.order}\n onColumnOrderChange={columnsState.onOrderChange}\n resetColumnOrder={columnsState.resetOrder}\n isColumnVisible={(columnId) => columnsState.visibility[columnId] !== false}\n onToggleColumnVisibility={columnsState.toggleVisibility}\n />\n )}\n </div>\n ) : (\n column.header\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n\n <tbody className=\"[&_tr:last-child_td]:border-b-0\">\n {rows.map((row) => {\n const isDimmed = rowIsDimmed?.(row) ?? false;\n\n return (\n <tr\n key={row.id}\n onClick={() => onRowClick?.(row)}\n className={classNames('bg-surface transition-colors', {\n 'cursor-pointer hover:bg-muted': !!onRowClick,\n })}\n >\n {visibleColumns.map((column, columnIndex) => {\n const isFirstColumn = columnIndex === 0;\n const isActions = isActionsColumn(column, columnIndex);\n\n const cellContent =\n column.type === 'actions' && column.actions ? (\n <DataTableActionsCell row={row} actions={column.actions} />\n ) : (\n <DataTableCell column={column} row={row} />\n );\n\n return (\n <td\n key={column.id}\n className={classNames(\n 'border-b border-border bg-inherit px-4 py-2 align-middle',\n alignClass(column.cellAlign),\n resolveColumnWidthClass(column, '', { isFlexColumn: column.id === flexColumnId }),\n { 'opacity-60': isDimmed && column.type !== 'actions' },\n isFirstColumn && 'sticky left-0 z-10',\n isActions && 'sticky right-0 z-10',\n isActions && showFrozenShadow && FROZEN_COLUMN_SHADOW,\n )}\n >\n {isFirstColumn ? <div className=\"min-w-0\">{cellContent}</div> : cellContent}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n};\n\nexport default DataTableDetailTable;\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface IDataTableEditModeButtonProps {
|
|
3
|
+
active: boolean;
|
|
4
|
+
onToggle: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Liga e desliga a edição em célula. Fica junto do controle de colunas, no rodapé
|
|
8
|
+
* da tabela: o modo pertence à tabela, não ao cabeçalho da página, e enquanto ele
|
|
9
|
+
* está ativo o clique na linha deixa de abrir o registro.
|
|
10
|
+
*/
|
|
11
|
+
declare const DataTableEditModeButton: React.FC<IDataTableEditModeButtonProps>;
|
|
12
|
+
export default DataTableEditModeButton;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import classNames from "classnames";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
4
|
+
import ControlledButton from "../../Form/ControlledButton.js";
|
|
5
|
+
import ControlledTooltip from "../ControlledTooltip.js";
|
|
6
|
+
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
7
|
+
const DataTableEditModeButton = ({ active, onToggle }) => {
|
|
8
|
+
const { t } = useTranslation("ui");
|
|
9
|
+
return /* @__PURE__ */ jsx(ControlledTooltip, { content: active ? t("dataTable.editMode.activeHint") : t("dataTable.editMode.inactiveHint"), children: /* @__PURE__ */ jsxs(
|
|
10
|
+
ControlledButton,
|
|
11
|
+
{
|
|
12
|
+
defaultHtmlButton: true,
|
|
13
|
+
onClick: onToggle,
|
|
14
|
+
"aria-pressed": active,
|
|
15
|
+
className: classNames(
|
|
16
|
+
"inline-flex shrink-0 items-center gap-1.5 rounded-lg border p-2.5 text-sm font-medium shadow-sm transition-colors",
|
|
17
|
+
active ? "border-brand-border bg-brand text-brand-fg hover:bg-brand-hover" : "border-border bg-surface text-foreground-subtle hover:bg-muted-hover hover:text-foreground-muted"
|
|
18
|
+
),
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsx(MaterialSymbol, { icon: active ? "edit_off" : "edit", size: 18 }),
|
|
21
|
+
/* @__PURE__ */ jsx("span", { children: active ? t("dataTable.editMode.exit") : t("dataTable.editMode.enter") })
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
) });
|
|
25
|
+
};
|
|
26
|
+
export {
|
|
27
|
+
DataTableEditModeButton as default
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=DataTableEditModeButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableEditModeButton.js","sources":["../../../../src/components/UI/DataTable/DataTableEditModeButton.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledTooltip from '@/components/UI/ControlledTooltip';\nimport { MaterialSymbol } from '@/components/UI/MaterialSymbol';\n\ninterface IDataTableEditModeButtonProps {\n active: boolean;\n onToggle: () => void;\n}\n\n/**\n * Liga e desliga a edição em célula. Fica junto do controle de colunas, no rodapé\n * da tabela: o modo pertence à tabela, não ao cabeçalho da página, e enquanto ele\n * está ativo o clique na linha deixa de abrir o registro.\n */\nconst DataTableEditModeButton: React.FC<IDataTableEditModeButtonProps> = ({ active, onToggle }) => {\n const { t } = useTranslation('ui');\n\n return (\n <ControlledTooltip content={active ? t('dataTable.editMode.activeHint') : t('dataTable.editMode.inactiveHint')}>\n <ControlledButton\n defaultHtmlButton\n onClick={onToggle}\n aria-pressed={active}\n className={classNames(\n 'inline-flex shrink-0 items-center gap-1.5 rounded-lg border p-2.5 text-sm font-medium shadow-sm transition-colors',\n active\n ? 'border-brand-border bg-brand text-brand-fg hover:bg-brand-hover'\n : 'border-border bg-surface text-foreground-subtle hover:bg-muted-hover hover:text-foreground-muted',\n )}\n >\n <MaterialSymbol icon={active ? 'edit_off' : 'edit'} size={18} />\n <span>{active ? t('dataTable.editMode.exit') : t('dataTable.editMode.enter')}</span>\n </ControlledButton>\n </ControlledTooltip>\n );\n};\n\nexport default DataTableEditModeButton;\n"],"names":[],"mappings":";;;;;;AAkBA,MAAM,0BAAmE,CAAC,EAAE,QAAQ,eAAe;AACjG,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AAEjC,SACE,oBAAC,qBAAkB,SAAS,SAAS,EAAE,+BAA+B,IAAI,EAAE,iCAAiC,GAC3G,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,mBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,gBAAc;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA,SACI,oEACA;AAAA,MAAA;AAAA,MAGN,UAAA;AAAA,QAAA,oBAAC,kBAAe,MAAM,SAAS,aAAa,QAAQ,MAAM,IAAI;AAAA,QAC9D,oBAAC,UAAM,UAAA,SAAS,EAAE,yBAAyB,IAAI,EAAE,0BAA0B,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEjF;AAEJ;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TFiltersSize, TFiltersVariant } from '../../Search/filters';
|
|
2
|
+
import { IDataTableFiltersConfig, IDataTableRow, TDataTableFilterValues } from './types';
|
|
3
|
+
interface IDataTableFiltersProps<T extends IDataTableRow> {
|
|
4
|
+
filters: IDataTableFiltersConfig<T>;
|
|
5
|
+
values: TDataTableFilterValues;
|
|
6
|
+
onChange: (values: TDataTableFilterValues) => void;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
variant?: TFiltersVariant;
|
|
9
|
+
size?: TFiltersSize;
|
|
10
|
+
/** Persists the applied values in the URL under `f.<urlKey>.<fieldKey>`. */
|
|
11
|
+
urlKey?: string;
|
|
12
|
+
onFirstOpen?: () => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Adapter between a table config and the shared filter panel. The panel owns
|
|
16
|
+
* the draft, the dirty state, the badge count and the discard guard, so this
|
|
17
|
+
* file no longer mirrors state in a ref to survive the commit ordering.
|
|
18
|
+
*/
|
|
19
|
+
declare const DataTableFilters: <T extends IDataTableRow>({ filters, values, onChange, disabled, variant, size, urlKey, onFirstOpen, }: IDataTableFiltersProps<T>) => import("react").JSX.Element;
|
|
20
|
+
export default DataTableFilters;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import "classnames";
|
|
4
|
+
import "react-i18next";
|
|
5
|
+
import "../../Form/ControlledButton.js";
|
|
6
|
+
import "tailwind-merge";
|
|
7
|
+
import "../ControlledMenu.js";
|
|
8
|
+
import "motion/react";
|
|
9
|
+
import "react-dom";
|
|
10
|
+
import "@floating-ui/dom";
|
|
11
|
+
import "../../../motion/motionPresets.js";
|
|
12
|
+
import "../../../motion/motionTokens.js";
|
|
13
|
+
import "../MaterialSymbol/index.js";
|
|
14
|
+
import "date-fns";
|
|
15
|
+
import "date-fns/locale";
|
|
16
|
+
import "react-day-picker";
|
|
17
|
+
import "../ControlledPopover.js";
|
|
18
|
+
import "react-day-picker/style.css";
|
|
19
|
+
import "../../DateTime/DateRangePicker.js";
|
|
20
|
+
import "react-infinite-scroll-component";
|
|
21
|
+
import "react-window";
|
|
22
|
+
import "../NoDataFound/index.js";
|
|
23
|
+
/* empty css */
|
|
24
|
+
import "../../Search/filters/FiltersButton.js";
|
|
25
|
+
import "../../../helpers/utilityHelpers.js";
|
|
26
|
+
import FiltersPanel from "../../Search/filters/FiltersPanel.js";
|
|
27
|
+
import "react-router-dom";
|
|
28
|
+
const DataTableFilters = ({
|
|
29
|
+
filters,
|
|
30
|
+
values,
|
|
31
|
+
onChange,
|
|
32
|
+
disabled,
|
|
33
|
+
variant,
|
|
34
|
+
size,
|
|
35
|
+
urlKey,
|
|
36
|
+
onFirstOpen
|
|
37
|
+
}) => {
|
|
38
|
+
const schema = useMemo(
|
|
39
|
+
() => ({
|
|
40
|
+
title: filters?.title,
|
|
41
|
+
subtitle: filters?.subtitle,
|
|
42
|
+
groups: filters?.groups,
|
|
43
|
+
fields: filters?.fields ?? []
|
|
44
|
+
}),
|
|
45
|
+
[filters]
|
|
46
|
+
);
|
|
47
|
+
return /* @__PURE__ */ jsx(
|
|
48
|
+
FiltersPanel,
|
|
49
|
+
{
|
|
50
|
+
schema,
|
|
51
|
+
values,
|
|
52
|
+
onChange,
|
|
53
|
+
disabled,
|
|
54
|
+
variant,
|
|
55
|
+
size,
|
|
56
|
+
urlKey,
|
|
57
|
+
onFirstOpen
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
export {
|
|
62
|
+
DataTableFilters as default
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=DataTableFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableFilters.js","sources":["../../../../src/components/UI/DataTable/DataTableFilters.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { FiltersPanel, IFiltersSchema, TFiltersSize, TFiltersVariant } from '@/components/Search/filters';\n\nimport type { IDataTableFiltersConfig, IDataTableRow, TDataTableFilterValues } from './types';\n\ninterface IDataTableFiltersProps<T extends IDataTableRow> {\n filters: IDataTableFiltersConfig<T>;\n values: TDataTableFilterValues;\n onChange: (values: TDataTableFilterValues) => void;\n disabled?: boolean;\n variant?: TFiltersVariant;\n size?: TFiltersSize;\n /** Persists the applied values in the URL under `f.<urlKey>.<fieldKey>`. */\n urlKey?: string;\n onFirstOpen?: () => void;\n}\n\n/**\n * Adapter between a table config and the shared filter panel. The panel owns\n * the draft, the dirty state, the badge count and the discard guard, so this\n * file no longer mirrors state in a ref to survive the commit ordering.\n */\nconst DataTableFilters = <T extends IDataTableRow>({\n filters,\n values,\n onChange,\n disabled,\n variant,\n size,\n urlKey,\n onFirstOpen,\n}: IDataTableFiltersProps<T>) => {\n const schema = useMemo<IFiltersSchema>(\n () => ({\n title: filters?.title,\n subtitle: filters?.subtitle,\n groups: filters?.groups,\n fields: filters?.fields ?? [],\n }),\n [filters],\n );\n\n return (\n <FiltersPanel\n schema={schema}\n values={values}\n onChange={onChange}\n disabled={disabled}\n variant={variant}\n size={size}\n urlKey={urlKey}\n onFirstOpen={onFirstOpen}\n />\n );\n};\n\nexport default DataTableFilters;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,mBAAmB,CAA0B;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAiC;AAC/B,QAAM,SAAS;AAAA,IACb,OAAO;AAAA,MACL,OAAO,SAAS;AAAA,MAChB,UAAU,SAAS;AAAA,MACnB,QAAQ,SAAS;AAAA,MACjB,QAAQ,SAAS,UAAU,CAAA;AAAA,IAAC;AAAA,IAE9B,CAAC,OAAO;AAAA,EAAA;AAGV,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Table, Updater } from '@tanstack/react-table';
|
|
2
|
+
import { IDataTableColumnConfig, IDataTableRow } from './types';
|
|
3
|
+
interface IDataTableHeadProps<T extends IDataTableRow> {
|
|
4
|
+
table: Table<T>;
|
|
5
|
+
columns: Array<IDataTableColumnConfig<T>>;
|
|
6
|
+
columnConfigById: Map<string, IDataTableColumnConfig<T>>;
|
|
7
|
+
/** Row-derived widths for actions/badge columns; other columns fall back to the seed. */
|
|
8
|
+
columnContentWidths: Map<string, number>;
|
|
9
|
+
columnOrder: Array<string>;
|
|
10
|
+
onColumnOrderChange: (updater: Updater<Array<string>>) => void;
|
|
11
|
+
resetColumnOrder: () => void;
|
|
12
|
+
resetColumnSizing: () => void;
|
|
13
|
+
onHeaderSortClick: (columnConfig: IDataTableColumnConfig<T>) => void;
|
|
14
|
+
resolveSortDirection: (columnConfig: IDataTableColumnConfig<T>) => false | 'asc' | 'desc';
|
|
15
|
+
/** Omite o toggle de colunas do cabeçalho (quando o host o renderiza no toolbar). */
|
|
16
|
+
hideColumnToggle?: boolean;
|
|
17
|
+
/** Column that absorbs leftover horizontal space under table-fixed. */
|
|
18
|
+
flexColumnId?: string | null;
|
|
19
|
+
/** Show the frozen actions column shadow (set while the table scrolls sideways). */
|
|
20
|
+
showActionsShadow?: boolean;
|
|
21
|
+
/** Denser cell padding for embedded/editor (fit) layouts. */
|
|
22
|
+
dense?: boolean;
|
|
23
|
+
/** Roomier cell padding and type scale, for tables that need to read bigger. */
|
|
24
|
+
spacious?: boolean;
|
|
25
|
+
}
|
|
26
|
+
declare const DataTableHead: <T extends IDataTableRow>({ table, columns, columnConfigById, columnContentWidths, columnOrder, onColumnOrderChange, resetColumnOrder, resetColumnSizing, onHeaderSortClick, resolveSortDirection, hideColumnToggle, flexColumnId, showActionsShadow, dense, spacious, }: IDataTableHeadProps<T>) => import("react").JSX.Element;
|
|
27
|
+
export default DataTableHead;
|