@solidxai/core-ui 0.1.8-beta.2 → 0.1.8-beta.20
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/adapters/auth/getSession.d.ts.map +1 -1
- package/dist/adapters/auth/getSession.js +1 -1
- package/dist/adapters/auth/getSession.js.map +1 -1
- package/dist/adapters/auth/getSession.ts +1 -0
- package/dist/adapters/auth/helper.d.ts.map +1 -1
- package/dist/adapters/auth/helper.js +1 -0
- package/dist/adapters/auth/helper.js.map +1 -1
- package/dist/adapters/auth/helper.ts +3 -1
- package/dist/adapters/auth/signIn.d.ts.map +1 -1
- package/dist/adapters/auth/signIn.js +1 -0
- package/dist/adapters/auth/signIn.js.map +1 -1
- package/dist/adapters/auth/signIn.ts +3 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts +1 -0
- package/dist/adapters/auth/signInWithOAuthAccessCode.d.ts.map +1 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.js +10 -9
- package/dist/adapters/auth/signInWithOAuthAccessCode.js.map +1 -1
- package/dist/adapters/auth/signInWithOAuthAccessCode.ts +6 -3
- package/dist/adapters/auth/signOut.d.ts.map +1 -1
- package/dist/adapters/auth/signOut.js +7 -1
- package/dist/adapters/auth/signOut.js.map +1 -1
- package/dist/adapters/auth/signOut.ts +7 -1
- package/dist/adapters/auth/types.d.ts +1 -0
- package/dist/adapters/auth/types.d.ts.map +1 -1
- package/dist/adapters/auth/types.js.map +1 -1
- package/dist/adapters/auth/types.ts +1 -0
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +95 -38
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +50 -39
- package/dist/components/auth/AuthSettingsContext.d.ts +10 -0
- package/dist/components/auth/AuthSettingsContext.d.ts.map +1 -0
- package/dist/components/auth/AuthSettingsContext.js +49 -0
- package/dist/components/auth/AuthSettingsContext.js.map +1 -0
- package/dist/components/auth/AuthSettingsContext.tsx +19 -0
- package/dist/components/auth/AuthTabs.d.ts.map +1 -1
- package/dist/components/auth/AuthTabs.js +9 -9
- package/dist/components/auth/AuthTabs.js.map +1 -1
- package/dist/components/auth/AuthTabs.tsx +14 -15
- package/dist/components/auth/FacebookAuthChecking.d.ts +2 -0
- package/dist/components/auth/FacebookAuthChecking.d.ts.map +1 -0
- package/dist/components/auth/FacebookAuthChecking.js +103 -0
- package/dist/components/auth/FacebookAuthChecking.js.map +1 -0
- package/dist/components/auth/FacebookAuthChecking.tsx +64 -0
- package/dist/components/auth/ForgotPasswordThankYou.d.ts.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.js +2 -6
- package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -7
- package/dist/components/auth/GoogleAuthChecking.js +0 -1
- package/dist/components/auth/GoogleAuthChecking.js.map +1 -1
- package/dist/components/auth/GoogleAuthChecking.tsx +1 -1
- package/dist/components/auth/MicrosoftAuthChecking.d.ts +2 -0
- package/dist/components/auth/MicrosoftAuthChecking.d.ts.map +1 -0
- package/dist/components/auth/MicrosoftAuthChecking.js +103 -0
- package/dist/components/auth/MicrosoftAuthChecking.js.map +1 -0
- package/dist/components/auth/MicrosoftAuthChecking.tsx +64 -0
- package/dist/components/auth/SolidForgotPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidForgotPassword.js +3 -7
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +3 -7
- package/dist/components/auth/SolidInitialLoginOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js +4 -8
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +3 -6
- package/dist/components/auth/SolidInitiateRegisterOtp.d.ts.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js +27 -14
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +27 -15
- package/dist/components/auth/SolidLogin.d.ts.map +1 -1
- package/dist/components/auth/SolidLogin.js +11 -11
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +20 -9
- package/dist/components/auth/SolidRegister.d.ts.map +1 -1
- package/dist/components/auth/SolidRegister.js +53 -25
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +107 -40
- package/dist/components/auth/SolidResetPassword.d.ts.map +1 -1
- package/dist/components/auth/SolidResetPassword.js +2 -6
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +2 -6
- 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 +235 -156
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +1109 -795
- package/dist/components/common/SettingsComponent.d.ts +2 -0
- package/dist/components/common/SettingsComponent.d.ts.map +1 -0
- package/dist/components/common/SettingsComponent.js +351 -0
- package/dist/components/common/SettingsComponent.js.map +1 -0
- package/dist/components/common/SettingsComponent.module.css +421 -0
- package/dist/components/common/SettingsComponent.tsx +582 -0
- package/dist/components/common/SocialMediaLogin.d.ts +8 -1
- package/dist/components/common/SocialMediaLogin.d.ts.map +1 -1
- package/dist/components/common/SocialMediaLogin.js +6 -13
- package/dist/components/common/SocialMediaLogin.js.map +1 -1
- package/dist/components/common/SocialMediaLogin.tsx +120 -58
- package/dist/components/common/SolidAdmin.js +1 -1
- package/dist/components/common/SolidAdmin.js.map +1 -1
- package/dist/components/common/SolidAdmin.tsx +1 -1
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +1 -1
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +2 -1
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +2 -1
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +2 -1
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +5 -21
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +6 -24
- package/dist/components/common/solid-export.css +26 -0
- package/dist/components/common/solidModuleHome.module.css +1 -2
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +24 -25
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +23 -28
- package/dist/components/core/card/SolidCardViewConfigure.js +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +1 -1
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +39 -9
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +42 -7
- package/dist/components/core/chatter/SolidChatterAuditMessage.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.js +19 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +22 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +3 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +68 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +45 -3
- package/dist/components/core/chatter/chatter.module.css +3 -6
- package/dist/components/core/common/PDFViewer.js +1 -1
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +2 -2
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js +3 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +3 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js +9 -8
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidNotifications.tsx +4 -2
- package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +3 -4
- package/dist/components/core/common/dndCompat.d.ts +8 -0
- package/dist/components/core/common/dndCompat.d.ts.map +1 -0
- package/dist/components/core/common/dndCompat.js +5 -0
- package/dist/components/core/common/dndCompat.js.map +1 -0
- package/dist/components/core/common/dndCompat.ts +9 -0
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js +2 -2
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardFilterRequired.tsx +2 -2
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js +2 -2
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardNotAvailable.tsx +2 -2
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.tsx +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.tsx +1 -1
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts +7 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js +75 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.js.map +1 -0
- package/dist/components/core/extension/solid-core/scheduled-job/scheduleFrequencyOnFieldChangeHandler.ts +45 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts +3 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js +81 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/settings/solidXGenAiCodeBuilderConfigWidget.tsx +114 -0
- package/dist/components/core/form/SolidFormActionHeader.d.ts +1 -1
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +5 -3
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +27 -1
- package/dist/components/core/form/SolidFormLayouts.js +1 -1
- package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
- package/dist/components/core/form/SolidFormLayouts.tsx +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +141 -50
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +123 -25
- package/dist/components/core/form/fields/SolidComputedField.d.ts +25 -0
- package/dist/components/core/form/fields/SolidComputedField.d.ts.map +1 -0
- package/dist/components/core/form/fields/SolidComputedField.js +128 -0
- package/dist/components/core/form/fields/SolidComputedField.js.map +1 -0
- package/dist/components/core/form/fields/SolidComputedField.tsx +134 -0
- package/dist/components/core/form/fields/SolidDateTimeField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.js +8 -2
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.tsx +8 -2
- package/dist/components/core/form/fields/SolidEmailField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.js +5 -4
- package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.tsx +17 -15
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +5 -4
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +35 -24
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +30 -14
- package/dist/components/core/form/fields/SolidSelectionStaticField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +29 -28
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +17 -12
- package/dist/components/core/form/fields/SolidShortTextField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +8 -6
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.tsx +7 -1
- package/dist/components/core/form/fields/SolidTimeField.js +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.tsx +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js +3 -3
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.js.map +1 -1
- package/dist/components/core/form/fields/relations/widgets/helpers/InlineRelationEntityDialog.tsx +0 -5
- package/dist/components/core/form/fields/solidFields.module.css +0 -3
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +1 -1
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +1 -1
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +2 -2
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +4 -3
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +3 -3
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +5 -4
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +220 -109
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +219 -96
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -1
- package/dist/components/core/kanban/SolidManyToOneFilterElement.tsx +1 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +21 -10
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +2 -2
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +18 -10
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +3 -6
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +30 -24
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -1
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +2 -2
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.d.ts.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +4 -3
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +13 -12
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +6 -5
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +6 -5
- package/dist/components/core/list/SolidDataTablePagination.d.ts +15 -0
- package/dist/components/core/list/SolidDataTablePagination.d.ts.map +1 -0
- package/dist/components/core/list/SolidDataTablePagination.js +22 -0
- package/dist/components/core/list/SolidDataTablePagination.js.map +1 -0
- package/dist/components/core/list/SolidDataTablePagination.tsx +71 -0
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.d.ts.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js +3 -3
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.js.map +1 -1
- package/dist/components/core/list/SolidEmptyListViewPlaceholder.tsx +7 -4
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +64 -74
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +72 -97
- package/dist/components/core/list/SolidListViewConfigure.js +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.js +2 -2
- package/dist/components/core/list/SolidListViewRowActionsMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionsMenu.tsx +2 -2
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js +6 -7
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowButtonContextMenu.tsx +9 -10
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.module.css +3 -3
- package/dist/components/core/tree/SolidTreeView.js +1 -1
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +1 -1
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +283 -9
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +35 -28
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +64 -62
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +4 -4
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +17 -10
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts.map +1 -1
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js +2 -19
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js.map +1 -1
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.tsx +24 -43
- package/dist/components/core/users/CreateUser.css +114 -0
- package/dist/components/core/users/CreateUser.d.ts +1 -0
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +4 -3
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +32 -26
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +25 -1
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +38 -1
- package/dist/components/layout/context/layoutcontext.js +2 -2
- package/dist/components/layout/context/layoutcontext.js.map +1 -1
- package/dist/components/layout/context/layoutcontext.tsx +2 -2
- package/dist/components/layout/user-profile-menu.d.ts.map +1 -1
- package/dist/components/layout/user-profile-menu.js +15 -14
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.tsx +8 -6
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +9 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +10 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts +6 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.js +3 -3
- package/dist/components/shad-cn-ui/SolidConfirmDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidConfirmDialog.tsx +15 -3
- package/dist/components/shad-cn-ui/SolidDatePicker.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.js +12 -2
- package/dist/components/shad-cn-ui/SolidDatePicker.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDatePicker.tsx +13 -2
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.d.ts +2 -2
- package/dist/components/shad-cn-ui/SolidIcon.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.js +3 -4
- package/dist/components/shad-cn-ui/SolidIcon.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidIcon.tsx +12 -15
- package/dist/components/shad-cn-ui/SolidRichTextEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.js +9 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidRichTextEditor.tsx +8 -1
- package/dist/components/shad-cn-ui/SolidTabs.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.js +6 -3
- package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidTabs.tsx +63 -26
- package/dist/components/solid-ui/SolidButton.d.ts +14 -0
- package/dist/components/solid-ui/SolidButton.d.ts.map +1 -0
- package/dist/components/solid-ui/SolidButton.js +36 -0
- package/dist/components/solid-ui/SolidButton.js.map +1 -0
- package/dist/components/solid-ui/SolidButton.tsx +54 -0
- package/dist/components/solid-ui/SolidTabs.d.ts +18 -0
- package/dist/components/solid-ui/SolidTabs.d.ts.map +1 -0
- package/dist/components/solid-ui/SolidTabs.js +22 -0
- package/dist/components/solid-ui/SolidTabs.js.map +1 -0
- package/dist/components/solid-ui/SolidTabs.tsx +73 -0
- package/dist/components/solid-ui/index.d.ts +3 -0
- package/dist/components/solid-ui/index.d.ts.map +1 -0
- package/dist/components/solid-ui/index.js +3 -0
- package/dist/components/solid-ui/index.js.map +1 -0
- package/dist/components/solid-ui/index.ts +2 -0
- package/dist/helpers/hydrateRelationRules.js +1 -1
- package/dist/helpers/hydrateRelationRules.js.map +1 -1
- package/dist/helpers/hydrateRelationRules.ts +1 -1
- package/dist/helpers/permissions.js +2 -2
- package/dist/helpers/permissions.js.map +1 -1
- package/dist/helpers/permissions.ts +2 -2
- package/dist/helpers/registry.d.ts +2 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +6 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +9 -2
- package/dist/helpers/settingsPayload.d.ts +32 -0
- package/dist/helpers/settingsPayload.d.ts.map +1 -0
- package/dist/helpers/settingsPayload.js +72 -0
- package/dist/helpers/settingsPayload.js.map +1 -0
- package/dist/helpers/settingsPayload.ts +125 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -0
- package/dist/redux/api/solidChatterMessageApi.d.ts +2 -1
- package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.js +11 -1
- package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.ts +10 -1
- package/dist/redux/api/solidEntityApi.js +1 -1
- package/dist/redux/api/solidEntityApi.js.map +1 -1
- package/dist/redux/api/solidEntityApi.tsx +1 -1
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/resources/globals.css +114 -90
- package/dist/resources/images/Background.svg +3 -5
- package/dist/resources/images/Navigation/SolidSettinsIcon.svg +3 -5
- package/dist/resources/images/errors/error.svg +12 -14
- package/dist/resources/shadcn-base.css +356 -429
- package/dist/resources/solid-responsive.css +22 -4
- package/dist/resources/themes/solid-dark-purple/theme.css +23 -33
- package/dist/resources/themes/solid-light-purple/theme.css +31 -31
- package/dist/routes/AppEventListener.js +1 -1
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +1 -1
- package/dist/routes/SolidLayoutRegistry.d.ts.map +1 -1
- package/dist/routes/SolidLayoutRegistry.js +3 -1
- package/dist/routes/SolidLayoutRegistry.js.map +1 -1
- package/dist/routes/SolidLayoutRegistry.tsx +3 -1
- package/dist/routes/guards/AuthGuard.d.ts.map +1 -1
- package/dist/routes/guards/AuthGuard.js +4 -1
- package/dist/routes/guards/AuthGuard.js.map +1 -1
- package/dist/routes/guards/AuthGuard.tsx +6 -1
- package/dist/routes/pages/admin/core/CardPage.js +1 -1
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +1 -1
- package/dist/routes/pages/admin/core/FormPage.js +1 -1
- package/dist/routes/pages/admin/core/FormPage.js.map +1 -1
- package/dist/routes/pages/admin/core/FormPage.tsx +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +1 -1
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +1 -1
- package/dist/routes/pages/admin/core/SettingsPage.js +2 -2
- package/dist/routes/pages/admin/core/SettingsPage.js.map +1 -1
- package/dist/routes/pages/admin/core/SettingsPage.tsx +2 -2
- package/dist/routes/pages/admin/core/TreePage.js +1 -1
- package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
- package/dist/routes/pages/admin/core/TreePage.tsx +1 -1
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts +2 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.d.ts.map +1 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.js +6 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.js.map +1 -0
- package/dist/routes/pages/auth/InitiateFacebookOauthPage.tsx +5 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts +2 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.d.ts.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js +6 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.js.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftOauthPage.tsx +5 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +5 -1
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +5 -1
- package/dist/routes/types.d.ts +1 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/types.ts +2 -0
- package/dist/types/extension-registry.d.ts +1 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js +1 -0
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/solid-core.d.ts +11 -0
- package/package.json +1 -2
- package/dist/components/auth/SolidOTPVerify.d.ts +0 -3
- package/dist/components/auth/SolidOTPVerify.d.ts.map +0 -1
- package/dist/components/auth/SolidOTPVerify.js +0 -67
- package/dist/components/auth/SolidOTPVerify.js.map +0 -1
- package/dist/components/auth/SolidOTPVerify.tsx +0 -133
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts +0 -2
- package/dist/components/core/common/LoadDynamicJsxComponent.d.ts.map +0 -1
- package/dist/components/core/common/LoadDynamicJsxComponent.js +0 -50
- package/dist/components/core/common/LoadDynamicJsxComponent.js.map +0 -1
- package/dist/components/core/common/LoadDynamicJsxComponent.tsx +0 -70
- package/dist/nextAuth/authProviders.d.ts +0 -4
- package/dist/nextAuth/authProviders.d.ts.map +0 -1
- package/dist/nextAuth/authProviders.js +0 -198
- package/dist/nextAuth/authProviders.js.map +0 -1
- package/dist/nextAuth/authProviders.tsx +0 -232
- package/dist/nextAuth/handleLogout.d.ts +0 -2
- package/dist/nextAuth/handleLogout.d.ts.map +0 -1
- package/dist/nextAuth/handleLogout.js +0 -36
- package/dist/nextAuth/handleLogout.js.map +0 -1
- package/dist/nextAuth/handleLogout.tsx +0 -39
- package/dist/nextAuth/refreshAccessToken.d.ts +0 -2
- package/dist/nextAuth/refreshAccessToken.d.ts.map +0 -1
- package/dist/nextAuth/refreshAccessToken.js +0 -24
- package/dist/nextAuth/refreshAccessToken.js.map +0 -1
- package/dist/nextAuth/refreshAccessToken.tsx +0 -28
- package/dist/redux/features/settingsSlice.d.ts +0 -20
- package/dist/redux/features/settingsSlice.d.ts.map +0 -1
- package/dist/redux/features/settingsSlice.js +0 -39
- package/dist/redux/features/settingsSlice.js.map +0 -1
- package/dist/redux/features/settingsSlice.ts +0 -60
|
@@ -5,6 +5,21 @@ import { RightArrowSvg } from '../../../components/Svg/RightArrowSvg'
|
|
|
5
5
|
|
|
6
6
|
const DATE_FIELD_TYPES = ['date', 'datetime', 'time']
|
|
7
7
|
|
|
8
|
+
function isEmptyAuditValue(value: string | null | undefined): boolean {
|
|
9
|
+
if (value == null) return true
|
|
10
|
+
if (typeof value !== 'string') return false
|
|
11
|
+
|
|
12
|
+
const normalizedValue = value.trim().toLowerCase()
|
|
13
|
+
return normalizedValue === '' || normalizedValue === 'none' || normalizedValue === 'null'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function hasMeaningfulAuditChange(item: AuditRecord): boolean {
|
|
17
|
+
const previousValue = item.previousDisplay ?? item.previous
|
|
18
|
+
const currentValue = item.currentDisplay ?? item.current
|
|
19
|
+
|
|
20
|
+
return !(isEmptyAuditValue(previousValue) && isEmptyAuditValue(currentValue))
|
|
21
|
+
}
|
|
22
|
+
|
|
8
23
|
function formatAuditValue(
|
|
9
24
|
value: string | null | undefined,
|
|
10
25
|
displayValue: string | null | undefined,
|
|
@@ -38,9 +53,15 @@ interface SolidChatterAuditMessageProps {
|
|
|
38
53
|
}
|
|
39
54
|
|
|
40
55
|
export const SolidChatterAuditMessage: React.FC<SolidChatterAuditMessageProps> = ({ auditRecord }) => {
|
|
56
|
+
const visibleAuditRecord = auditRecord.filter(hasMeaningfulAuditChange)
|
|
57
|
+
|
|
58
|
+
if (visibleAuditRecord.length === 0) {
|
|
59
|
+
return null
|
|
60
|
+
}
|
|
61
|
+
|
|
41
62
|
return (
|
|
42
63
|
<div className='flex flex-column gap-2'>
|
|
43
|
-
{
|
|
64
|
+
{visibleAuditRecord.map((item: AuditRecord, index: number) => (
|
|
44
65
|
<div key={index} className='flex gap-2'>
|
|
45
66
|
<span className='m-0 '>
|
|
46
67
|
{"(" + (item.fieldDisplayName || item.field) + ")"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
interface Props {
|
|
2
|
+
messageId?: number | string;
|
|
2
3
|
user: string;
|
|
3
4
|
messageType?: string;
|
|
4
5
|
message?: any;
|
|
5
6
|
time?: string;
|
|
6
7
|
auditRecord?: any;
|
|
7
8
|
messageSubType?: string;
|
|
9
|
+
status?: string;
|
|
8
10
|
modelDisplayName?: string;
|
|
9
11
|
modelUserKey?: string;
|
|
12
|
+
onRefresh?: () => void;
|
|
10
13
|
media?: {
|
|
11
14
|
messageAttachments?: Array<{
|
|
12
15
|
id: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatterMessageBox.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidChatterMessageBox.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"AAYA,UAAU,KAAK;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE;QACJ,kBAAkB,CAAC,EAAE,KAAK,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;YACjB,gBAAgB,EAAE,MAAM,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACN,CAAC;CACL;AAsBD,eAAO,MAAM,sBAAsB,UAAW,KAAK,4CAsLlD,CAAA"}
|
|
@@ -1,3 +1,39 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
1
37
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
38
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
39
|
if (ar || !(i in from)) {
|
|
@@ -14,8 +50,9 @@ import { useMemo, useState } from 'react';
|
|
|
14
50
|
import styles from './chatter.module.css';
|
|
15
51
|
import { SolidChatterCustomMessage } from './SolidChatterCustomMessage';
|
|
16
52
|
import { SolidChatterAuditMessage } from './SolidChatterAuditMessage';
|
|
17
|
-
import { GitBranch, MessageSquare } from 'lucide-react';
|
|
18
|
-
import { SolidLightbox, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon } from '../../shad-cn-ui';
|
|
53
|
+
import { Check, GitBranch, MessageSquare } from 'lucide-react';
|
|
54
|
+
import { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon } from '../../shad-cn-ui';
|
|
55
|
+
import { usePatchChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi';
|
|
19
56
|
var getFileIcon = function (mimeType) {
|
|
20
57
|
if (mimeType.startsWith('image/')) {
|
|
21
58
|
return 'si-image';
|
|
@@ -36,9 +73,11 @@ var getFileIcon = function (mimeType) {
|
|
|
36
73
|
}
|
|
37
74
|
};
|
|
38
75
|
export var SolidChatterMessageBox = function (props) {
|
|
39
|
-
var user = props.user, messageType = props.messageType, message = props.message, time = props.time, auditRecord = props.auditRecord, media = props.media, messageSubType = props.messageSubType, modelDisplayName = props.modelDisplayName, modelUserKey = props.modelUserKey;
|
|
76
|
+
var messageId = props.messageId, user = props.user, messageType = props.messageType, message = props.message, time = props.time, auditRecord = props.auditRecord, media = props.media, messageSubType = props.messageSubType, status = props.status, modelDisplayName = props.modelDisplayName, modelUserKey = props.modelUserKey, onRefresh = props.onRefresh;
|
|
40
77
|
var _a = useState([]), lightboxSlides = _a[0], setLightboxSlides = _a[1];
|
|
41
78
|
var _b = useState(false), openLightbox = _b[0], setOpenLightbox = _b[1];
|
|
79
|
+
var _c = useState(status), taskStatus = _c[0], setTaskStatus = _c[1];
|
|
80
|
+
var _d = usePatchChatterMessageMutation(), patchChatterMessage = _d[0], isUpdatingTaskStatus = _d[1].isLoading;
|
|
42
81
|
var avatarStyle = useMemo(function () {
|
|
43
82
|
var bg = stringToColor(user);
|
|
44
83
|
var color = getTextColor(bg);
|
|
@@ -86,9 +125,34 @@ export var SolidChatterMessageBox = function (props) {
|
|
|
86
125
|
: "Audit record")
|
|
87
126
|
: "Internal note";
|
|
88
127
|
var TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;
|
|
128
|
+
var isTaskMessage = messageSubType === 'task';
|
|
129
|
+
var isTaskCompleted = (taskStatus !== null && taskStatus !== void 0 ? taskStatus : '').toLowerCase() === 'completed';
|
|
130
|
+
var handleMarkTaskDone = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
131
|
+
var e_1;
|
|
132
|
+
return __generator(this, function (_a) {
|
|
133
|
+
switch (_a.label) {
|
|
134
|
+
case 0:
|
|
135
|
+
if (!messageId || isUpdatingTaskStatus)
|
|
136
|
+
return [2 /*return*/];
|
|
137
|
+
_a.label = 1;
|
|
138
|
+
case 1:
|
|
139
|
+
_a.trys.push([1, 3, , 4]);
|
|
140
|
+
return [4 /*yield*/, patchChatterMessage({ id: messageId, data: { status: 'completed' } }).unwrap()];
|
|
141
|
+
case 2:
|
|
142
|
+
_a.sent();
|
|
143
|
+
setTaskStatus('completed');
|
|
144
|
+
onRefresh === null || onRefresh === void 0 ? void 0 : onRefresh();
|
|
145
|
+
return [3 /*break*/, 4];
|
|
146
|
+
case 3:
|
|
147
|
+
e_1 = _a.sent();
|
|
148
|
+
return [3 /*break*/, 4];
|
|
149
|
+
case 4: return [2 /*return*/];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}); };
|
|
89
153
|
return (_jsxs("div", { className: styles.solidChatterMessageBox, children: [_jsx("div", { className: styles.solidChatterMessageCard, children: _jsxs("div", { className: styles.solidChatterMessageLayout, children: [_jsx("div", { className: styles.solidChatterAvatar, style: avatarStyle, children: initials || user.charAt(0).toUpperCase() }), _jsxs("div", { className: styles.solidChatterMessageContent, children: [_jsxs("div", { className: styles.solidChatterMessageHeader, children: [_jsxs("div", { className: 'flex align-items-center gap-2 flex-wrap', children: [_jsx("p", { className: styles.solidChatterUser, children: user }), _jsxs(SolidTooltip, { children: [_jsx(SolidTooltipTrigger, { asChild: true, children: _jsx("span", { className: "".concat(styles.solidChatterBadge, " ").concat(messageType === 'audit' ? styles.audit : styles.custom), "aria-label": messageLabel, children: _jsx(TypeIcon, { size: 12 }) }) }), _jsx(SolidTooltipContent, { side: "right", children: messageLabel })] })] }), _jsx("span", { className: styles.solidChatterTime, children: time })] }), modelDisplayName && (_jsxs("p", { className: "".concat(styles.solidChatterMeta, " m-0"), children: [modelDisplayName, modelUserKey && _jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: 'font-medium', children: modelUserKey })] })] })), message && (_jsx("div", { className: styles.solidMessageWrapper, children: renderMessageContent() })), (media === null || media === void 0 ? void 0 : media.messageAttachments) && media.messageAttachments.length > 0 && (_jsx("div", { className: styles.solidChatterAttachments, children: media.messageAttachments.map(function (attachment) {
|
|
90
154
|
var isImage = attachment.mimeType.startsWith('image/');
|
|
91
155
|
return (_jsx("div", { className: styles.solidChatterAttachment, children: isImage ? (_jsx("div", { className: 'cursor-pointer', onClick: function () { return handleImageClick(attachment._full_url); }, children: _jsx(Image, { src: encodeURI(attachment._full_url), alt: attachment.originalFileName, width: 54, height: 54, style: { objectFit: 'cover' } }) })) : (_jsxs("a", { href: encodeURI(attachment._full_url), target: "_blank", rel: "noopener noreferrer", className: 'flex align-items-center gap-2 text-decoration-none text-sm', children: [_jsx(SolidIcon, { name: getFileIcon(attachment.mimeType), "aria-hidden": true }), _jsx("span", { children: attachment.originalFileName })] })) }, attachment.id));
|
|
92
|
-
}) }))] })] }) }), openLightbox && (_jsx(SolidLightbox, { open: openLightbox, slides: lightboxSlides, onClose: function () { return setOpenLightbox(false); } }))] }));
|
|
156
|
+
}) })), isTaskMessage && (_jsx("div", { className: 'flex align-items-center justify-content-end', children: isTaskCompleted ? (_jsxs(SolidTag, { tone: "success", className: "inline-flex align-items-center gap-1 text-xs px-2 py-1", children: [_jsx(Check, { size: 12, "aria-hidden": true }), _jsx("span", { className: "font-medium", children: "Done" })] })) : (_jsx(SolidButton, { type: "button", size: "sm", variant: "outline", className: "text-xs px-2 py-1", leftIcon: _jsx(Check, { size: 12 }), loading: isUpdatingTaskStatus, onClick: handleMarkTaskDone, children: _jsx("span", { className: "font-semibold", children: "Mark as done" }) })) }))] })] }) }), openLightbox && (_jsx(SolidLightbox, { open: openLightbox, slides: lightboxSlides, onClose: function () { return setOpenLightbox(false); } }))] }));
|
|
93
157
|
};
|
|
94
158
|
//# sourceMappingURL=SolidChatterMessageBox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatterMessageBox.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { getTextColor, stringToColor } from '../../../helpers/getRandomColors'\nimport Image from \"../../common/Image\"\nimport { useMemo, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidChatterCustomMessage } from './SolidChatterCustomMessage'\nimport { SolidChatterAuditMessage } from './SolidChatterAuditMessage'\nimport { GitBranch, MessageSquare } from 'lucide-react'\nimport { SolidLightbox, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'\nimport type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'\n\ninterface Props {\n user: string,\n messageType?: string,\n message?: any,\n time?: string,\n auditRecord?: any,\n messageSubType?: string,\n modelDisplayName?: string,\n modelUserKey?: string,\n media?: {\n messageAttachments?: Array<{\n id: number;\n relativeUri: string;\n mimeType: string;\n originalFileName: string;\n _full_url: string;\n }>;\n };\n}\n\nconst getFileIcon = (mimeType: string): SolidIconName => {\n if (mimeType.startsWith('image/')) {\n return 'si-image';\n }\n switch (mimeType) {\n case 'application/pdf':\n return 'si-file-pdf';\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'si-file-excel';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'si-file-word';\n case 'text/plain':\n return 'si-file';\n default:\n return 'si-file';\n }\n};\n\nexport const SolidChatterMessageBox = (props: Props) => {\n const { user, messageType, message, time, auditRecord, media, messageSubType, modelDisplayName, modelUserKey } = props;\n const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);\n const [openLightbox, setOpenLightbox] = useState(false);\n\n const avatarStyle = useMemo(() => {\n const bg = stringToColor(user)\n const color = getTextColor(bg)\n return { backgroundColor: bg, color }\n }, [user])\n\n const initials = useMemo(() => {\n if (!user) return \"\";\n return user\n .split(\" \")\n .map(part => part.charAt(0))\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n }, [user]);\n\n const handleImageClick = (url: string) => {\n const imageAttachments = media?.messageAttachments?.filter(att => att.mimeType?.startsWith('image/')) || [];\n if (imageAttachments.length === 0) return;\n\n const startIndex = imageAttachments.findIndex(att => att._full_url === url);\n const ordered = startIndex >= 0\n ? [...imageAttachments.slice(startIndex), ...imageAttachments.slice(0, startIndex)]\n : imageAttachments;\n\n const slides: SolidLightboxSlide[] = ordered.map(att => ({\n src: att._full_url\n }));\n\n setLightboxSlides(slides);\n setOpenLightbox(true);\n };\n\n const renderMessageContent = () => {\n switch (messageType) {\n case 'audit':\n return <SolidChatterAuditMessage auditRecord={auditRecord} />;\n case 'custom':\n default:\n return <SolidChatterCustomMessage message={message} />;\n }\n };\n\n const messageLabel = messageType === 'audit'\n ? (messageSubType === \"audit_update\"\n ? \"Updated\"\n : messageSubType === \"audit_insert\"\n ? \"Inserted\"\n : \"Audit record\")\n : \"Internal note\";\n\n const TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;\n\n return (\n <div className={styles.solidChatterMessageBox}>\n <div className={styles.solidChatterMessageCard}>\n <div className={styles.solidChatterMessageLayout}>\n <div className={styles.solidChatterAvatar} style={avatarStyle}>\n {initials || user.charAt(0).toUpperCase()}\n </div>\n <div className={styles.solidChatterMessageContent}>\n <div className={styles.solidChatterMessageHeader}>\n <div className='flex align-items-center gap-2 flex-wrap'>\n <p className={styles.solidChatterUser}>{user}</p>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span\n className={`${styles.solidChatterBadge} ${messageType === 'audit' ? styles.audit : styles.custom}`}\n aria-label={messageLabel}\n >\n <TypeIcon size={12} />\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"right\">\n {messageLabel}\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <span className={styles.solidChatterTime}>{time}</span>\n </div>\n {modelDisplayName && (\n <p className={`${styles.solidChatterMeta} m-0`}>\n {modelDisplayName}\n {modelUserKey && <> · <span className='font-medium'>{modelUserKey}</span></>}\n </p>\n )}\n {message && (\n <div className={styles.solidMessageWrapper}>\n {renderMessageContent()}\n </div>\n )}\n {media?.messageAttachments && media.messageAttachments.length > 0 && (\n <div className={styles.solidChatterAttachments}>\n {media.messageAttachments.map((attachment) => {\n const isImage = attachment.mimeType.startsWith('image/');\n return (\n <div key={attachment.id} className={styles.solidChatterAttachment}>\n {isImage ? (\n <div\n className='cursor-pointer'\n onClick={() => handleImageClick(attachment._full_url)}\n >\n <Image\n src={encodeURI(attachment._full_url)}\n alt={attachment.originalFileName}\n width={54}\n height={54}\n style={{ objectFit: 'cover' }}\n />\n </div>\n ) : (\n <a\n href={encodeURI(attachment._full_url)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className='flex align-items-center gap-2 text-decoration-none text-sm'\n >\n <SolidIcon name={getFileIcon(attachment.mimeType)} aria-hidden />\n <span>{attachment.originalFileName}</span>\n </a>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidChatterMessageBox.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { getTextColor, stringToColor } from '../../../helpers/getRandomColors'\nimport Image from \"../../common/Image\"\nimport { useMemo, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidChatterCustomMessage } from './SolidChatterCustomMessage'\nimport { SolidChatterAuditMessage } from './SolidChatterAuditMessage'\nimport { Check, GitBranch, MessageSquare } from 'lucide-react'\nimport { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'\nimport type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'\nimport { usePatchChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\n\ninterface Props {\n messageId?: number | string,\n user: string,\n messageType?: string,\n message?: any,\n time?: string,\n auditRecord?: any,\n messageSubType?: string,\n status?: string,\n modelDisplayName?: string,\n modelUserKey?: string,\n onRefresh?: () => void,\n media?: {\n messageAttachments?: Array<{\n id: number;\n relativeUri: string;\n mimeType: string;\n originalFileName: string;\n _full_url: string;\n }>;\n };\n}\n\nconst getFileIcon = (mimeType: string): SolidIconName => {\n if (mimeType.startsWith('image/')) {\n return 'si-image';\n }\n switch (mimeType) {\n case 'application/pdf':\n return 'si-file-pdf';\n case 'application/vnd.ms-excel':\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n return 'si-file-excel';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'si-file-word';\n case 'text/plain':\n return 'si-file';\n default:\n return 'si-file';\n }\n};\n\nexport const SolidChatterMessageBox = (props: Props) => {\n const { messageId, user, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;\n const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);\n const [openLightbox, setOpenLightbox] = useState(false);\n const [taskStatus, setTaskStatus] = useState<string | undefined>(status);\n const [patchChatterMessage, { isLoading: isUpdatingTaskStatus }] = usePatchChatterMessageMutation();\n\n const avatarStyle = useMemo(() => {\n const bg = stringToColor(user)\n const color = getTextColor(bg)\n return { backgroundColor: bg, color }\n }, [user])\n\n const initials = useMemo(() => {\n if (!user) return \"\";\n return user\n .split(\" \")\n .map(part => part.charAt(0))\n .filter(Boolean)\n .slice(0, 2)\n .join(\"\")\n .toUpperCase();\n }, [user]);\n\n const handleImageClick = (url: string) => {\n const imageAttachments = media?.messageAttachments?.filter(att => att.mimeType?.startsWith('image/')) || [];\n if (imageAttachments.length === 0) return;\n\n const startIndex = imageAttachments.findIndex(att => att._full_url === url);\n const ordered = startIndex >= 0\n ? [...imageAttachments.slice(startIndex), ...imageAttachments.slice(0, startIndex)]\n : imageAttachments;\n\n const slides: SolidLightboxSlide[] = ordered.map(att => ({\n src: att._full_url\n }));\n\n setLightboxSlides(slides);\n setOpenLightbox(true);\n };\n\n const renderMessageContent = () => {\n switch (messageType) {\n case 'audit':\n return <SolidChatterAuditMessage auditRecord={auditRecord} />;\n case 'custom':\n default:\n return <SolidChatterCustomMessage message={message} />;\n }\n };\n\n const messageLabel = messageType === 'audit'\n ? (messageSubType === \"audit_update\"\n ? \"Updated\"\n : messageSubType === \"audit_insert\"\n ? \"Inserted\"\n : \"Audit record\")\n : \"Internal note\";\n\n const TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;\n\n const isTaskMessage = messageSubType === 'task';\n const isTaskCompleted = (taskStatus ?? '').toLowerCase() === 'completed';\n\n const handleMarkTaskDone = async () => {\n if (!messageId || isUpdatingTaskStatus) return;\n try {\n await patchChatterMessage({ id: messageId, data: { status: 'completed' } }).unwrap();\n setTaskStatus('completed');\n onRefresh?.();\n } catch (e) {\n // no-op (parent/global error handling if any)\n }\n };\n\n return (\n <div className={styles.solidChatterMessageBox}>\n <div className={styles.solidChatterMessageCard}>\n <div className={styles.solidChatterMessageLayout}>\n <div className={styles.solidChatterAvatar} style={avatarStyle}>\n {initials || user.charAt(0).toUpperCase()}\n </div>\n <div className={styles.solidChatterMessageContent}>\n <div className={styles.solidChatterMessageHeader}>\n <div className='flex align-items-center gap-2 flex-wrap'>\n <p className={styles.solidChatterUser}>{user}</p>\n <SolidTooltip>\n <SolidTooltipTrigger asChild>\n <span\n className={`${styles.solidChatterBadge} ${messageType === 'audit' ? styles.audit : styles.custom}`}\n aria-label={messageLabel}\n >\n <TypeIcon size={12} />\n </span>\n </SolidTooltipTrigger>\n <SolidTooltipContent side=\"right\">\n {messageLabel}\n </SolidTooltipContent>\n </SolidTooltip>\n </div>\n <span className={styles.solidChatterTime}>{time}</span>\n </div>\n {modelDisplayName && (\n <p className={`${styles.solidChatterMeta} m-0`}>\n {modelDisplayName}\n {modelUserKey && <> · <span className='font-medium'>{modelUserKey}</span></>}\n </p>\n )}\n {message && (\n <div className={styles.solidMessageWrapper}>\n {renderMessageContent()}\n </div>\n )}\n {media?.messageAttachments && media.messageAttachments.length > 0 && (\n <div className={styles.solidChatterAttachments}>\n {media.messageAttachments.map((attachment) => {\n const isImage = attachment.mimeType.startsWith('image/');\n return (\n <div key={attachment.id} className={styles.solidChatterAttachment}>\n {isImage ? (\n <div\n className='cursor-pointer'\n onClick={() => handleImageClick(attachment._full_url)}\n >\n <Image\n src={encodeURI(attachment._full_url)}\n alt={attachment.originalFileName}\n width={54}\n height={54}\n style={{ objectFit: 'cover' }}\n />\n </div>\n ) : (\n <a\n href={encodeURI(attachment._full_url)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className='flex align-items-center gap-2 text-decoration-none text-sm'\n >\n <SolidIcon name={getFileIcon(attachment.mimeType)} aria-hidden />\n <span>{attachment.originalFileName}</span>\n </a>\n )}\n </div>\n );\n })}\n </div>\n )}\n {isTaskMessage && (\n <div className='flex align-items-center justify-content-end'>\n {isTaskCompleted ? (\n <SolidTag tone=\"success\" className=\"inline-flex align-items-center gap-1 text-xs px-2 py-1\">\n <Check size={12} aria-hidden />\n <span className=\"font-medium\">Done</span>\n </SolidTag>\n ) : (\n <SolidButton\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n className=\"text-xs px-2 py-1\"\n leftIcon={<Check size={12} />}\n loading={isUpdatingTaskStatus}\n onClick={handleMarkTaskDone}\n >\n <span className=\"font-semibold\">Mark as done</span>\n </SolidButton>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n {openLightbox && (\n <SolidLightbox\n open={openLightbox}\n slides={lightboxSlides}\n onClose={() => setOpenLightbox(false)}\n />\n )}\n </div>\n )\n}\n"]}
|
|
@@ -5,19 +5,23 @@ import { useMemo, useState } from 'react'
|
|
|
5
5
|
import styles from './chatter.module.css'
|
|
6
6
|
import { SolidChatterCustomMessage } from './SolidChatterCustomMessage'
|
|
7
7
|
import { SolidChatterAuditMessage } from './SolidChatterAuditMessage'
|
|
8
|
-
import { GitBranch, MessageSquare } from 'lucide-react'
|
|
9
|
-
import { SolidLightbox, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'
|
|
8
|
+
import { Check, GitBranch, MessageSquare } from 'lucide-react'
|
|
9
|
+
import { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, type SolidIconName } from '../../shad-cn-ui'
|
|
10
10
|
import type { SolidLightboxSlide } from '../../shad-cn-ui/SolidLightbox'
|
|
11
|
+
import { usePatchChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'
|
|
11
12
|
|
|
12
13
|
interface Props {
|
|
14
|
+
messageId?: number | string,
|
|
13
15
|
user: string,
|
|
14
16
|
messageType?: string,
|
|
15
17
|
message?: any,
|
|
16
18
|
time?: string,
|
|
17
19
|
auditRecord?: any,
|
|
18
20
|
messageSubType?: string,
|
|
21
|
+
status?: string,
|
|
19
22
|
modelDisplayName?: string,
|
|
20
23
|
modelUserKey?: string,
|
|
24
|
+
onRefresh?: () => void,
|
|
21
25
|
media?: {
|
|
22
26
|
messageAttachments?: Array<{
|
|
23
27
|
id: number;
|
|
@@ -50,9 +54,11 @@ const getFileIcon = (mimeType: string): SolidIconName => {
|
|
|
50
54
|
};
|
|
51
55
|
|
|
52
56
|
export const SolidChatterMessageBox = (props: Props) => {
|
|
53
|
-
const { user, messageType, message, time, auditRecord, media, messageSubType, modelDisplayName, modelUserKey } = props;
|
|
57
|
+
const { messageId, user, messageType, message, time, auditRecord, media, messageSubType, status, modelDisplayName, modelUserKey, onRefresh } = props;
|
|
54
58
|
const [lightboxSlides, setLightboxSlides] = useState<SolidLightboxSlide[]>([]);
|
|
55
59
|
const [openLightbox, setOpenLightbox] = useState(false);
|
|
60
|
+
const [taskStatus, setTaskStatus] = useState<string | undefined>(status);
|
|
61
|
+
const [patchChatterMessage, { isLoading: isUpdatingTaskStatus }] = usePatchChatterMessageMutation();
|
|
56
62
|
|
|
57
63
|
const avatarStyle = useMemo(() => {
|
|
58
64
|
const bg = stringToColor(user)
|
|
@@ -108,6 +114,20 @@ export const SolidChatterMessageBox = (props: Props) => {
|
|
|
108
114
|
|
|
109
115
|
const TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;
|
|
110
116
|
|
|
117
|
+
const isTaskMessage = messageSubType === 'task';
|
|
118
|
+
const isTaskCompleted = (taskStatus ?? '').toLowerCase() === 'completed';
|
|
119
|
+
|
|
120
|
+
const handleMarkTaskDone = async () => {
|
|
121
|
+
if (!messageId || isUpdatingTaskStatus) return;
|
|
122
|
+
try {
|
|
123
|
+
await patchChatterMessage({ id: messageId, data: { status: 'completed' } }).unwrap();
|
|
124
|
+
setTaskStatus('completed');
|
|
125
|
+
onRefresh?.();
|
|
126
|
+
} catch (e) {
|
|
127
|
+
// no-op (parent/global error handling if any)
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
111
131
|
return (
|
|
112
132
|
<div className={styles.solidChatterMessageBox}>
|
|
113
133
|
<div className={styles.solidChatterMessageCard}>
|
|
@@ -181,6 +201,28 @@ export const SolidChatterMessageBox = (props: Props) => {
|
|
|
181
201
|
})}
|
|
182
202
|
</div>
|
|
183
203
|
)}
|
|
204
|
+
{isTaskMessage && (
|
|
205
|
+
<div className='flex align-items-center justify-content-end'>
|
|
206
|
+
{isTaskCompleted ? (
|
|
207
|
+
<SolidTag tone="success" className="inline-flex align-items-center gap-1 text-xs px-2 py-1">
|
|
208
|
+
<Check size={12} aria-hidden />
|
|
209
|
+
<span className="font-medium">Done</span>
|
|
210
|
+
</SolidTag>
|
|
211
|
+
) : (
|
|
212
|
+
<SolidButton
|
|
213
|
+
type="button"
|
|
214
|
+
size="sm"
|
|
215
|
+
variant="outline"
|
|
216
|
+
className="text-xs px-2 py-1"
|
|
217
|
+
leftIcon={<Check size={12} />}
|
|
218
|
+
loading={isUpdatingTaskStatus}
|
|
219
|
+
onClick={handleMarkTaskDone}
|
|
220
|
+
>
|
|
221
|
+
<span className="font-semibold">Mark as done</span>
|
|
222
|
+
</SolidButton>
|
|
223
|
+
)}
|
|
224
|
+
</div>
|
|
225
|
+
)}
|
|
184
226
|
</div>
|
|
185
227
|
</div>
|
|
186
228
|
</div>
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
border-bottom: 1px solid color-mix(in srgb, var(--border) 82%, transparent);
|
|
4
4
|
}
|
|
5
5
|
|
|
6
|
-
.chatterTitleWithLabel {
|
|
7
|
-
padding-left: 2.4rem;
|
|
8
|
-
}
|
|
9
6
|
|
|
10
7
|
.chatterMessageComposer .chatterMessageInput {
|
|
11
8
|
background-color: var(--background);
|
|
@@ -250,9 +247,9 @@
|
|
|
250
247
|
}
|
|
251
248
|
|
|
252
249
|
.solidChatterBadge.custom {
|
|
253
|
-
color: #
|
|
254
|
-
border-color: rgba(
|
|
255
|
-
background: rgba(
|
|
250
|
+
color: #722ED1;
|
|
251
|
+
border-color: rgba(114, 46, 209, 0.2);
|
|
252
|
+
background: rgba(114, 46, 209, 0.08);
|
|
256
253
|
}
|
|
257
254
|
|
|
258
255
|
:global(.solid-chatter-body) {
|
|
@@ -93,6 +93,6 @@ export default function PDFViewer(_a) {
|
|
|
93
93
|
if (!url) {
|
|
94
94
|
return (_jsx("div", { className: "flex items-center justify-center h-96 bg-gray-100 rounded-lg", children: _jsx("p", { className: "text-gray-500", children: "No PDF URL provided" }) }));
|
|
95
95
|
}
|
|
96
|
-
return (_jsxs("div", { className: "flex flex-col items-center space-y-4 p-4", children: [loading && (_jsx("div", { className: "flex items-center justify-center h-96 bg-gray-100 rounded-lg w-full", children: _jsx("p", { className: "text-gray-600", children: "Loading PDF..." }) })), error && (_jsx("div", { className: "flex items-center justify-center h-96 bg-red-50 rounded-lg w-full", children: _jsx("p", { className: "text-red-600", children: error }) })), blobUrl && !loading && !error && (_jsx(Document, { file: blobUrl, onLoadSuccess: onDocumentLoadSuccess, onLoadError: onDocumentLoadError, className: "border border-gray-300 rounded-lg shadow-lg", children: _jsx(Page, { pageNumber: pageNumber, renderTextLayer: true, renderAnnotationLayer: true }) })), numPages && (_jsxs("div", { className: "flex items-center space-x-4 bg-white p-4 rounded-lg shadow-md", children: [_jsx("button", { onClick: goToPrevPage, disabled: pageNumber <= 1, className: "px-4 py-2 bg-
|
|
96
|
+
return (_jsxs("div", { className: "flex flex-col items-center space-y-4 p-4", children: [loading && (_jsx("div", { className: "flex items-center justify-center h-96 bg-gray-100 rounded-lg w-full", children: _jsx("p", { className: "text-gray-600", children: "Loading PDF..." }) })), error && (_jsx("div", { className: "flex items-center justify-center h-96 bg-red-50 rounded-lg w-full", children: _jsx("p", { className: "text-red-600", children: error }) })), blobUrl && !loading && !error && (_jsx(Document, { file: blobUrl, onLoadSuccess: onDocumentLoadSuccess, onLoadError: onDocumentLoadError, className: "border border-gray-300 rounded-lg shadow-lg", children: _jsx(Page, { pageNumber: pageNumber, renderTextLayer: true, renderAnnotationLayer: true }) })), numPages && (_jsxs("div", { className: "flex items-center space-x-4 bg-white p-4 rounded-lg shadow-md", children: [_jsx("button", { onClick: goToPrevPage, disabled: pageNumber <= 1, className: "px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed", children: "Previous" }), _jsxs("span", { className: "text-gray-700 font-medium", children: ["Page ", pageNumber, " of ", numPages] }), _jsx("button", { onClick: goToNextPage, disabled: pageNumber >= numPages, className: "px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed", children: "Next" })] }))] }));
|
|
97
97
|
}
|
|
98
98
|
//# sourceMappingURL=PDFViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFViewer.js","sourceRoot":"","sources":["../../../../src/components/core/common/PDFViewer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PDFViewer.js","sourceRoot":"","sources":["../../../../src/components/core/common/PDFViewer.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport 'react-pdf/dist/esm/Page/AnnotationLayer.css';\nimport 'react-pdf/dist/esm/Page/TextLayer.css';\n\n// Local worker recommended (avoids CORS)\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.min.js`;\n\nexport default function PDFViewer({ url }: any) {\n const [numPages, setNumPages] = useState<any>(null);\n const [pageNumber, setPageNumber] = useState(1);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<any>(null);\n const [blobUrl, setBlobUrl] = useState<string | null>(null);\n\n // Convert signed URL → Blob → Object URL\n useEffect(() => {\n if (!url) return;\n\n setLoading(true);\n setError(null);\n\n fetch(url)\n .then(async (res) => {\n if (!res.ok) throw new Error(\"Failed to fetch PDF\");\n\n const blob = await res.blob();\n const blobUrl = URL.createObjectURL(blob);\n setBlobUrl(blobUrl);\n setLoading(false);\n })\n .catch((err) => {\n console.error(\"Blob fetch error:\", err);\n setError(\"Failed to load PDF\");\n setLoading(false);\n });\n }, [url]);\n\n function onDocumentLoadSuccess({ numPages }: any) {\n setNumPages(numPages);\n setError(null);\n }\n\n function onDocumentLoadError(err: any) {\n console.error(\"PDF load error:\", err);\n setError(\"Failed to render PDF\");\n }\n\n const goToPrevPage = () => setPageNumber((p) => Math.max(p - 1, 1));\n const goToNextPage = () => setPageNumber((p) => Math.min(p + 1, numPages));\n\n if (!url) {\n return (\n <div className=\"flex items-center justify-center h-96 bg-gray-100 rounded-lg\">\n <p className=\"text-gray-500\">No PDF URL provided</p>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center space-y-4 p-4\">\n {loading && (\n <div className=\"flex items-center justify-center h-96 bg-gray-100 rounded-lg w-full\">\n <p className=\"text-gray-600\">Loading PDF...</p>\n </div>\n )}\n\n {error && (\n <div className=\"flex items-center justify-center h-96 bg-red-50 rounded-lg w-full\">\n <p className=\"text-red-600\">{error}</p>\n </div>\n )}\n\n {/* Render only after Blob URL is created */}\n {blobUrl && !loading && !error && (\n <Document\n file={blobUrl}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadError={onDocumentLoadError}\n className=\"border border-gray-300 rounded-lg shadow-lg\"\n >\n <Page\n pageNumber={pageNumber}\n renderTextLayer={true}\n renderAnnotationLayer={true}\n />\n </Document>\n )}\n\n {numPages && (\n <div className=\"flex items-center space-x-4 bg-white p-4 rounded-lg shadow-md\">\n <button\n onClick={goToPrevPage}\n disabled={pageNumber <= 1}\n className=\"px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed\"\n >\n Previous\n </button>\n\n <span className=\"text-gray-700 font-medium\">\n Page {pageNumber} of {numPages}\n </span>\n\n <button\n onClick={goToNextPage}\n disabled={pageNumber >= numPages}\n className=\"px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed\"\n >\n Next\n </button>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -94,7 +94,7 @@ export default function PDFViewer({ url }: any) {
|
|
|
94
94
|
<button
|
|
95
95
|
onClick={goToPrevPage}
|
|
96
96
|
disabled={pageNumber <= 1}
|
|
97
|
-
className="px-4 py-2 bg-
|
|
97
|
+
className="px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed"
|
|
98
98
|
>
|
|
99
99
|
Previous
|
|
100
100
|
</button>
|
|
@@ -106,7 +106,7 @@ export default function PDFViewer({ url }: any) {
|
|
|
106
106
|
<button
|
|
107
107
|
onClick={goToNextPage}
|
|
108
108
|
disabled={pageNumber >= numPages}
|
|
109
|
-
className="px-4 py-2 bg-
|
|
109
|
+
className="px-4 py-2 bg-primary text-white rounded hover:opacity-90 disabled:bg-gray-300 disabled:cursor-not-allowed"
|
|
110
110
|
>
|
|
111
111
|
Next
|
|
112
112
|
</button>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidAccountSettings.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidAccountSettings.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB,gEAAiE,GAAG,mDA2EpG,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { SolidChangePassword } from "./SolidChangePassword";
|
|
|
5
5
|
import { SolidVersionInfo } from "./SolidVersionInfo";
|
|
6
6
|
import styles from "./SolidAccountSettings.module.css";
|
|
7
7
|
import { useLazyGetSolidSettingsQuery } from "../../../../redux/api/solidSettingsApi";
|
|
8
|
+
import { toLegacySettingsShape } from "../../../../helpers/settingsPayload";
|
|
8
9
|
export var SolidAccountSettings = function (_a) {
|
|
9
10
|
var showProfileSettingsDialog = _a.showProfileSettingsDialog, setShowProfileSettingsDialog = _a.setShowProfileSettingsDialog;
|
|
10
11
|
var _b = useState("personal_info"), settingKey = _b[0], setSettingKey = _b[1];
|
|
@@ -18,11 +19,12 @@ export var SolidAccountSettings = function (_a) {
|
|
|
18
19
|
{ label: "About", key: "about" },
|
|
19
20
|
];
|
|
20
21
|
var renderSettingComponent = useMemo(function () {
|
|
22
|
+
var legacySettings = toLegacySettingsShape(solidSettingsData);
|
|
21
23
|
switch (settingKey) {
|
|
22
24
|
case "personal_info":
|
|
23
25
|
return _jsx(SolidPersonalInfo, {});
|
|
24
26
|
case "change_password":
|
|
25
|
-
return _jsx(SolidChangePassword, { solidSettingsData:
|
|
27
|
+
return _jsx(SolidChangePassword, { solidSettingsData: legacySettings });
|
|
26
28
|
case "about":
|
|
27
29
|
return _jsx(SolidVersionInfo, {});
|
|
28
30
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidAccountSettings.js","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidAccountSettings.js","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { SolidPersonalInfo } from \"./SolidPersonalInfo\";\nimport { SolidChangePassword } from \"./SolidChangePassword\";\nimport { SolidVersionInfo } from \"./SolidVersionInfo\";\nimport styles from \"./SolidAccountSettings.module.css\";\nimport { useLazyGetSolidSettingsQuery } from \"../../../../redux/api/solidSettingsApi\";\nimport { toLegacySettingsShape } from \"../../../../helpers/settingsPayload\";\n\nexport const SolidAccountSettings = ({ showProfileSettingsDialog, setShowProfileSettingsDialog }: any) => {\n const [settingKey, setSettingKey] = useState(\"personal_info\");\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n useEffect(() => {\n trigger(\"\");\n }, [trigger]);\n\n const settings = [\n { label: \"Personal Info\", key: \"personal_info\" },\n { label: \"Change Password\", key: \"change_password\" },\n { label: \"About\", key: \"about\" },\n ];\n\n const renderSettingComponent = useMemo(() => {\n const legacySettings = toLegacySettingsShape(solidSettingsData);\n switch (settingKey) {\n case \"personal_info\":\n return <SolidPersonalInfo />;\n case \"change_password\":\n return <SolidChangePassword solidSettingsData={legacySettings} />;\n case \"about\":\n return <SolidVersionInfo />;\n default:\n return null;\n }\n }, [settingKey, solidSettingsData]);\n\n if (!showProfileSettingsDialog) return null;\n\n return (\n <div className={styles.backdrop} role=\"presentation\" onClick={() => setShowProfileSettingsDialog(false)}>\n <section\n className={styles.modal}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"solid-account-settings-title\"\n onClick={(event) => event.stopPropagation()}\n >\n <header className={styles.header}>\n <div>\n <h2 id=\"solid-account-settings-title\" className={styles.title}>\n Account Settings\n </h2>\n <p className={styles.subtitle}>Manage your profile and security settings.</p>\n </div>\n <button\n type=\"button\"\n className={styles.closeButton}\n onClick={() => setShowProfileSettingsDialog(false)}\n aria-label=\"Close account settings\"\n >\n ×\n </button>\n </header>\n\n <div className={styles.tabsLine} role=\"tablist\" aria-label=\"Account setting sections\">\n {settings.map((option) => (\n <button\n key={option.key}\n type=\"button\"\n role=\"tab\"\n aria-selected={option.key === settingKey}\n className={`${styles.tabTrigger} ${option.key === settingKey ? styles.tabActive : \"\"}`}\n onClick={() => setSettingKey(option.key)}\n >\n {option.label}\n </button>\n ))}\n </div>\n\n <div className={styles.formWrapper}>{renderSettingComponent}</div>\n </section>\n </div>\n );\n};\n"]}
|
|
@@ -4,6 +4,7 @@ import { SolidChangePassword } from "./SolidChangePassword";
|
|
|
4
4
|
import { SolidVersionInfo } from "./SolidVersionInfo";
|
|
5
5
|
import styles from "./SolidAccountSettings.module.css";
|
|
6
6
|
import { useLazyGetSolidSettingsQuery } from "../../../../redux/api/solidSettingsApi";
|
|
7
|
+
import { toLegacySettingsShape } from "../../../../helpers/settingsPayload";
|
|
7
8
|
|
|
8
9
|
export const SolidAccountSettings = ({ showProfileSettingsDialog, setShowProfileSettingsDialog }: any) => {
|
|
9
10
|
const [settingKey, setSettingKey] = useState("personal_info");
|
|
@@ -20,11 +21,12 @@ export const SolidAccountSettings = ({ showProfileSettingsDialog, setShowProfile
|
|
|
20
21
|
];
|
|
21
22
|
|
|
22
23
|
const renderSettingComponent = useMemo(() => {
|
|
24
|
+
const legacySettings = toLegacySettingsShape(solidSettingsData);
|
|
23
25
|
switch (settingKey) {
|
|
24
26
|
case "personal_info":
|
|
25
27
|
return <SolidPersonalInfo />;
|
|
26
28
|
case "change_password":
|
|
27
|
-
return <SolidChangePassword solidSettingsData={
|
|
29
|
+
return <SolidChangePassword solidSettingsData={legacySettings} />;
|
|
28
30
|
case "about":
|
|
29
31
|
return <SolidVersionInfo />;
|
|
30
32
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidNotifications.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidNotifications.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidNotifications.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/common/SolidAccountSettings/SolidNotifications.tsx"],"names":[],"mappings":"AAeA,eAAO,MAAM,kBAAkB,+CAgG9B,CAAC"}
|
|
@@ -41,9 +41,11 @@ import { ERROR_MESSAGES } from "../../../../constants/error-messages";
|
|
|
41
41
|
import { useBulkUpdateSolidUserSettingsMutation, useGetSolidSettingsQuery } from "../../../../redux/api/solidSettingsApi";
|
|
42
42
|
import { SolidButton } from "../../../shad-cn-ui/SolidButton";
|
|
43
43
|
import styles from "./SolidAccountSettings.module.css";
|
|
44
|
+
import { getSettingsMap } from "../../../../helpers/settingsPayload";
|
|
44
45
|
export var SolidNotifications = function () {
|
|
45
46
|
var _a, _b;
|
|
46
47
|
var _c = useGetSolidSettingsQuery(undefined), solidSettingsData = _c.data, refetch = _c.refetch;
|
|
48
|
+
var settingsMap = getSettingsMap(solidSettingsData);
|
|
47
49
|
var bulkUpdateSolidSettings = useBulkUpdateSolidUserSettingsMutation()[0];
|
|
48
50
|
var _d = useState(null), toast = _d[0], setToast = _d[1];
|
|
49
51
|
useEffect(function () {
|
|
@@ -54,18 +56,17 @@ export var SolidNotifications = function () {
|
|
|
54
56
|
};
|
|
55
57
|
var formik = useFormik({
|
|
56
58
|
initialValues: {
|
|
57
|
-
enableNotification: (_b = (_a =
|
|
59
|
+
enableNotification: (_b = (_a = settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enableNotification) !== null && _a !== void 0 ? _a : settingsMap === null || settingsMap === void 0 ? void 0 : settingsMap.enabledNotification) !== null && _b !== void 0 ? _b : true,
|
|
58
60
|
},
|
|
59
61
|
enableReinitialize: true,
|
|
60
62
|
onSubmit: function (values) { return __awaiter(void 0, void 0, void 0, function () {
|
|
61
63
|
var updatedSettingsArray_1, currentSettings_1, formData, response, _a;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
switch (_c.label) {
|
|
64
|
+
return __generator(this, function (_b) {
|
|
65
|
+
switch (_b.label) {
|
|
65
66
|
case 0:
|
|
66
|
-
|
|
67
|
+
_b.trys.push([0, 2, , 3]);
|
|
67
68
|
updatedSettingsArray_1 = [];
|
|
68
|
-
currentSettings_1 =
|
|
69
|
+
currentSettings_1 = settingsMap || {};
|
|
69
70
|
Object.entries(values).forEach(function (_a) {
|
|
70
71
|
var _b;
|
|
71
72
|
var key = _a[0], value = _a[1];
|
|
@@ -81,7 +82,7 @@ export var SolidNotifications = function () {
|
|
|
81
82
|
formData.append("settings", JSON.stringify(updatedSettingsArray_1));
|
|
82
83
|
return [4 /*yield*/, bulkUpdateSolidSettings({ data: formData }).unwrap()];
|
|
83
84
|
case 1:
|
|
84
|
-
response =
|
|
85
|
+
response = _b.sent();
|
|
85
86
|
if (response.statusCode === 200) {
|
|
86
87
|
notify("success", ERROR_MESSAGES.UPDATED, ERROR_MESSAGES.SETTING_UPDATED);
|
|
87
88
|
}
|
|
@@ -90,7 +91,7 @@ export var SolidNotifications = function () {
|
|
|
90
91
|
}
|
|
91
92
|
return [3 /*break*/, 3];
|
|
92
93
|
case 2:
|
|
93
|
-
_a =
|
|
94
|
+
_a = _b.sent();
|
|
94
95
|
notify("error", ERROR_MESSAGES.FAILED, ERROR_MESSAGES.SOMETHING_WRONG);
|
|
95
96
|
return [3 /*break*/, 3];
|
|
96
97
|
case 3: return [2 /*return*/];
|