@solidxai/core-ui 0.1.9-beta.20 → 0.1.9-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +23 -19
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +62 -52
- package/dist/components/auth/ForgotPasswordThankYou.js +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.js.map +1 -1
- package/dist/components/auth/ForgotPasswordThankYou.tsx +2 -2
- package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts +2 -0
- package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.d.ts.map +1 -0
- package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js +112 -0
- package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.js.map +1 -0
- package/dist/components/auth/MicrosoftActiveDirectoryAuthChecking.tsx +78 -0
- package/dist/components/auth/SolidChangeForcePassword.js +2 -2
- package/dist/components/auth/SolidChangeForcePassword.js.map +1 -1
- package/dist/components/auth/SolidChangeForcePassword.tsx +13 -13
- package/dist/components/auth/SolidForgotPassword.js +1 -1
- package/dist/components/auth/SolidForgotPassword.js.map +1 -1
- package/dist/components/auth/SolidForgotPassword.tsx +3 -3
- package/dist/components/auth/SolidInitialLoginOtp.js +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.js.map +1 -1
- package/dist/components/auth/SolidInitialLoginOtp.tsx +2 -2
- package/dist/components/auth/SolidInitiateRegisterOtp.js +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.js.map +1 -1
- package/dist/components/auth/SolidInitiateRegisterOtp.tsx +2 -2
- package/dist/components/auth/SolidLogin.js +4 -4
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +11 -11
- package/dist/components/auth/SolidRegister.js +6 -6
- package/dist/components/auth/SolidRegister.js.map +1 -1
- package/dist/components/auth/SolidRegister.tsx +14 -14
- package/dist/components/auth/SolidResetPassword.js +2 -2
- package/dist/components/auth/SolidResetPassword.js.map +1 -1
- package/dist/components/auth/SolidResetPassword.tsx +8 -8
- package/dist/components/common/BackButton.js +1 -1
- package/dist/components/common/BackButton.js.map +1 -1
- package/dist/components/common/BackButton.tsx +1 -1
- package/dist/components/common/CancelButton.js +2 -2
- package/dist/components/common/CancelButton.js.map +1 -1
- package/dist/components/common/CancelButton.tsx +3 -3
- package/dist/components/common/GeneralSettings.js +18 -18
- package/dist/components/common/GeneralSettings.js.map +1 -1
- package/dist/components/common/GeneralSettings.tsx +136 -136
- package/dist/components/common/SolidExport.d.ts +1 -1
- package/dist/components/common/SolidExport.d.ts.map +1 -1
- package/dist/components/common/SolidExport.js +10 -3
- package/dist/components/common/SolidExport.js.map +1 -1
- package/dist/components/common/SolidExport.tsx +10 -2
- package/dist/components/common/SolidFormHeader.js +1 -1
- package/dist/components/common/SolidFormHeader.js.map +1 -1
- package/dist/components/common/SolidFormHeader.tsx +1 -1
- package/dist/components/common/SolidModuleHome.js +2 -2
- package/dist/components/common/SolidModuleHome.js.map +1 -1
- package/dist/components/common/SolidModuleHome.tsx +7 -7
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +3 -3
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +6 -6
- package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AnthropicProviderComponent.tsx +4 -4
- package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/OpenAiProviderComponent.tsx +4 -4
- package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js +1 -1
- package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.js.map +1 -1
- package/dist/components/common/SolidSettings/SettingDropzoneActivePlaceholder.tsx +1 -1
- package/dist/components/core/card/SolidCardView.js +1 -1
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +5 -5
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- 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 +5 -1
- package/dist/components/core/chatter/SolidChatter.js +5 -5
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +8 -8
- package/dist/components/core/chatter/SolidChatterAuditMessage.js +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterAuditMessage.tsx +2 -2
- package/dist/components/core/chatter/SolidChatterHeader.js +2 -2
- package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.tsx +6 -6
- package/dist/components/core/chatter/SolidChatterMessageBox.js +4 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +12 -12
- package/dist/components/core/chatter/SolidMessageComposer.js +1 -1
- package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
- package/dist/components/core/chatter/SolidMessageComposer.tsx +7 -7
- package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
- package/dist/components/core/common/SolidCreateButton.js +16 -1
- package/dist/components/core/common/SolidCreateButton.js.map +1 -1
- package/dist/components/core/common/SolidCreateButton.tsx +18 -1
- package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +60 -0
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportDropzone.tsx +2 -2
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js +19 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +16 -3
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +168 -26
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +174 -10
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +46 -36
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +77 -40
- package/dist/components/core/common/SolidLayoutViews.js +2 -2
- package/dist/components/core/common/SolidLayoutViews.js.map +1 -1
- package/dist/components/core/common/SolidLayoutViews.tsx +4 -4
- package/dist/components/core/common/SolidListViewOptions.js +1 -1
- package/dist/components/core/common/SolidListViewOptions.js.map +1 -1
- package/dist/components/core/common/SolidListViewOptions.tsx +1 -1
- package/dist/components/core/common/SolidPasswordHelperText.js +2 -2
- package/dist/components/core/common/SolidPasswordHelperText.js.map +1 -1
- package/dist/components/core/common/SolidPasswordHelperText.tsx +4 -4
- package/dist/components/core/common/SolidSearchBox.js +1 -1
- package/dist/components/core/common/SolidSearchBox.js.map +1 -1
- package/dist/components/core/common/SolidSearchBox.tsx +1 -1
- package/dist/components/core/common/SolidXAiIframe.js +1 -1
- package/dist/components/core/common/SolidXAiIframe.js.map +1 -1
- package/dist/components/core/common/SolidXAiIframe.tsx +1 -1
- package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +1 -1
- package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +2 -2
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js +2 -2
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/roleMetadata/RolePermissionsManyToManyFieldWidget.tsx +4 -4
- package/dist/components/core/field/FieldListViewData.js +2 -2
- package/dist/components/core/field/FieldListViewData.js.map +1 -1
- package/dist/components/core/field/FieldListViewData.tsx +5 -5
- package/dist/components/core/filter/fields/SolidBooleanField.d.ts.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.js +2 -2
- package/dist/components/core/filter/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidBooleanField.tsx +3 -12
- package/dist/components/core/filter/fields/SolidDateField.js +2 -2
- package/dist/components/core/filter/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDateField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidDatetimeField.js +2 -2
- package/dist/components/core/filter/fields/SolidDatetimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidDatetimeField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidExternalIdField.js +2 -2
- package/dist/components/core/filter/fields/SolidExternalIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidExternalIdField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidIdField.js +2 -2
- package/dist/components/core/filter/fields/SolidIdField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIdField.tsx +2 -2
- package/dist/components/core/filter/fields/SolidIntField.js +2 -2
- package/dist/components/core/filter/fields/SolidIntField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidIntField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js +2 -2
- package/dist/components/core/filter/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaMultipleField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidMediaSingleField.js +2 -2
- package/dist/components/core/filter/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidMediaSingleField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js +2 -2
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionDynamicField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js +2 -2
- package/dist/components/core/filter/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidSelectionStaticField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidShortTextField.js +2 -2
- package/dist/components/core/filter/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidShortTextField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidTimeField.js +2 -2
- package/dist/components/core/filter/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidTimeField.tsx +3 -3
- package/dist/components/core/filter/fields/SolidUuidField.js +2 -2
- package/dist/components/core/filter/fields/SolidUuidField.js.map +1 -1
- package/dist/components/core/filter/fields/SolidUuidField.tsx +4 -4
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js +2 -2
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToManyField.tsx +3 -3
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js +2 -2
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationManyToOneField.tsx +3 -3
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js +2 -2
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/filter/fields/relations/SolidRelationOneToManyField.tsx +3 -3
- package/dist/components/core/form/SolidFormActionHeader.js +8 -8
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +13 -13
- package/dist/components/core/form/SolidFormFieldRender.js +1 -1
- package/dist/components/core/form/SolidFormFieldRender.js.map +1 -1
- package/dist/components/core/form/SolidFormFieldRender.tsx +1 -1
- package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormFooter.js +12 -5
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +14 -5
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +200 -65
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +188 -41
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js +5 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.js.map +1 -1
- package/dist/components/core/form/SolidFormViewContextMenuHeaderButton.tsx +5 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +5 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +5 -1
- package/dist/components/core/form/SolidFormViewShimmerLoading.js +1 -1
- package/dist/components/core/form/SolidFormViewShimmerLoading.js.map +1 -1
- package/dist/components/core/form/SolidFormViewShimmerLoading.tsx +46 -46
- package/dist/components/core/form/fields/SolidBooleanField.js +3 -3
- package/dist/components/core/form/fields/SolidBooleanField.js.map +1 -1
- package/dist/components/core/form/fields/SolidBooleanField.tsx +3 -3
- package/dist/components/core/form/fields/SolidComputedField.js +1 -1
- package/dist/components/core/form/fields/SolidComputedField.js.map +1 -1
- package/dist/components/core/form/fields/SolidComputedField.tsx +1 -1
- package/dist/components/core/form/fields/SolidDateField.js +2 -2
- package/dist/components/core/form/fields/SolidDateField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateField.tsx +2 -2
- package/dist/components/core/form/fields/SolidDateTimeField.js +2 -2
- package/dist/components/core/form/fields/SolidDateTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDateTimeField.tsx +2 -2
- package/dist/components/core/form/fields/SolidDecimalField.js +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.tsx +1 -1
- package/dist/components/core/form/fields/SolidEmailField.js +1 -1
- package/dist/components/core/form/fields/SolidEmailField.js.map +1 -1
- package/dist/components/core/form/fields/SolidEmailField.tsx +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +3 -3
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.tsx +3 -3
- package/dist/components/core/form/fields/SolidJsonField.js +3 -3
- package/dist/components/core/form/fields/SolidJsonField.js.map +1 -1
- package/dist/components/core/form/fields/SolidJsonField.tsx +3 -3
- package/dist/components/core/form/fields/SolidLongTextField.js +6 -6
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.tsx +12 -12
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +11 -11
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +28 -28
- package/dist/components/core/form/fields/SolidMediaSingleField.js +5 -5
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +9 -9
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +12 -6
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +13 -6
- package/dist/components/core/form/fields/SolidRichTextField.js +2 -2
- package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidRichTextField.tsx +2 -2
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js +2 -2
- package/dist/components/core/form/fields/SolidSelectionDynamicField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionDynamicField.tsx +2 -2
- package/dist/components/core/form/fields/SolidSelectionStaticField.js +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.js.map +1 -1
- package/dist/components/core/form/fields/SolidSelectionStaticField.tsx +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidShortTextField.tsx +1 -1
- package/dist/components/core/form/fields/SolidTimeField.js +2 -2
- package/dist/components/core/form/fields/SolidTimeField.js.map +1 -1
- package/dist/components/core/form/fields/SolidTimeField.tsx +2 -2
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts +7 -11
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +18 -63
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
- package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +63 -164
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +6 -6
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +38 -36
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +6 -6
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +6 -6
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +10 -10
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +20 -25
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMessageFieldFormWidget.tsx +1 -1
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidAiInteractionMetadataFieldFormWidget.tsx +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +5 -5
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +17 -17
- package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidRelationFieldAvatarFormWidget.tsx +1 -1
- package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidShortTextFieldAvatarWidget.tsx +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +2 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +1 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +15 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +27 -4
- package/dist/components/core/kanban/KanbanColumn.d.ts +2 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +4 -4
- 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 +44 -39
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +22 -10
- package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
- 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 +5 -1
- package/dist/components/core/list/ListViewRowActionPopup.js +1 -1
- package/dist/components/core/list/ListViewRowActionPopup.js.map +1 -1
- package/dist/components/core/list/ListViewRowActionPopup.tsx +1 -2
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.js.map +1 -1
- package/dist/components/core/list/SolidColumnSelector/SolidListColumnSelector.tsx +3 -3
- package/dist/components/core/list/SolidDataTable.js +1 -1
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +1 -1
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +14 -6
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +21 -13
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
- 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 +5 -1
- package/dist/components/core/list/SolidListViewHeaderButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.js +5 -1
- package/dist/components/core/list/SolidListViewHeaderButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderButton.tsx +5 -1
- package/dist/components/core/list/SolidListingHeader.js +1 -1
- package/dist/components/core/list/SolidListingHeader.js.map +1 -1
- package/dist/components/core/list/SolidListingHeader.tsx +4 -4
- package/dist/components/core/list/SolidTableRowCell.js +1 -1
- package/dist/components/core/list/SolidTableRowCell.js.map +1 -1
- package/dist/components/core/list/SolidTableRowCell.tsx +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +5 -5
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +8 -8
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +3 -3
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +3 -3
- package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js +1 -1
- package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.js.map +1 -1
- package/dist/components/core/list/widgets/SolidManyToManyRelationAvatarListWidget.tsx +1 -1
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js +1 -1
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -1
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +1 -2
- package/dist/components/core/locales/SolidLocale.js +3 -3
- package/dist/components/core/locales/SolidLocale.js.map +1 -1
- package/dist/components/core/locales/SolidLocale.tsx +7 -7
- package/dist/components/core/locales/solid-locale.css +5 -4
- package/dist/components/core/model/FieldMetaData.js +2 -2
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +2 -2
- package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js +50 -50
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +74 -229
- package/dist/components/core/model/ModelListViewData.js +4 -4
- package/dist/components/core/model/ModelListViewData.js.map +1 -1
- package/dist/components/core/model/ModelListViewData.tsx +7 -7
- package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
- package/dist/components/core/model/ModelMetaData.js +2 -2
- package/dist/components/core/model/ModelMetaData.js.map +1 -1
- package/dist/components/core/model/ModelMetaData.tsx +3 -58
- package/dist/components/core/module/CreateModule.d.ts.map +1 -1
- package/dist/components/core/module/CreateModule.js +3 -17
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +18 -32
- package/dist/components/core/module/ModuleListViewData.js +5 -5
- package/dist/components/core/module/ModuleListViewData.js.map +1 -1
- package/dist/components/core/module/ModuleListViewData.tsx +8 -8
- package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.module.css +2 -2
- package/dist/components/core/tree/SolidTreeTable.js +1 -1
- package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
- package/dist/components/core/tree/SolidTreeTable.tsx +1 -1
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +3 -3
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +14 -10
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +8 -10
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +18 -36
- package/dist/components/core/users/CreateUserRole.js +2 -2
- package/dist/components/core/users/CreateUserRole.js.map +1 -1
- package/dist/components/core/users/CreateUserRole.tsx +9 -9
- package/dist/components/core/users/UserListView.js +4 -4
- package/dist/components/core/users/UserListView.js.map +1 -1
- package/dist/components/core/users/UserListView.tsx +6 -6
- package/dist/components/layout/AdminHeaderActions.d.ts +1 -0
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +1 -1
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +1 -1
- package/dist/components/layout/AdminSidebar.js +1 -1
- package/dist/components/layout/AdminSidebar.js.map +1 -1
- package/dist/components/layout/AdminSidebar.tsx +1 -1
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +21 -3
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +64 -2
- package/dist/components/layout/CustomPagination.js +0 -1
- package/dist/components/layout/CustomPagination.js.map +1 -1
- package/dist/components/layout/CustomPagination.tsx +0 -1
- package/dist/components/layout/FilterMenu.js +1 -1
- package/dist/components/layout/FilterMenu.js.map +1 -1
- package/dist/components/layout/FilterMenu.tsx +4 -4
- package/dist/components/layout/Footer.js +1 -1
- package/dist/components/layout/Footer.js.map +1 -1
- package/dist/components/layout/Footer.tsx +1 -1
- package/dist/components/layout/GlobalSearch.js +1 -1
- package/dist/components/layout/GlobalSearch.js.map +1 -1
- package/dist/components/layout/GlobalSearch.tsx +1 -1
- package/dist/components/layout/ListingHeader.js +3 -3
- package/dist/components/layout/ListingHeader.js.map +1 -1
- package/dist/components/layout/ListingHeader.tsx +4 -4
- package/dist/components/layout/Loader.js +1 -1
- package/dist/components/layout/Loader.js.map +1 -1
- package/dist/components/layout/Loader.tsx +1 -1
- package/dist/components/layout/UserSidebar.js +1 -1
- package/dist/components/layout/UserSidebar.js.map +1 -1
- package/dist/components/layout/UserSidebar.tsx +1 -1
- package/dist/components/layout/navbar-one.js +2 -2
- package/dist/components/layout/navbar-one.js.map +1 -1
- package/dist/components/layout/navbar-one.tsx +8 -8
- package/dist/components/layout/navbar-two-menu.js +2 -2
- package/dist/components/layout/navbar-two-menu.js.map +1 -1
- package/dist/components/layout/navbar-two-menu.tsx +7 -7
- package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.js +3 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +3 -0
- package/dist/components/shad-cn-ui/SolidPopover.d.ts +1 -0
- package/dist/components/shad-cn-ui/SolidPopover.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidPopover.js +124 -5
- package/dist/components/shad-cn-ui/SolidPopover.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidPopover.tsx +173 -10
- package/dist/constants/error-messages.d.ts +13 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +17 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants/error-messages.ts +15 -0
- package/dist/resources/globals.css +32 -1
- package/dist/resources/solid-custom.css +6565 -0
- package/dist/resources/solid-primereact.css +14 -12
- package/dist/resources/solid-responsive.css +25 -2
- package/dist/resources/solid-tailwind-generated.css +1 -0
- package/dist/resources/solid-tailwind.css +3 -0
- package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts +2 -0
- package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.d.ts.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js +6 -0
- package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.js.map +1 -0
- package/dist/routes/pages/auth/InitiateMicrosoftActiveDirectoryOauthPage.tsx +5 -0
- package/dist/routes/pages/auth/SsoPage.js +1 -1
- package/dist/routes/pages/auth/SsoPage.js.map +1 -1
- package/dist/routes/pages/auth/SsoPage.tsx +1 -1
- package/dist/styles.d.ts +2 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +2 -1
- package/dist/styles.js.map +1 -1
- package/dist/styles.ts +2 -1
- package/package.json +6 -3
|
@@ -87,7 +87,7 @@ function exportFormatMeta(code) {
|
|
|
87
87
|
}
|
|
88
88
|
export var SolidExport = function (_a) {
|
|
89
89
|
var _b, _c;
|
|
90
|
-
var listViewMetaData = _a.listViewMetaData, filters = _a.filters;
|
|
90
|
+
var listViewMetaData = _a.listViewMetaData, filters = _a.filters, onExportComplete = _a.onExportComplete;
|
|
91
91
|
var dispatch = useDispatch();
|
|
92
92
|
if (!(listViewMetaData === null || listViewMetaData === void 0 ? void 0 : listViewMetaData.data))
|
|
93
93
|
return null;
|
|
@@ -254,11 +254,15 @@ export var SolidExport = function (_a) {
|
|
|
254
254
|
},
|
|
255
255
|
};
|
|
256
256
|
var handleDownload = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
257
|
-
var exportData, error_3;
|
|
257
|
+
var exportData, result_1, error_3;
|
|
258
258
|
var _a, _b, _c;
|
|
259
259
|
return __generator(this, function (_d) {
|
|
260
260
|
switch (_d.label) {
|
|
261
261
|
case 0:
|
|
262
|
+
setProgress(0);
|
|
263
|
+
setStatus("In Progress");
|
|
264
|
+
setMessage("");
|
|
265
|
+
setMessageDescription("");
|
|
262
266
|
exportData = {
|
|
263
267
|
id: (_a = selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.code) !== null && _a !== void 0 ? _a : null,
|
|
264
268
|
templateName: (_b = selectedTemplate === null || selectedTemplate === void 0 ? void 0 : selectedTemplate.name) !== null && _b !== void 0 ? _b : null,
|
|
@@ -272,7 +276,10 @@ export var SolidExport = function (_a) {
|
|
|
272
276
|
_d.trys.push([1, 3, , 4]);
|
|
273
277
|
return [4 /*yield*/, downloadFileWithProgress("/export-template/startExport/sync", downloadHandlers, filters, checkApplyFilter, exportData)];
|
|
274
278
|
case 2:
|
|
275
|
-
_d.sent();
|
|
279
|
+
result_1 = _d.sent();
|
|
280
|
+
window.setTimeout(function () {
|
|
281
|
+
onExportComplete === null || onExportComplete === void 0 ? void 0 : onExportComplete(result_1);
|
|
282
|
+
}, 1600);
|
|
276
283
|
return [3 /*break*/, 4];
|
|
277
284
|
case 3:
|
|
278
285
|
error_3 = _d.sent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidExport.js","sourceRoot":"","sources":["../../../src/components/common/SolidExport.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { Check, Download, FileSpreadsheet, FileText, Plus, Save, Trash2 } from \"lucide-react\";\nimport \"./solid-export.css\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport {\n useCreateExportTemplateMutation,\n useDeleteExportTemplateMutation,\n useGetExportTemplatesQuery,\n} from \"../../redux/api/exportTemplateApi\";\nimport { downloadFileWithProgress } from \"../../helpers/downloadFileWithProgress\";\nimport { DownloadProgressToast } from \"./DownloadProgressToast\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n} from \"../shad-cn-ui\";\n\ninterface FieldMetadata {\n displayName: string;\n type: string;\n}\n\ninterface FilterColumn {\n name: string;\n key: string;\n}\n\ninterface TemplateOption {\n name: string;\n code: string;\n fields: string[] | string;\n templateFormat: string;\n}\n\ninterface FormatOption {\n name: string;\n code: string;\n}\n\nconst EXCLUDED_TYPES = new Set([\"mediaSingle\", \"mediaMultiple\"]);\nconst FORMAT_OPTIONS: FormatOption[] = [\n { name: \"CSV\", code: \"csv\" },\n { name: \"Excel\", code: \"excel\" },\n];\n\nfunction parseTemplateFields(value: string[] | string | undefined): string[] {\n if (Array.isArray(value)) return value;\n if (typeof value !== \"string\") return [];\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed : [];\n } catch (error) {\n console.error(ERROR_MESSAGES.PARSED_FIELD, error);\n return [];\n }\n}\n\nfunction exportFormatMeta(code?: string) {\n if (code === \"excel\") {\n return {\n label: \"Excel\",\n icon: <FileSpreadsheet size={14} />,\n };\n }\n\n return {\n label: \"CSV\",\n icon: <FileText size={14} />,\n };\n}\n\nexport const SolidExport = ({ listViewMetaData, filters }: any) => {\n const dispatch = useDispatch();\n\n if (!listViewMetaData?.data) return null;\n\n const solidView = listViewMetaData.data.solidView;\n const solidFieldsMetadata = listViewMetaData.data.solidFieldsMetadata as Record<string, FieldMetadata>;\n if (!solidView || !solidFieldsMetadata) return null;\n\n const layoutChildren = Array.isArray(solidView?.layout?.children) ? solidView.layout.children : [];\n const checkedFieldNames = useMemo(\n () =>\n new Set(\n layoutChildren\n .map((col: { attrs?: { name?: string } }) => col?.attrs?.name)\n .filter(Boolean)\n ),\n [layoutChildren]\n );\n\n const allColumns = useMemo<FilterColumn[]>(\n () =>\n Object.entries(solidFieldsMetadata)\n .filter(([, field]) => !EXCLUDED_TYPES.has(field.type))\n .map(([key, field]) => ({\n name: field.displayName,\n key,\n })),\n [solidFieldsMetadata]\n );\n\n const defaultSelectedColumns = useMemo(\n () => allColumns.filter((col) => checkedFieldNames.has(col.key)),\n [allColumns, checkedFieldNames]\n );\n\n const [selectedColumns, setSelectedColumns] = useState<FilterColumn[]>(defaultSelectedColumns);\n const [selectedTemplate, setSelectedTemplate] = useState<TemplateOption | null>(null);\n const [selectedFormat, setSelectedFormat] = useState<FormatOption>(FORMAT_OPTIONS[0]);\n const [isSaveDialogVisible, setIsSaveDialogVisible] = useState(false);\n const [newTemplateName, setNewTemplateName] = useState(\"\");\n const [progress, setProgress] = useState(0);\n const [showProgress, setShowProgress] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [messageDescription, setMessageDescription] = useState(\"\");\n const [status, setStatus] = useState(\"In Progress\");\n const [checkApplyFilter, setCheckedApplyFilter] = useState(false);\n\n const [createExportTemplate, { isLoading: isSavingTemplate }] = useCreateExportTemplateMutation();\n const [deleteExportTemplate, { isLoading: isDeletingTemplate }] = useDeleteExportTemplateMutation();\n const { data: templatesData } = useGetExportTemplatesQuery({});\n\n const templateOptions = useMemo<TemplateOption[]>(() => {\n const records = templatesData?.records ?? [];\n return records.map((template: any) => ({\n name: template.templateName,\n code: String(template.id),\n fields: template.fields,\n templateFormat: template.templateFormat,\n }));\n }, [templatesData]);\n\n const resolvedTemplateOptions = useMemo(() => {\n if (!selectedTemplate) return templateOptions;\n if (templateOptions.some((template) => template.code === selectedTemplate.code)) return templateOptions;\n return [selectedTemplate, ...templateOptions];\n }, [selectedTemplate, templateOptions]);\n\n useEffect(() => {\n setSelectedColumns(defaultSelectedColumns);\n }, [defaultSelectedColumns]);\n\n const selectedKeys = new Set(selectedColumns.map((item) => item.key));\n const availableColumns = allColumns.filter((col) => !selectedKeys.has(col.key));\n\n const moveToSelected = (col: FilterColumn) => {\n setSelectedColumns((current) => (current.some((item) => item.key === col.key) ? current : [...current, col]));\n };\n\n const moveToAvailable = (col: FilterColumn) => {\n setSelectedColumns((current) => current.filter((item) => item.key !== col.key));\n };\n\n const handleTemplateSelect = (templateCode?: string) => {\n const nextTemplate = templateOptions.find((option) => option.code === templateCode) ?? null;\n setSelectedTemplate(nextTemplate);\n\n if (!nextTemplate) {\n setSelectedColumns(defaultSelectedColumns);\n setSelectedFormat(FORMAT_OPTIONS[0]);\n return;\n }\n\n const fields = parseTemplateFields(nextTemplate.fields);\n const resolvedColumns = fields\n .map((field) => allColumns.find((column) => column.key === field))\n .filter(Boolean) as FilterColumn[];\n\n setSelectedColumns(resolvedColumns);\n setSelectedFormat(\n FORMAT_OPTIONS.find((option) => option.code === nextTemplate.templateFormat) ?? FORMAT_OPTIONS[0]\n );\n };\n\n const handleAddTemplate = async () => {\n const trimmedName = newTemplateName.trim();\n if (!trimmedName) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n return;\n }\n\n const exportData = {\n templateName: trimmedName,\n templateFormat: selectedFormat.code,\n notifyOnEmail: true,\n fields: JSON.stringify(selectedColumns.map((col) => col.key)),\n modelMetadataId: solidView?.model?.id,\n };\n\n try {\n const response = await createExportTemplate(exportData).unwrap();\n setSelectedTemplate({\n name: trimmedName,\n code: String(response.data.id),\n fields: selectedColumns.map((col) => col.key),\n templateFormat: selectedFormat.code,\n });\n setNewTemplateName(\"\");\n setIsSaveDialogVisible(false);\n dispatch(showToast({ severity: \"success\", summary: \"Template Added\", detail: \"Template Saved\" }));\n } catch (error) {\n console.error(ERROR_MESSAGES.TEMPLATE_FAILED, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n }\n };\n\n const handleDeleteTemplate = async () => {\n if (!selectedTemplate?.code) return;\n try {\n await deleteExportTemplate(selectedTemplate.code).unwrap();\n setSelectedTemplate(null);\n dispatch(showToast({ severity: \"success\", summary: \"Template Deleted\", detail: \"Template Deleted\" }));\n } catch (error) {\n console.error(ERROR_MESSAGES.TEMPLATE_FAILED, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n }\n };\n\n const downloadHandlers = {\n onProgress: (value: number) => {\n setProgress(value);\n },\n onStatusChange: (statusType: \"In Progress\" | \"success\" | \"error\", msg: string, submsg: string) => {\n setStatus(statusType);\n setMessage(msg);\n setMessageDescription(submsg);\n setShowProgress(true);\n },\n };\n\n const handleDownload = async () => {\n const exportData = {\n id: selectedTemplate?.code ?? null,\n templateName: selectedTemplate?.name ?? null,\n templateFormat: selectedFormat.code,\n notifyOnEmail: true,\n fields: JSON.stringify(selectedColumns.map((col) => col.key)),\n modelMetadataId: solidView?.model?.id,\n };\n\n try {\n await downloadFileWithProgress(\n `/export-template/startExport/sync`,\n downloadHandlers,\n filters,\n checkApplyFilter,\n exportData\n );\n } catch (error) {\n console.error(ERROR_MESSAGES.DOWNLOAD_FAILED, error);\n }\n };\n\n const selectedTemplateFieldsCount = selectedColumns.length;\n const selectedFormatMeta = exportFormatMeta(selectedFormat.code);\n const selectionSummary = selectedTemplate ? `Template: ${selectedTemplate.name}` : \"Current field selection\";\n const filterSummary = checkApplyFilter ? \"Filters applied\" : \"All records\";\n\n return (\n <>\n <div className=\"solid-export-shell\">\n <div className=\"solid-export-toolbar\">\n <div className=\"solid-export-toolbar-main\">\n <label className=\"solid-export-field\">\n <span className=\"solid-export-field-label\">Format</span>\n <SolidSelect\n value={selectedFormat.code}\n options={FORMAT_OPTIONS.map((option) => ({ label: option.name, value: option.code }))}\n onChange={(event) => {\n const next = FORMAT_OPTIONS.find((option) => option.code === event.value);\n if (next) setSelectedFormat(next);\n }}\n placeholder=\"Select format\"\n native={false}\n />\n </label>\n\n <label className=\"solid-export-field solid-export-field--template\">\n <span className=\"solid-export-field-label\">Template</span>\n <SolidSelect\n value={selectedTemplate?.code ?? \"\"}\n options={resolvedTemplateOptions.map((option) => ({ label: option.name, value: option.code }))}\n onChange={(event) => handleTemplateSelect(event.value)}\n placeholder={resolvedTemplateOptions.length ? \"Choose template\" : \"No saved templates\"}\n native={false}\n />\n </label>\n </div>\n\n <div className=\"solid-export-toolbar-side\">\n <div className=\"solid-export-toolbar-options\">\n <SolidCheckbox\n checked={checkApplyFilter}\n onChange={(event) => setCheckedApplyFilter(event.target.checked)}\n label=\"Apply Filters\"\n />\n </div>\n <div className=\"solid-export-toolbar-actions\">\n <SolidButton\n variant=\"outline\"\n size=\"small\"\n leftIcon={<Save size={14} />}\n onClick={() => setIsSaveDialogVisible(true)}\n >\n Save Template\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"small\"\n leftIcon={<Trash2 size={14} />}\n onClick={handleDeleteTemplate}\n disabled={!selectedTemplate || isDeletingTemplate}\n className=\"solid-export-delete-btn\"\n >\n Delete\n </SolidButton>\n <SolidButton\n size=\"small\"\n leftIcon={<Download size={14} />}\n onClick={handleDownload}\n disabled={selectedColumns.length === 0}\n >\n Export\n </SolidButton>\n </div>\n </div>\n </div>\n\n <div className=\"solid-export-summary\">\n <div className=\"solid-export-summary-card\">\n <div className=\"solid-export-summary-title-row\">\n <div className=\"solid-export-summary-format-icon\">{selectedFormatMeta.icon}</div>\n <div className=\"solid-export-summary-copy-block\">\n <div className=\"solid-export-summary-title\">{selectedFormatMeta.label} export</div>\n <div className=\"solid-export-summary-meta\">\n <span className=\"solid-export-summary-copy\">{selectionSummary}</span>\n <span className=\"solid-export-summary-dot\" aria-hidden=\"true\" />\n <span className=\"solid-export-summary-copy\">{filterSummary}</span>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"solid-export-summary-chip\">\n <Check size={13} />\n {selectedTemplateFieldsCount} field{selectedTemplateFieldsCount === 1 ? \"\" : \"s\"} selected\n </div>\n </div>\n\n <div className=\"solid-export-builder\">\n <div className=\"solid-export-pane\">\n <div className=\"solid-export-pane-header\">\n <div>\n <div className=\"solid-export-pane-title\">Available Fields</div>\n <div className=\"solid-export-pane-copy\">Add fields to include in the export.</div>\n </div>\n <div className=\"solid-export-pane-count\">{availableColumns.length}</div>\n </div>\n <div className=\"solid-export-list\">\n {availableColumns.length ? (\n availableColumns.map((item) => (\n <div key={item.key} className=\"solid-export-list-row\">\n <div className=\"solid-export-list-row-copy\">\n <div className=\"solid-export-list-row-title\">\n {item.name}\n <span className=\"solid-export-list-row-key\">({item.key})</span>\n </div>\n </div>\n <SolidButton\n variant=\"ghost\"\n size=\"small\"\n className=\"solid-export-list-row-action\"\n leftIcon={<Plus size={14} />}\n aria-label={`Add ${item.name}`}\n tooltip={`Add ${item.name}`}\n onClick={() => moveToSelected(item)}\n />\n </div>\n ))\n ) : (\n <div className=\"solid-export-empty\">\n <div className=\"solid-export-empty-title\">All fields are already selected</div>\n <div className=\"solid-export-empty-copy\">Remove a field from the export set to make it available here again.</div>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"solid-export-pane\">\n <div className=\"solid-export-pane-header\">\n <div>\n <div className=\"solid-export-pane-title\">Selected Fields</div>\n <div className=\"solid-export-pane-copy\">These columns will be exported in the file.</div>\n </div>\n <div className=\"solid-export-pane-count is-selected\">{selectedColumns.length}</div>\n </div>\n <div className=\"solid-export-list\">\n {selectedColumns.length ? (\n selectedColumns.map((item) => (\n <div key={item.key} className=\"solid-export-list-row\">\n <div className=\"solid-export-list-row-copy\">\n <div className=\"solid-export-list-row-title\">\n {item.name}\n <span className=\"solid-export-list-row-key\">({item.key})</span>\n </div>\n </div>\n <SolidButton\n variant=\"ghost\"\n size=\"small\"\n className=\"solid-export-list-row-action is-remove\"\n leftIcon={<Trash2 size={14} />}\n aria-label={`Remove ${item.name}`}\n tooltip={`Remove ${item.name}`}\n onClick={() => moveToAvailable(item)}\n />\n </div>\n ))\n ) : (\n <div className=\"solid-export-empty\">\n <div className=\"solid-export-empty-title\">No fields selected yet</div>\n <div className=\"solid-export-empty-copy\">Pick at least one field before starting the export.</div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n\n <SolidDialog\n open={isSaveDialogVisible}\n onOpenChange={setIsSaveDialogVisible}\n className=\"solid-export-save-dialog\"\n style={{ width: \"min(420px, calc(100vw - 24px))\" }}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Export Template</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Save the current format and selected fields so this export can be reused later.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <label className=\"solid-export-field solid-export-save-field\">\n <span className=\"solid-export-field-label\">Template name</span>\n <SolidInput\n value={newTemplateName}\n onChange={(event) => setNewTemplateName(event.target.value)}\n placeholder=\"Enter template name\"\n autoFocus\n />\n </label>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-export-save-footer\">\n <SolidButton\n type=\"button\"\n size=\"small\"\n variant=\"outline\"\n onClick={() => {\n setNewTemplateName(\"\");\n setIsSaveDialogVisible(false);\n }}\n >\n Cancel\n </SolidButton>\n <SolidButton\n type=\"button\"\n size=\"small\"\n loading={isSavingTemplate}\n disabled={!newTemplateName.trim() || isSavingTemplate}\n onClick={handleAddTemplate}\n >\n Save Template\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n\n <DownloadProgressToast\n visible={showProgress}\n progress={progress}\n message={message}\n submessage={messageDescription}\n status={status}\n onClose={() => setShowProgress(false)}\n />\n </>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidExport.js","sourceRoot":"","sources":["../../../src/components/common/SolidExport.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from \"react\";\nimport { Check, Download, FileSpreadsheet, FileText, Plus, Save, Trash2 } from \"lucide-react\";\nimport \"./solid-export.css\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../redux/features/toastSlice\";\nimport {\n useCreateExportTemplateMutation,\n useDeleteExportTemplateMutation,\n useGetExportTemplatesQuery,\n} from \"../../redux/api/exportTemplateApi\";\nimport { downloadFileWithProgress } from \"../../helpers/downloadFileWithProgress\";\nimport { DownloadProgressToast } from \"./DownloadProgressToast\";\nimport { ERROR_MESSAGES } from \"../../constants/error-messages\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n} from \"../shad-cn-ui\";\n\ninterface FieldMetadata {\n displayName: string;\n type: string;\n}\n\ninterface FilterColumn {\n name: string;\n key: string;\n}\n\ninterface TemplateOption {\n name: string;\n code: string;\n fields: string[] | string;\n templateFormat: string;\n}\n\ninterface FormatOption {\n name: string;\n code: string;\n}\n\nconst EXCLUDED_TYPES = new Set([\"mediaSingle\", \"mediaMultiple\"]);\nconst FORMAT_OPTIONS: FormatOption[] = [\n { name: \"CSV\", code: \"csv\" },\n { name: \"Excel\", code: \"excel\" },\n];\n\nfunction parseTemplateFields(value: string[] | string | undefined): string[] {\n if (Array.isArray(value)) return value;\n if (typeof value !== \"string\") return [];\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed : [];\n } catch (error) {\n console.error(ERROR_MESSAGES.PARSED_FIELD, error);\n return [];\n }\n}\n\nfunction exportFormatMeta(code?: string) {\n if (code === \"excel\") {\n return {\n label: \"Excel\",\n icon: <FileSpreadsheet size={14} />,\n };\n }\n\n return {\n label: \"CSV\",\n icon: <FileText size={14} />,\n };\n}\n\nexport const SolidExport = ({ listViewMetaData, filters, onExportComplete }: any) => {\n const dispatch = useDispatch();\n\n if (!listViewMetaData?.data) return null;\n\n const solidView = listViewMetaData.data.solidView;\n const solidFieldsMetadata = listViewMetaData.data.solidFieldsMetadata as Record<string, FieldMetadata>;\n if (!solidView || !solidFieldsMetadata) return null;\n\n const layoutChildren = Array.isArray(solidView?.layout?.children) ? solidView.layout.children : [];\n const checkedFieldNames = useMemo(\n () =>\n new Set(\n layoutChildren\n .map((col: { attrs?: { name?: string } }) => col?.attrs?.name)\n .filter(Boolean)\n ),\n [layoutChildren]\n );\n\n const allColumns = useMemo<FilterColumn[]>(\n () =>\n Object.entries(solidFieldsMetadata)\n .filter(([, field]) => !EXCLUDED_TYPES.has(field.type))\n .map(([key, field]) => ({\n name: field.displayName,\n key,\n })),\n [solidFieldsMetadata]\n );\n\n const defaultSelectedColumns = useMemo(\n () => allColumns.filter((col) => checkedFieldNames.has(col.key)),\n [allColumns, checkedFieldNames]\n );\n\n const [selectedColumns, setSelectedColumns] = useState<FilterColumn[]>(defaultSelectedColumns);\n const [selectedTemplate, setSelectedTemplate] = useState<TemplateOption | null>(null);\n const [selectedFormat, setSelectedFormat] = useState<FormatOption>(FORMAT_OPTIONS[0]);\n const [isSaveDialogVisible, setIsSaveDialogVisible] = useState(false);\n const [newTemplateName, setNewTemplateName] = useState(\"\");\n const [progress, setProgress] = useState(0);\n const [showProgress, setShowProgress] = useState(false);\n const [message, setMessage] = useState(\"\");\n const [messageDescription, setMessageDescription] = useState(\"\");\n const [status, setStatus] = useState(\"In Progress\");\n const [checkApplyFilter, setCheckedApplyFilter] = useState(false);\n\n const [createExportTemplate, { isLoading: isSavingTemplate }] = useCreateExportTemplateMutation();\n const [deleteExportTemplate, { isLoading: isDeletingTemplate }] = useDeleteExportTemplateMutation();\n const { data: templatesData } = useGetExportTemplatesQuery({});\n\n const templateOptions = useMemo<TemplateOption[]>(() => {\n const records = templatesData?.records ?? [];\n return records.map((template: any) => ({\n name: template.templateName,\n code: String(template.id),\n fields: template.fields,\n templateFormat: template.templateFormat,\n }));\n }, [templatesData]);\n\n const resolvedTemplateOptions = useMemo(() => {\n if (!selectedTemplate) return templateOptions;\n if (templateOptions.some((template) => template.code === selectedTemplate.code)) return templateOptions;\n return [selectedTemplate, ...templateOptions];\n }, [selectedTemplate, templateOptions]);\n\n useEffect(() => {\n setSelectedColumns(defaultSelectedColumns);\n }, [defaultSelectedColumns]);\n\n const selectedKeys = new Set(selectedColumns.map((item) => item.key));\n const availableColumns = allColumns.filter((col) => !selectedKeys.has(col.key));\n\n const moveToSelected = (col: FilterColumn) => {\n setSelectedColumns((current) => (current.some((item) => item.key === col.key) ? current : [...current, col]));\n };\n\n const moveToAvailable = (col: FilterColumn) => {\n setSelectedColumns((current) => current.filter((item) => item.key !== col.key));\n };\n\n const handleTemplateSelect = (templateCode?: string) => {\n const nextTemplate = templateOptions.find((option) => option.code === templateCode) ?? null;\n setSelectedTemplate(nextTemplate);\n\n if (!nextTemplate) {\n setSelectedColumns(defaultSelectedColumns);\n setSelectedFormat(FORMAT_OPTIONS[0]);\n return;\n }\n\n const fields = parseTemplateFields(nextTemplate.fields);\n const resolvedColumns = fields\n .map((field) => allColumns.find((column) => column.key === field))\n .filter(Boolean) as FilterColumn[];\n\n setSelectedColumns(resolvedColumns);\n setSelectedFormat(\n FORMAT_OPTIONS.find((option) => option.code === nextTemplate.templateFormat) ?? FORMAT_OPTIONS[0]\n );\n };\n\n const handleAddTemplate = async () => {\n const trimmedName = newTemplateName.trim();\n if (!trimmedName) {\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n return;\n }\n\n const exportData = {\n templateName: trimmedName,\n templateFormat: selectedFormat.code,\n notifyOnEmail: true,\n fields: JSON.stringify(selectedColumns.map((col) => col.key)),\n modelMetadataId: solidView?.model?.id,\n };\n\n try {\n const response = await createExportTemplate(exportData).unwrap();\n setSelectedTemplate({\n name: trimmedName,\n code: String(response.data.id),\n fields: selectedColumns.map((col) => col.key),\n templateFormat: selectedFormat.code,\n });\n setNewTemplateName(\"\");\n setIsSaveDialogVisible(false);\n dispatch(showToast({ severity: \"success\", summary: \"Template Added\", detail: \"Template Saved\" }));\n } catch (error) {\n console.error(ERROR_MESSAGES.TEMPLATE_FAILED, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n }\n };\n\n const handleDeleteTemplate = async () => {\n if (!selectedTemplate?.code) return;\n try {\n await deleteExportTemplate(selectedTemplate.code).unwrap();\n setSelectedTemplate(null);\n dispatch(showToast({ severity: \"success\", summary: \"Template Deleted\", detail: \"Template Deleted\" }));\n } catch (error) {\n console.error(ERROR_MESSAGES.TEMPLATE_FAILED, error);\n dispatch(showToast({ severity: \"error\", summary: ERROR_MESSAGES.TEMPLATE_FAILED, detail: ERROR_MESSAGES.TEMPLATE_FAILED }));\n }\n };\n\n const downloadHandlers = {\n onProgress: (value: number) => {\n setProgress(value);\n },\n onStatusChange: (statusType: \"In Progress\" | \"success\" | \"error\", msg: string, submsg: string) => {\n setStatus(statusType);\n setMessage(msg);\n setMessageDescription(submsg);\n setShowProgress(true);\n },\n };\n\n const handleDownload = async () => {\n setProgress(0);\n setStatus(\"In Progress\");\n setMessage(\"\");\n setMessageDescription(\"\");\n\n const exportData = {\n id: selectedTemplate?.code ?? null,\n templateName: selectedTemplate?.name ?? null,\n templateFormat: selectedFormat.code,\n notifyOnEmail: true,\n fields: JSON.stringify(selectedColumns.map((col) => col.key)),\n modelMetadataId: solidView?.model?.id,\n };\n\n try {\n const result = await downloadFileWithProgress(\n `/export-template/startExport/sync`,\n downloadHandlers,\n filters,\n checkApplyFilter,\n exportData\n );\n window.setTimeout(() => {\n onExportComplete?.(result);\n }, 1600);\n } catch (error) {\n console.error(ERROR_MESSAGES.DOWNLOAD_FAILED, error);\n }\n };\n\n const selectedTemplateFieldsCount = selectedColumns.length;\n const selectedFormatMeta = exportFormatMeta(selectedFormat.code);\n const selectionSummary = selectedTemplate ? `Template: ${selectedTemplate.name}` : \"Current field selection\";\n const filterSummary = checkApplyFilter ? \"Filters applied\" : \"All records\";\n\n return (\n <>\n <div className=\"solid-export-shell\">\n <div className=\"solid-export-toolbar\">\n <div className=\"solid-export-toolbar-main\">\n <label className=\"solid-export-field\">\n <span className=\"solid-export-field-label\">Format</span>\n <SolidSelect\n value={selectedFormat.code}\n options={FORMAT_OPTIONS.map((option) => ({ label: option.name, value: option.code }))}\n onChange={(event) => {\n const next = FORMAT_OPTIONS.find((option) => option.code === event.value);\n if (next) setSelectedFormat(next);\n }}\n placeholder=\"Select format\"\n native={false}\n />\n </label>\n\n <label className=\"solid-export-field solid-export-field--template\">\n <span className=\"solid-export-field-label\">Template</span>\n <SolidSelect\n value={selectedTemplate?.code ?? \"\"}\n options={resolvedTemplateOptions.map((option) => ({ label: option.name, value: option.code }))}\n onChange={(event) => handleTemplateSelect(event.value)}\n placeholder={resolvedTemplateOptions.length ? \"Choose template\" : \"No saved templates\"}\n native={false}\n />\n </label>\n </div>\n\n <div className=\"solid-export-toolbar-side\">\n <div className=\"solid-export-toolbar-options\">\n <SolidCheckbox\n checked={checkApplyFilter}\n onChange={(event) => setCheckedApplyFilter(event.target.checked)}\n label=\"Apply Filters\"\n />\n </div>\n <div className=\"solid-export-toolbar-actions\">\n <SolidButton\n variant=\"outline\"\n size=\"small\"\n leftIcon={<Save size={14} />}\n onClick={() => setIsSaveDialogVisible(true)}\n >\n Save Template\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"small\"\n leftIcon={<Trash2 size={14} />}\n onClick={handleDeleteTemplate}\n disabled={!selectedTemplate || isDeletingTemplate}\n className=\"solid-export-delete-btn\"\n >\n Delete\n </SolidButton>\n <SolidButton\n size=\"small\"\n leftIcon={<Download size={14} />}\n onClick={handleDownload}\n disabled={selectedColumns.length === 0}\n >\n Export\n </SolidButton>\n </div>\n </div>\n </div>\n\n <div className=\"solid-export-summary\">\n <div className=\"solid-export-summary-card\">\n <div className=\"solid-export-summary-title-row\">\n <div className=\"solid-export-summary-format-icon\">{selectedFormatMeta.icon}</div>\n <div className=\"solid-export-summary-copy-block\">\n <div className=\"solid-export-summary-title\">{selectedFormatMeta.label} export</div>\n <div className=\"solid-export-summary-meta\">\n <span className=\"solid-export-summary-copy\">{selectionSummary}</span>\n <span className=\"solid-export-summary-dot\" aria-hidden=\"true\" />\n <span className=\"solid-export-summary-copy\">{filterSummary}</span>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"solid-export-summary-chip\">\n <Check size={13} />\n {selectedTemplateFieldsCount} field{selectedTemplateFieldsCount === 1 ? \"\" : \"s\"} selected\n </div>\n </div>\n\n <div className=\"solid-export-builder\">\n <div className=\"solid-export-pane\">\n <div className=\"solid-export-pane-header\">\n <div>\n <div className=\"solid-export-pane-title\">Available Fields</div>\n <div className=\"solid-export-pane-copy\">Add fields to include in the export.</div>\n </div>\n <div className=\"solid-export-pane-count\">{availableColumns.length}</div>\n </div>\n <div className=\"solid-export-list\">\n {availableColumns.length ? (\n availableColumns.map((item) => (\n <div key={item.key} className=\"solid-export-list-row\">\n <div className=\"solid-export-list-row-copy\">\n <div className=\"solid-export-list-row-title\">\n {item.name}\n <span className=\"solid-export-list-row-key\">({item.key})</span>\n </div>\n </div>\n <SolidButton\n variant=\"ghost\"\n size=\"small\"\n className=\"solid-export-list-row-action\"\n leftIcon={<Plus size={14} />}\n aria-label={`Add ${item.name}`}\n tooltip={`Add ${item.name}`}\n onClick={() => moveToSelected(item)}\n />\n </div>\n ))\n ) : (\n <div className=\"solid-export-empty\">\n <div className=\"solid-export-empty-title\">All fields are already selected</div>\n <div className=\"solid-export-empty-copy\">Remove a field from the export set to make it available here again.</div>\n </div>\n )}\n </div>\n </div>\n\n <div className=\"solid-export-pane\">\n <div className=\"solid-export-pane-header\">\n <div>\n <div className=\"solid-export-pane-title\">Selected Fields</div>\n <div className=\"solid-export-pane-copy\">These columns will be exported in the file.</div>\n </div>\n <div className=\"solid-export-pane-count is-selected\">{selectedColumns.length}</div>\n </div>\n <div className=\"solid-export-list\">\n {selectedColumns.length ? (\n selectedColumns.map((item) => (\n <div key={item.key} className=\"solid-export-list-row\">\n <div className=\"solid-export-list-row-copy\">\n <div className=\"solid-export-list-row-title\">\n {item.name}\n <span className=\"solid-export-list-row-key\">({item.key})</span>\n </div>\n </div>\n <SolidButton\n variant=\"ghost\"\n size=\"small\"\n className=\"solid-export-list-row-action is-remove\"\n leftIcon={<Trash2 size={14} />}\n aria-label={`Remove ${item.name}`}\n tooltip={`Remove ${item.name}`}\n onClick={() => moveToAvailable(item)}\n />\n </div>\n ))\n ) : (\n <div className=\"solid-export-empty\">\n <div className=\"solid-export-empty-title\">No fields selected yet</div>\n <div className=\"solid-export-empty-copy\">Pick at least one field before starting the export.</div>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n\n <SolidDialog\n open={isSaveDialogVisible}\n onOpenChange={setIsSaveDialogVisible}\n className=\"solid-export-save-dialog\"\n style={{ width: \"min(420px, calc(100vw - 24px))\" }}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Export Template</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Save the current format and selected fields so this export can be reused later.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <label className=\"solid-export-field solid-export-save-field\">\n <span className=\"solid-export-field-label\">Template name</span>\n <SolidInput\n value={newTemplateName}\n onChange={(event) => setNewTemplateName(event.target.value)}\n placeholder=\"Enter template name\"\n autoFocus\n />\n </label>\n </SolidDialogBody>\n <SolidDialogFooter className=\"solid-export-save-footer\">\n <SolidButton\n type=\"button\"\n size=\"small\"\n variant=\"outline\"\n onClick={() => {\n setNewTemplateName(\"\");\n setIsSaveDialogVisible(false);\n }}\n >\n Cancel\n </SolidButton>\n <SolidButton\n type=\"button\"\n size=\"small\"\n loading={isSavingTemplate}\n disabled={!newTemplateName.trim() || isSavingTemplate}\n onClick={handleAddTemplate}\n >\n Save Template\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n\n <DownloadProgressToast\n visible={showProgress}\n progress={progress}\n message={message}\n submessage={messageDescription}\n status={status}\n onClose={() => setShowProgress(false)}\n />\n </>\n );\n};\n"]}
|
|
@@ -80,7 +80,7 @@ function exportFormatMeta(code?: string) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
export const SolidExport = ({ listViewMetaData, filters }: any) => {
|
|
83
|
+
export const SolidExport = ({ listViewMetaData, filters, onExportComplete }: any) => {
|
|
84
84
|
const dispatch = useDispatch();
|
|
85
85
|
|
|
86
86
|
if (!listViewMetaData?.data) return null;
|
|
@@ -241,6 +241,11 @@ export const SolidExport = ({ listViewMetaData, filters }: any) => {
|
|
|
241
241
|
};
|
|
242
242
|
|
|
243
243
|
const handleDownload = async () => {
|
|
244
|
+
setProgress(0);
|
|
245
|
+
setStatus("In Progress");
|
|
246
|
+
setMessage("");
|
|
247
|
+
setMessageDescription("");
|
|
248
|
+
|
|
244
249
|
const exportData = {
|
|
245
250
|
id: selectedTemplate?.code ?? null,
|
|
246
251
|
templateName: selectedTemplate?.name ?? null,
|
|
@@ -251,13 +256,16 @@ export const SolidExport = ({ listViewMetaData, filters }: any) => {
|
|
|
251
256
|
};
|
|
252
257
|
|
|
253
258
|
try {
|
|
254
|
-
await downloadFileWithProgress(
|
|
259
|
+
const result = await downloadFileWithProgress(
|
|
255
260
|
`/export-template/startExport/sync`,
|
|
256
261
|
downloadHandlers,
|
|
257
262
|
filters,
|
|
258
263
|
checkApplyFilter,
|
|
259
264
|
exportData
|
|
260
265
|
);
|
|
266
|
+
window.setTimeout(() => {
|
|
267
|
+
onExportComplete?.(result);
|
|
268
|
+
}, 1600);
|
|
261
269
|
} catch (error) {
|
|
262
270
|
console.error(ERROR_MESSAGES.DOWNLOAD_FAILED, error);
|
|
263
271
|
}
|
|
@@ -18,6 +18,6 @@ export var SolidFormHeader = function (props) {
|
|
|
18
18
|
if (!hasWorkflowStepper) {
|
|
19
19
|
return null;
|
|
20
20
|
}
|
|
21
|
-
return (_jsxs("div", { className: 'flex flex-
|
|
21
|
+
return (_jsxs("div", { className: 'flex flex-col gap-2 items-start xl:flex-row xl:items-center justify-between solid-dynamic-breadcrumb-stepper', children: [_jsx("div", {}), _jsx(SolidFormStepper, __assign({}, props))] }));
|
|
22
22
|
};
|
|
23
23
|
//# sourceMappingURL=SolidFormHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidFormHeader.js","sourceRoot":"","sources":["../../../src/components/common/SolidFormHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAYtD,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,KAAY;;IAChC,IAAA,qBAAqB,GAAK,KAAK,sBAAV,CAAW;IACxC,IAAM,kBAAkB,GAAG,CAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,yBAAyB,0CAAE,MAAM,IAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,kBAAkB,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,eAAK,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"SolidFormHeader.js","sourceRoot":"","sources":["../../../src/components/common/SolidFormHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAYtD,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,KAAY;;IAChC,IAAA,qBAAqB,GAAK,KAAK,sBAAV,CAAW;IACxC,IAAM,kBAAkB,GAAG,CAAA,MAAA,MAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,IAAI,0CAAE,yBAAyB,0CAAE,MAAM,IAAG,CAAC,CAAC;IAE9F,IAAI,CAAC,kBAAkB,EAAE;QACrB,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,eAAK,SAAS,EAAC,8GAA8G,aAEzH,eAAW,EACX,KAAC,gBAAgB,eAAK,KAAK,EAAI,IAC7B,CACT,CAAA;AACL,CAAC,CAAA","sourcesContent":["\nimport { SolidBreadcrumb } from './SolidBreadcrumb';\nimport { SolidFormStepper } from './SolidFormStepper';\n\ninterface Props {\n solidFormViewMetaData?: any;\n initialEntityData?: any;\n modelName?: any;\n id?: any,\n solidWorkflowFieldValue?: any\n setSolidWorkflowFieldValue?: any\n onStepperUpdate?: () => void\n}\n\nexport const SolidFormHeader = (props: Props) => {\n const { solidFormViewMetaData } = props;\n const hasWorkflowStepper = solidFormViewMetaData?.data?.solidFormViewWorkflowData?.length > 0;\n\n if (!hasWorkflowStepper) {\n return null;\n }\n\n return (\n <div className='flex flex-col gap-2 items-start xl:flex-row xl:items-center justify-between solid-dynamic-breadcrumb-stepper'>\n {/* <SolidBreadcrumb {...props} /> */}\n <div></div>\n <SolidFormStepper {...props} />\n </div>\n )\n}\n"]}
|
|
@@ -21,7 +21,7 @@ export const SolidFormHeader = (props: Props) => {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
return (
|
|
24
|
-
<div className='flex flex-
|
|
24
|
+
<div className='flex flex-col gap-2 items-start xl:flex-row xl:items-center justify-between solid-dynamic-breadcrumb-stepper'>
|
|
25
25
|
{/* <SolidBreadcrumb {...props} /> */}
|
|
26
26
|
<div></div>
|
|
27
27
|
<SolidFormStepper {...props} />
|
|
@@ -28,7 +28,7 @@ export var SolidModuleHome = function (_a) {
|
|
|
28
28
|
dispatch(showNavbar()); // open both
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
-
return (_jsxs("div", { className: "h-screen
|
|
31
|
+
return (_jsxs("div", { className: "h-screen overflow-y-auto bg-[var(--surface-0)]", children: [_jsx("div", { className: "page-header", style: { borderBottom: '1px solid var(--primary-light-color)' }, children: _jsxs("div", { className: 'flex items-center gap-2', children: [_jsx("div", { className: "apps-icon block md:hidden cursor-pointer", onClick: toggleBothSidebars, children: _jsx(SolidIcon, { name: "si-th-large", "aria-hidden": true }) }), _jsx("p", { className: "m-0 view-title solid-text-wrapper", children: moduleName })] }) }), _jsxs("div", { className: "p-6 md:p-8 flex flex-col gap-6", children: [_jsxs("div", { className: styles.solidModuleWelcomeSection, children: [_jsxs("div", { className: 'flex flex-col gap-2 pr-4 lg:pr-0', children: [_jsxs("h3", { className: styles.solidModuleHomeTitle1, children: ["Welcome, ", status === "loading" ? "." : user] }), _jsxs("p", { className: 'm-0 w-35rem text-sl', children: ["This is the home page for the ", moduleName, " module. You can find documentation and settings below."] })] }), _jsx("div", { className: styles.homeSvg, children: _jsx(HomePageModuleSvg, {}) })] }), _jsx("div", { className: 'flex flex-wrap -mx-2 -mt-2', children: [{
|
|
32
32
|
icon: _jsx(DocsSvg, {}),
|
|
33
33
|
title: 'Admin Docs',
|
|
34
34
|
description: 'Explore the administrator documentation to manage and configure your system',
|
|
@@ -46,7 +46,7 @@ export var SolidModuleHome = function (_a) {
|
|
|
46
46
|
description: 'Access and update your account settings, preferences, and profile information',
|
|
47
47
|
class: styles.dashboardCardThree,
|
|
48
48
|
type: 'popup'
|
|
49
|
-
}].map(function (card, i) { return (_jsx("div", { className: '
|
|
49
|
+
}].map(function (card, i) { return (_jsx("div", { className: 'w-full md:w-1/2 xl:w-1/3 px-2 pt-2', children: _jsxs("div", { className: "".concat(styles.solidModuleHomeColorCards, " ").concat(card.class), children: [_jsxs("div", { children: [_jsx("div", { className: styles.solidModuleHomeCardSvgWrapper, children: card.icon }), _jsx("h3", { className: "".concat(styles.solidModuleHomeTitle1, " mt-6"), children: card.title }), _jsx("p", { className: 'mb-0 mt-2 mr-2 text-xs', children: card.description })] }), _jsx("div", { children: card.url ? (_jsx(Link, { href: card.url, target: "_blank", rel: "noopener noreferrer", children: _jsx(SolidButton, { outlined: true, label: 'Explore', size: 'small', icon: "si si-arrow-right", iconPos: 'right', className: "font-bold", style: { background: 'var(--solid-module-home-add-button-bg)' } }) })) : (_jsx(SolidButton, { outlined: true, label: 'Open', size: 'small', icon: "si si-cog", iconPos: 'right', className: "font-bold", style: { background: 'var(--solid-module-home-add-button-bg)' }, onClick: function () {
|
|
50
50
|
if (card.type === 'popup') {
|
|
51
51
|
setShowAccountSettings(true);
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidModuleHome.js","sourceRoot":"","sources":["../../../src/components/common/SolidModuleHome.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { useSession } from \"../../hooks/useSession\";\nimport styles from './solidModuleHome.module.css'\nimport { DocsSvg } from '../Svg/DocsSvg';\nimport { SettingsSvg } from '../Svg/SettingsSvg';\nimport { DevDocs } from '../Svg/DevDocs';\nimport { HomePageModuleSvg } from '../Svg/HomePageModuleSvg';\nimport Link from \"./Link\";\nimport { useState } from 'react';\nimport { SolidAccountSettings } from '../core/common/SolidAccountSettings/SolidAccountSettings';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../redux/features/navbarSlice\";\nimport { SolidButton, SolidIcon } from \"../shad-cn-ui\";\n\ntype SolidModuleHomeProps = {\n moduleName?: string;\n};\n\nexport const SolidModuleHome = ({ moduleName = \"Dashboard\" }: SolidModuleHomeProps) => {\n const { data: session, status } = useSession();\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n //@ts-ignore\n const user = session?.user?.username;\n const [showAccountSettings, setShowAccountSettings] = useState(false);\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n return (\n <div className=\"h-screen surface-0 overflow-y-auto\">\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex align-items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n <p className=\"m-0 view-title solid-text-wrapper\">\n {moduleName}\n </p>\n </div>\n </div>\n <div className=\"p-4 md:p-5 flex flex-column gap-4\">\n <div className={styles.solidModuleWelcomeSection}>\n <div className='flex flex-column gap-2 pr-3 lg:pr-0'>\n <h3 className={styles.solidModuleHomeTitle1}>\n Welcome, {status === \"loading\" ? \".\" : user}\n </h3>\n <p className='m-0 w-35rem text-sl'>\n This is the home page for the {moduleName} module. You can find documentation and settings below.\n </p>\n </div>\n <div className={styles.homeSvg}>\n <HomePageModuleSvg />\n </div>\n </div>\n\n {/* Cards */}\n <div className='grid'>\n {[{\n icon: <DocsSvg />,\n title: 'Admin Docs',\n description: 'Explore the administrator documentation to manage and configure your system',\n class: styles.dashboardCardOne,\n url: 'https://docs.solidxai.com/docs/admin-docs/'\n }, {\n icon: <DevDocs />,\n title: 'Dev Docs',\n description: 'Dive into the developer documentation to build, extend, and integrate with the platform',\n class: styles.dashboardCardTwo,\n url: 'https://docs.solidxai.com/docs/developer-docs/'\n }, {\n icon: <SettingsSvg />,\n title: 'Settings',\n description: 'Access and update your account settings, preferences, and profile information',\n class: styles.dashboardCardThree,\n type: 'popup'\n }].map((card, i) => (\n <div className='col-12 md:col-6 xl:col-4' key={i}>\n <div className={`${styles.solidModuleHomeColorCards} ${card.class}`}>\n <div>\n <div className={styles.solidModuleHomeCardSvgWrapper}>{card.icon}</div>\n <h3 className={`${styles.solidModuleHomeTitle1} mt-4`}>{card.title}</h3>\n <p className='mb-0 mt-2 mr-2 text-xs'>\n {card.description}\n </p>\n </div>\n <div>\n {card.url ? (\n <Link href={card.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <SolidButton\n outlined\n label='Explore'\n size='small'\n icon=\"si si-arrow-right\"\n iconPos='right'\n className=\"font-bold\"\n style={{ background: 'var(--solid-module-home-add-button-bg)' }}\n />\n </Link>\n ) : (\n <SolidButton\n outlined\n label='Open'\n size='small'\n icon=\"si si-cog\"\n iconPos='right'\n className=\"font-bold\"\n style={{ background: 'var(--solid-module-home-add-button-bg)' }}\n onClick={() => {\n if (card.type === 'popup') {\n setShowAccountSettings(true);\n }\n }}\n />\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n {showAccountSettings &&\n <SolidAccountSettings\n showProfileSettingsDialog={showAccountSettings}\n setShowProfileSettingsDialog={setShowAccountSettings}\n />\n }\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidModuleHome.js","sourceRoot":"","sources":["../../../src/components/common/SolidModuleHome.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,MAAM,MAAM,8BAA8B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAMvD,MAAM,CAAC,IAAM,eAAe,GAAG,UAAC,EAAkD;;QAAhD,kBAAwB,EAAxB,UAAU,mBAAG,WAAW,KAAA;IAChD,IAAA,KAA4B,UAAU,EAAE,EAAhC,OAAO,UAAA,EAAE,MAAM,YAAiB,CAAC;IAC/C,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,aAAa,GAAG,WAAW,CAAC,UAAC,KAAU,YAAK,OAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,aAAa,CAAA,EAAA,CAAC,CAAC;IACpF,YAAY;IACZ,IAAM,IAAI,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,QAAQ,CAAC;IAC/B,IAAA,KAAgD,QAAQ,CAAC,KAAK,CAAC,EAA9D,mBAAmB,QAAA,EAAE,sBAAsB,QAAmB,CAAC;IAEtE,IAAM,kBAAkB,GAAG;QACvB,IAAI,aAAa,EAAE;YACf,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAG,aAAa;SAC5C;aAAM;YACH,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAK,YAAY;SAC3C;IACL,CAAC,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAC,gDAAgD,aAC3D,cAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,sCAAsC,EAAE,YACxF,eAAK,SAAS,EAAC,yBAAyB,aACpC,cAAK,SAAS,EAAC,0CAA0C,EAAC,OAAO,EAAE,kBAAkB,YACjF,KAAC,SAAS,IAAC,IAAI,EAAC,aAAa,wBAAe,GAC1C,EACN,YAAG,SAAS,EAAC,mCAAmC,YAC3C,UAAU,GACX,IACF,GACJ,EACN,eAAK,SAAS,EAAC,gCAAgC,aAC3C,eAAK,SAAS,EAAE,MAAM,CAAC,yBAAyB,aAC5C,eAAK,SAAS,EAAC,kCAAkC,aAC7C,cAAI,SAAS,EAAE,MAAM,CAAC,qBAAqB,0BAC7B,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAC1C,EACL,aAAG,SAAS,EAAC,qBAAqB,+CACC,UAAU,+DACzC,IACF,EACN,cAAK,SAAS,EAAE,MAAM,CAAC,OAAO,YAC1B,KAAC,iBAAiB,KAAG,GACnB,IACJ,EAGN,cAAK,SAAS,EAAC,4BAA4B,YACtC,CAAC;gCACE,IAAI,EAAE,KAAC,OAAO,KAAG;gCACjB,KAAK,EAAE,YAAY;gCACnB,WAAW,EAAE,6EAA6E;gCAC1F,KAAK,EAAE,MAAM,CAAC,gBAAgB;gCAC9B,GAAG,EAAE,4CAA4C;6BACpD,EAAE;gCACC,IAAI,EAAE,KAAC,OAAO,KAAG;gCACjB,KAAK,EAAE,UAAU;gCACjB,WAAW,EAAE,yFAAyF;gCACtG,KAAK,EAAE,MAAM,CAAC,gBAAgB;gCAC9B,GAAG,EAAE,gDAAgD;6BACxD,EAAE;gCACC,IAAI,EAAE,KAAC,WAAW,KAAG;gCACrB,KAAK,EAAE,UAAU;gCACjB,WAAW,EAAE,+EAA+E;gCAC5F,KAAK,EAAE,MAAM,CAAC,kBAAkB;gCAChC,IAAI,EAAE,OAAO;6BAChB,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,CAAC,IAAK,OAAA,CAChB,cAAK,SAAS,EAAC,oCAAoC,YAC/C,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,yBAAyB,cAAI,IAAI,CAAC,KAAK,CAAE,aAC/D,0BACI,cAAK,SAAS,EAAE,MAAM,CAAC,6BAA6B,YAAG,IAAI,CAAC,IAAI,GAAO,EACvE,aAAI,SAAS,EAAE,UAAG,MAAM,CAAC,qBAAqB,UAAO,YAAG,IAAI,CAAC,KAAK,GAAM,EACxE,YAAG,SAAS,EAAC,wBAAwB,YAChC,IAAI,CAAC,WAAW,GACjB,IACF,EACN,wBACK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CACR,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,YAC3D,KAAC,WAAW,IACR,QAAQ,QACR,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,UAAU,EAAE,wCAAwC,EAAE,GACjE,GACC,CACV,CAAC,CAAC,CAAC,CACA,KAAC,WAAW,IACR,QAAQ,QACR,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,WAAW,EAChB,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,UAAU,EAAE,wCAAwC,EAAE,EAC/D,OAAO,EAAE;gDACL,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;oDACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;iDAChC;4CACL,CAAC,GACH,CACL,GACC,IACJ,IAvC+C,CAAC,CAwCpD,CACT,EA1CmB,CA0CnB,CAAC,GACA,IACJ,EACL,mBAAmB;gBAChB,KAAC,oBAAoB,IACjB,yBAAyB,EAAE,mBAAmB,EAC9C,4BAA4B,EAAE,sBAAsB,GACtD,IAEJ,CACT,CAAA;AACL,CAAC,CAAA","sourcesContent":["\n\nimport { useSession } from \"../../hooks/useSession\";\nimport styles from './solidModuleHome.module.css'\nimport { DocsSvg } from '../Svg/DocsSvg';\nimport { SettingsSvg } from '../Svg/SettingsSvg';\nimport { DevDocs } from '../Svg/DevDocs';\nimport { HomePageModuleSvg } from '../Svg/HomePageModuleSvg';\nimport Link from \"./Link\";\nimport { useState } from 'react';\nimport { SolidAccountSettings } from '../core/common/SolidAccountSettings/SolidAccountSettings';\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { showNavbar, toggleNavbar } from \"../../redux/features/navbarSlice\";\nimport { SolidButton, SolidIcon } from \"../shad-cn-ui\";\n\ntype SolidModuleHomeProps = {\n moduleName?: string;\n};\n\nexport const SolidModuleHome = ({ moduleName = \"Dashboard\" }: SolidModuleHomeProps) => {\n const { data: session, status } = useSession();\n const dispatch = useDispatch();\n const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);\n //@ts-ignore\n const user = session?.user?.username;\n const [showAccountSettings, setShowAccountSettings] = useState(false);\n\n const toggleBothSidebars = () => {\n if (visibleNavbar) {\n dispatch(toggleNavbar()); // close both\n } else {\n dispatch(showNavbar()); // open both\n }\n };\n\n return (\n <div className=\"h-screen overflow-y-auto bg-[var(--surface-0)]\">\n <div className=\"page-header\" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>\n <div className='flex items-center gap-2'>\n <div className=\"apps-icon block md:hidden cursor-pointer\" onClick={toggleBothSidebars}>\n <SolidIcon name=\"si-th-large\" aria-hidden />\n </div>\n <p className=\"m-0 view-title solid-text-wrapper\">\n {moduleName}\n </p>\n </div>\n </div>\n <div className=\"p-6 md:p-8 flex flex-col gap-6\">\n <div className={styles.solidModuleWelcomeSection}>\n <div className='flex flex-col gap-2 pr-4 lg:pr-0'>\n <h3 className={styles.solidModuleHomeTitle1}>\n Welcome, {status === \"loading\" ? \".\" : user}\n </h3>\n <p className='m-0 w-35rem text-sl'>\n This is the home page for the {moduleName} module. You can find documentation and settings below.\n </p>\n </div>\n <div className={styles.homeSvg}>\n <HomePageModuleSvg />\n </div>\n </div>\n\n {/* Cards */}\n <div className='flex flex-wrap -mx-2 -mt-2'>\n {[{\n icon: <DocsSvg />,\n title: 'Admin Docs',\n description: 'Explore the administrator documentation to manage and configure your system',\n class: styles.dashboardCardOne,\n url: 'https://docs.solidxai.com/docs/admin-docs/'\n }, {\n icon: <DevDocs />,\n title: 'Dev Docs',\n description: 'Dive into the developer documentation to build, extend, and integrate with the platform',\n class: styles.dashboardCardTwo,\n url: 'https://docs.solidxai.com/docs/developer-docs/'\n }, {\n icon: <SettingsSvg />,\n title: 'Settings',\n description: 'Access and update your account settings, preferences, and profile information',\n class: styles.dashboardCardThree,\n type: 'popup'\n }].map((card, i) => (\n <div className='w-full md:w-1/2 xl:w-1/3 px-2 pt-2' key={i}>\n <div className={`${styles.solidModuleHomeColorCards} ${card.class}`}>\n <div>\n <div className={styles.solidModuleHomeCardSvgWrapper}>{card.icon}</div>\n <h3 className={`${styles.solidModuleHomeTitle1} mt-6`}>{card.title}</h3>\n <p className='mb-0 mt-2 mr-2 text-xs'>\n {card.description}\n </p>\n </div>\n <div>\n {card.url ? (\n <Link href={card.url} target=\"_blank\" rel=\"noopener noreferrer\">\n <SolidButton\n outlined\n label='Explore'\n size='small'\n icon=\"si si-arrow-right\"\n iconPos='right'\n className=\"font-bold\"\n style={{ background: 'var(--solid-module-home-add-button-bg)' }}\n />\n </Link>\n ) : (\n <SolidButton\n outlined\n label='Open'\n size='small'\n icon=\"si si-cog\"\n iconPos='right'\n className=\"font-bold\"\n style={{ background: 'var(--solid-module-home-add-button-bg)' }}\n onClick={() => {\n if (card.type === 'popup') {\n setShowAccountSettings(true);\n }\n }}\n />\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n {showAccountSettings &&\n <SolidAccountSettings\n showProfileSettingsDialog={showAccountSettings}\n setShowProfileSettingsDialog={setShowAccountSettings}\n />\n }\n </div>\n )\n}\n"]}
|
|
@@ -34,9 +34,9 @@ export const SolidModuleHome = ({ moduleName = "Dashboard" }: SolidModuleHomePro
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
return (
|
|
37
|
-
<div className="h-screen
|
|
37
|
+
<div className="h-screen overflow-y-auto bg-[var(--surface-0)]">
|
|
38
38
|
<div className="page-header" style={{ borderBottom: '1px solid var(--primary-light-color)' }}>
|
|
39
|
-
<div className='flex
|
|
39
|
+
<div className='flex items-center gap-2'>
|
|
40
40
|
<div className="apps-icon block md:hidden cursor-pointer" onClick={toggleBothSidebars}>
|
|
41
41
|
<SolidIcon name="si-th-large" aria-hidden />
|
|
42
42
|
</div>
|
|
@@ -45,9 +45,9 @@ export const SolidModuleHome = ({ moduleName = "Dashboard" }: SolidModuleHomePro
|
|
|
45
45
|
</p>
|
|
46
46
|
</div>
|
|
47
47
|
</div>
|
|
48
|
-
<div className="p-
|
|
48
|
+
<div className="p-6 md:p-8 flex flex-col gap-6">
|
|
49
49
|
<div className={styles.solidModuleWelcomeSection}>
|
|
50
|
-
<div className='flex flex-
|
|
50
|
+
<div className='flex flex-col gap-2 pr-4 lg:pr-0'>
|
|
51
51
|
<h3 className={styles.solidModuleHomeTitle1}>
|
|
52
52
|
Welcome, {status === "loading" ? "." : user}
|
|
53
53
|
</h3>
|
|
@@ -61,7 +61,7 @@ export const SolidModuleHome = ({ moduleName = "Dashboard" }: SolidModuleHomePro
|
|
|
61
61
|
</div>
|
|
62
62
|
|
|
63
63
|
{/* Cards */}
|
|
64
|
-
<div className='
|
|
64
|
+
<div className='flex flex-wrap -mx-2 -mt-2'>
|
|
65
65
|
{[{
|
|
66
66
|
icon: <DocsSvg />,
|
|
67
67
|
title: 'Admin Docs',
|
|
@@ -81,11 +81,11 @@ export const SolidModuleHome = ({ moduleName = "Dashboard" }: SolidModuleHomePro
|
|
|
81
81
|
class: styles.dashboardCardThree,
|
|
82
82
|
type: 'popup'
|
|
83
83
|
}].map((card, i) => (
|
|
84
|
-
<div className='
|
|
84
|
+
<div className='w-full md:w-1/2 xl:w-1/3 px-2 pt-2' key={i}>
|
|
85
85
|
<div className={`${styles.solidModuleHomeColorCards} ${card.class}`}>
|
|
86
86
|
<div>
|
|
87
87
|
<div className={styles.solidModuleHomeCardSvgWrapper}>{card.icon}</div>
|
|
88
|
-
<h3 className={`${styles.solidModuleHomeTitle1} mt-
|
|
88
|
+
<h3 className={`${styles.solidModuleHomeTitle1} mt-6`}>{card.title}</h3>
|
|
89
89
|
<p className='mb-0 mt-2 mr-2 text-xs'>
|
|
90
90
|
{card.description}
|
|
91
91
|
</p>
|
|
@@ -94,13 +94,13 @@ var ProviderModal = function (_a) {
|
|
|
94
94
|
var canSave = providerType && (isCompatible ? providerName.trim() : true);
|
|
95
95
|
return (_jsxs(SolidDialog, { open: visible, onOpenChange: function (open) { return !open && onHide(); }, style: { width: "500px" }, children: [_jsx(SolidDialogHeader, { children: _jsx(SolidDialogTitle, { children: isEdit
|
|
96
96
|
? "Edit Provider \u2014 ".concat(BUILT_IN_TYPES.includes(editKey) ? (_e = PROVIDER_TYPE_OPTIONS.find(function (o) { return o.value === editKey; })) === null || _e === void 0 ? void 0 : _e.label : editKey)
|
|
97
|
-
: "Add Provider" }) }), _jsx(SolidDialogBody, { children: _jsxs("div", { className: "flex flex-
|
|
97
|
+
: "Add Provider" }) }), _jsx(SolidDialogBody, { children: _jsxs("div", { className: "flex flex-col gap-4", children: [!(isEdit && BUILT_IN_TYPES.includes(editKey)) && (_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Provider Type" }), _jsx(SolidSelect, { className: "w-full", value: providerType, options: typeOptions, onChange: function (e) {
|
|
98
98
|
setProviderType(e.value);
|
|
99
99
|
if (!isEdit) {
|
|
100
100
|
setProviderName("");
|
|
101
101
|
setProviderBaseUrl("");
|
|
102
102
|
}
|
|
103
|
-
}, placeholder: "Select Provider Type", disabled: isEdit })] })), isCompatible && (_jsxs(_Fragment, { children: [!isEdit && (_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Name (unique identifier)" }), _jsx(SolidInput, { placeholder: "e.g. openrouter, together-ai", value: providerName, onChange: function (e) { return setProviderName(e.target.value); }, className: "w-full" })] })), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Base URL" }), _jsx(SolidInput, { placeholder: "https://openrouter.ai/api/v1", value: providerBaseUrl, onChange: function (e) { return setProviderBaseUrl(e.target.value); }, className: "w-full" })] })] })), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "API Key" }), _jsx(SolidInput, { type: "password", value: providerApiKey, onChange: function (e) { return setProviderApiKey(e.target.value); }, className: "w-full" })] })] }) }), _jsx(SolidDialogFooter, { children: _jsxs("div", { className: "flex justify-
|
|
103
|
+
}, placeholder: "Select Provider Type", disabled: isEdit })] })), isCompatible && (_jsxs(_Fragment, { children: [!isEdit && (_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Name (unique identifier)" }), _jsx(SolidInput, { placeholder: "e.g. openrouter, together-ai", value: providerName, onChange: function (e) { return setProviderName(e.target.value); }, className: "w-full" })] })), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Base URL" }), _jsx(SolidInput, { placeholder: "https://openrouter.ai/api/v1", value: providerBaseUrl, onChange: function (e) { return setProviderBaseUrl(e.target.value); }, className: "w-full" })] })] })), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "API Key" }), _jsx(SolidInput, { type: "password", value: providerApiKey, onChange: function (e) { return setProviderApiKey(e.target.value); }, className: "w-full" })] })] }) }), _jsx(SolidDialogFooter, { children: _jsxs("div", { className: "flex justify-between w-full", children: [_jsx("div", { children: isEdit && !BUILT_IN_TYPES.includes(editKey) && (_jsx(SolidButton, { variant: "ghost", onClick: handleRemove, style: { color: "var(--solid-danger-color, #ef4444)" }, children: "Remove" })) }), _jsxs("div", { className: "flex gap-2", children: [_jsx(SolidButton, { variant: "outline", onClick: onHide, children: "Cancel" }), _jsx(SolidButton, { onClick: handleSave, disabled: !canSave, children: isEdit ? "Save" : "Add" })] })] }) })] }));
|
|
104
104
|
};
|
|
105
105
|
export var ProvidersTab = function (_a) {
|
|
106
106
|
var providers = _a.providers, onProvidersChange = _a.onProvidersChange, showAddModal = _a.showAddModal, onAddModalClose = _a.onAddModalClose;
|
|
@@ -143,7 +143,7 @@ export var ModelConfigTab = function (_a) {
|
|
|
143
143
|
var label = BUILT_IN_TYPES.includes(key) ? typeLabel : "".concat(key, " (").concat(typeLabel, ")");
|
|
144
144
|
return { label: label, value: key };
|
|
145
145
|
});
|
|
146
|
-
return (_jsxs("div", { className: "flex flex-
|
|
146
|
+
return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("div", { style: __assign(__assign({}, cardStyle), { width: "50%" }), children: [_jsx("p", { className: "solid-settings-subheading", children: "Model Config" }), _jsxs("div", { className: "flex flex-col gap-4 mt-4", children: [_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Provider" }), _jsx(SolidSelect, { className: "w-full", value: modelEntry.providerId, options: providerOptions, onChange: function (e) { return onModelEntryChange(__assign(__assign({}, modelEntry), { providerId: e.value })); }, placeholder: "Select Provider" })] }), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Model" }), _jsx(SolidInput, { placeholder: "e.g. gpt-4o-mini", value: modelEntry.model || "", onChange: function (e) { return onModelEntryChange(__assign(__assign({}, modelEntry), { model: e.target.value })); }, className: "w-full" })] })] })] }), _jsxs("div", { style: __assign(__assign({}, cardStyle), { width: "50%" }), children: [_jsx("p", { className: "solid-settings-subheading", children: "Behavior" }), _jsxs("div", { className: "flex flex-col gap-4 mt-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SolidSwitch, { checked: modelEntry.behavior.streaming, onChange: function (val) {
|
|
147
147
|
return onModelEntryChange(__assign(__assign({}, modelEntry), { behavior: __assign(__assign({}, modelEntry.behavior), { streaming: val }) }));
|
|
148
148
|
} }), _jsx("label", { className: "form-field-label", style: { marginBottom: 0 }, children: "Streaming" })] }), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Custom Params (JSON)" }), _jsx(SolidTextarea, { value: modelEntry.behavior.custom, onChange: function (e) {
|
|
149
149
|
return onModelEntryChange(__assign(__assign({}, modelEntry), { behavior: __assign(__assign({}, modelEntry.behavior), { custom: e.target.value }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiModelConfigTab.js","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTextarea,\n} from \"../../../shad-cn-ui\";\n\n\nexport interface ModelBehavior {\n streaming: boolean;\n custom: string;\n}\n\nexport interface ProviderEntry {\n type: string;\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ModelEntry {\n providerId: string;\n model: string;\n behavior: ModelBehavior;\n}\n\nexport interface SolidAiConfig {\n models: {\n default: ModelEntry;\n fast: ModelEntry;\n };\n providers: Record<string, ProviderEntry>;\n}\n\n\nconst PROVIDER_TYPE_OPTIONS = [\n { label: \"OpenAI\", value: \"openai\" },\n { label: \"Anthropic\", value: \"anthropic\" },\n { label: \"OpenAI Compatible\", value: \"openai-compatible\" },\n { label: \"Anthropic Compatible\", value: \"anthropic-compatible\" },\n];\n\nconst COMPATIBLE_TYPES = [\"openai-compatible\", \"anthropic-compatible\"];\n\nconst BUILT_IN_TYPES = [\"openai\", \"anthropic\"];\n\nconst DEFAULT_BUILT_IN_PROVIDERS: Record<string, ProviderEntry> = {\n openai: { type: \"openai\", apiKey: \"\" },\n anthropic: { type: \"anthropic\", apiKey: \"\" },\n};\n\nexport const ensureBuiltInProviders = (providers: Record<string, ProviderEntry>): Record<string, ProviderEntry> => ({\n ...DEFAULT_BUILT_IN_PROVIDERS,\n ...providers,\n});\n\nconst cardStyle: React.CSSProperties = {\n border: \"1px solid var(--solid-border-color, #e2e8f0)\",\n borderRadius: \"0.5rem\",\n padding: \"1.25rem\",\n background: \"var(--solid-card-bg, var(--solid-surface-bg, transparent))\",\n};\n\n\ninterface ProviderModalProps {\n visible: boolean;\n onHide: () => void;\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n editKey?: string | null; // null = add mode, string = edit mode\n}\n\nconst ProviderModal = ({ visible, onHide, providers, onProvidersChange, editKey }: ProviderModalProps) => {\n const isEdit = !!editKey;\n const existingEntry = isEdit ? providers[editKey] : null;\n\n const [providerType, setProviderType] = useState(existingEntry?.type ?? \"\");\n const [providerName, setProviderName] = useState(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n const [providerBaseUrl, setProviderBaseUrl] = useState(existingEntry?.baseUrl ?? \"\");\n const [providerApiKey, setProviderApiKey] = useState(existingEntry?.apiKey ?? \"\");\n\n const isCompatible = COMPATIBLE_TYPES.includes(providerType);\n\n // Reset state when modal opens with new data\n React.useEffect(() => {\n if (visible) {\n const entry = editKey ? providers[editKey] : null;\n setProviderType(entry?.type ?? \"\");\n setProviderName(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n setProviderBaseUrl(entry?.baseUrl ?? \"\");\n setProviderApiKey(entry?.apiKey ?? \"\");\n }\n }, [visible, editKey]);\n\n // In add mode, only show compatible types (built-ins are always pre-added)\n // In edit mode, show all types but lock the value\n const typeOptions = isEdit\n ? PROVIDER_TYPE_OPTIONS\n : PROVIDER_TYPE_OPTIONS.filter((opt) => COMPATIBLE_TYPES.includes(opt.value));\n\n const handleSave = () => {\n if (!providerType) return;\n\n let key: string;\n const entry: ProviderEntry = { type: providerType, apiKey: providerApiKey };\n\n if (isCompatible) {\n if (!providerName.trim()) return;\n key = providerName.trim();\n entry.baseUrl = providerBaseUrl;\n } else {\n key = providerType;\n }\n\n // In add mode, don't overwrite existing\n if (!isEdit && providers[key]) return;\n\n const next = { ...providers };\n\n // If editing and key changed (shouldn't happen for built-in), remove old\n if (isEdit && editKey !== key) {\n delete next[editKey!];\n }\n\n next[key] = entry;\n onProvidersChange(next);\n onHide();\n };\n\n const handleRemove = () => {\n if (!editKey) return;\n const next = { ...providers };\n delete next[editKey];\n onProvidersChange(next);\n onHide();\n };\n\n const canSave = providerType && (isCompatible ? providerName.trim() : true);\n\n return (\n <SolidDialog open={visible} onOpenChange={(open) => !open && onHide()} style={{ width: \"500px\" }}>\n <SolidDialogHeader>\n <SolidDialogTitle>\n {isEdit\n ? `Edit Provider — ${BUILT_IN_TYPES.includes(editKey!) ? PROVIDER_TYPE_OPTIONS.find((o) => o.value === editKey)?.label : editKey}`\n : \"Add Provider\"}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogBody>\n <div className=\"flex flex-column gap-3\">\n {!(isEdit && BUILT_IN_TYPES.includes(editKey!)) && (\n <div>\n <label className=\"form-field-label\">Provider Type</label>\n <SolidSelect\n className=\"w-full\"\n value={providerType}\n options={typeOptions}\n onChange={(e) => {\n setProviderType(e.value);\n if (!isEdit) {\n setProviderName(\"\");\n setProviderBaseUrl(\"\");\n }\n }}\n placeholder=\"Select Provider Type\"\n disabled={isEdit}\n />\n </div>\n )}\n {isCompatible && (\n <>\n {!isEdit && (\n <div>\n <label className=\"form-field-label\">Name (unique identifier)</label>\n <SolidInput\n placeholder=\"e.g. openrouter, together-ai\"\n value={providerName}\n onChange={(e) => setProviderName(e.target.value)}\n className=\"w-full\"\n />\n </div>\n )}\n <div>\n <label className=\"form-field-label\">Base URL</label>\n <SolidInput\n placeholder=\"https://openrouter.ai/api/v1\"\n value={providerBaseUrl}\n onChange={(e) => setProviderBaseUrl(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </>\n )}\n <div>\n <label className=\"form-field-label\">API Key</label>\n <SolidInput\n type=\"password\"\n value={providerApiKey}\n onChange={(e) => setProviderApiKey(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <div className=\"flex justify-content-between w-full\">\n <div>\n {isEdit && !BUILT_IN_TYPES.includes(editKey!) && (\n <SolidButton variant=\"ghost\" onClick={handleRemove} style={{ color: \"var(--solid-danger-color, #ef4444)\" }}>\n Remove\n </SolidButton>\n )}\n </div>\n <div className=\"flex gap-2\">\n <SolidButton variant=\"outline\" onClick={onHide}>\n Cancel\n </SolidButton>\n <SolidButton onClick={handleSave} disabled={!canSave}>\n {isEdit ? \"Save\" : \"Add\"}\n </SolidButton>\n </div>\n </div>\n </SolidDialogFooter>\n </SolidDialog>\n );\n};\n\n// --- Providers Tab (List View) ---\n\ninterface ProvidersTabProps {\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n showAddModal?: boolean;\n onAddModalClose?: () => void;\n}\n\nexport const ProvidersTab = ({ providers, onProvidersChange, showAddModal, onAddModalClose }: ProvidersTabProps) => {\n const [editKey, setEditKey] = useState<string | null>(null);\n const [modalVisible, setModalVisible] = useState(false);\n\n // Ensure built-in providers are always present\n const allProviders = ensureBuiltInProviders(providers);\n\n // Open modal when parent triggers add\n React.useEffect(() => {\n if (showAddModal) {\n setEditKey(null);\n setModalVisible(true);\n }\n }, [showAddModal]);\n\n const providerEntries = Object.entries(allProviders);\n\n const handleRowClick = (key: string) => {\n setEditKey(key);\n setModalVisible(true);\n };\n\n return (\n <>\n <div className=\"solid-simple-table\">\n <table style={{ width: \"100%\" }}>\n <thead>\n <tr>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Name</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Type</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>API Key</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Base URL</th>\n </tr>\n </thead>\n <tbody>\n {providerEntries.length === 0 && (\n <tr>\n <td colSpan={4} style={{ textAlign: \"center\", padding: \"2rem 1rem\", opacity: 0.5 }}>\n No providers configured.\n </td>\n </tr>\n )}\n {providerEntries.map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const isBuiltIn = BUILT_IN_TYPES.includes(key);\n const displayName = isBuiltIn ? typeLabel : key;\n const maskedKey = entry.apiKey ? \"\\u2022\".repeat(Math.min(entry.apiKey.length, 8)) : \"-\";\n\n return (\n <tr\n key={key}\n onClick={() => handleRowClick(key)}\n style={{ cursor: \"pointer\" }}\n className=\"solid-table-row-hover\"\n >\n <td style={{ padding: \"0.75rem 1rem\", fontWeight: 500 }}>{displayName}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{typeLabel}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{maskedKey}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{entry.baseUrl || \"-\"}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <ProviderModal\n visible={modalVisible}\n onHide={() => {\n setModalVisible(false);\n setEditKey(null);\n onAddModalClose?.();\n }}\n providers={allProviders}\n onProvidersChange={onProvidersChange}\n editKey={editKey}\n />\n </>\n );\n};\n\n// --- Model Config Tab (used for Intelligent Model & Fast Model) ---\n\ninterface ModelConfigTabProps {\n modelEntry: ModelEntry;\n providers: Record<string, ProviderEntry>;\n onModelEntryChange: (entry: ModelEntry) => void;\n}\n\nexport const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: ModelConfigTabProps) => {\n const providerOptions = Object.entries(providers).map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const label = BUILT_IN_TYPES.includes(key) ? typeLabel : `${key} (${typeLabel})`;\n return { label, value: key };\n });\n\n return (\n <div className=\"flex flex-column gap-4\">\n <div style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Model Config</p>\n <div className=\"flex flex-column gap-3 mt-3\">\n <div>\n <label className=\"form-field-label\">Provider</label>\n <SolidSelect\n className=\"w-full\"\n value={modelEntry.providerId}\n options={providerOptions}\n onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value })}\n placeholder=\"Select Provider\"\n />\n </div>\n <div>\n <label className=\"form-field-label\">Model</label>\n <SolidInput\n placeholder=\"e.g. gpt-4o-mini\"\n value={modelEntry.model || \"\"}\n onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.target.value })}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n\n <div style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Behavior</p>\n <div className=\"flex flex-column gap-3 mt-3\">\n <div className=\"flex align-items-center gap-2\">\n <SolidSwitch\n checked={modelEntry.behavior.streaming}\n onChange={(val) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, streaming: val } })\n }\n />\n <label className=\"form-field-label\" style={{ marginBottom: 0 }}>Streaming</label>\n </div>\n <div>\n <label className=\"form-field-label\">Custom Params (JSON)</label>\n <SolidTextarea\n value={modelEntry.behavior.custom}\n onChange={(e) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, custom: e.target.value } })\n }\n placeholder='{ \"temperature\": 0.7, \"maxTokens\": 1000 }'\n rows={4}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"AiModelConfigTab.js","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTextarea,\n} from \"../../../shad-cn-ui\";\n\n\nexport interface ModelBehavior {\n streaming: boolean;\n custom: string;\n}\n\nexport interface ProviderEntry {\n type: string;\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ModelEntry {\n providerId: string;\n model: string;\n behavior: ModelBehavior;\n}\n\nexport interface SolidAiConfig {\n models: {\n default: ModelEntry;\n fast: ModelEntry;\n };\n providers: Record<string, ProviderEntry>;\n}\n\n\nconst PROVIDER_TYPE_OPTIONS = [\n { label: \"OpenAI\", value: \"openai\" },\n { label: \"Anthropic\", value: \"anthropic\" },\n { label: \"OpenAI Compatible\", value: \"openai-compatible\" },\n { label: \"Anthropic Compatible\", value: \"anthropic-compatible\" },\n];\n\nconst COMPATIBLE_TYPES = [\"openai-compatible\", \"anthropic-compatible\"];\n\nconst BUILT_IN_TYPES = [\"openai\", \"anthropic\"];\n\nconst DEFAULT_BUILT_IN_PROVIDERS: Record<string, ProviderEntry> = {\n openai: { type: \"openai\", apiKey: \"\" },\n anthropic: { type: \"anthropic\", apiKey: \"\" },\n};\n\nexport const ensureBuiltInProviders = (providers: Record<string, ProviderEntry>): Record<string, ProviderEntry> => ({\n ...DEFAULT_BUILT_IN_PROVIDERS,\n ...providers,\n});\n\nconst cardStyle: React.CSSProperties = {\n border: \"1px solid var(--solid-border-color, #e2e8f0)\",\n borderRadius: \"0.5rem\",\n padding: \"1.25rem\",\n background: \"var(--solid-card-bg, var(--solid-surface-bg, transparent))\",\n};\n\n\ninterface ProviderModalProps {\n visible: boolean;\n onHide: () => void;\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n editKey?: string | null; // null = add mode, string = edit mode\n}\n\nconst ProviderModal = ({ visible, onHide, providers, onProvidersChange, editKey }: ProviderModalProps) => {\n const isEdit = !!editKey;\n const existingEntry = isEdit ? providers[editKey] : null;\n\n const [providerType, setProviderType] = useState(existingEntry?.type ?? \"\");\n const [providerName, setProviderName] = useState(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n const [providerBaseUrl, setProviderBaseUrl] = useState(existingEntry?.baseUrl ?? \"\");\n const [providerApiKey, setProviderApiKey] = useState(existingEntry?.apiKey ?? \"\");\n\n const isCompatible = COMPATIBLE_TYPES.includes(providerType);\n\n // Reset state when modal opens with new data\n React.useEffect(() => {\n if (visible) {\n const entry = editKey ? providers[editKey] : null;\n setProviderType(entry?.type ?? \"\");\n setProviderName(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n setProviderBaseUrl(entry?.baseUrl ?? \"\");\n setProviderApiKey(entry?.apiKey ?? \"\");\n }\n }, [visible, editKey]);\n\n // In add mode, only show compatible types (built-ins are always pre-added)\n // In edit mode, show all types but lock the value\n const typeOptions = isEdit\n ? PROVIDER_TYPE_OPTIONS\n : PROVIDER_TYPE_OPTIONS.filter((opt) => COMPATIBLE_TYPES.includes(opt.value));\n\n const handleSave = () => {\n if (!providerType) return;\n\n let key: string;\n const entry: ProviderEntry = { type: providerType, apiKey: providerApiKey };\n\n if (isCompatible) {\n if (!providerName.trim()) return;\n key = providerName.trim();\n entry.baseUrl = providerBaseUrl;\n } else {\n key = providerType;\n }\n\n // In add mode, don't overwrite existing\n if (!isEdit && providers[key]) return;\n\n const next = { ...providers };\n\n // If editing and key changed (shouldn't happen for built-in), remove old\n if (isEdit && editKey !== key) {\n delete next[editKey!];\n }\n\n next[key] = entry;\n onProvidersChange(next);\n onHide();\n };\n\n const handleRemove = () => {\n if (!editKey) return;\n const next = { ...providers };\n delete next[editKey];\n onProvidersChange(next);\n onHide();\n };\n\n const canSave = providerType && (isCompatible ? providerName.trim() : true);\n\n return (\n <SolidDialog open={visible} onOpenChange={(open) => !open && onHide()} style={{ width: \"500px\" }}>\n <SolidDialogHeader>\n <SolidDialogTitle>\n {isEdit\n ? `Edit Provider — ${BUILT_IN_TYPES.includes(editKey!) ? PROVIDER_TYPE_OPTIONS.find((o) => o.value === editKey)?.label : editKey}`\n : \"Add Provider\"}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogBody>\n <div className=\"flex flex-col gap-4\">\n {!(isEdit && BUILT_IN_TYPES.includes(editKey!)) && (\n <div>\n <label className=\"form-field-label\">Provider Type</label>\n <SolidSelect\n className=\"w-full\"\n value={providerType}\n options={typeOptions}\n onChange={(e) => {\n setProviderType(e.value);\n if (!isEdit) {\n setProviderName(\"\");\n setProviderBaseUrl(\"\");\n }\n }}\n placeholder=\"Select Provider Type\"\n disabled={isEdit}\n />\n </div>\n )}\n {isCompatible && (\n <>\n {!isEdit && (\n <div>\n <label className=\"form-field-label\">Name (unique identifier)</label>\n <SolidInput\n placeholder=\"e.g. openrouter, together-ai\"\n value={providerName}\n onChange={(e) => setProviderName(e.target.value)}\n className=\"w-full\"\n />\n </div>\n )}\n <div>\n <label className=\"form-field-label\">Base URL</label>\n <SolidInput\n placeholder=\"https://openrouter.ai/api/v1\"\n value={providerBaseUrl}\n onChange={(e) => setProviderBaseUrl(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </>\n )}\n <div>\n <label className=\"form-field-label\">API Key</label>\n <SolidInput\n type=\"password\"\n value={providerApiKey}\n onChange={(e) => setProviderApiKey(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <div className=\"flex justify-between w-full\">\n <div>\n {isEdit && !BUILT_IN_TYPES.includes(editKey!) && (\n <SolidButton variant=\"ghost\" onClick={handleRemove} style={{ color: \"var(--solid-danger-color, #ef4444)\" }}>\n Remove\n </SolidButton>\n )}\n </div>\n <div className=\"flex gap-2\">\n <SolidButton variant=\"outline\" onClick={onHide}>\n Cancel\n </SolidButton>\n <SolidButton onClick={handleSave} disabled={!canSave}>\n {isEdit ? \"Save\" : \"Add\"}\n </SolidButton>\n </div>\n </div>\n </SolidDialogFooter>\n </SolidDialog>\n );\n};\n\n// --- Providers Tab (List View) ---\n\ninterface ProvidersTabProps {\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n showAddModal?: boolean;\n onAddModalClose?: () => void;\n}\n\nexport const ProvidersTab = ({ providers, onProvidersChange, showAddModal, onAddModalClose }: ProvidersTabProps) => {\n const [editKey, setEditKey] = useState<string | null>(null);\n const [modalVisible, setModalVisible] = useState(false);\n\n // Ensure built-in providers are always present\n const allProviders = ensureBuiltInProviders(providers);\n\n // Open modal when parent triggers add\n React.useEffect(() => {\n if (showAddModal) {\n setEditKey(null);\n setModalVisible(true);\n }\n }, [showAddModal]);\n\n const providerEntries = Object.entries(allProviders);\n\n const handleRowClick = (key: string) => {\n setEditKey(key);\n setModalVisible(true);\n };\n\n return (\n <>\n <div className=\"solid-simple-table\">\n <table style={{ width: \"100%\" }}>\n <thead>\n <tr>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Name</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Type</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>API Key</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Base URL</th>\n </tr>\n </thead>\n <tbody>\n {providerEntries.length === 0 && (\n <tr>\n <td colSpan={4} style={{ textAlign: \"center\", padding: \"2rem 1rem\", opacity: 0.5 }}>\n No providers configured.\n </td>\n </tr>\n )}\n {providerEntries.map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const isBuiltIn = BUILT_IN_TYPES.includes(key);\n const displayName = isBuiltIn ? typeLabel : key;\n const maskedKey = entry.apiKey ? \"\\u2022\".repeat(Math.min(entry.apiKey.length, 8)) : \"-\";\n\n return (\n <tr\n key={key}\n onClick={() => handleRowClick(key)}\n style={{ cursor: \"pointer\" }}\n className=\"solid-table-row-hover\"\n >\n <td style={{ padding: \"0.75rem 1rem\", fontWeight: 500 }}>{displayName}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{typeLabel}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{maskedKey}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{entry.baseUrl || \"-\"}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <ProviderModal\n visible={modalVisible}\n onHide={() => {\n setModalVisible(false);\n setEditKey(null);\n onAddModalClose?.();\n }}\n providers={allProviders}\n onProvidersChange={onProvidersChange}\n editKey={editKey}\n />\n </>\n );\n};\n\n// --- Model Config Tab (used for Intelligent Model & Fast Model) ---\n\ninterface ModelConfigTabProps {\n modelEntry: ModelEntry;\n providers: Record<string, ProviderEntry>;\n onModelEntryChange: (entry: ModelEntry) => void;\n}\n\nexport const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: ModelConfigTabProps) => {\n const providerOptions = Object.entries(providers).map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const label = BUILT_IN_TYPES.includes(key) ? typeLabel : `${key} (${typeLabel})`;\n return { label, value: key };\n });\n\n return (\n <div className=\"flex flex-col gap-6\">\n <div style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Model Config</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div>\n <label className=\"form-field-label\">Provider</label>\n <SolidSelect\n className=\"w-full\"\n value={modelEntry.providerId}\n options={providerOptions}\n onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value })}\n placeholder=\"Select Provider\"\n />\n </div>\n <div>\n <label className=\"form-field-label\">Model</label>\n <SolidInput\n placeholder=\"e.g. gpt-4o-mini\"\n value={modelEntry.model || \"\"}\n onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.target.value })}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n\n <div style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Behavior</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div className=\"flex items-center gap-2\">\n <SolidSwitch\n checked={modelEntry.behavior.streaming}\n onChange={(val) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, streaming: val } })\n }\n />\n <label className=\"form-field-label\" style={{ marginBottom: 0 }}>Streaming</label>\n </div>\n <div>\n <label className=\"form-field-label\">Custom Params (JSON)</label>\n <SolidTextarea\n value={modelEntry.behavior.custom}\n onChange={(e) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, custom: e.target.value } })\n }\n placeholder='{ \"temperature\": 0.7, \"maxTokens\": 1000 }'\n rows={4}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
|