@pautena/react-design-system 0.21.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/Autocomplete/Autocomplete.d.ts +99 -0
- package/dist/Autocomplete/Autocomplete.mjs +47 -0
- package/dist/Autocomplete/Autocomplete.mjs.map +1 -0
- package/dist/Autocomplete/index.d.ts +2 -0
- package/dist/{board/board.d.ts → Board/Board.d.ts} +8 -4
- package/dist/Board/Board.mjs +60 -0
- package/dist/Board/Board.mjs.map +1 -0
- package/dist/Board/index.d.ts +2 -0
- package/dist/BootstrapDialog/BootstrapDialog.d.ts +31 -0
- package/dist/BootstrapDialog/BootstrapDialog.mjs +128 -0
- package/dist/BootstrapDialog/BootstrapDialog.mjs.map +1 -0
- package/dist/BootstrapDialog/index.d.ts +2 -0
- package/dist/{bullet/bullet.d.ts → Bullet/Bullet.d.ts} +5 -1
- package/dist/Bullet/Bullet.mjs +24 -0
- package/dist/Bullet/Bullet.mjs.map +1 -0
- package/dist/Bullet/index.d.ts +2 -0
- package/dist/{confirm-dialog/confirm-dialog.d.ts → ConfirmDialog/ConfirmDialog.d.ts} +8 -3
- package/dist/ConfirmDialog/ConfirmDialog.mjs +54 -0
- package/dist/ConfirmDialog/ConfirmDialog.mjs.map +1 -0
- package/dist/ConfirmDialog/index.d.ts +2 -0
- package/dist/Content/Content.d.ts +6 -0
- package/dist/Content/Content.mjs +10 -0
- package/dist/Content/Content.mjs.map +1 -0
- package/dist/Content/Content.types.d.ts +18 -0
- package/dist/Content/index.d.ts +3 -0
- package/dist/ContentPlaceholder/ContentPlaceholder.d.ts +22 -0
- package/dist/ContentPlaceholder/ContentPlaceholder.mjs +26 -0
- package/dist/ContentPlaceholder/ContentPlaceholder.mjs.map +1 -0
- package/dist/ContentPlaceholder/index.d.ts +2 -0
- package/dist/{date-range-calendar/date-range-calendar.d.ts → DateRangeCalendar/DateRangeCalendar.d.ts} +2 -2
- package/dist/DateRangeCalendar/DateRangeCalendar.mjs +79 -0
- package/dist/DateRangeCalendar/DateRangeCalendar.mjs.map +1 -0
- package/dist/DateRangeCalendar/index.d.ts +2 -0
- package/dist/{date-range-picker/date-range-picker.d.ts → DateRangePicker/DateRangePicker.d.ts} +2 -2
- package/dist/DateRangePicker/DateRangePicker.mjs +55 -0
- package/dist/DateRangePicker/DateRangePicker.mjs.map +1 -0
- package/dist/DateRangePicker/index.d.ts +2 -0
- package/dist/Dialog/Dialog.types.d.ts +230 -0
- package/dist/Dialog/UseDialog.mjs +9 -0
- package/dist/Dialog/UseDialog.mjs.map +1 -0
- package/dist/Dialog/index.d.ts +2 -0
- package/dist/Drawerx/Drawer/Drawer.d.ts +10 -0
- package/dist/Drawerx/Drawer/Drawer.mjs +71 -0
- package/dist/Drawerx/Drawer/Drawer.mjs.map +1 -0
- package/dist/{drawerx/drawer/drawer.mock.d.ts → Drawerx/Drawer/Drawer.mock.d.ts} +1 -1
- package/dist/Drawerx/Drawer/index.d.ts +1 -0
- package/dist/{drawerx/drawer.types.d.ts → Drawerx/Drawer.types.d.ts} +119 -3
- package/dist/Drawerx/Drawer.types.mjs +8 -0
- package/dist/Drawerx/Drawer.types.mjs.map +1 -0
- package/dist/{drawerx/drawer-app-bar/drawer-app-bar.d.ts → Drawerx/DrawerAppBar/DrawerAppBar.d.ts} +1 -1
- package/dist/Drawerx/DrawerAppBar/DrawerAppBar.mjs +93 -0
- package/dist/Drawerx/DrawerAppBar/DrawerAppBar.mjs.map +1 -0
- package/dist/Drawerx/DrawerAppBar/index.d.ts +2 -0
- package/dist/Drawerx/DrawerContent/DrawerContent.d.ts +5 -0
- package/dist/Drawerx/DrawerContent/DrawerContent.mjs +35 -0
- package/dist/Drawerx/DrawerContent/DrawerContent.mjs.map +1 -0
- package/dist/Drawerx/DrawerContent/index.d.ts +1 -0
- package/dist/Drawerx/DrawerContext/Drawer.provider.d.ts +45 -0
- package/dist/Drawerx/DrawerContext/Drawer.provider.mjs +54 -0
- package/dist/Drawerx/DrawerContext/Drawer.provider.mjs.map +1 -0
- package/dist/{drawerx/drawer-context/drawer-context.d.ts → Drawerx/DrawerContext/DrawerContext.d.ts} +1 -1
- package/dist/Drawerx/DrawerContext/DrawerContext.mjs +17 -0
- package/dist/Drawerx/DrawerContext/DrawerContext.mjs.map +1 -0
- package/dist/Drawerx/DrawerContext/DrawerMixins.mjs +27 -0
- package/dist/Drawerx/DrawerContext/DrawerMixins.mjs.map +1 -0
- package/dist/Drawerx/DrawerContext/index.d.ts +2 -0
- package/dist/{drawerx/drawer-item/drawer-item.d.ts → Drawerx/DrawerItem/DrawerItem.d.ts} +2 -2
- package/dist/Drawerx/DrawerItem/DrawerItem.mjs +43 -0
- package/dist/Drawerx/DrawerItem/DrawerItem.mjs.map +1 -0
- package/dist/{drawerx/drawer-item/drawer-item-link.d.ts → Drawerx/DrawerItem/DrawerItemLink.d.ts} +1 -1
- package/dist/Drawerx/DrawerItem/DrawerItemLink.mjs +98 -0
- package/dist/Drawerx/DrawerItem/DrawerItemLink.mjs.map +1 -0
- package/dist/{drawerx/drawer-item/drawer-menu-item.d.ts → Drawerx/DrawerItem/DrawerMenuItem.d.ts} +1 -1
- package/dist/Drawerx/DrawerItem/DrawerMenuItem.mjs +115 -0
- package/dist/Drawerx/DrawerItem/DrawerMenuItem.mjs.map +1 -0
- package/dist/Drawerx/DrawerItem/index.d.ts +4 -0
- package/dist/{drawerx/drawer-layout/drawer-layout.d.ts → Drawerx/DrawerLayout/DrawerLayout.d.ts} +4 -4
- package/dist/Drawerx/DrawerLayout/DrawerLayout.mjs +39 -0
- package/dist/Drawerx/DrawerLayout/DrawerLayout.mjs.map +1 -0
- package/dist/Drawerx/DrawerLayout/index.d.ts +2 -0
- package/dist/Drawerx/DrawerMain/DrawerMain.d.ts +3 -0
- package/dist/Drawerx/DrawerMain/DrawerMain.mjs +28 -0
- package/dist/Drawerx/DrawerMain/DrawerMain.mjs.map +1 -0
- package/dist/Drawerx/DrawerMain/index.d.ts +2 -0
- package/dist/{drawerx/drawer-subheader/drawer-subheader.d.ts → Drawerx/DrawerSubheader/DrawerSubheader.d.ts} +1 -1
- package/dist/Drawerx/DrawerSubheader/DrawerSubheader.mjs +22 -0
- package/dist/Drawerx/DrawerSubheader/DrawerSubheader.mjs.map +1 -0
- package/dist/Drawerx/DrawerSubheader/index.d.ts +2 -0
- package/dist/Drawerx/index.d.ts +10 -0
- package/dist/ExpandableAlert/ExpandableAlert.d.ts +45 -0
- package/dist/ExpandableAlert/ExpandableAlert.mjs +60 -0
- package/dist/ExpandableAlert/ExpandableAlert.mjs.map +1 -0
- package/dist/ExpandableAlert/index.d.ts +2 -0
- package/dist/{form-dialog/form-dialog.d.ts → FormDialog/FormDialog.d.ts} +5 -3
- package/dist/FormDialog/FormDialog.mjs +44 -0
- package/dist/FormDialog/FormDialog.mjs.map +1 -0
- package/dist/FormDialog/index.d.ts +2 -0
- package/dist/{group-value-card/group-value-card.d.ts → GroupValueCard/GroupValueCard.d.ts} +3 -2
- package/dist/GroupValueCard/GroupValueCard.mjs +74 -0
- package/dist/GroupValueCard/GroupValueCard.mjs.map +1 -0
- package/dist/GroupValueCard/GroupValueCard.mock.d.ts +2 -0
- package/dist/GroupValueCard/index.d.ts +2 -0
- package/dist/Header/Header.d.ts +40 -0
- package/dist/{header/header.dummy.d.ts → Header/Header.dummy.d.ts} +1 -1
- package/dist/Header/Header.mjs +179 -0
- package/dist/Header/Header.mjs.map +1 -0
- package/dist/Header/Header.types.d.ts +274 -0
- package/dist/Header/header-title.d.ts +34 -0
- package/dist/Header/header-title.mjs +31 -0
- package/dist/Header/header-title.mjs.map +1 -0
- package/dist/Header/index.d.ts +3 -0
- package/dist/{header-layout/header-layout.d.ts → HeaderLayout/HeaderLayout.d.ts} +12 -7
- package/dist/HeaderLayout/HeaderLayout.mjs +54 -0
- package/dist/HeaderLayout/HeaderLayout.mjs.map +1 -0
- package/dist/HeaderLayout/index.d.ts +2 -0
- package/dist/{label/label.d.ts → Label/Label.d.ts} +5 -1
- package/dist/Label/Label.mjs +61 -0
- package/dist/Label/Label.mjs.map +1 -0
- package/dist/Label/index.d.ts +2 -0
- package/dist/ListPanel/ListPanel.context.mjs +8 -0
- package/dist/ListPanel/ListPanel.context.mjs.map +1 -0
- package/dist/{list-panel/list-panel.d.ts → ListPanel/ListPanel.d.ts} +8 -4
- package/dist/ListPanel/ListPanel.mjs +75 -0
- package/dist/ListPanel/ListPanel.mjs.map +1 -0
- package/dist/{list-panel/list-panel.mocks.d.ts → ListPanel/ListPanel.mocks.d.ts} +1 -1
- package/dist/ListPanel/ListPanelPanel.d.ts +17 -0
- package/dist/ListPanel/index.d.ts +3 -0
- package/dist/Markdown/Markdown.mjs +31 -0
- package/dist/Markdown/Markdown.mjs.map +1 -0
- package/dist/Markdown/index.d.ts +1 -0
- package/dist/NotificationCenter/NotificationCenter.context.mjs +15 -0
- package/dist/NotificationCenter/NotificationCenter.context.mjs.map +1 -0
- package/dist/{notification-center/notification-center.hooks.d.ts → NotificationCenter/NotificationCenter.hooks.d.ts} +1 -1
- package/dist/NotificationCenter/NotificationCenter.hooks.mjs +12 -0
- package/dist/NotificationCenter/NotificationCenter.hooks.mjs.map +1 -0
- package/dist/NotificationCenter/NotificationCenter.provider.d.ts +15 -0
- package/dist/NotificationCenter/NotificationCenter.provider.mjs +56 -0
- package/dist/NotificationCenter/NotificationCenter.provider.mjs.map +1 -0
- package/dist/NotificationCenter/index.d.ts +3 -0
- package/dist/Placeholder/Placeholder.d.ts +73 -0
- package/dist/Placeholder/Placeholder.mjs +53 -0
- package/dist/Placeholder/Placeholder.mjs.map +1 -0
- package/dist/{placeholder/placeholder.mock.d.ts → Placeholder/Placeholder.mock.d.ts} +1 -1
- package/dist/Placeholder/index.d.ts +2 -0
- package/dist/{query-container/query-container.d.ts → QueryContainer/QueryContainer.d.ts} +7 -3
- package/dist/QueryContainer/index.d.ts +2 -0
- package/dist/{remote-data-table/remote-data-table.d.ts → RemoteDataTable/RemoteDataTable.d.ts} +4 -3
- package/dist/RemoteDataTable/RemoteDataTable.mjs +57 -0
- package/dist/RemoteDataTable/RemoteDataTable.mjs.map +1 -0
- package/dist/{remote-data-table/remote-data-table.mocks.d.ts → RemoteDataTable/RemoteDataTable.mocks.d.ts} +1 -1
- package/dist/RemoteDataTable/RemoteDataTable.types.d.ts +189 -0
- package/dist/{remote-data-table/remote-data-table-body.d.ts → RemoteDataTable/RemoteDataTableBody.d.ts} +1 -1
- package/dist/RemoteDataTable/RemoteDataTableBody.mjs +87 -0
- package/dist/RemoteDataTable/RemoteDataTableBody.mjs.map +1 -0
- package/dist/{remote-data-table/remote-data-table-pagination.d.ts → RemoteDataTable/RemoteDataTablePagination.d.ts} +1 -1
- package/dist/RemoteDataTable/RemoteDataTablePagination.mjs +33 -0
- package/dist/RemoteDataTable/RemoteDataTablePagination.mjs.map +1 -0
- package/dist/{remote-data-table/remote-data-table-query-builder.d.ts → RemoteDataTable/RemoteDataTableQueryBuilder.d.ts} +1 -1
- package/dist/RemoteDataTable/RemoteDataTableQueryBuilder.mjs +296 -0
- package/dist/RemoteDataTable/RemoteDataTableQueryBuilder.mjs.map +1 -0
- package/dist/RemoteDataTable/index.d.ts +3 -0
- package/dist/{remote-data-table → RemoteDataTable}/query-spec-utils.d.ts +1 -1
- package/dist/RemoteDataTable/query-spec-utils.mjs +74 -0
- package/dist/RemoteDataTable/query-spec-utils.mjs.map +1 -0
- package/dist/{remote-data-table → RemoteDataTable}/use-remote-data-table.d.ts +1 -1
- package/dist/RemoteDataTable/use-remote-data-table.mjs +40 -0
- package/dist/RemoteDataTable/use-remote-data-table.mjs.map +1 -0
- package/dist/Select/Select.d.ts +147 -0
- package/dist/Select/Select.mjs +103 -0
- package/dist/Select/Select.mjs.map +1 -0
- package/dist/Select/index.d.ts +2 -0
- package/dist/{skeleton-card/skeleton-card.d.ts → SkeletonCard/SkeletonCard.d.ts} +2 -1
- package/dist/SkeletonCard/SkeletonCard.mjs +34 -0
- package/dist/SkeletonCard/SkeletonCard.mjs.map +1 -0
- package/dist/SkeletonCard/index.d.ts +2 -0
- package/dist/{skeleton-grid/skeleton-grid.d.ts → SkeletonGrid/SkeletonGrid.d.ts} +2 -1
- package/dist/SkeletonGrid/SkeletonGrid.mjs +13 -0
- package/dist/SkeletonGrid/SkeletonGrid.mjs.map +1 -0
- package/dist/SkeletonGrid/index.d.ts +2 -0
- package/dist/TabCard/TabCard.context.mjs +7 -0
- package/dist/TabCard/TabCard.context.mjs.map +1 -0
- package/dist/TabCard/TabCard.d.ts +43 -0
- package/dist/{tab-card/tab-card.dummy.d.ts → TabCard/TabCard.dummy.d.ts} +1 -1
- package/dist/TabCard/TabCard.mjs +68 -0
- package/dist/TabCard/TabCard.mjs.map +1 -0
- package/dist/TabCard/TabCardPanel.d.ts +22 -0
- package/dist/TabCard/index.d.ts +3 -0
- package/dist/TabPanel/TabPanel.d.ts +18 -0
- package/dist/TabPanel/TabPanel.mjs +22 -0
- package/dist/TabPanel/TabPanel.mjs.map +1 -0
- package/dist/TabPanel/index.d.ts +1 -0
- package/dist/TabProvider/TabProvider.context.mjs +8 -0
- package/dist/TabProvider/TabProvider.context.mjs.map +1 -0
- package/dist/TabProvider/TabProvider.provider.mjs +14 -0
- package/dist/TabProvider/TabProvider.provider.mjs.map +1 -0
- package/dist/TabProvider/index.d.ts +2 -0
- package/dist/TextField/TextField.d.ts +127 -0
- package/dist/TextField/TextField.mjs +115 -0
- package/dist/TextField/TextField.mjs.map +1 -0
- package/dist/TextField/index.d.ts +2 -0
- package/dist/{value-base/value-displays.types.d.ts → ValueBase/ValueDisplays.types.d.ts} +0 -10
- package/dist/ValueBase/ValueDisplays.types.mjs +5 -0
- package/dist/ValueBase/ValueDisplays.types.mjs.map +1 -0
- package/dist/ValueBase/index.d.ts +1 -0
- package/dist/ValueBoolean/ValueBoolean.d.ts +12 -0
- package/dist/ValueBoolean/ValueBoolean.mjs +34 -0
- package/dist/ValueBoolean/ValueBoolean.mjs.map +1 -0
- package/dist/ValueBoolean/index.d.ts +2 -0
- package/dist/ValueCard/ValueCard.d.ts +14 -0
- package/dist/ValueCard/ValueCard.mjs +10 -0
- package/dist/ValueCard/ValueCard.mjs.map +1 -0
- package/dist/ValueCard/index.d.ts +2 -0
- package/dist/{value-content/value-content.d.ts → ValueContent/ValueContent.d.ts} +5 -5
- package/dist/ValueContent/ValueContent.mjs +35 -0
- package/dist/ValueContent/ValueContent.mjs.map +1 -0
- package/dist/ValueContent/index.d.ts +2 -0
- package/dist/ValueDatetime/ValueDatetime.d.ts +15 -0
- package/dist/ValueDatetime/ValueDatetime.mjs +30 -0
- package/dist/ValueDatetime/ValueDatetime.mjs.map +1 -0
- package/dist/ValueDatetime/index.d.ts +2 -0
- package/dist/ValueImage/ValueImage.d.ts +15 -0
- package/dist/ValueImage/ValueImage.mjs +26 -0
- package/dist/ValueImage/ValueImage.mjs.map +1 -0
- package/dist/ValueImage/index.d.ts +2 -0
- package/dist/ValueItem/ValueItem.d.ts +33 -0
- package/dist/ValueItem/ValueItem.mjs +36 -0
- package/dist/ValueItem/ValueItem.mjs.map +1 -0
- package/dist/ValueItem/index.d.ts +2 -0
- package/dist/ValueLabel/ValueLabel.d.ts +22 -0
- package/dist/ValueLabel/ValueLabel.mjs +35 -0
- package/dist/ValueLabel/ValueLabel.mjs.map +1 -0
- package/dist/ValueLabel/index.d.ts +2 -0
- package/dist/ValueRating/ValueRating.d.ts +18 -0
- package/dist/ValueRating/ValueRating.mjs +26 -0
- package/dist/ValueRating/ValueRating.mjs.map +1 -0
- package/dist/ValueRating/index.d.ts +2 -0
- package/dist/ValueText/ValueText.d.ts +12 -0
- package/dist/ValueText/ValueText.mjs +19 -0
- package/dist/ValueText/ValueText.mjs.map +1 -0
- package/dist/ValueText/index.d.ts +2 -0
- package/dist/index.d.ts +73 -48
- package/dist/index.mjs +139 -0
- package/dist/index.mjs.map +1 -0
- package/dist/tests/actions.d.ts +6 -0
- package/dist/tests/actions.mjs +38 -0
- package/dist/tests/actions.mjs.map +1 -0
- package/dist/tests/assertions.d.ts +24 -0
- package/dist/tests/assertions.mjs +39 -0
- package/dist/tests/assertions.mjs.map +1 -0
- package/dist/tests/file-mock.d.ts +2 -0
- package/dist/tests/index.d.ts +2 -0
- package/dist/tests/index.mjs +23 -0
- package/dist/tests/index.mjs.map +1 -0
- package/dist/tests/mocks/markdown.mock.d.ts +1 -0
- package/dist/tests/mocks.d.ts +3 -0
- package/dist/tests/table-placeholder/TablePlaceholder.d.ts +1 -0
- package/dist/tests/table-placeholder/index.d.ts +1 -0
- package/dist/tests/testing-library.d.ts +106 -0
- package/dist/tests/testing-library.mjs +31 -0
- package/dist/tests/testing-library.mjs.map +1 -0
- package/dist/utils/arrays.mjs +9 -0
- package/dist/utils/arrays.mjs.map +1 -0
- package/dist/utils/breakpoints.mjs +33 -0
- package/dist/utils/breakpoints.mjs.map +1 -0
- package/dist/utils/forms.mjs +10 -0
- package/dist/utils/forms.mjs.map +1 -0
- package/dist/utils/theme.mjs +12 -0
- package/dist/utils/theme.mjs.map +1 -0
- package/package.json +45 -36
- package/dist/action/action-header.d.ts +0 -9
- package/dist/action/action.d.ts +0 -61
- package/dist/action/index.d.ts +0 -2
- package/dist/autocomplete/autocomplete.d.ts +0 -39
- package/dist/autocomplete/index.d.ts +0 -1
- package/dist/board/index.d.ts +0 -1
- package/dist/bootstrap-dialog/bootstrap-dialog.d.ts +0 -5
- package/dist/bootstrap-dialog/index.d.ts +0 -1
- package/dist/bullet/index.d.ts +0 -1
- package/dist/center-container/center-container.d.ts +0 -25
- package/dist/center-container/index.d.ts +0 -1
- package/dist/confirm-dialog/index.d.ts +0 -1
- package/dist/content/content.d.ts +0 -5
- package/dist/content/content.types.d.ts +0 -4
- package/dist/content/index.d.ts +0 -2
- package/dist/content-placeholder/content-placeholder.d.ts +0 -18
- package/dist/content-placeholder/index.d.ts +0 -1
- package/dist/date-range-calendar/index.d.ts +0 -1
- package/dist/date-range-picker/index.d.ts +0 -1
- package/dist/dialog/dialog.types.d.ts +0 -99
- package/dist/dialog/index.d.ts +0 -2
- package/dist/drawerx/drawer/drawer.d.ts +0 -7
- package/dist/drawerx/drawer/index.d.ts +0 -1
- package/dist/drawerx/drawer-app-bar/index.d.ts +0 -1
- package/dist/drawerx/drawer-content/drawer-content.d.ts +0 -5
- package/dist/drawerx/drawer-content/index.d.ts +0 -1
- package/dist/drawerx/drawer-context/drawer.provider.d.ts +0 -17
- package/dist/drawerx/drawer-context/index.d.ts +0 -2
- package/dist/drawerx/drawer-item/index.d.ts +0 -3
- package/dist/drawerx/drawer-layout/index.d.ts +0 -1
- package/dist/drawerx/drawer-main/drawer-main.d.ts +0 -3
- package/dist/drawerx/drawer-main/index.d.ts +0 -1
- package/dist/drawerx/drawer-subheader/index.d.ts +0 -1
- package/dist/drawerx/index.d.ts +0 -7
- package/dist/enhanced-remote-table/enhanced-remote-table.d.ts +0 -46
- package/dist/enhanced-remote-table/enhanced-remote-table.mock.d.ts +0 -11
- package/dist/enhanced-remote-table/index.d.ts +0 -1
- package/dist/enhanced-table/enhanced-table-head.d.ts +0 -16
- package/dist/enhanced-table/enhanced-table.d.ts +0 -47
- package/dist/enhanced-table/enhanced-table.mock.d.ts +0 -16
- package/dist/enhanced-table/index.d.ts +0 -2
- package/dist/expandable-alert/expandable-alert.d.ts +0 -14
- package/dist/expandable-alert/index.d.ts +0 -1
- package/dist/form-dialog/index.d.ts +0 -1
- package/dist/generators/generators.mock.d.ts +0 -30
- package/dist/generators/generators.model.d.ts +0 -92
- package/dist/generators/index.d.ts +0 -1
- package/dist/group-value-card/group-value-card.mock.d.ts +0 -4
- package/dist/group-value-card/index.d.ts +0 -1
- package/dist/header/header-title.d.ts +0 -9
- package/dist/header/header.d.ts +0 -6
- package/dist/header/header.types.d.ts +0 -88
- package/dist/header/index.d.ts +0 -3
- package/dist/header-layout/index.d.ts +0 -1
- package/dist/index.cjs.js +0 -281
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.es.js +0 -49140
- package/dist/index.es.js.map +0 -1
- package/dist/label/index.d.ts +0 -1
- package/dist/link-card/index.d.ts +0 -1
- package/dist/link-card/link-card.d.ts +0 -11
- package/dist/list-panel/index.d.ts +0 -2
- package/dist/list-panel/list-panel-panel.d.ts +0 -5
- package/dist/loading-area/index.d.ts +0 -1
- package/dist/loading-area/loading-area.d.ts +0 -4
- package/dist/markdown/index.d.ts +0 -1
- package/dist/model-form/index.d.ts +0 -1
- package/dist/model-form/model-form-field.d.ts +0 -10
- package/dist/model-form/model-form.d.ts +0 -14
- package/dist/notification-center/index.d.ts +0 -3
- package/dist/notification-center/notification-center.provider.d.ts +0 -5
- package/dist/object-details/index.d.ts +0 -1
- package/dist/object-details/object-details.d.ts +0 -11
- package/dist/placeholder/index.d.ts +0 -1
- package/dist/placeholder/placeholder.d.ts +0 -22
- package/dist/query-container/index.d.ts +0 -1
- package/dist/remote-data-table/index.d.ts +0 -2
- package/dist/remote-data-table/remote-data-table.types.d.ts +0 -52
- package/dist/search-input/index.d.ts +0 -1
- package/dist/search-input/search-input.d.ts +0 -60
- package/dist/select/index.d.ts +0 -1
- package/dist/select/select.d.ts +0 -57
- package/dist/skeleton-card/index.d.ts +0 -1
- package/dist/skeleton-grid/index.d.ts +0 -1
- package/dist/tab-card/index.d.ts +0 -2
- package/dist/tab-card/tab-card-panel.d.ts +0 -7
- package/dist/tab-card/tab-card.d.ts +0 -11
- package/dist/tab-panel/index.d.ts +0 -1
- package/dist/tab-panel/tab-panel.d.ts +0 -6
- package/dist/tab-provider/index.d.ts +0 -2
- package/dist/table-list/index.d.ts +0 -1
- package/dist/table-list/table-list.d.ts +0 -21
- package/dist/text-field/index.d.ts +0 -1
- package/dist/text-field/text-field.d.ts +0 -25
- package/dist/value-base/index.d.ts +0 -2
- package/dist/value-base/value-edit.d.ts +0 -23
- package/dist/value-boolean/index.d.ts +0 -1
- package/dist/value-boolean/value-boolean.d.ts +0 -6
- package/dist/value-card/index.d.ts +0 -1
- package/dist/value-card/value-card.d.ts +0 -6
- package/dist/value-content/index.d.ts +0 -1
- package/dist/value-datetime/index.d.ts +0 -1
- package/dist/value-datetime/value-datetime.d.ts +0 -16
- package/dist/value-image/index.d.ts +0 -1
- package/dist/value-image/value-image.d.ts +0 -11
- package/dist/value-item/index.d.ts +0 -1
- package/dist/value-item/value-item.d.ts +0 -16
- package/dist/value-label/index.d.ts +0 -1
- package/dist/value-label/value-label.d.ts +0 -10
- package/dist/value-rating/index.d.ts +0 -1
- package/dist/value-rating/value-rating.d.ts +0 -8
- package/dist/value-text/index.d.ts +0 -1
- package/dist/value-text/value-text.d.ts +0 -6
- /package/dist/{dialog/use-dialog.d.ts → Dialog/UseDialog.d.ts} +0 -0
- /package/dist/{drawerx/drawer-context/drawer-mixins.d.ts → Drawerx/DrawerContext/DrawerMixins.d.ts} +0 -0
- /package/dist/{list-panel/list-panel.context.d.ts → ListPanel/ListPanel.context.d.ts} +0 -0
- /package/dist/{markdown/markdown.d.ts → Markdown/Markdown.d.ts} +0 -0
- /package/dist/{notification-center/notification-center.context.d.ts → NotificationCenter/NotificationCenter.context.d.ts} +0 -0
- /package/dist/{tab-card/tab-card.context.d.ts → TabCard/TabCard.context.d.ts} +0 -0
- /package/dist/{tab-provider/tab-provider.context.d.ts → TabProvider/TabProvider.context.d.ts} +0 -0
- /package/dist/{tab-provider/tab-provider.provider.d.ts → TabProvider/TabProvider.provider.d.ts} +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { jsxs as u, Fragment as L, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import j from "@mui/icons-material/Add";
|
|
3
|
+
import D from "@mui/icons-material/Close";
|
|
4
|
+
import N from "@mui/icons-material/DeleteOutline";
|
|
5
|
+
import K from "@mui/icons-material/FilterAltOutlined";
|
|
6
|
+
import V from "@mui/icons-material/KeyboardArrowDown";
|
|
7
|
+
import E from "@mui/icons-material/KeyboardArrowUp";
|
|
8
|
+
import { Box as C, TextField as h, InputAdornment as W, Popover as G, Stack as S, Typography as T, Button as H, IconButton as M, MenuItem as m, ToggleButtonGroup as U, ToggleButton as Y } from "@mui/material";
|
|
9
|
+
import { useState as _, useMemo as k } from "react";
|
|
10
|
+
import { formatFiltersSummary as J, getOpsForField as q, coerceFilterValue as A, createFilterId as X, querySpecOpLabels as Z, getFieldByName as $ } from "./query-spec-utils.mjs";
|
|
11
|
+
const ee = ({
|
|
12
|
+
filter: n,
|
|
13
|
+
fields: v,
|
|
14
|
+
fieldMap: y,
|
|
15
|
+
onFieldChange: x,
|
|
16
|
+
onOpChange: I,
|
|
17
|
+
onValueChange: a,
|
|
18
|
+
onRemove: i
|
|
19
|
+
}) => {
|
|
20
|
+
const r = y.get(n.field), z = q(r), c = n.op === "in" ? "Values" : "Value", b = r?.type === "number" ? "number" : r?.type === "date" ? "date" : r?.type === "datetime" ? "datetime-local" : "text", w = r?.type === "date" || r?.type === "datetime", f = r?.placeholder ?? (n.op === "in" ? "Comma-separated values" : void 0), g = r?.options ?? [], O = g.length > 0 && (n.op === "eq" || n.op === "neq");
|
|
21
|
+
return /* @__PURE__ */ u(
|
|
22
|
+
S,
|
|
23
|
+
{
|
|
24
|
+
direction: { xs: "column", sm: "row" },
|
|
25
|
+
spacing: 1,
|
|
26
|
+
alignItems: { xs: "stretch", sm: "center" },
|
|
27
|
+
children: [
|
|
28
|
+
/* @__PURE__ */ e(
|
|
29
|
+
h,
|
|
30
|
+
{
|
|
31
|
+
select: !0,
|
|
32
|
+
size: "small",
|
|
33
|
+
label: "Field",
|
|
34
|
+
value: n.field,
|
|
35
|
+
onChange: (l) => x(n.id, l.target.value),
|
|
36
|
+
sx: { minWidth: 160 },
|
|
37
|
+
children: v.map((l) => /* @__PURE__ */ e(m, { value: l.name, children: l.label }, l.name))
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ e(
|
|
41
|
+
U,
|
|
42
|
+
{
|
|
43
|
+
exclusive: !0,
|
|
44
|
+
size: "small",
|
|
45
|
+
color: "primary",
|
|
46
|
+
value: n.op,
|
|
47
|
+
onChange: (l, F) => {
|
|
48
|
+
F !== null && I(n.id, F);
|
|
49
|
+
},
|
|
50
|
+
sx: { minWidth: 150, alignSelf: "center" },
|
|
51
|
+
children: z.map((l) => /* @__PURE__ */ e(Y, { value: l, children: Z[l] ?? l }, l))
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
n.op === "isnull" ? /* @__PURE__ */ u(
|
|
55
|
+
h,
|
|
56
|
+
{
|
|
57
|
+
select: !0,
|
|
58
|
+
size: "small",
|
|
59
|
+
label: "Null state",
|
|
60
|
+
value: n.value ?? "true",
|
|
61
|
+
onChange: (l) => a(n.id, l.target.value),
|
|
62
|
+
sx: { minWidth: 160, flex: 1 },
|
|
63
|
+
children: [
|
|
64
|
+
/* @__PURE__ */ e(m, { value: "true", children: "Is null" }),
|
|
65
|
+
/* @__PURE__ */ e(m, { value: "false", children: "Is not null" })
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
) : O ? /* @__PURE__ */ e(
|
|
69
|
+
h,
|
|
70
|
+
{
|
|
71
|
+
select: !0,
|
|
72
|
+
size: "small",
|
|
73
|
+
label: c,
|
|
74
|
+
value: n.value ?? "",
|
|
75
|
+
onChange: (l) => a(n.id, l.target.value),
|
|
76
|
+
sx: { minWidth: 160, flex: 1 },
|
|
77
|
+
children: g.map((l) => /* @__PURE__ */ e(m, { value: l.value, children: l.label }, l.value))
|
|
78
|
+
}
|
|
79
|
+
) : r?.type === "boolean" ? /* @__PURE__ */ u(
|
|
80
|
+
h,
|
|
81
|
+
{
|
|
82
|
+
select: !0,
|
|
83
|
+
size: "small",
|
|
84
|
+
label: c,
|
|
85
|
+
value: n.value ?? "true",
|
|
86
|
+
onChange: (l) => a(n.id, l.target.value),
|
|
87
|
+
sx: { minWidth: 160, flex: 1 },
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ e(m, { value: "true", children: "True" }),
|
|
90
|
+
/* @__PURE__ */ e(m, { value: "false", children: "False" })
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
) : /* @__PURE__ */ e(
|
|
94
|
+
h,
|
|
95
|
+
{
|
|
96
|
+
size: "small",
|
|
97
|
+
type: b,
|
|
98
|
+
label: c,
|
|
99
|
+
value: n.value ?? "",
|
|
100
|
+
onChange: (l) => a(n.id, l.target.value),
|
|
101
|
+
placeholder: f,
|
|
102
|
+
InputLabelProps: w ? { shrink: !0 } : void 0,
|
|
103
|
+
sx: { minWidth: 160, flex: 1 }
|
|
104
|
+
}
|
|
105
|
+
),
|
|
106
|
+
/* @__PURE__ */ e(
|
|
107
|
+
M,
|
|
108
|
+
{
|
|
109
|
+
size: "small",
|
|
110
|
+
"aria-label": "Remove filter",
|
|
111
|
+
onClick: () => i(n.id),
|
|
112
|
+
children: /* @__PURE__ */ e(N, { fontSize: "small" })
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
}, ue = ({
|
|
119
|
+
queryBuilder: n
|
|
120
|
+
}) => {
|
|
121
|
+
const [v, y] = _(null), x = !!v, I = v?.clientWidth ?? 560, {
|
|
122
|
+
fields: a,
|
|
123
|
+
filters: i,
|
|
124
|
+
onFiltersChange: r,
|
|
125
|
+
placeholder: z,
|
|
126
|
+
summaryFormatter: c
|
|
127
|
+
} = n, b = k(
|
|
128
|
+
() => new Map(a.map((t) => [t.name, t])),
|
|
129
|
+
[a]
|
|
130
|
+
), w = k(() => i.length ? c ? c(i, a) : J(i, a) : "", [i, a, c]), f = (t) => {
|
|
131
|
+
y(t.currentTarget);
|
|
132
|
+
}, g = () => {
|
|
133
|
+
y(null);
|
|
134
|
+
}, O = () => {
|
|
135
|
+
if (a.length === 0)
|
|
136
|
+
return;
|
|
137
|
+
const t = a[0], o = q(t)[0] ?? "eq", p = A(t, o);
|
|
138
|
+
r([
|
|
139
|
+
...i,
|
|
140
|
+
{ id: X(), field: t.name, op: o, value: p }
|
|
141
|
+
]);
|
|
142
|
+
}, l = (t) => {
|
|
143
|
+
r(i.filter((s) => s.id !== t));
|
|
144
|
+
}, F = (t, s) => {
|
|
145
|
+
const o = $(a, s);
|
|
146
|
+
if (!o)
|
|
147
|
+
return;
|
|
148
|
+
const p = q(o);
|
|
149
|
+
r(
|
|
150
|
+
i.map((d) => {
|
|
151
|
+
if (d.id !== t)
|
|
152
|
+
return d;
|
|
153
|
+
const B = p.includes(d.op) ? d.op : p[0] ?? "eq", Q = A(o, B, d.value);
|
|
154
|
+
return {
|
|
155
|
+
...d,
|
|
156
|
+
field: o.name,
|
|
157
|
+
op: B,
|
|
158
|
+
value: Q
|
|
159
|
+
};
|
|
160
|
+
})
|
|
161
|
+
);
|
|
162
|
+
}, P = (t, s) => {
|
|
163
|
+
r(
|
|
164
|
+
i.map((o) => {
|
|
165
|
+
if (o.id !== t)
|
|
166
|
+
return o;
|
|
167
|
+
const p = b.get(o.field), d = A(p, s, o.value);
|
|
168
|
+
return {
|
|
169
|
+
...o,
|
|
170
|
+
op: s,
|
|
171
|
+
value: d
|
|
172
|
+
};
|
|
173
|
+
})
|
|
174
|
+
);
|
|
175
|
+
}, R = (t, s) => {
|
|
176
|
+
r(
|
|
177
|
+
i.map(
|
|
178
|
+
(o) => o.id === t ? {
|
|
179
|
+
...o,
|
|
180
|
+
value: s
|
|
181
|
+
} : o
|
|
182
|
+
)
|
|
183
|
+
);
|
|
184
|
+
};
|
|
185
|
+
return /* @__PURE__ */ u(L, { children: [
|
|
186
|
+
/* @__PURE__ */ e(
|
|
187
|
+
C,
|
|
188
|
+
{
|
|
189
|
+
sx: {
|
|
190
|
+
borderBottom: "1px solid",
|
|
191
|
+
borderColor: "divider",
|
|
192
|
+
px: 2,
|
|
193
|
+
py: 1.5
|
|
194
|
+
},
|
|
195
|
+
children: /* @__PURE__ */ e(
|
|
196
|
+
h,
|
|
197
|
+
{
|
|
198
|
+
fullWidth: !0,
|
|
199
|
+
size: "small",
|
|
200
|
+
placeholder: z ?? "Add filters",
|
|
201
|
+
value: w,
|
|
202
|
+
onClick: f,
|
|
203
|
+
onFocus: f,
|
|
204
|
+
InputProps: {
|
|
205
|
+
readOnly: !0,
|
|
206
|
+
startAdornment: /* @__PURE__ */ e(W, { position: "start", children: /* @__PURE__ */ e(K, { fontSize: "small" }) }),
|
|
207
|
+
endAdornment: /* @__PURE__ */ e(W, { position: "end", children: x ? /* @__PURE__ */ e(E, {}) : /* @__PURE__ */ e(V, {}) })
|
|
208
|
+
},
|
|
209
|
+
inputProps: { "aria-label": "Filter query" },
|
|
210
|
+
sx: {
|
|
211
|
+
"& .MuiInputBase-root": { cursor: "pointer" },
|
|
212
|
+
"& .MuiInputBase-input": {
|
|
213
|
+
cursor: "pointer",
|
|
214
|
+
textOverflow: "ellipsis",
|
|
215
|
+
overflow: "hidden",
|
|
216
|
+
whiteSpace: "nowrap"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
)
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
/* @__PURE__ */ e(
|
|
224
|
+
G,
|
|
225
|
+
{
|
|
226
|
+
open: x,
|
|
227
|
+
anchorEl: v,
|
|
228
|
+
onClose: g,
|
|
229
|
+
disableRestoreFocus: !0,
|
|
230
|
+
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
231
|
+
transformOrigin: { vertical: "top", horizontal: "left" },
|
|
232
|
+
slotProps: {
|
|
233
|
+
paper: {
|
|
234
|
+
sx: {
|
|
235
|
+
width: I,
|
|
236
|
+
maxWidth: "calc(100vw - 32px)",
|
|
237
|
+
p: 2
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
},
|
|
241
|
+
children: /* @__PURE__ */ e(C, { sx: { maxHeight: "60vh", overflowY: "auto" }, children: /* @__PURE__ */ u(S, { spacing: 2, children: [
|
|
242
|
+
/* @__PURE__ */ u(
|
|
243
|
+
C,
|
|
244
|
+
{
|
|
245
|
+
display: "flex",
|
|
246
|
+
alignItems: "center",
|
|
247
|
+
justifyContent: "space-between",
|
|
248
|
+
gap: 1,
|
|
249
|
+
children: [
|
|
250
|
+
/* @__PURE__ */ e(T, { variant: "subtitle2", children: "Filters" }),
|
|
251
|
+
/* @__PURE__ */ u(C, { display: "flex", alignItems: "center", gap: 1, children: [
|
|
252
|
+
/* @__PURE__ */ e(
|
|
253
|
+
H,
|
|
254
|
+
{
|
|
255
|
+
size: "small",
|
|
256
|
+
startIcon: /* @__PURE__ */ e(j, { fontSize: "small" }),
|
|
257
|
+
onClick: O,
|
|
258
|
+
disabled: a.length === 0,
|
|
259
|
+
children: "Add filter"
|
|
260
|
+
}
|
|
261
|
+
),
|
|
262
|
+
/* @__PURE__ */ e(
|
|
263
|
+
M,
|
|
264
|
+
{
|
|
265
|
+
size: "small",
|
|
266
|
+
"aria-label": "Close filters",
|
|
267
|
+
onClick: g,
|
|
268
|
+
children: /* @__PURE__ */ e(D, { fontSize: "small" })
|
|
269
|
+
}
|
|
270
|
+
)
|
|
271
|
+
] })
|
|
272
|
+
]
|
|
273
|
+
}
|
|
274
|
+
),
|
|
275
|
+
i.length === 0 ? /* @__PURE__ */ e(T, { variant: "body2", color: "text.secondary", children: "No filters yet." }) : /* @__PURE__ */ e(S, { spacing: 1.5, children: i.map((t) => /* @__PURE__ */ e(
|
|
276
|
+
ee,
|
|
277
|
+
{
|
|
278
|
+
filter: t,
|
|
279
|
+
fields: a,
|
|
280
|
+
fieldMap: b,
|
|
281
|
+
onFieldChange: F,
|
|
282
|
+
onOpChange: P,
|
|
283
|
+
onValueChange: R,
|
|
284
|
+
onRemove: l
|
|
285
|
+
},
|
|
286
|
+
t.id
|
|
287
|
+
)) })
|
|
288
|
+
] }) })
|
|
289
|
+
}
|
|
290
|
+
)
|
|
291
|
+
] });
|
|
292
|
+
};
|
|
293
|
+
export {
|
|
294
|
+
ue as RemoteDataTableQueryBuilder
|
|
295
|
+
};
|
|
296
|
+
//# sourceMappingURL=RemoteDataTableQueryBuilder.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteDataTableQueryBuilder.mjs","sources":["../../src/RemoteDataTable/RemoteDataTableQueryBuilder.tsx"],"sourcesContent":["import AddIcon from \"@mui/icons-material/Add\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport DeleteOutlineIcon from \"@mui/icons-material/DeleteOutline\";\nimport FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport {\n Box,\n Button,\n IconButton,\n InputAdornment,\n MenuItem,\n Popover,\n Stack,\n TextField,\n ToggleButton,\n ToggleButtonGroup,\n Typography,\n} from \"@mui/material\";\nimport { type FocusEvent, type MouseEvent, useMemo, useState } from \"react\";\nimport {\n coerceFilterValue,\n createFilterId,\n formatFiltersSummary,\n getFieldByName,\n getOpsForField,\n querySpecOpLabels,\n} from \"./query-spec-utils\";\nimport type {\n QuerySpecField,\n QuerySpecFilter,\n QuerySpecOp,\n RemoteDataTableQueryBuilderProps as RemoteDataTableQueryBuilderConfig,\n} from \"./RemoteDataTable.types\";\n\ntype RemoteDataTableQueryBuilderProps = {\n queryBuilder: RemoteDataTableQueryBuilderConfig;\n};\n\ntype QueryFilterRowProps = {\n filter: QuerySpecFilter;\n fields: QuerySpecField[];\n fieldMap: Map<string, QuerySpecField>;\n onFieldChange: (filterId: string, nextFieldName: string) => void;\n onOpChange: (filterId: string, nextOp: QuerySpecOp) => void;\n onValueChange: (filterId: string, nextValue: string) => void;\n onRemove: (filterId: string) => void;\n};\n\nconst QueryFilterRow = ({\n filter,\n fields,\n fieldMap,\n onFieldChange,\n onOpChange,\n onValueChange,\n onRemove,\n}: QueryFilterRowProps) => {\n const field = fieldMap.get(filter.field);\n const ops = getOpsForField(field);\n const valueLabel = filter.op === \"in\" ? \"Values\" : \"Value\";\n const inputType =\n field?.type === \"number\"\n ? \"number\"\n : field?.type === \"date\"\n ? \"date\"\n : field?.type === \"datetime\"\n ? \"datetime-local\"\n : \"text\";\n const shouldShrinkLabel =\n field?.type === \"date\" || field?.type === \"datetime\";\n const valuePlaceholder =\n field?.placeholder ??\n (filter.op === \"in\" ? \"Comma-separated values\" : undefined);\n const fieldOptions = field?.options ?? [];\n const useOptions =\n fieldOptions.length > 0 && (filter.op === \"eq\" || filter.op === \"neq\");\n\n return (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n spacing={1}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n >\n <TextField\n select\n size=\"small\"\n label=\"Field\"\n value={filter.field}\n onChange={(event) => onFieldChange(filter.id, event.target.value)}\n sx={{ minWidth: 160 }}\n >\n {fields.map((queryField) => (\n <MenuItem key={queryField.name} value={queryField.name}>\n {queryField.label}\n </MenuItem>\n ))}\n </TextField>\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n color=\"primary\"\n value={filter.op}\n onChange={(_, value) => {\n if (value !== null) {\n onOpChange(filter.id, value as QuerySpecOp);\n }\n }}\n sx={{ minWidth: 150, alignSelf: \"center\" }}\n >\n {ops.map((op) => (\n <ToggleButton key={op} value={op}>\n {querySpecOpLabels[op] ?? op}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n {filter.op === \"isnull\" ? (\n <TextField\n select\n size=\"small\"\n label=\"Null state\"\n value={filter.value ?? \"true\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n <MenuItem value=\"true\">Is null</MenuItem>\n <MenuItem value=\"false\">Is not null</MenuItem>\n </TextField>\n ) : useOptions ? (\n <TextField\n select\n size=\"small\"\n label={valueLabel}\n value={filter.value ?? \"\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n {fieldOptions.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n ) : field?.type === \"boolean\" ? (\n <TextField\n select\n size=\"small\"\n label={valueLabel}\n value={filter.value ?? \"true\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n <MenuItem value=\"true\">True</MenuItem>\n <MenuItem value=\"false\">False</MenuItem>\n </TextField>\n ) : (\n <TextField\n size=\"small\"\n type={inputType}\n label={valueLabel}\n value={filter.value ?? \"\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n placeholder={valuePlaceholder}\n InputLabelProps={shouldShrinkLabel ? { shrink: true } : undefined}\n sx={{ minWidth: 160, flex: 1 }}\n />\n )}\n <IconButton\n size=\"small\"\n aria-label=\"Remove filter\"\n onClick={() => onRemove(filter.id)}\n >\n <DeleteOutlineIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n );\n};\n\nexport const RemoteDataTableQueryBuilder = ({\n queryBuilder,\n}: RemoteDataTableQueryBuilderProps) => {\n const [queryAnchor, setQueryAnchor] = useState<HTMLElement | null>(null);\n const queryOpen = Boolean(queryAnchor);\n const queryPopoverWidth = queryAnchor?.clientWidth ?? 560;\n const {\n fields: queryFields,\n filters: queryFilters,\n onFiltersChange,\n placeholder,\n summaryFormatter,\n } = queryBuilder;\n const queryFieldMap = useMemo(\n () => new Map(queryFields.map((field) => [field.name, field])),\n [queryFields],\n );\n\n const querySummary = useMemo(() => {\n if (!queryFilters.length) {\n return \"\";\n }\n\n if (summaryFormatter) {\n return summaryFormatter(queryFilters, queryFields);\n }\n\n return formatFiltersSummary(queryFilters, queryFields);\n }, [queryFilters, queryFields, summaryFormatter]);\n\n const handleQueryOpen = (\n event: MouseEvent<HTMLElement> | FocusEvent<HTMLElement>,\n ) => {\n setQueryAnchor(event.currentTarget);\n };\n\n const handleQueryClose = () => {\n setQueryAnchor(null);\n };\n\n const handleAddFilter = () => {\n if (queryFields.length === 0) {\n return;\n }\n\n const field = queryFields[0];\n const ops = getOpsForField(field);\n const op = ops[0] ?? \"eq\";\n const value = coerceFilterValue(field, op);\n\n onFiltersChange([\n ...queryFilters,\n { id: createFilterId(), field: field.name, op, value },\n ]);\n };\n\n const handleRemoveFilter = (filterId: string) => {\n onFiltersChange(queryFilters.filter((filter) => filter.id !== filterId));\n };\n\n const handleFieldChange = (filterId: string, nextFieldName: string) => {\n const nextField = getFieldByName(queryFields, nextFieldName);\n if (!nextField) {\n return;\n }\n\n const allowedOps = getOpsForField(nextField);\n\n onFiltersChange(\n queryFilters.map((filter) => {\n if (filter.id !== filterId) {\n return filter;\n }\n\n const op = allowedOps.includes(filter.op)\n ? filter.op\n : (allowedOps[0] ?? \"eq\");\n const value = coerceFilterValue(nextField, op, filter.value);\n\n return {\n ...filter,\n field: nextField.name,\n op,\n value,\n };\n }),\n );\n };\n\n const handleOpChange = (filterId: string, nextOp: QuerySpecOp) => {\n onFiltersChange(\n queryFilters.map((filter) => {\n if (filter.id !== filterId) {\n return filter;\n }\n\n const field = queryFieldMap.get(filter.field);\n const value = coerceFilterValue(field, nextOp, filter.value);\n\n return {\n ...filter,\n op: nextOp,\n value,\n };\n }),\n );\n };\n\n const handleValueChange = (filterId: string, nextValue: string) => {\n onFiltersChange(\n queryFilters.map((filter) =>\n filter.id === filterId\n ? {\n ...filter,\n value: nextValue,\n }\n : filter,\n ),\n );\n };\n\n return (\n <>\n <Box\n sx={{\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n px: 2,\n py: 1.5,\n }}\n >\n <TextField\n fullWidth\n size=\"small\"\n placeholder={placeholder ?? \"Add filters\"}\n value={querySummary}\n onClick={handleQueryOpen}\n onFocus={handleQueryOpen}\n InputProps={{\n readOnly: true,\n startAdornment: (\n <InputAdornment position=\"start\">\n <FilterAltOutlinedIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n {queryOpen ? (\n <KeyboardArrowUpIcon />\n ) : (\n <KeyboardArrowDownIcon />\n )}\n </InputAdornment>\n ),\n }}\n inputProps={{ \"aria-label\": \"Filter query\" }}\n sx={{\n \"& .MuiInputBase-root\": { cursor: \"pointer\" },\n \"& .MuiInputBase-input\": {\n cursor: \"pointer\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n }}\n />\n </Box>\n <Popover\n open={queryOpen}\n anchorEl={queryAnchor}\n onClose={handleQueryClose}\n disableRestoreFocus\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{\n paper: {\n sx: {\n width: queryPopoverWidth,\n maxWidth: \"calc(100vw - 32px)\",\n p: 2,\n },\n },\n }}\n >\n <Box sx={{ maxHeight: \"60vh\", overflowY: \"auto\" }}>\n <Stack spacing={2}>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1}\n >\n <Typography variant=\"subtitle2\">Filters</Typography>\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n <Button\n size=\"small\"\n startIcon={<AddIcon fontSize=\"small\" />}\n onClick={handleAddFilter}\n disabled={queryFields.length === 0}\n >\n Add filter\n </Button>\n <IconButton\n size=\"small\"\n aria-label=\"Close filters\"\n onClick={handleQueryClose}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n {queryFilters.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No filters yet.\n </Typography>\n ) : (\n <Stack spacing={1.5}>\n {queryFilters.map((filter) => (\n <QueryFilterRow\n key={filter.id}\n filter={filter}\n fields={queryFields}\n fieldMap={queryFieldMap}\n onFieldChange={handleFieldChange}\n onOpChange={handleOpChange}\n onValueChange={handleValueChange}\n onRemove={handleRemoveFilter}\n />\n ))}\n </Stack>\n )}\n </Stack>\n </Box>\n </Popover>\n </>\n );\n};\n"],"names":["QueryFilterRow","filter","fields","fieldMap","onFieldChange","onOpChange","onValueChange","onRemove","field","ops","getOpsForField","valueLabel","inputType","shouldShrinkLabel","valuePlaceholder","fieldOptions","useOptions","jsxs","Stack","jsx","TextField","event","queryField","MenuItem","ToggleButtonGroup","_","value","op","ToggleButton","querySpecOpLabels","option","IconButton","DeleteOutlineIcon","RemoteDataTableQueryBuilder","queryBuilder","queryAnchor","setQueryAnchor","useState","queryOpen","queryPopoverWidth","queryFields","queryFilters","onFiltersChange","placeholder","summaryFormatter","queryFieldMap","useMemo","querySummary","formatFiltersSummary","handleQueryOpen","handleQueryClose","handleAddFilter","coerceFilterValue","createFilterId","handleRemoveFilter","filterId","handleFieldChange","nextFieldName","nextField","getFieldByName","allowedOps","handleOpChange","nextOp","handleValueChange","nextValue","Fragment","Box","InputAdornment","FilterAltOutlinedIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","Popover","Typography","Button","AddIcon","CloseIcon"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { OnChangeFn, PaginationState, QuerySpecField, QuerySpecFieldOption, QuerySpecFieldType, QuerySpecFilter, QuerySpecOp, RemoteDataTableColumn, RemoteDataTableColumnMeta, RemoteDataTableProps, RemoteDataTableQueryBuilderProps, SortingState, } from './RemoteDataTable';
|
|
2
|
+
export { buildQuerySpecParams, default, default as RemoteDataTable, } from './RemoteDataTable';
|
|
3
|
+
export * from './use-remote-data-table';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QuerySpecField, QuerySpecFilter, QuerySpecOp } from './
|
|
1
|
+
import { QuerySpecField, QuerySpecFilter, QuerySpecOp } from './RemoteDataTable.types';
|
|
2
2
|
export declare const querySpecOpLabels: Record<QuerySpecOp, string>;
|
|
3
3
|
export declare const createFilterId: () => string;
|
|
4
4
|
export declare const getFieldByName: (fields: QuerySpecField[], name: string) => QuerySpecField | undefined;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const c = ["eq"], m = {
|
|
2
|
+
eq: "is",
|
|
3
|
+
neq: "is not",
|
|
4
|
+
lt: "<",
|
|
5
|
+
lte: "<=",
|
|
6
|
+
gt: ">",
|
|
7
|
+
gte: ">=",
|
|
8
|
+
ilike: "contains",
|
|
9
|
+
in: "in",
|
|
10
|
+
isnull: "is null"
|
|
11
|
+
}, d = () => typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `filter-${Math.random().toString(36).slice(2, 10)}`, b = (e, t) => e.find((n) => n.name === t), g = (e) => e?.ops?.length ? e.ops : c, $ = (e, t, n) => t === "isnull" || e?.type === "boolean" ? n === "false" ? "false" : "true" : n ?? "", f = (e, t) => {
|
|
12
|
+
if (e.op === "isnull")
|
|
13
|
+
return e.value === "false" ? "false" : "true";
|
|
14
|
+
const n = (e.value ?? "").trim();
|
|
15
|
+
if (!n)
|
|
16
|
+
return "";
|
|
17
|
+
if (e.op === "in")
|
|
18
|
+
return n.split(",").map((o) => o.trim()).filter(Boolean).join(",");
|
|
19
|
+
if (t?.type === "date" || t?.type === "datetime") {
|
|
20
|
+
const o = new Date(n);
|
|
21
|
+
if (!Number.isNaN(o.getTime()))
|
|
22
|
+
return o.toISOString();
|
|
23
|
+
}
|
|
24
|
+
return t?.type === "boolean" ? n === "false" ? "false" : "true" : n;
|
|
25
|
+
}, p = (e, t) => t?.options?.length ? t.options.find((n) => n.value === e)?.label ?? e : e, y = (e, t) => {
|
|
26
|
+
const n = t?.label ?? e.field, o = (e.value ?? "").trim();
|
|
27
|
+
if (e.op === "isnull")
|
|
28
|
+
return `${n} ${o !== "false" ? "is null" : "is not null"}`;
|
|
29
|
+
if (!o)
|
|
30
|
+
return "";
|
|
31
|
+
const s = m[e.op] ?? e.op;
|
|
32
|
+
if (e.op === "in") {
|
|
33
|
+
const l = o.split(",").map((u) => u.trim()).filter(Boolean).map((u) => p(u, t)).join(", ");
|
|
34
|
+
return `${n} ${s} (${l})`;
|
|
35
|
+
}
|
|
36
|
+
const r = p(o, t), i = !t?.type || t.type === "string" || t.type === "date" || t.type === "datetime" ? `"${r}"` : r;
|
|
37
|
+
return `${n} ${s} ${i}`;
|
|
38
|
+
}, N = (e, t) => {
|
|
39
|
+
if (!e.length)
|
|
40
|
+
return "";
|
|
41
|
+
const n = new Map(t.map((o) => [o.name, o]));
|
|
42
|
+
return e.map((o) => y(o, n.get(o.field))).filter(Boolean).join(" AND ");
|
|
43
|
+
}, F = (e, t) => {
|
|
44
|
+
const n = new Map(t.map((s) => [s.name, s])), o = {};
|
|
45
|
+
for (const s of e) {
|
|
46
|
+
const r = n.get(s.field);
|
|
47
|
+
if (!r)
|
|
48
|
+
continue;
|
|
49
|
+
const a = f(s, r);
|
|
50
|
+
if (!a && s.op !== "isnull")
|
|
51
|
+
continue;
|
|
52
|
+
const i = s.op === "eq" ? r.name : `${r.name}__${s.op}`;
|
|
53
|
+
if (s.op === "isnull")
|
|
54
|
+
o[i] = a !== "false";
|
|
55
|
+
else if (r.type === "boolean")
|
|
56
|
+
o[i] = a !== "false";
|
|
57
|
+
else if (r.type === "number" && s.op !== "in") {
|
|
58
|
+
const l = Number(a);
|
|
59
|
+
o[i] = Number.isNaN(l) ? a : l;
|
|
60
|
+
} else
|
|
61
|
+
o[i] = a;
|
|
62
|
+
}
|
|
63
|
+
return o;
|
|
64
|
+
};
|
|
65
|
+
export {
|
|
66
|
+
F as buildQuerySpecParams,
|
|
67
|
+
$ as coerceFilterValue,
|
|
68
|
+
d as createFilterId,
|
|
69
|
+
N as formatFiltersSummary,
|
|
70
|
+
b as getFieldByName,
|
|
71
|
+
g as getOpsForField,
|
|
72
|
+
m as querySpecOpLabels
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=query-spec-utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-spec-utils.mjs","sources":["../../src/RemoteDataTable/query-spec-utils.ts"],"sourcesContent":["import type {\n QuerySpecField,\n QuerySpecFilter,\n QuerySpecOp,\n} from \"./RemoteDataTable.types\";\n\nconst defaultQuerySpecOps: QuerySpecOp[] = [\"eq\"];\n\nexport const querySpecOpLabels: Record<QuerySpecOp, string> = {\n eq: \"is\",\n neq: \"is not\",\n lt: \"<\",\n lte: \"<=\",\n gt: \">\",\n gte: \">=\",\n ilike: \"contains\",\n in: \"in\",\n isnull: \"is null\",\n};\n\nexport const createFilterId = () =>\n typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\"\n ? crypto.randomUUID()\n : `filter-${Math.random().toString(36).slice(2, 10)}`;\n\nexport const getFieldByName = (fields: QuerySpecField[], name: string) =>\n fields.find((field) => field.name === name);\n\nexport const getOpsForField = (field?: QuerySpecField) =>\n field?.ops?.length ? field.ops : defaultQuerySpecOps;\n\nexport const coerceFilterValue = (\n field: QuerySpecField | undefined,\n op: QuerySpecOp,\n value?: string,\n) => {\n if (op === \"isnull\") {\n return value === \"false\" ? \"false\" : \"true\";\n }\n\n if (field?.type === \"boolean\") {\n return value === \"false\" ? \"false\" : \"true\";\n }\n\n return value ?? \"\";\n};\n\nconst normalizeFilterValue = (\n filter: QuerySpecFilter,\n field?: QuerySpecField,\n) => {\n if (filter.op === \"isnull\") {\n return filter.value === \"false\" ? \"false\" : \"true\";\n }\n\n const raw = (filter.value ?? \"\").trim();\n if (!raw) {\n return \"\";\n }\n\n if (filter.op === \"in\") {\n return raw\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean)\n .join(\",\");\n }\n\n if (field?.type === \"date\" || field?.type === \"datetime\") {\n const parsed = new Date(raw);\n if (!Number.isNaN(parsed.getTime())) {\n return parsed.toISOString();\n }\n }\n\n if (field?.type === \"boolean\") {\n return raw === \"false\" ? \"false\" : \"true\";\n }\n\n return raw;\n};\n\nconst getOptionLabel = (value: string, field?: QuerySpecField) => {\n if (!field?.options?.length) {\n return value;\n }\n\n return field.options.find((option) => option.value === value)?.label ?? value;\n};\n\nconst formatFilterSummary = (\n filter: QuerySpecFilter,\n field?: QuerySpecField,\n) => {\n const label = field?.label ?? filter.field;\n const rawValue = (filter.value ?? \"\").trim();\n\n if (filter.op === \"isnull\") {\n const isNull = rawValue !== \"false\";\n return `${label} ${isNull ? \"is null\" : \"is not null\"}`;\n }\n\n if (!rawValue) {\n return \"\";\n }\n\n const opLabel = querySpecOpLabels[filter.op] ?? filter.op;\n\n if (filter.op === \"in\") {\n const values = rawValue\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean)\n .map((value) => getOptionLabel(value, field))\n .join(\", \");\n return `${label} ${opLabel} (${values})`;\n }\n\n const displayValue = getOptionLabel(rawValue, field);\n const needsQuotes =\n !field?.type ||\n field.type === \"string\" ||\n field.type === \"date\" ||\n field.type === \"datetime\";\n const formattedValue = needsQuotes ? `\"${displayValue}\"` : displayValue;\n return `${label} ${opLabel} ${formattedValue}`;\n};\n\nexport const formatFiltersSummary = (\n filters: QuerySpecFilter[],\n fields: QuerySpecField[],\n) => {\n if (!filters.length) {\n return \"\";\n }\n\n const fieldMap = new Map(fields.map((field) => [field.name, field]));\n return filters\n .map((filter) => formatFilterSummary(filter, fieldMap.get(filter.field)))\n .filter(Boolean)\n .join(\" AND \");\n};\n\nexport const buildQuerySpecParams = (\n filters: QuerySpecFilter[],\n fields: QuerySpecField[],\n) => {\n const fieldMap = new Map(fields.map((field) => [field.name, field]));\n const params: Record<string, string | number | boolean> = {};\n\n for (const filter of filters) {\n const field = fieldMap.get(filter.field);\n if (!field) {\n continue;\n }\n\n const normalized = normalizeFilterValue(filter, field);\n if (!normalized && filter.op !== \"isnull\") {\n continue;\n }\n\n const key = filter.op === \"eq\" ? field.name : `${field.name}__${filter.op}`;\n if (filter.op === \"isnull\") {\n params[key] = normalized !== \"false\";\n } else if (field.type === \"boolean\") {\n params[key] = normalized !== \"false\";\n } else if (field.type === \"number\" && filter.op !== \"in\") {\n const numeric = Number(normalized);\n params[key] = Number.isNaN(numeric) ? normalized : numeric;\n } else {\n params[key] = normalized;\n }\n }\n\n return params;\n};\n"],"names":["defaultQuerySpecOps","querySpecOpLabels","createFilterId","getFieldByName","fields","name","field","getOpsForField","coerceFilterValue","op","value","normalizeFilterValue","filter","raw","part","parsed","getOptionLabel","option","formatFilterSummary","label","rawValue","opLabel","values","displayValue","formattedValue","formatFiltersSummary","filters","fieldMap","buildQuerySpecParams","params","normalized","key","numeric"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnChangeFn, PaginationState, QuerySpecFilter, SortingState } from './
|
|
1
|
+
import { OnChangeFn, PaginationState, QuerySpecFilter, SortingState } from './RemoteDataTable.types';
|
|
2
2
|
export type UseRemoteDataTableOptions = {
|
|
3
3
|
initialPagination?: Partial<PaginationState>;
|
|
4
4
|
initialSorting?: SortingState;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useState as t } from "react";
|
|
2
|
+
const F = {
|
|
3
|
+
pageIndex: 0,
|
|
4
|
+
pageSize: 10
|
|
5
|
+
}, m = (c = {}) => {
|
|
6
|
+
const {
|
|
7
|
+
initialPagination: P = {},
|
|
8
|
+
initialSorting: n = [],
|
|
9
|
+
initialFilters: e = []
|
|
10
|
+
} = c, i = {
|
|
11
|
+
...F,
|
|
12
|
+
...P
|
|
13
|
+
}, [S, o] = t(
|
|
14
|
+
i
|
|
15
|
+
), [p, s] = t(n), [A, a] = t(e), r = () => {
|
|
16
|
+
o(i);
|
|
17
|
+
}, g = () => {
|
|
18
|
+
s(n);
|
|
19
|
+
}, l = () => {
|
|
20
|
+
a(e);
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
pagination: S,
|
|
24
|
+
onPaginationChange: o,
|
|
25
|
+
sorting: p,
|
|
26
|
+
onSortingChange: s,
|
|
27
|
+
filters: A,
|
|
28
|
+
onFiltersChange: a,
|
|
29
|
+
resetPagination: r,
|
|
30
|
+
resetSorting: g,
|
|
31
|
+
resetFilters: l,
|
|
32
|
+
resetAll: () => {
|
|
33
|
+
r(), g(), l();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
m as useRemoteDataTable
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=use-remote-data-table.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-data-table.mjs","sources":["../../src/RemoteDataTable/use-remote-data-table.ts"],"sourcesContent":["import { useState } from \"react\";\nimport type {\n OnChangeFn,\n PaginationState,\n QuerySpecFilter,\n SortingState,\n} from \"./RemoteDataTable.types\";\n\nexport type UseRemoteDataTableOptions = {\n initialPagination?: Partial<PaginationState>;\n initialSorting?: SortingState;\n initialFilters?: QuerySpecFilter[];\n};\n\nexport type UseRemoteDataTableResult = {\n pagination: PaginationState;\n onPaginationChange: OnChangeFn<PaginationState>;\n sorting: SortingState;\n onSortingChange: OnChangeFn<SortingState>;\n filters: QuerySpecFilter[];\n onFiltersChange: (filters: QuerySpecFilter[]) => void;\n resetPagination: () => void;\n resetSorting: () => void;\n resetFilters: () => void;\n resetAll: () => void;\n};\n\nconst DEFAULT_PAGINATION: PaginationState = {\n pageIndex: 0,\n pageSize: 10,\n};\n\nexport const useRemoteDataTable = (\n options: UseRemoteDataTableOptions = {},\n): UseRemoteDataTableResult => {\n const {\n initialPagination = {},\n initialSorting = [],\n initialFilters = [],\n } = options;\n\n const resolvedInitialPagination: PaginationState = {\n ...DEFAULT_PAGINATION,\n ...initialPagination,\n };\n\n const [pagination, setPagination] = useState<PaginationState>(\n resolvedInitialPagination,\n );\n const [sorting, setSorting] = useState<SortingState>(initialSorting);\n const [filters, setFilters] = useState<QuerySpecFilter[]>(initialFilters);\n\n const resetPagination = () => {\n setPagination(resolvedInitialPagination);\n };\n\n const resetSorting = () => {\n setSorting(initialSorting);\n };\n\n const resetFilters = () => {\n setFilters(initialFilters);\n };\n\n const resetAll = () => {\n resetPagination();\n resetSorting();\n resetFilters();\n };\n\n return {\n pagination,\n onPaginationChange: setPagination,\n sorting,\n onSortingChange: setSorting,\n filters,\n onFiltersChange: setFilters,\n resetPagination,\n resetSorting,\n resetFilters,\n resetAll,\n };\n};\n"],"names":["DEFAULT_PAGINATION","useRemoteDataTable","options","initialPagination","initialSorting","initialFilters","resolvedInitialPagination","pagination","setPagination","useState","sorting","setSorting","filters","setFilters","resetPagination","resetSorting","resetFilters"],"mappings":";AA2BA,MAAMA,IAAsC;AAAA,EAC1C,WAAW;AAAA,EACX,UAAU;AACZ,GAEaC,IAAqB,CAChCC,IAAqC,OACR;AAC7B,QAAM;AAAA,IACJ,mBAAAC,IAAoB,CAAA;AAAA,IACpB,gBAAAC,IAAiB,CAAA;AAAA,IACjB,gBAAAC,IAAiB,CAAA;AAAA,EAAC,IAChBH,GAEEI,IAA6C;AAAA,IACjD,GAAGN;AAAA,IACH,GAAGG;AAAA,EAAA,GAGC,CAACI,GAAYC,CAAa,IAAIC;AAAA,IAClCH;AAAA,EAAA,GAEI,CAACI,GAASC,CAAU,IAAIF,EAAuBL,CAAc,GAC7D,CAACQ,GAASC,CAAU,IAAIJ,EAA4BJ,CAAc,GAElES,IAAkB,MAAM;AAC5B,IAAAN,EAAcF,CAAyB;AAAA,EACzC,GAEMS,IAAe,MAAM;AACzB,IAAAJ,EAAWP,CAAc;AAAA,EAC3B,GAEMY,IAAe,MAAM;AACzB,IAAAH,EAAWR,CAAc;AAAA,EAC3B;AAQA,SAAO;AAAA,IACL,YAAAE;AAAA,IACA,oBAAoBC;AAAA,IACpB,SAAAE;AAAA,IACA,iBAAiBC;AAAA,IACjB,SAAAC;AAAA,IACA,iBAAiBC;AAAA,IACjB,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAhBe,MAAM;AACrB,MAAAF,EAAA,GACAC,EAAA,GACAC,EAAA;AAAA,IACF;AAAA,EAYE;AAEJ;"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { BoxProps } from '@mui/material/Box';
|
|
2
|
+
import { CircularProgressProps } from '@mui/material/CircularProgress';
|
|
3
|
+
import { FormControlProps } from '@mui/material/FormControl';
|
|
4
|
+
import { InputLabelProps } from '@mui/material/InputLabel';
|
|
5
|
+
import { LinearProgressProps } from '@mui/material/LinearProgress';
|
|
6
|
+
import { SelectProps as MuiSelectProps } from '@mui/material/Select';
|
|
7
|
+
import { JSXElementConstructor, ReactNode } from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* Select input size variants
|
|
10
|
+
*/
|
|
11
|
+
export type SelectSize = "small" | "medium";
|
|
12
|
+
/**
|
|
13
|
+
* Interface representing the slots for the Select component.
|
|
14
|
+
*/
|
|
15
|
+
export interface SelectSlots {
|
|
16
|
+
/**
|
|
17
|
+
* Root form control component
|
|
18
|
+
*/
|
|
19
|
+
formControl?: JSXElementConstructor<FormControlProps>;
|
|
20
|
+
/**
|
|
21
|
+
* Input label component
|
|
22
|
+
*/
|
|
23
|
+
inputLabel?: JSXElementConstructor<InputLabelProps>;
|
|
24
|
+
/**
|
|
25
|
+
* Select component
|
|
26
|
+
*/
|
|
27
|
+
select?: JSXElementConstructor<MuiSelectProps<any>>;
|
|
28
|
+
/**
|
|
29
|
+
* Render value container component
|
|
30
|
+
*/
|
|
31
|
+
renderValueContainer?: JSXElementConstructor<BoxProps>;
|
|
32
|
+
/**
|
|
33
|
+
* Loading indicator component (when fetching)
|
|
34
|
+
*/
|
|
35
|
+
loadingIndicator?: JSXElementConstructor<CircularProgressProps>;
|
|
36
|
+
/**
|
|
37
|
+
* Fetching indicator component (when loading)
|
|
38
|
+
*/
|
|
39
|
+
fetchingIndicator?: JSXElementConstructor<LinearProgressProps>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Interface representing the slot properties for the Select component.
|
|
43
|
+
*/
|
|
44
|
+
export interface SelectSlotProps {
|
|
45
|
+
/**
|
|
46
|
+
* Props for the form control
|
|
47
|
+
*/
|
|
48
|
+
formControl?: Partial<FormControlProps>;
|
|
49
|
+
/**
|
|
50
|
+
* Props for the input label
|
|
51
|
+
*/
|
|
52
|
+
inputLabel?: Partial<InputLabelProps>;
|
|
53
|
+
/**
|
|
54
|
+
* Props for the select (onChange is managed by the component)
|
|
55
|
+
*/
|
|
56
|
+
select?: Partial<Omit<MuiSelectProps<any>, "onChange">>;
|
|
57
|
+
/**
|
|
58
|
+
* Props for the render value container
|
|
59
|
+
*/
|
|
60
|
+
renderValueContainer?: Partial<BoxProps>;
|
|
61
|
+
/**
|
|
62
|
+
* Props for the loading indicator
|
|
63
|
+
*/
|
|
64
|
+
loadingIndicator?: Partial<CircularProgressProps>;
|
|
65
|
+
/**
|
|
66
|
+
* Props for the fetching indicator
|
|
67
|
+
*/
|
|
68
|
+
fetchingIndicator?: Partial<LinearProgressProps>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Props for the Select component
|
|
72
|
+
*
|
|
73
|
+
* @template T - The type of the selected value
|
|
74
|
+
*/
|
|
75
|
+
export interface SelectProps<T> {
|
|
76
|
+
/**
|
|
77
|
+
* The label for the select input.
|
|
78
|
+
*/
|
|
79
|
+
label: string;
|
|
80
|
+
/**
|
|
81
|
+
* The selected value.
|
|
82
|
+
*/
|
|
83
|
+
value: T;
|
|
84
|
+
/**
|
|
85
|
+
* If true, the select input is in a loading state.
|
|
86
|
+
*/
|
|
87
|
+
loading?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* If true, the select input is in a fetching state.
|
|
90
|
+
*/
|
|
91
|
+
fetching?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* The size of the select input.
|
|
94
|
+
*/
|
|
95
|
+
size?: SelectSize;
|
|
96
|
+
/**
|
|
97
|
+
* The color of the select input.
|
|
98
|
+
*/
|
|
99
|
+
color?: string;
|
|
100
|
+
/**
|
|
101
|
+
* If true, the select input takes up the full width of its container.
|
|
102
|
+
*/
|
|
103
|
+
fullWidth?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* The child elements to be rendered within the select input.
|
|
106
|
+
*/
|
|
107
|
+
children?: ReactNode;
|
|
108
|
+
/**
|
|
109
|
+
* The callback function to handle changes to the select input.
|
|
110
|
+
*/
|
|
111
|
+
onChange?: MuiSelectProps<T>["onChange"];
|
|
112
|
+
/**
|
|
113
|
+
* Optional slots for custom rendering within the select
|
|
114
|
+
*/
|
|
115
|
+
slots?: SelectSlots;
|
|
116
|
+
/**
|
|
117
|
+
* Optional props for the slots
|
|
118
|
+
*/
|
|
119
|
+
slotProps?: SelectSlotProps;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* A custom Select component that extends the functionality of the Material-UI Select component.
|
|
123
|
+
* This component supports additional features such as loading and fetching states, custom colors, and full-width display.
|
|
124
|
+
*
|
|
125
|
+
* Supports extensive customization through slots and slotProps.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```tsx
|
|
129
|
+
* // Basic usage
|
|
130
|
+
* <Select label="Country" value={country} onChange={handleChange}>
|
|
131
|
+
* <MenuItem value="us">United States</MenuItem>
|
|
132
|
+
* <MenuItem value="uk">United Kingdom</MenuItem>
|
|
133
|
+
* </Select>
|
|
134
|
+
*
|
|
135
|
+
* // With custom loading indicator
|
|
136
|
+
* <Select
|
|
137
|
+
* label="Status"
|
|
138
|
+
* value={status}
|
|
139
|
+
* loading
|
|
140
|
+
* slotProps={{
|
|
141
|
+
* loadingIndicator: { size: 24 }
|
|
142
|
+
* }}
|
|
143
|
+
* />
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function Select<T extends ReactNode>({ label, value, loading, fetching, size, fullWidth, color, children, onChange, slots, slotProps, }: SelectProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
147
|
+
export default Select;
|