@solidxai/core-ui 0.1.5-beta.10 → 0.1.5-beta.12
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/components/auth/GoogleAuthChecking.d.ts.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.js +10 -10
- package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.tsx +8 -9
- package/dist/components/auth/SolidChangeForcePassword.d.ts.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.js +9 -10
- package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.tsx +6 -9
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +8 -8
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +6 -8
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +57 -57
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +10 -11
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +57 -57
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +10 -11
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +12 -12
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +11 -16
- package/dist/components/auth/SolidOTPVerify.d.ts +3 -0
- package/dist/components/auth/SolidOTPVerify.d.ts.map +1 -0
- package/dist/components/auth/SolidOTPVerify.js +67 -0
- package/dist/components/auth/SolidOTPVerify.js.map +1 -0
- package/dist/components/auth/SolidOTPVerify.tsx +133 -0
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +19 -19
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +18 -23
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +15 -15
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +7 -8
- package/dist/components/common/AuthBanner.js.map +1 -1
- package/dist/components/common/GeneralSettings.d.ts.map +1 -1
- package/dist/components/common/GeneralSettings.js +87 -120
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +12 -42
- package/dist/components/common/GlobalToast.d.ts +2 -0
- package/dist/components/common/GlobalToast.d.ts.map +1 -0
- package/dist/components/common/GlobalToast.js +25 -0
- package/dist/components/common/GlobalToast.js.map +1 -0
- package/dist/components/common/GlobalToast.tsx +25 -0
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +19 -31
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +7 -19
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +41 -41
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +5 -6
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +2 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js +50 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +1 -0
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +70 -0
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js +9 -9
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidChangePassword.tsx +8 -9
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +8 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +7 -9
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js +11 -11
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidPersonalInfo.tsx +10 -11
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +9 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +8 -9
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +7 -7
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +6 -7
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +78 -21
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +65 -10
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +6 -8
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +5 -9
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +9 -11
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +5 -10
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js +5 -6
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/DeleteModuleRowAction.tsx +5 -8
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +10 -12
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +6 -11
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +11 -6
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +13 -1
- package/dist/components/core/form/SolidFormUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.js +7 -8
- package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.tsx +5 -7
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +12 -21
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +11 -33
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +22 -15
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +14 -2
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +37 -26
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -5
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +11 -11
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +9 -11
- package/dist/components/core/kanban/KanbanUserViewLayout.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.js +7 -8
- package/dist/components/core/kanban/KanbanUserViewLayout.js.map +1 -1
- package/dist/components/core/kanban/KanbanUserViewLayout.tsx +4 -6
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +5 -7
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +4 -9
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +13 -13
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +5 -6
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +20 -67
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +9 -76
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +15 -25
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +12 -32
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +6 -17
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +5 -26
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +48 -55
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +4 -22
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +42 -44
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +13 -27
- package/dist/components/core/module/ModuleListViewData.d.ts.map +1 -1
- package/dist/components/core/module/ModuleListViewData.js +11 -7
- package/dist/components/core/module/ModuleListViewData.js.map +1 -1
- package/dist/components/core/module/ModuleListViewData.tsx +10 -8
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +32 -69
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +8 -47
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +24 -37
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +8 -46
- package/dist/components/core/users/UserListView.d.ts.map +1 -1
- package/dist/components/core/users/UserListView.js +9 -16
- package/dist/components/core/users/UserListView.js.map +1 -1
- package/dist/components/core/users/UserListView.tsx +5 -21
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +4 -2
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +4 -2
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +1 -2
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +0 -2
- package/dist/components/layout/Layout.d.ts.map +1 -1
- package/dist/components/layout/Layout.js +2 -1
- package/dist/components/layout/Layout.js.map +1 -1
- package/dist/components/layout/Layout.tsx +2 -0
- package/dist/components/layout/navbar-one.d.ts.map +1 -1
- package/dist/components/layout/navbar-one.js +1 -2
- package/dist/components/layout/navbar-one.js.map +1 -1
- package/dist/components/layout/navbar-one.tsx +0 -2
- package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
- package/dist/components/layout/navbar-two-menu.js +50 -24
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +48 -30
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts +4 -0
- package/dist/nextAuth/authProviders.d.ts.map +1 -0
- package/dist/nextAuth/authProviders.js +198 -0
- package/dist/nextAuth/authProviders.js.map +1 -0
- package/dist/nextAuth/authProviders.tsx +232 -0
- package/dist/nextAuth/handleLogout.d.ts +2 -0
- package/dist/nextAuth/handleLogout.d.ts.map +1 -0
- package/dist/nextAuth/handleLogout.js +36 -0
- package/dist/nextAuth/handleLogout.js.map +1 -0
- package/dist/nextAuth/handleLogout.tsx +39 -0
- package/dist/nextAuth/refreshAccessToken.d.ts +2 -0
- package/dist/nextAuth/refreshAccessToken.d.ts.map +1 -0
- package/dist/nextAuth/refreshAccessToken.js +24 -0
- package/dist/nextAuth/refreshAccessToken.js.map +1 -0
- package/dist/nextAuth/refreshAccessToken.tsx +28 -0
- package/dist/redux/features/settingsSlice.d.ts +20 -0
- package/dist/redux/features/settingsSlice.d.ts.map +1 -0
- package/dist/redux/features/settingsSlice.js +39 -0
- package/dist/redux/features/settingsSlice.js.map +1 -0
- package/dist/redux/features/settingsSlice.ts +60 -0
- package/dist/redux/features/toastSlice.d.ts +15 -0
- package/dist/redux/features/toastSlice.d.ts.map +1 -0
- package/dist/redux/features/toastSlice.js +20 -0
- package/dist/redux/features/toastSlice.js.map +1 -0
- package/dist/redux/features/toastSlice.ts +35 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -1
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/package.json +1 -1
- package/dist/components/auth/AuthTabs.d.ts +0 -14
- package/dist/components/auth/AuthTabs.d.ts.map +0 -1
- package/dist/components/auth/AuthTabs.js +0 -19
- package/dist/components/auth/AuthTabs.js.map +0 -1
- package/dist/components/auth/AuthTabs.tsx +0 -38
- package/dist/components/common/SolidErrorStatePage.d.ts +0 -12
- package/dist/components/common/SolidErrorStatePage.d.ts.map +0 -1
- package/dist/components/common/SolidErrorStatePage.js +0 -16
- package/dist/components/common/SolidErrorStatePage.js.map +0 -1
- package/dist/components/common/SolidErrorStatePage.tsx +0 -55
- package/dist/components/core/list/PLAN.md +0 -92
- package/dist/components/core/list/SolidDataTable.d.ts +0 -58
- package/dist/components/core/list/SolidDataTable.d.ts.map +0 -1
- package/dist/components/core/list/SolidDataTable.js +0 -141
- package/dist/components/core/list/SolidDataTable.js.map +0 -1
- package/dist/components/core/list/SolidDataTable.tsx +0 -314
- package/dist/components/core/list/SolidDataTablePagination.d.ts +0 -15
- package/dist/components/core/list/SolidDataTablePagination.d.ts.map +0 -1
- package/dist/components/core/list/SolidDataTablePagination.js +0 -22
- package/dist/components/core/list/SolidDataTablePagination.js.map +0 -1
- package/dist/components/core/list/SolidDataTablePagination.tsx +0 -71
- package/dist/components/layout/AdminTopHeader.d.ts +0 -2
- package/dist/components/layout/AdminTopHeader.d.ts.map +0 -1
- package/dist/components/layout/AdminTopHeader.js +0 -68
- package/dist/components/layout/AdminTopHeader.js.map +0 -1
- package/dist/components/layout/AdminTopHeader.tsx +0 -135
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts +0 -24
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +0 -224
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +0 -339
- package/dist/components/shad-cn-ui/SolidButton.d.ts +0 -14
- package/dist/components/shad-cn-ui/SolidButton.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidButton.js +0 -36
- package/dist/components/shad-cn-ui/SolidButton.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidButton.tsx +0 -54
- package/dist/components/shad-cn-ui/SolidInput.d.ts +0 -5
- package/dist/components/shad-cn-ui/SolidInput.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidInput.js +0 -35
- package/dist/components/shad-cn-ui/SolidInput.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidInput.tsx +0 -12
- package/dist/components/shad-cn-ui/SolidNumberInput.d.ts +0 -10
- package/dist/components/shad-cn-ui/SolidNumberInput.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidNumberInput.js +0 -33
- package/dist/components/shad-cn-ui/SolidNumberInput.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidNumberInput.tsx +0 -24
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +0 -16
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidSelect.js +0 -26
- package/dist/components/shad-cn-ui/SolidSelect.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidSelect.tsx +0 -65
- package/dist/components/shad-cn-ui/SolidTabs.d.ts +0 -18
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/SolidTabs.js +0 -22
- package/dist/components/shad-cn-ui/SolidTabs.js.map +0 -1
- package/dist/components/shad-cn-ui/SolidTabs.tsx +0 -73
- package/dist/components/shad-cn-ui/index.d.ts +0 -7
- package/dist/components/shad-cn-ui/index.d.ts.map +0 -1
- package/dist/components/shad-cn-ui/index.js +0 -7
- package/dist/components/shad-cn-ui/index.js.map +0 -1
- package/dist/components/shad-cn-ui/index.ts +0 -6
- package/dist/components/solid-ui/SolidButton.d.ts +0 -14
- package/dist/components/solid-ui/SolidButton.d.ts.map +0 -1
- package/dist/components/solid-ui/SolidButton.js +0 -36
- package/dist/components/solid-ui/SolidButton.js.map +0 -1
- package/dist/components/solid-ui/SolidButton.tsx +0 -54
- package/dist/components/solid-ui/SolidTabs.d.ts +0 -18
- package/dist/components/solid-ui/SolidTabs.d.ts.map +0 -1
- package/dist/components/solid-ui/SolidTabs.js +0 -22
- package/dist/components/solid-ui/SolidTabs.js.map +0 -1
- package/dist/components/solid-ui/SolidTabs.tsx +0 -73
- package/dist/components/solid-ui/index.d.ts +0 -3
- package/dist/components/solid-ui/index.d.ts.map +0 -1
- package/dist/components/solid-ui/index.js +0 -3
- package/dist/components/solid-ui/index.js.map +0 -1
- package/dist/components/solid-ui/index.ts +0 -2
- package/dist/resources/images/errors/error-astronaut-404.png +0 -0
- package/dist/resources/shadcn-base.css +0 -3200
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
navbarReducer,
|
|
5
5
|
popupReducer,
|
|
6
6
|
themeReducer,
|
|
7
|
+
toastReducer,
|
|
7
8
|
userReducer
|
|
8
9
|
} from "../../index";
|
|
9
10
|
import {
|
|
@@ -61,4 +62,5 @@ export const solidReducers = {
|
|
|
61
62
|
popup: popupReducer,
|
|
62
63
|
navbarState: navbarReducer,
|
|
63
64
|
dataViewState: dataViewReducer,
|
|
65
|
+
toast: toastReducer,
|
|
64
66
|
};
|
package/package.json
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
type Tab = {
|
|
3
|
-
key: string;
|
|
4
|
-
label: string;
|
|
5
|
-
content: React.ReactNode;
|
|
6
|
-
};
|
|
7
|
-
type AuthTabsProps = {
|
|
8
|
-
tabs: Tab[];
|
|
9
|
-
activeIndex: number;
|
|
10
|
-
onChange: (index: number) => void;
|
|
11
|
-
};
|
|
12
|
-
export declare const AuthTabs: ({ tabs, activeIndex, onChange }: AuthTabsProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=AuthTabs.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthTabs.d.ts","sourceRoot":"","sources":["../../../src/components/auth/AuthTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,KAAK,GAAG,GAAG;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,QAAQ,oCAAqC,aAAa,mDAsBtE,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { SolidTabGroup } from "../shad-cn-ui";
|
|
3
|
-
export var AuthTabs = function (_a) {
|
|
4
|
-
var _b;
|
|
5
|
-
var tabs = _a.tabs, activeIndex = _a.activeIndex, onChange = _a.onChange;
|
|
6
|
-
if (!tabs.length)
|
|
7
|
-
return null;
|
|
8
|
-
var activeValue = ((_b = tabs[activeIndex]) === null || _b === void 0 ? void 0 : _b.key) || tabs[0].key;
|
|
9
|
-
return (_jsx(SolidTabGroup, { className: "solid-auth-tabs", listClassName: "solid-auth-tabs-list", panelClassName: "solid-auth-tabs-panel", tabs: tabs.map(function (tab) { return ({
|
|
10
|
-
value: tab.key,
|
|
11
|
-
label: tab.label,
|
|
12
|
-
content: tab.content,
|
|
13
|
-
}); }), value: activeValue, onValueChange: function (value) {
|
|
14
|
-
var nextIndex = tabs.findIndex(function (tab) { return tab.key === value; });
|
|
15
|
-
if (nextIndex >= 0)
|
|
16
|
-
onChange(nextIndex);
|
|
17
|
-
} }));
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=AuthTabs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AuthTabs.js","sourceRoot":"","sources":["../../../src/components/auth/AuthTabs.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAc9C,MAAM,CAAC,IAAM,QAAQ,GAAG,UAAC,EAA8C;;QAA5C,IAAI,UAAA,EAAE,WAAW,iBAAA,EAAE,QAAQ,cAAA;IACpD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAM,WAAW,GAAG,CAAA,MAAA,IAAI,CAAC,WAAW,CAAC,0CAAE,GAAG,KAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE1D,OAAO,CACL,KAAC,aAAa,IACZ,SAAS,EAAC,iBAAiB,EAC3B,aAAa,EAAC,sBAAsB,EACpC,cAAc,EAAC,uBAAuB,EACtC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC;YACvB,KAAK,EAAE,GAAG,CAAC,GAAG;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,EAJsB,CAItB,CAAC,EACH,KAAK,EAAE,WAAW,EAClB,aAAa,EAAE,UAAC,KAAK;YACnB,IAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,GAAG,KAAK,KAAK,EAAjB,CAAiB,CAAC,CAAC;YAC7D,IAAI,SAAS,IAAI,CAAC;gBAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from \"react\";\nimport { SolidTabGroup } from \"../shad-cn-ui\";\n\ntype Tab = {\n key: string;\n label: string;\n content: React.ReactNode;\n};\n\ntype AuthTabsProps = {\n tabs: Tab[];\n activeIndex: number;\n onChange: (index: number) => void;\n};\n\nexport const AuthTabs = ({ tabs, activeIndex, onChange }: AuthTabsProps) => {\n if (!tabs.length) return null;\n\n const activeValue = tabs[activeIndex]?.key || tabs[0].key;\n\n return (\n <SolidTabGroup\n className=\"solid-auth-tabs\"\n listClassName=\"solid-auth-tabs-list\"\n panelClassName=\"solid-auth-tabs-panel\"\n tabs={tabs.map((tab) => ({\n value: tab.key,\n label: tab.label,\n content: tab.content,\n }))}\n value={activeValue}\n onValueChange={(value) => {\n const nextIndex = tabs.findIndex((tab) => tab.key === value);\n if (nextIndex >= 0) onChange(nextIndex);\n }}\n />\n );\n};\n"]}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { SolidTabGroup } from "../shad-cn-ui";
|
|
3
|
-
|
|
4
|
-
type Tab = {
|
|
5
|
-
key: string;
|
|
6
|
-
label: string;
|
|
7
|
-
content: React.ReactNode;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
type AuthTabsProps = {
|
|
11
|
-
tabs: Tab[];
|
|
12
|
-
activeIndex: number;
|
|
13
|
-
onChange: (index: number) => void;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export const AuthTabs = ({ tabs, activeIndex, onChange }: AuthTabsProps) => {
|
|
17
|
-
if (!tabs.length) return null;
|
|
18
|
-
|
|
19
|
-
const activeValue = tabs[activeIndex]?.key || tabs[0].key;
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<SolidTabGroup
|
|
23
|
-
className="solid-auth-tabs"
|
|
24
|
-
listClassName="solid-auth-tabs-list"
|
|
25
|
-
panelClassName="solid-auth-tabs-panel"
|
|
26
|
-
tabs={tabs.map((tab) => ({
|
|
27
|
-
value: tab.key,
|
|
28
|
-
label: tab.label,
|
|
29
|
-
content: tab.content,
|
|
30
|
-
}))}
|
|
31
|
-
value={activeValue}
|
|
32
|
-
onValueChange={(value) => {
|
|
33
|
-
const nextIndex = tabs.findIndex((tab) => tab.key === value);
|
|
34
|
-
if (nextIndex >= 0) onChange(nextIndex);
|
|
35
|
-
}}
|
|
36
|
-
/>
|
|
37
|
-
);
|
|
38
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type SolidErrorStatePageProps = {
|
|
2
|
-
eyebrow?: string;
|
|
3
|
-
statusCode?: string;
|
|
4
|
-
title: string;
|
|
5
|
-
description: string;
|
|
6
|
-
actionLabel: string;
|
|
7
|
-
actionHref?: string;
|
|
8
|
-
onAction?: () => void;
|
|
9
|
-
};
|
|
10
|
-
export declare const SolidErrorStatePage: ({ eyebrow, statusCode, title, description, actionLabel, actionHref, onAction, }: SolidErrorStatePageProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=SolidErrorStatePage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolidErrorStatePage.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidErrorStatePage.tsx"],"names":[],"mappings":"AAEA,KAAK,wBAAwB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,oFAQ7B,wBAAwB,4CAkC1B,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { SolidButton } from "../shad-cn-ui/SolidButton";
|
|
3
|
-
export var SolidErrorStatePage = function (_a) {
|
|
4
|
-
var _b = _a.eyebrow, eyebrow = _b === void 0 ? "Whoops!" : _b, statusCode = _a.statusCode, title = _a.title, description = _a.description, actionLabel = _a.actionLabel, actionHref = _a.actionHref, onAction = _a.onAction;
|
|
5
|
-
var handleAction = function () {
|
|
6
|
-
if (onAction) {
|
|
7
|
-
onAction();
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (actionHref) {
|
|
11
|
-
window.location.href = actionHref;
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
return (_jsxs("div", { className: "solid-error-page", children: [_jsx("section", { className: "solid-error-page__content", children: _jsxs("div", { className: "solid-error-page__copy", children: [_jsx("p", { className: "solid-error-page__eyebrow", children: eyebrow }), _jsx("h1", { className: "solid-error-page__title", children: title }), _jsx("p", { className: "solid-error-page__description", children: description }), _jsx(SolidButton, { size: "lg", className: "solid-error-page__cta", onClick: handleAction, children: actionLabel })] }) }), _jsx("section", { className: "solid-error-page__visual", "aria-hidden": "true", children: _jsx("div", { className: "solid-error-page__visual-card", children: statusCode ? _jsx("span", { className: "solid-error-page__code", children: statusCode }) : null }) })] }));
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=SolidErrorStatePage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolidErrorStatePage.js","sourceRoot":"","sources":["../../../src/components/common/SolidErrorStatePage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAYxD,MAAM,CAAC,IAAM,mBAAmB,GAAG,UAAC,EAQT;QAPzB,eAAmB,EAAnB,OAAO,mBAAG,SAAS,KAAA,EACnB,UAAU,gBAAA,EACV,KAAK,WAAA,EACL,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,QAAQ,cAAA;IAER,IAAM,YAAY,GAAG;QACnB,IAAI,QAAQ,EAAE;YACZ,QAAQ,EAAE,CAAC;YACX,OAAO;SACR;QACD,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC;SACnC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,kBAAkB,aAC/B,kBAAS,SAAS,EAAC,2BAA2B,YAC5C,eAAK,SAAS,EAAC,wBAAwB,aACrC,YAAG,SAAS,EAAC,2BAA2B,YAAE,OAAO,GAAK,EACtD,aAAI,SAAS,EAAC,yBAAyB,YAAE,KAAK,GAAM,EACpD,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAK,EAC9D,KAAC,WAAW,IACV,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,YAAY,YAEpB,WAAW,GACA,IACV,GACE,EACV,kBAAS,SAAS,EAAC,0BAA0B,iBAAa,MAAM,YAC9D,cAAK,SAAS,EAAC,+BAA+B,YAC3C,UAAU,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,wBAAwB,YAAE,UAAU,GAAQ,CAAC,CAAC,CAAC,IAAI,GAC7E,GACE,IACN,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { SolidButton } from \"../shad-cn-ui/SolidButton\";\n\ntype SolidErrorStatePageProps = {\n eyebrow?: string;\n statusCode?: string;\n title: string;\n description: string;\n actionLabel: string;\n actionHref?: string;\n onAction?: () => void;\n};\n\nexport const SolidErrorStatePage = ({\n eyebrow = \"Whoops!\",\n statusCode,\n title,\n description,\n actionLabel,\n actionHref,\n onAction,\n}: SolidErrorStatePageProps) => {\n const handleAction = () => {\n if (onAction) {\n onAction();\n return;\n }\n if (actionHref) {\n window.location.href = actionHref;\n }\n };\n\n return (\n <div className=\"solid-error-page\">\n <section className=\"solid-error-page__content\">\n <div className=\"solid-error-page__copy\">\n <p className=\"solid-error-page__eyebrow\">{eyebrow}</p>\n <h1 className=\"solid-error-page__title\">{title}</h1>\n <p className=\"solid-error-page__description\">{description}</p>\n <SolidButton\n size=\"lg\"\n className=\"solid-error-page__cta\"\n onClick={handleAction}\n >\n {actionLabel}\n </SolidButton>\n </div>\n </section>\n <section className=\"solid-error-page__visual\" aria-hidden=\"true\">\n <div className=\"solid-error-page__visual-card\">\n {statusCode ? <span className=\"solid-error-page__code\">{statusCode}</span> : null}\n </div>\n </section>\n </div>\n );\n};\n"]}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { SolidButton } from "../shad-cn-ui/SolidButton";
|
|
2
|
-
|
|
3
|
-
type SolidErrorStatePageProps = {
|
|
4
|
-
eyebrow?: string;
|
|
5
|
-
statusCode?: string;
|
|
6
|
-
title: string;
|
|
7
|
-
description: string;
|
|
8
|
-
actionLabel: string;
|
|
9
|
-
actionHref?: string;
|
|
10
|
-
onAction?: () => void;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const SolidErrorStatePage = ({
|
|
14
|
-
eyebrow = "Whoops!",
|
|
15
|
-
statusCode,
|
|
16
|
-
title,
|
|
17
|
-
description,
|
|
18
|
-
actionLabel,
|
|
19
|
-
actionHref,
|
|
20
|
-
onAction,
|
|
21
|
-
}: SolidErrorStatePageProps) => {
|
|
22
|
-
const handleAction = () => {
|
|
23
|
-
if (onAction) {
|
|
24
|
-
onAction();
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
if (actionHref) {
|
|
28
|
-
window.location.href = actionHref;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
return (
|
|
33
|
-
<div className="solid-error-page">
|
|
34
|
-
<section className="solid-error-page__content">
|
|
35
|
-
<div className="solid-error-page__copy">
|
|
36
|
-
<p className="solid-error-page__eyebrow">{eyebrow}</p>
|
|
37
|
-
<h1 className="solid-error-page__title">{title}</h1>
|
|
38
|
-
<p className="solid-error-page__description">{description}</p>
|
|
39
|
-
<SolidButton
|
|
40
|
-
size="lg"
|
|
41
|
-
className="solid-error-page__cta"
|
|
42
|
-
onClick={handleAction}
|
|
43
|
-
>
|
|
44
|
-
{actionLabel}
|
|
45
|
-
</SolidButton>
|
|
46
|
-
</div>
|
|
47
|
-
</section>
|
|
48
|
-
<section className="solid-error-page__visual" aria-hidden="true">
|
|
49
|
-
<div className="solid-error-page__visual-card">
|
|
50
|
-
{statusCode ? <span className="solid-error-page__code">{statusCode}</span> : null}
|
|
51
|
-
</div>
|
|
52
|
-
</section>
|
|
53
|
-
</div>
|
|
54
|
-
);
|
|
55
|
-
};
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# List View Rewrite Plan (Shadcn + Single Sort)
|
|
2
|
-
|
|
3
|
-
## Goal
|
|
4
|
-
- [ ] Rebuild list view UX on shadcn primitives while preserving current behavior.
|
|
5
|
-
- [ ] Remove PrimeReact dependencies from list flow.
|
|
6
|
-
- [ ] Replace multi-sort with single-sort everywhere (UI, state, query, imperative API).
|
|
7
|
-
|
|
8
|
-
## Scope
|
|
9
|
-
- [ ] `SolidListView.tsx`
|
|
10
|
-
- [ ] `SolidListViewColumn.tsx` + `columns/*`
|
|
11
|
-
- [ ] `SolidListViewConfigure.tsx`
|
|
12
|
-
- [ ] `SolidColumnSelector/SolidListColumnSelector.tsx`
|
|
13
|
-
- [ ] `core/common/SolidGlobalSearchElement.tsx`
|
|
14
|
-
- [ ] `core/common/FilterComponent.tsx`
|
|
15
|
-
- [ ] `core/common/SolidGenericImport/*`
|
|
16
|
-
- [ ] `components/common/SolidExport.tsx`
|
|
17
|
-
|
|
18
|
-
## Phase 1: Architecture Baseline
|
|
19
|
-
- [ ] Define target component map (shadcn): table, dropdown-menu, dialog, popover, tabs, select, checkbox, input, pagination.
|
|
20
|
-
- [ ] Freeze current contract of `SolidListViewHandle` and decide required signature changes for single-sort.
|
|
21
|
-
- [ ] Add migration notes for preserved extension points:
|
|
22
|
-
- [ ] `onListLoad`
|
|
23
|
-
- [ ] `onBeforeListDataLoad`
|
|
24
|
-
- [ ] custom header/row buttons
|
|
25
|
-
|
|
26
|
-
## Phase 2: Sorting (Drop Multi-sort)
|
|
27
|
-
- [x] Replace `multiSortMeta` state with single sort state (`sortField`, `sortOrder`).
|
|
28
|
-
- [x] Update DataTable/table trigger logic to emit one active sort only.
|
|
29
|
-
- [x] Update `setQueryString()` to serialize exactly one sort expression.
|
|
30
|
-
- [x] Update localStorage restore/persist shape to single-sort.
|
|
31
|
-
- [x] Update `SolidListViewHandle.setSort(...)` to single-sort API.
|
|
32
|
-
- [x] Remove/cleanup all code paths referencing `event.multiSortMeta`.
|
|
33
|
-
|
|
34
|
-
## Phase 3: Core Table + Pagination
|
|
35
|
-
- [x] Implement shadcn table container and row rendering.
|
|
36
|
-
- [x] Recreate selectable rows (active + deleted split behavior).
|
|
37
|
-
- [x] Recreate paginator with:
|
|
38
|
-
- [x] rows per page
|
|
39
|
-
- [x] current page report
|
|
40
|
-
- [x] next/prev controls
|
|
41
|
-
- [x] Preserve row click routing and session back-navigation markers.
|
|
42
|
-
- [ ] Preserve archived/recover flows.
|
|
43
|
-
|
|
44
|
-
## Phase 4: Filters + Search
|
|
45
|
-
- [ ] Keep predicate model unchanged (`custom_filter_predicate`, `search_predicate`, `saved_filter_predicate`, `predefined_search_predicate`, grouping/aggregation).
|
|
46
|
-
- [ ] Migrate `SolidGlobalSearchElement` dialogs/popovers to shadcn.
|
|
47
|
-
- [ ] Migrate `FilterComponent` rule builder UI to shadcn controls.
|
|
48
|
-
- [ ] Preserve saved filter URL behavior (`savedQuery`) and local cache behavior.
|
|
49
|
-
- [ ] Confirm relation filter hydration still works.
|
|
50
|
-
|
|
51
|
-
## Phase 5: Configure Menu + Column Selector
|
|
52
|
-
- [ ] Replace cog overlay/context menu with shadcn dropdown/popover.
|
|
53
|
-
- [ ] Rebuild "Customize Layout" panel in shadcn.
|
|
54
|
-
- [ ] Keep drag-reorder + checkbox visibility behavior in `SolidListColumnSelector`.
|
|
55
|
-
- [ ] Remove page reload after layout save; refetch/re-render list metadata instead.
|
|
56
|
-
- [ ] Fix permission guard checks in configure actions (`actionsAllowed.includes(...)`).
|
|
57
|
-
|
|
58
|
-
## Phase 6: Import / Export
|
|
59
|
-
- [ ] Migrate `SolidExport` dialog and controls to shadcn.
|
|
60
|
-
- [ ] Preserve template CRUD and filtered export path.
|
|
61
|
-
- [ ] Migrate `SolidGenericImport` stepper/dialog flow to shadcn.
|
|
62
|
-
- [ ] Preserve upload, mapping, sync import, and failed-record download behavior.
|
|
63
|
-
|
|
64
|
-
## Phase 7: Column Renderers
|
|
65
|
-
- [ ] Keep `SolidListViewColumn` type dispatch pattern.
|
|
66
|
-
- [ ] Migrate per-column cell UI to shadcn styling where applicable.
|
|
67
|
-
- [ ] Preserve widgets loaded via extension registry.
|
|
68
|
-
- [ ] Verify relation columns (many-to-one, one-to-many, many-to-many) behavior parity.
|
|
69
|
-
|
|
70
|
-
## Phase 8: Cleanup
|
|
71
|
-
- [ ] Remove unused PrimeReact imports/styles from list modules.
|
|
72
|
-
- [ ] Delete obsolete list-specific filter components if fully replaced.
|
|
73
|
-
- [ ] Consolidate duplicated filter helpers between `core/list` and `core/filter` if safe.
|
|
74
|
-
|
|
75
|
-
## Validation Checklist
|
|
76
|
-
- [ ] List metadata fetch works for list pages and embedded mode.
|
|
77
|
-
- [ ] API query contains correct: `offset`, `limit`, `filters`, `populate`, `populateMedia`, `sort`, `locale`.
|
|
78
|
-
- [ ] Single sort works from UI and imperative API.
|
|
79
|
-
- [ ] Pagination state persists/restores correctly.
|
|
80
|
-
- [ ] Global search + custom filters + saved filters + predefined searches work together.
|
|
81
|
-
- [ ] Grouping/aggregation predicates are preserved in query payload.
|
|
82
|
-
- [ ] Column selector save updates layout reliably.
|
|
83
|
-
- [ ] Import and export end-to-end succeed.
|
|
84
|
-
- [ ] Row actions (default + custom) still honor permissions/roles.
|
|
85
|
-
|
|
86
|
-
## Suggested Execution Order
|
|
87
|
-
- [ ] 1) Sorting refactor first (single-sort data model).
|
|
88
|
-
- [ ] 2) Table shell + pagination.
|
|
89
|
-
- [ ] 3) Configure menu + column selector.
|
|
90
|
-
- [ ] 4) Global search/filter builder.
|
|
91
|
-
- [ ] 5) Import/export.
|
|
92
|
-
- [ ] 6) Column renderer pass + cleanup.
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export type DataTableStateEvent = {
|
|
3
|
-
sortField?: string;
|
|
4
|
-
sortOrder?: 1 | -1 | 0;
|
|
5
|
-
};
|
|
6
|
-
type HeaderRenderer = React.ReactNode | (() => React.ReactNode);
|
|
7
|
-
type BodyRenderer = (rowData: any) => React.ReactNode;
|
|
8
|
-
export type SolidColumnProps = {
|
|
9
|
-
field?: string;
|
|
10
|
-
header?: HeaderRenderer;
|
|
11
|
-
body?: BodyRenderer;
|
|
12
|
-
sortable?: boolean;
|
|
13
|
-
selectionMode?: "multiple" | "single" | null;
|
|
14
|
-
headerStyle?: React.CSSProperties;
|
|
15
|
-
style?: React.CSSProperties;
|
|
16
|
-
className?: string;
|
|
17
|
-
headerClassName?: string;
|
|
18
|
-
frozen?: boolean;
|
|
19
|
-
alignFrozen?: "left" | "right";
|
|
20
|
-
[key: string]: any;
|
|
21
|
-
};
|
|
22
|
-
export declare function Column(_props: SolidColumnProps): null;
|
|
23
|
-
type SolidDataTableProps = {
|
|
24
|
-
value: any[];
|
|
25
|
-
children: React.ReactNode;
|
|
26
|
-
size?: "small" | "normal" | "large";
|
|
27
|
-
viewportHeight?: string;
|
|
28
|
-
dataKey?: string;
|
|
29
|
-
emptyMessage?: React.ReactNode;
|
|
30
|
-
rows?: number;
|
|
31
|
-
first?: number;
|
|
32
|
-
totalRecords?: number;
|
|
33
|
-
rowsPerPageOptions?: number[];
|
|
34
|
-
onPage?: (event: {
|
|
35
|
-
first: number;
|
|
36
|
-
rows: number;
|
|
37
|
-
}) => void;
|
|
38
|
-
onSort?: (event: DataTableStateEvent) => void;
|
|
39
|
-
sortField?: string;
|
|
40
|
-
sortOrder?: 1 | -1 | 0;
|
|
41
|
-
removableSort?: boolean;
|
|
42
|
-
selection?: any[];
|
|
43
|
-
selectionMode?: "checkbox" | null;
|
|
44
|
-
onSelectionChange?: (event: {
|
|
45
|
-
value: any[];
|
|
46
|
-
}) => void;
|
|
47
|
-
onRowClick?: (event: {
|
|
48
|
-
data: any;
|
|
49
|
-
}) => void;
|
|
50
|
-
rowClassName?: (rowData: any) => string;
|
|
51
|
-
tableClassName?: string;
|
|
52
|
-
paginatorClassName?: string;
|
|
53
|
-
currentPageReportTemplate?: string;
|
|
54
|
-
[key: string]: any;
|
|
55
|
-
};
|
|
56
|
-
export declare function SolidDataTable({ value, children, size, viewportHeight, dataKey, emptyMessage, rows, first, totalRecords, rowsPerPageOptions, onPage, onSort, sortField, sortOrder, removableSort, selection, selectionMode, onSelectionChange, onRowClick, rowClassName, tableClassName, paginatorClassName, currentPageReportTemplate, }: SolidDataTableProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
-
export {};
|
|
58
|
-
//# sourceMappingURL=SolidDataTable.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolidDataTable.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
-
if (ar || !(i in from)) {
|
|
15
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
-
ar[i] = from[i];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
-
};
|
|
21
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
import React from "react";
|
|
23
|
-
export function Column(_props) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
var cx = function () {
|
|
27
|
-
var parts = [];
|
|
28
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
29
|
-
parts[_i] = arguments[_i];
|
|
30
|
-
}
|
|
31
|
-
return parts.filter(Boolean).join(" ");
|
|
32
|
-
};
|
|
33
|
-
function renderHeaderNode(header) {
|
|
34
|
-
if (typeof header === "function")
|
|
35
|
-
return header();
|
|
36
|
-
return header !== null && header !== void 0 ? header : null;
|
|
37
|
-
}
|
|
38
|
-
function normalizeColumns(children) {
|
|
39
|
-
return React.Children.toArray(children).filter(function (child) {
|
|
40
|
-
return React.isValidElement(child);
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function resolveSortIcon(active, order) {
|
|
44
|
-
if (!active || order === 0)
|
|
45
|
-
return "pi pi-sort-alt";
|
|
46
|
-
return order === 1 ? "pi pi-sort-amount-up-alt" : "pi pi-sort-amount-down";
|
|
47
|
-
}
|
|
48
|
-
function nextSortOrder(active, order, removableSort) {
|
|
49
|
-
if (removableSort === void 0) { removableSort = true; }
|
|
50
|
-
if (!active || order === 0)
|
|
51
|
-
return 1;
|
|
52
|
-
if (order === 1)
|
|
53
|
-
return -1;
|
|
54
|
-
return removableSort ? 0 : 1;
|
|
55
|
-
}
|
|
56
|
-
export function SolidDataTable(_a) {
|
|
57
|
-
var value = _a.value, children = _a.children, _b = _a.size, size = _b === void 0 ? "normal" : _b, viewportHeight = _a.viewportHeight, _c = _a.dataKey, dataKey = _c === void 0 ? "id" : _c, emptyMessage = _a.emptyMessage, _d = _a.rows, rows = _d === void 0 ? 25 : _d, _e = _a.first, first = _e === void 0 ? 0 : _e, _f = _a.totalRecords, totalRecords = _f === void 0 ? 0 : _f, _g = _a.rowsPerPageOptions, rowsPerPageOptions = _g === void 0 ? [10, 25, 50, 100] : _g, onPage = _a.onPage, onSort = _a.onSort, sortField = _a.sortField, _h = _a.sortOrder, sortOrder = _h === void 0 ? 0 : _h, _j = _a.removableSort, removableSort = _j === void 0 ? true : _j, _k = _a.selection, selection = _k === void 0 ? [] : _k, selectionMode = _a.selectionMode, onSelectionChange = _a.onSelectionChange, onRowClick = _a.onRowClick, rowClassName = _a.rowClassName, tableClassName = _a.tableClassName, paginatorClassName = _a.paginatorClassName, _l = _a.currentPageReportTemplate, currentPageReportTemplate = _l === void 0 ? "{first} - {last} of {totalRecords}" : _l;
|
|
58
|
-
var columns = normalizeColumns(children);
|
|
59
|
-
var pageRows = value !== null && value !== void 0 ? value : [];
|
|
60
|
-
var selectedKeys = new Set((selection || []).map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
|
|
61
|
-
var allSelected = pageRows.length > 0 && pageRows.every(function (row) { return selectedKeys.has(String(row === null || row === void 0 ? void 0 : row[dataKey])); });
|
|
62
|
-
var start = totalRecords === 0 ? 0 : first + 1;
|
|
63
|
-
var end = Math.min(first + rows, totalRecords);
|
|
64
|
-
var currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;
|
|
65
|
-
var totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;
|
|
66
|
-
var report = currentPageReportTemplate
|
|
67
|
-
.replace("{first}", String(start))
|
|
68
|
-
.replace("{last}", String(end))
|
|
69
|
-
.replace("{totalRecords}", String(totalRecords));
|
|
70
|
-
var emitSelection = function (nextSelection) {
|
|
71
|
-
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange({ value: nextSelection });
|
|
72
|
-
};
|
|
73
|
-
var toggleSelectAll = function (checked) {
|
|
74
|
-
if (!checked) {
|
|
75
|
-
var pageKeys_1 = new Set(pageRows.map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
|
|
76
|
-
emitSelection((selection || []).filter(function (row) { return !pageKeys_1.has(String(row === null || row === void 0 ? void 0 : row[dataKey])); }));
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
var merged = __spreadArray([], (selection || []), true);
|
|
80
|
-
var mergedKeys = new Set(merged.map(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]); }));
|
|
81
|
-
pageRows.forEach(function (row) {
|
|
82
|
-
var key = String(row === null || row === void 0 ? void 0 : row[dataKey]);
|
|
83
|
-
if (!mergedKeys.has(key))
|
|
84
|
-
merged.push(row);
|
|
85
|
-
});
|
|
86
|
-
emitSelection(merged);
|
|
87
|
-
};
|
|
88
|
-
var toggleRowSelection = function (rowData, checked) {
|
|
89
|
-
var key = String(rowData === null || rowData === void 0 ? void 0 : rowData[dataKey]);
|
|
90
|
-
if (!checked) {
|
|
91
|
-
emitSelection((selection || []).filter(function (row) { return String(row === null || row === void 0 ? void 0 : row[dataKey]) !== key; }));
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
emitSelection(__spreadArray(__spreadArray([], (selection || []), true), [rowData], false));
|
|
95
|
-
};
|
|
96
|
-
var densityClass = size === "small"
|
|
97
|
-
? "solid-table-density-compact"
|
|
98
|
-
: size === "large"
|
|
99
|
-
? "solid-table-density-comfortable"
|
|
100
|
-
: "solid-table-density-cozy";
|
|
101
|
-
return (_jsxs("div", { className: cx("solid-data-table-root w-full min-h-0", densityClass), style: {
|
|
102
|
-
height: viewportHeight || "100%",
|
|
103
|
-
maxHeight: viewportHeight || "100%",
|
|
104
|
-
}, children: [_jsx("div", { className: "solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background", children: _jsxs("table", { className: cx("w-full text-sm border-collapse", tableClassName), children: [_jsx("thead", { className: "solid-data-table-head sticky top-0 z-2", children: _jsx("tr", { children: columns.map(function (column, index) {
|
|
105
|
-
var props = column.props;
|
|
106
|
-
var isSelectionColumn = props.selectionMode === "multiple";
|
|
107
|
-
var isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);
|
|
108
|
-
var isActiveSort = isSortable && sortField === props.field;
|
|
109
|
-
var iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);
|
|
110
|
-
return (_jsx("th", { className: cx("solid-data-table-th text-left text-foreground whitespace-nowrap", isSelectionColumn ? "solid-data-table-selection-col" : undefined, props.headerClassName), style: __assign(__assign({}, props.style), props.headerStyle), children: isSelectionColumn ? (_jsx("input", { type: "checkbox", checked: allSelected, onChange: function (e) { return toggleSelectAll(e.currentTarget.checked); }, "aria-label": "Select all rows" })) : (_jsxs("button", { type: "button", className: cx("solid-table-header-button", isSortable ? "is-sortable" : undefined), onClick: function () {
|
|
111
|
-
if (!isSortable)
|
|
112
|
-
return;
|
|
113
|
-
var nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);
|
|
114
|
-
onSort === null || onSort === void 0 ? void 0 : onSort({
|
|
115
|
-
sortField: nextOrder === 0 ? undefined : props.field,
|
|
116
|
-
sortOrder: nextOrder,
|
|
117
|
-
});
|
|
118
|
-
}, children: [renderHeaderNode(props.header), isSortable ? _jsx("i", { className: iconClass, "aria-hidden": "true" }) : null] })) }, "header-".concat(index)));
|
|
119
|
-
}) }) }), _jsx("tbody", { children: pageRows.length === 0 ? (_jsx("tr", { children: _jsx("td", { className: "px-3 py-6 text-center text-muted-foreground", colSpan: Math.max(columns.length, 1), children: emptyMessage || "No records found" }) })) : (pageRows.map(function (rowData) {
|
|
120
|
-
var key = String(rowData === null || rowData === void 0 ? void 0 : rowData[dataKey]);
|
|
121
|
-
var rowSelected = selectedKeys.has(key);
|
|
122
|
-
return (_jsx("tr", { className: cx("solid-data-table-row", rowClassName === null || rowClassName === void 0 ? void 0 : rowClassName(rowData)), onClick: function (event) {
|
|
123
|
-
var target = event.target;
|
|
124
|
-
if (target.closest("button,a,input,label,[data-no-row-click='true']"))
|
|
125
|
-
return;
|
|
126
|
-
onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick({ data: rowData });
|
|
127
|
-
}, children: columns.map(function (column, index) {
|
|
128
|
-
var props = column.props;
|
|
129
|
-
var isSelectionColumn = props.selectionMode === "multiple";
|
|
130
|
-
var content = isSelectionColumn
|
|
131
|
-
? (_jsx("input", { type: "checkbox", checked: rowSelected, onChange: function (e) { return toggleRowSelection(rowData, e.currentTarget.checked); }, onClick: function (e) { return e.stopPropagation(); }, "aria-label": "Select row" }))
|
|
132
|
-
: props.body
|
|
133
|
-
? props.body(rowData)
|
|
134
|
-
: props.field
|
|
135
|
-
? rowData === null || rowData === void 0 ? void 0 : rowData[props.field]
|
|
136
|
-
: null;
|
|
137
|
-
return (_jsx("td", { className: cx("solid-data-table-td align-top text-foreground", isSelectionColumn ? "solid-data-table-selection-col" : undefined, props.className), style: props.style, children: content }, "cell-".concat(key, "-").concat(index)));
|
|
138
|
-
}) }, key));
|
|
139
|
-
})) })] }) }), typeof onPage === "function" ? (_jsxs("div", { className: cx("w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background", paginatorClassName), children: [_jsxs("div", { className: "solid-paginator-meta flex items-center gap-2 ml-auto", children: [_jsx("span", { className: "solid-paginator-label", children: "Rows" }), _jsx("select", { value: rows, onChange: function (e) { return onPage({ first: 0, rows: Number(e.target.value) }); }, className: "solid-paginator-select", children: rowsPerPageOptions.map(function (option) { return (_jsx("option", { value: option, children: option }, option)); }) }), _jsx("span", { className: "solid-paginator-report", children: report })] }), _jsxs("div", { className: "solid-paginator-actions flex items-center gap-2", children: [_jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.max(0, first - rows), rows: rows }); }, disabled: currentPage <= 1, children: "Previous" }), _jsx("button", { type: "button", className: "solid-paginator-btn", onClick: function () { return onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows: rows }); }, disabled: currentPage >= totalPages, children: "Next" })] })] })) : null] }));
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=SolidDataTable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SolidDataTable.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidDataTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nexport type DataTableStateEvent = {\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n};\n\ntype HeaderRenderer = React.ReactNode | (() => React.ReactNode);\ntype BodyRenderer = (rowData: any) => React.ReactNode;\n\nexport type SolidColumnProps = {\n field?: string;\n header?: HeaderRenderer;\n body?: BodyRenderer;\n sortable?: boolean;\n selectionMode?: \"multiple\" | \"single\" | null;\n headerStyle?: React.CSSProperties;\n style?: React.CSSProperties;\n className?: string;\n headerClassName?: string;\n frozen?: boolean;\n alignFrozen?: \"left\" | \"right\";\n [key: string]: any;\n};\n\nexport function Column(_props: SolidColumnProps) {\n return null;\n}\n\ntype SolidDataTableProps = {\n value: any[];\n children: React.ReactNode;\n size?: \"small\" | \"normal\" | \"large\";\n viewportHeight?: string;\n dataKey?: string;\n emptyMessage?: React.ReactNode;\n rows?: number;\n first?: number;\n totalRecords?: number;\n rowsPerPageOptions?: number[];\n onPage?: (event: { first: number; rows: number }) => void;\n onSort?: (event: DataTableStateEvent) => void;\n sortField?: string;\n sortOrder?: 1 | -1 | 0;\n removableSort?: boolean;\n selection?: any[];\n selectionMode?: \"checkbox\" | null;\n onSelectionChange?: (event: { value: any[] }) => void;\n onRowClick?: (event: { data: any }) => void;\n rowClassName?: (rowData: any) => string;\n tableClassName?: string;\n paginatorClassName?: string;\n currentPageReportTemplate?: string;\n [key: string]: any;\n};\n\nconst cx = (...parts: Array<string | undefined | false>) => parts.filter(Boolean).join(\" \");\n\nfunction renderHeaderNode(header?: HeaderRenderer) {\n if (typeof header === \"function\") return header();\n return header ?? null;\n}\n\nfunction normalizeColumns(children: React.ReactNode): React.ReactElement<SolidColumnProps>[] {\n return React.Children.toArray(children).filter((child): child is React.ReactElement<SolidColumnProps> => {\n return React.isValidElement(child);\n });\n}\n\nfunction resolveSortIcon(active: boolean, order: 1 | -1 | 0): string {\n if (!active || order === 0) return \"pi pi-sort-alt\";\n return order === 1 ? \"pi pi-sort-amount-up-alt\" : \"pi pi-sort-amount-down\";\n}\n\nfunction nextSortOrder(active: boolean, order: 1 | -1 | 0, removableSort = true): 1 | -1 | 0 {\n if (!active || order === 0) return 1;\n if (order === 1) return -1;\n return removableSort ? 0 : 1;\n}\n\nexport function SolidDataTable({\n value,\n children,\n size = \"normal\",\n viewportHeight,\n dataKey = \"id\",\n emptyMessage,\n rows = 25,\n first = 0,\n totalRecords = 0,\n rowsPerPageOptions = [10, 25, 50, 100],\n onPage,\n onSort,\n sortField,\n sortOrder = 0,\n removableSort = true,\n selection = [],\n selectionMode,\n onSelectionChange,\n onRowClick,\n rowClassName,\n tableClassName,\n paginatorClassName,\n currentPageReportTemplate = \"{first} - {last} of {totalRecords}\",\n}: SolidDataTableProps) {\n const columns = normalizeColumns(children);\n const pageRows = value ?? [];\n\n const selectedKeys = new Set((selection || []).map((row: any) => String(row?.[dataKey])));\n const allSelected = pageRows.length > 0 && pageRows.every((row: any) => selectedKeys.has(String(row?.[dataKey])));\n\n const start = totalRecords === 0 ? 0 : first + 1;\n const end = Math.min(first + rows, totalRecords);\n const currentPage = rows > 0 ? Math.floor(first / rows) + 1 : 1;\n const totalPages = rows > 0 ? Math.max(1, Math.ceil(totalRecords / rows)) : 1;\n\n const report = currentPageReportTemplate\n .replace(\"{first}\", String(start))\n .replace(\"{last}\", String(end))\n .replace(\"{totalRecords}\", String(totalRecords));\n\n const emitSelection = (nextSelection: any[]) => {\n onSelectionChange?.({ value: nextSelection });\n };\n\n const toggleSelectAll = (checked: boolean) => {\n if (!checked) {\n const pageKeys = new Set(pageRows.map((row: any) => String(row?.[dataKey])));\n emitSelection((selection || []).filter((row: any) => !pageKeys.has(String(row?.[dataKey]))));\n return;\n }\n const merged = [...(selection || [])];\n const mergedKeys = new Set(merged.map((row: any) => String(row?.[dataKey])));\n pageRows.forEach((row: any) => {\n const key = String(row?.[dataKey]);\n if (!mergedKeys.has(key)) merged.push(row);\n });\n emitSelection(merged);\n };\n\n const toggleRowSelection = (rowData: any, checked: boolean) => {\n const key = String(rowData?.[dataKey]);\n if (!checked) {\n emitSelection((selection || []).filter((row: any) => String(row?.[dataKey]) !== key));\n return;\n }\n emitSelection([...(selection || []), rowData]);\n };\n\n const densityClass =\n size === \"small\"\n ? \"solid-table-density-compact\"\n : size === \"large\"\n ? \"solid-table-density-comfortable\"\n : \"solid-table-density-cozy\";\n\n return (\n <div\n className={cx(\"solid-data-table-root w-full min-h-0\", densityClass)}\n style={{\n height: viewportHeight || \"100%\",\n maxHeight: viewportHeight || \"100%\",\n }}\n >\n <div className=\"solid-data-table-viewport min-h-0 rounded-md border border-border/60 bg-background\">\n <table className={cx(\"w-full text-sm border-collapse\", tableClassName)}>\n <thead className=\"solid-data-table-head sticky top-0 z-2\">\n <tr>\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const isSortable = Boolean(props.sortable && props.field && !isSelectionColumn);\n const isActiveSort = isSortable && sortField === props.field;\n const iconClass = resolveSortIcon(Boolean(isActiveSort), sortOrder);\n return (\n <th\n key={`header-${index}`}\n className={cx(\n \"solid-data-table-th text-left text-foreground whitespace-nowrap\",\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.headerClassName\n )}\n style={{ ...props.style, ...props.headerStyle }}\n >\n {isSelectionColumn ? (\n <input\n type=\"checkbox\"\n checked={allSelected}\n onChange={(e) => toggleSelectAll(e.currentTarget.checked)}\n aria-label=\"Select all rows\"\n />\n ) : (\n <button\n type=\"button\"\n className={cx(\"solid-table-header-button\", isSortable ? \"is-sortable\" : undefined)}\n onClick={() => {\n if (!isSortable) return;\n const nextOrder = nextSortOrder(Boolean(isActiveSort), sortOrder, removableSort);\n onSort?.({\n sortField: nextOrder === 0 ? undefined : props.field,\n sortOrder: nextOrder,\n });\n }}\n >\n {renderHeaderNode(props.header)}\n {isSortable ? <i className={iconClass} aria-hidden=\"true\" /> : null}\n </button>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {pageRows.length === 0 ? (\n <tr>\n <td className=\"px-3 py-6 text-center text-muted-foreground\" colSpan={Math.max(columns.length, 1)}>\n {emptyMessage || \"No records found\"}\n </td>\n </tr>\n ) : (\n pageRows.map((rowData: any) => {\n const key = String(rowData?.[dataKey]);\n const rowSelected = selectedKeys.has(key);\n return (\n <tr\n key={key}\n className={cx(\"solid-data-table-row\", rowClassName?.(rowData))}\n onClick={(event) => {\n const target = event.target as HTMLElement;\n if (target.closest(\"button,a,input,label,[data-no-row-click='true']\")) return;\n onRowClick?.({ data: rowData });\n }}\n >\n {columns.map((column, index) => {\n const props = column.props;\n const isSelectionColumn = props.selectionMode === \"multiple\";\n const content = isSelectionColumn\n ? (\n <input\n type=\"checkbox\"\n checked={rowSelected}\n onChange={(e) => toggleRowSelection(rowData, e.currentTarget.checked)}\n onClick={(e) => e.stopPropagation()}\n aria-label=\"Select row\"\n />\n )\n : props.body\n ? props.body(rowData)\n : props.field\n ? rowData?.[props.field]\n : null;\n return (\n <td\n key={`cell-${key}-${index}`}\n className={cx(\n \"solid-data-table-td align-top text-foreground\",\n isSelectionColumn ? \"solid-data-table-selection-col\" : undefined,\n props.className\n )}\n style={props.style}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {typeof onPage === \"function\" ? (\n <div\n className={cx(\"w-full solid-table-paginator solid-table-paginator-align-end flex items-center justify-end gap-3 text-sm rounded-md border border-border/60 px-3 py-1.5 bg-background\", paginatorClassName)}\n >\n <div className=\"solid-paginator-meta flex items-center gap-2 ml-auto\">\n <span className=\"solid-paginator-label\">Rows</span>\n <select\n value={rows}\n onChange={(e) => onPage({ first: 0, rows: Number(e.target.value) })}\n className=\"solid-paginator-select\"\n >\n {rowsPerPageOptions.map((option) => (\n <option key={option} value={option}>{option}</option>\n ))}\n </select>\n <span className=\"solid-paginator-report\">{report}</span>\n </div>\n <div className=\"solid-paginator-actions flex items-center gap-2\">\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.max(0, first - rows), rows })}\n disabled={currentPage <= 1}\n >\n Previous\n </button>\n <button\n type=\"button\"\n className=\"solid-paginator-btn\"\n onClick={() => onPage({ first: Math.min((totalPages - 1) * rows, first + rows), rows })}\n disabled={currentPage >= totalPages}\n >\n Next\n </button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n"]}
|