@wildo-ai/saas-frontend-lib 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/actions/action-bar.d.ts +15 -0
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +15 -0
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.d.ts +97 -7
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +8 -3
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js +5 -1
- package/dist/esm/components/auth/Auth_EnrollmentRequired.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js +1 -4
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js +1 -3
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts +7 -0
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.js +13 -7
- package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +32 -33
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +18 -20
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js +2 -3
- package/dist/esm/components/auth/methods/ExternalOAuth2AuthMethod.js.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts +13 -16
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.d.ts.map +1 -1
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js +18 -15
- package/dist/esm/components/auth/utils/oauth-provider-display-label.frontend.utils.js.map +1 -1
- package/dist/esm/components/billing/billing-invoice-history.js +2 -2
- package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
- package/dist/esm/components/billing/billing-portal-link.js +2 -2
- package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts +33 -1
- package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-pricing-table.js +34 -5
- package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
- package/dist/esm/components/billing/billing-subscription-status.js +2 -2
- package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts +2 -0
- package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
- package/dist/esm/components/billing/billing-usage-dashboard.js +1 -0
- package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +15 -1
- package/dist/esm/components/data-display/DisplayField.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldArray.js +11 -0
- package/dist/esm/components/data-display/DisplayFieldArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +12 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js +3 -2
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js +8 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnlyArraySection.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.js +18 -4
- package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +61 -3
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +7 -5
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +11 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +36 -11
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts +6 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +23 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +35 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +47 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +124 -0
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts +8 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.d.ts.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +46 -0
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -0
- package/dist/esm/components/feedback/resource-empty-state.d.ts +21 -8
- package/dist/esm/components/feedback/resource-empty-state.d.ts.map +1 -1
- package/dist/esm/components/feedback/resource-empty-state.js +56 -26
- package/dist/esm/components/feedback/resource-empty-state.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts +29 -7
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +231 -101
- package/dist/esm/components/flows-actors/approval.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.js +57 -0
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.js +4 -4
- package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.js +0 -5
- package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts +2 -2
- package/dist/esm/components/form/Form.js +2 -2
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +28 -3
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +43 -14
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts +3 -0
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +60 -21
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.d.ts +6 -3
- package/dist/esm/components/form/automated/FormFieldArray.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldArray.js +3 -2
- package/dist/esm/components/form/automated/FormFieldArray.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +5 -4
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +148 -55
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts +30 -0
- package/dist/esm/components/form/automated/ResourceFormActionsContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js +30 -1
- package/dist/esm/components/form/automated/ResourceFormActionsContext.js.map +1 -1
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts +79 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.d.ts.map +1 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js +203 -0
- package/dist/esm/components/form/automated/TemplatePlacedFieldsContext.js.map +1 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +12 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.js +11 -0
- package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js +2 -2
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/combobox.d.ts +7 -0
- package/dist/esm/components/form/combobox.d.ts.map +1 -1
- package/dist/esm/components/form/combobox.js.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +13 -0
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.d.ts +58 -0
- package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.js +34 -6
- package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js +60 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts +0 -12
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +34 -13
- package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.js +46 -0
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +73 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js +64 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +8 -1
- package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.labels.js +4 -0
- package/dist/esm/components/form/fields/form-field-string.labels.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts +31 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js +81 -0
- package/dist/esm/components/form/validation-errors/resolver-error-nesting.js.map +1 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts +14 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js +14 -0
- package/dist/esm/components/form/validation-errors/resource-error-notification-context.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +22 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +1 -22
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
- package/dist/esm/components/layout/resizable.d.ts +11 -0
- package/dist/esm/components/layout/resizable.d.ts.map +1 -1
- package/dist/esm/components/layout/resizable.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts +11 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js +15 -3
- package/dist/esm/components/navigation/app-level/ApplicationLevel_NavigationBack.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_StatusBar.js.map +1 -1
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js +2 -2
- package/dist/esm/components/navigation/app-level/HostedComponentInteractionsProvider.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +18 -20
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +7 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js +4 -1
- package/dist/esm/components/navigation/app-level/useMenuBarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +18 -2
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +82 -10
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts +2 -2
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useStatusBarBehavior.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +8 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +8 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js +6 -2
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +31 -16
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js +23 -8
- package/dist/esm/components/resources/ResourceLayout_ContainerDialogs.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts +13 -0
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +55 -28
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.js +41 -20
- package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.js +1 -2
- package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts +9 -4
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js +30 -11
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +4 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +6 -2
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js +30 -14
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +14 -198
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Update.d.ts +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js +2 -2
- package/dist/esm/components/resources/ResourceLayout_Update.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js +69 -39
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts +32 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js +130 -0
- package/dist/esm/components/resources/ResourceOperationActionDropdown.js.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts +32 -0
- package/dist/esm/components/resources/collection-create-placement.utils.d.ts.map +1 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js +37 -0
- package/dist/esm/components/resources/collection-create-placement.utils.js.map +1 -0
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js +5 -1
- package/dist/esm/components/resources/embeds/RelatedResourcePreview.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts +8 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js +49 -2
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +22 -0
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js +85 -2
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.d.ts +14 -0
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.js +22 -0
- package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.js +3 -0
- package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js +33 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ObjectScope.js +3 -0
- package/dist/esm/components/resources/skeleton/ObjectScope.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts +12 -0
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js +28 -2
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts +70 -0
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js +157 -1
- package/dist/esm/components/resources/skeleton/SectionFieldsContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +6 -0
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js +13 -2
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js +2 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +61 -15
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +24 -2
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +69 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +18 -19
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js +5 -4
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/stepper.d.ts +5 -0
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.js.map +1 -1
- package/dist/esm/components/sections/surface.d.ts.map +1 -1
- package/dist/esm/components/sections/surface.js +12 -3
- package/dist/esm/components/sections/surface.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +43 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +129 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +34 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AppearanceSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js +9 -11
- package/dist/esm/components/settings/AppPage_AppearanceSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js +3 -2
- package/dist/esm/components/settings/AppPage_AppearanceSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts +4 -2
- package/dist/esm/components/settings/AppPage_BillingSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.js +21 -3
- package/dist/esm/components/settings/AppPage_BillingSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js +5 -10
- package/dist/esm/components/settings/AppPage_BillingSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +58 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +243 -40
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +67 -6
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js +19 -11
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +4 -2
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.js +3 -0
- package/dist/esm/components/settings/SettingsHub.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js +16 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +59 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js +136 -0
- package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-view.utils.js +5 -0
- package/dist/esm/components/views/chart-view/chart-view.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts +50 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.d.ts.map +1 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js +72 -0
- package/dist/esm/components/views/chart-view/useResourceChartData.js.map +1 -0
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js +2 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts +86 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +187 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -0
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.d.ts.map +1 -1
- package/dist/esm/core/app-shell/PortalContainerContext.js +5 -2
- package/dist/esm/core/app-shell/PortalContainerContext.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +18 -9
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js +1 -0
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts +10 -0
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js +28 -5
- package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.js +38 -0
- package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +15 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +47 -13
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/BillingContext.d.ts +25 -2
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +16 -25
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts +11 -3
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js +14 -8
- package/dist/esm/core/billing/billing-provider-display.frontend.utils.js.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.d.ts.map +1 -1
- package/dist/esm/core/billing/useBillingPlanChange.js +2 -0
- package/dist/esm/core/billing/useBillingPlanChange.js.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +1 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts +29 -229
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js +29 -327
- package/dist/esm/core/components-registry/provider-component-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts +17 -27
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.d.ts.map +1 -1
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js +28 -48
- package/dist/esm/core/components-registry/useProviderComponent.frontend.hooks.js.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +21 -11
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.js +4 -4
- package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.js +17 -0
- package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +10 -10
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +221 -6
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +8 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +1 -0
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +10 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.js +9 -0
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.js +30 -19
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/errors/ErrorContext.d.ts.map +1 -1
- package/dist/esm/core/errors/ErrorContext.js +9 -1
- package/dist/esm/core/errors/ErrorContext.js.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.js +5 -4
- package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js +1 -1
- package/dist/esm/core/errors/RouterErrorBoundary.js.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts +2 -2
- package/dist/esm/core/errors/errors-builder.frontend.services.d.ts.map +1 -1
- package/dist/esm/core/errors/errors-builder.frontend.services.js +4 -4
- package/dist/esm/core/errors/errors-builder.frontend.services.js.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +23 -5
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +110 -43
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +89 -15
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts +2 -0
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js +2 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +5 -2
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts +63 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js +131 -0
- package/dist/esm/core/external-providers/ConsentBasedProviderSdks.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts +61 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js +178 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupCombobox.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts +52 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.d.ts.map +1 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js +144 -0
- package/dist/esm/core/external-providers/ProviderAddressLookupHost.js.map +1 -0
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts +22 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.d.ts.map +1 -1
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js +23 -3
- package/dist/esm/core/external-providers/ProviderFilePickerHost.js.map +1 -1
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts +55 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js +65 -0
- package/dist/esm/core/external-providers/provider-address-lookup-selection.frontend.utils.js.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +63 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +100 -0
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -0
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +45 -7
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +112 -28
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +32 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js +91 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -0
- package/dist/esm/core/guidance/GuidanceRenderer.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceRenderer.js +3 -2
- package/dist/esm/core/guidance/GuidanceRenderer.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +22 -8
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +21 -9
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/component-label-resolution.utils.js +5 -3
- package/dist/esm/core/i18n/component-label-resolution.utils.js.map +1 -1
- package/dist/esm/core/i18n/useI18n.d.ts +2 -1
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +2 -1
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/loading/LoadingContext.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingContext.js +7 -1
- package/dist/esm/core/loading/LoadingContext.js.map +1 -1
- package/dist/esm/core/loading/LoadingGate.d.ts.map +1 -1
- package/dist/esm/core/loading/LoadingGate.js +19 -1
- package/dist/esm/core/loading/LoadingGate.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts +15 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js +183 -20
- package/dist/esm/core/monitoring/analytics/AnalyticsContext.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js +2 -2
- package/dist/esm/core/monitoring/analytics/AnalyticsEventBridge.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts +7 -15
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js +8 -26
- package/dist/esm/core/monitoring/analytics/analytics-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts +12 -3
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js +3 -2
- package/dist/esm/core/monitoring/analytics/analytics-provider.frontend.interface.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts +42 -0
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +89 -5
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.d.ts.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js +2 -0
- package/dist/esm/core/monitoring/analytics/providers/console-analytics.provider.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts +78 -0
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +264 -16
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts +8 -0
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +137 -30
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.d.ts +2 -0
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +1 -0
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.d.ts +46 -0
- package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-cascade.js +222 -0
- package/dist/esm/core/navigation/navigation-cascade.js.map +1 -0
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js +21 -2
- package/dist/esm/core/navigation/navigation-clean-break.frontend.utils.js.map +1 -1
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts +71 -0
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js +84 -0
- package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -0
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +86 -2
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +242 -124
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.d.ts +170 -8
- package/dist/esm/core/navigation/navigation.schemas.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.schemas.js +121 -2
- package/dist/esm/core/navigation/navigation.schemas.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +102 -6
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +283 -34
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts +0 -10
- package/dist/esm/core/navigation/useIsStackEntryActive.d.ts.map +0 -1
- package/dist/esm/core/navigation/useIsStackEntryActive.js.map +0 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +28 -157
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +211 -1189
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts +174 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js +977 -0
- package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -0
- package/dist/esm/core/navigation/useOverlayTitle.d.ts +13 -1
- package/dist/esm/core/navigation/useOverlayTitle.d.ts.map +1 -1
- package/dist/esm/core/navigation/useOverlayTitle.js +15 -10
- package/dist/esm/core/navigation/useOverlayTitle.js.map +1 -1
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts +43 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.d.ts.map +1 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js +44 -0
- package/dist/esm/core/navigation/useResponsiveZoneMigration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts +83 -0
- package/dist/esm/core/navigation/zone-collapse-migration.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js +116 -0
- package/dist/esm/core/navigation/zone-collapse-migration.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts +51 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.js +59 -0
- package/dist/esm/core/navigation/zone-collapse.js.map +1 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts +3 -0
- package/dist/esm/core/navigation/zone-emphasis.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-emphasis.js +26 -4
- package/dist/esm/core/navigation/zone-emphasis.js.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.d.ts +22 -0
- package/dist/esm/core/navigation/zone-visible-entry.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-visible-entry.js +25 -0
- package/dist/esm/core/navigation/zone-visible-entry.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.js +53 -18
- package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +3 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts +22 -0
- package/dist/esm/core/requests/websockets/useNotificationBadges.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/useNotificationBadges.js +72 -3
- package/dist/esm/core/requests/websockets/useNotificationBadges.js.map +1 -1
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts +28 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.d.ts.map +1 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js +86 -0
- package/dist/esm/core/requests/websockets/usePublishNotificationBadgeCount.js.map +1 -0
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +38 -3
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +57 -2
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +4 -2
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +30 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js +47 -4
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js +22 -1
- package/dist/esm/core/resources/ResourceRegistryContext.js.map +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js +1 -1
- package/dist/esm/core/resources/context-resource-identifiers.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts +22 -1
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js +25 -2
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +113 -13
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js +173 -20
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts +11 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js +7 -0
- package/dist/esm/core/resources/relationship-surface-runtime.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts +3 -2
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js +13 -5
- package/dist/esm/core/resources/resource-label-field-paths.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +6 -0
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js +90 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +139 -16
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js +110 -11
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js +3 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +10 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +8 -0
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +7 -0
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js +9 -2
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts +59 -0
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js +278 -0
- package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -0
- package/dist/esm/core/resources/useResourceOperationActions.d.ts +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js +69 -22
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts +8 -6
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js +3 -2
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +23 -2
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts +4 -2
- package/dist/esm/core/runtime/ApplicationContext.shared.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationContext.shared.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts +12 -2
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +5 -2
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +25 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js +37 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts +21 -2
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +51 -4
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.d.ts +11 -0
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.js +70 -22
- package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.d.ts.map +1 -1
- package/dist/esm/core/security/StepUpAuthContext.js +10 -2
- package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +72 -8
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +7 -0
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.js +8 -2
- package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts +30 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.d.ts.map +1 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js +38 -0
- package/dist/esm/core/security/useGrantedConsentPurposes.js.map +1 -0
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js +10 -6
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.d.ts +20 -0
- package/dist/esm/core/ui/color-conversion.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/color-conversion.utils.js +39 -5
- package/dist/esm/core/ui/color-conversion.utils.js.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.js +22 -2
- package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +6 -6
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/ui.frontend.schemas.js +3 -3
- package/dist/esm/core/ui/ui.frontend.schemas.js.map +1 -1
- package/dist/esm/index.d.ts +10 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +19 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.d.ts +43 -0
- package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -0
- package/dist/esm/testing/app-shell-placement-coverage.js +114 -0
- package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -0
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +5 -0
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing.d.ts +1 -0
- package/dist/esm/testing.d.ts.map +1 -1
- package/dist/esm/testing.js +1 -0
- package/dist/esm/testing.js.map +1 -1
- package/package.json +9 -7
- package/dist/esm/core/navigation/useIsStackEntryActive.js +0 -15
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useEffect, useMemo,
|
|
3
|
-
import { mutationErrorForReport } from '../../core/resources/rmm/mutation-error-report.utils.js';
|
|
2
|
+
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
3
|
import { ResourceAutomatedForm } from '../../components/form/automated/ResourceAutomatedForm.js';
|
|
5
4
|
import { useI18n } from '../../core/i18n/useI18n.js';
|
|
6
5
|
import { resolveOperationDisplayTitle } from '../../core/i18n/operation-title-resolution.utils.js';
|
|
7
6
|
import { resolveComponentLabel } from '../../core/i18n/component-label-resolution.utils.js';
|
|
8
7
|
import { useResourceOperationViewContext } from '../../core/resources/ResourceOperationViewContext.js';
|
|
9
|
-
import {
|
|
10
|
-
import { useResourceRegistry } from '../../core/resources/useResourceRegistry.js';
|
|
11
|
-
import { UpdateLikeMutationFallbackMode } from '../../core/resources/rmm/update-like-mutation-fallback.frontend.js';
|
|
12
|
-
import { MissingRMMRuntimeError } from '../../core/resources/rmm/update-like-mutation-fallback.frontend.js';
|
|
13
|
-
import { useResourceRMM } from '../../core/resources/rmm/useResourceRMM.js';
|
|
14
|
-
import { ConflictStrategy, MutationPriority, MutationSourceType, MutationType } from '../../core/resources/rmm/types.js';
|
|
15
|
-
import { performCanonicalRMMRead, resolveCanonicalRMMReadOperationPathKey, } from '../../core/resources/rmm/canonical-read.frontend.utils.js';
|
|
8
|
+
import { resolveDeclaredUpdateLikeMutationFallbackMode } from '../../core/resources/rmm/update-like-mutation-fallback.frontend.js';
|
|
16
9
|
import { ResourceLayout_Header } from '../../components/resources/ResourceLayout_Header.js';
|
|
17
10
|
import { LoadingGate } from '../../core/loading/LoadingGate.js';
|
|
18
11
|
import { Button } from '../../components/actions/button.js';
|
|
@@ -20,8 +13,8 @@ import { ButtonVariants_Variant } from '../../components/actions/button.js';
|
|
|
20
13
|
import { OperationsConfirmCritical } from '../../components/feedback/operations-confirm-critical.js';
|
|
21
14
|
import { FrontendComponentType } from '@wildo-ai/presets-components-models';
|
|
22
15
|
import { ResourcesConfig_OperationPathUtils, ResourceOperationRiskLevel } from '@wildo-ai/saas-models';
|
|
23
|
-
import { isGeneratedFileRegenerateOperation,
|
|
24
|
-
import {
|
|
16
|
+
import { isGeneratedFileRegenerateOperation, operationCollectsNoCallerInput, } from '../../core/resources/operation-semantics.frontend.utils.js';
|
|
17
|
+
import { useOperationDirectExecution } from '../../core/resources/useOperationDirectExecution.js';
|
|
25
18
|
import { LoggerFrontendService } from '../../core/monitoring/logger.frontend.service.js';
|
|
26
19
|
const logger = LoggerFrontendService.getLogger();
|
|
27
20
|
/**
|
|
@@ -51,8 +44,7 @@ export var ResourceOperationHostChrome;
|
|
|
51
44
|
*/
|
|
52
45
|
export function ResourceLayout_SemanticOperationFallback({ ...props }) {
|
|
53
46
|
const { errorMessage, errorComponent, onSuccess, onCancel, chrome } = props;
|
|
54
|
-
const { resourceContext: currentResourceContext, navigationZone, navigationInitiator, resourceType, operation,
|
|
55
|
-
const { doOperation, registry } = useResourceRegistry();
|
|
47
|
+
const { resourceContext: currentResourceContext, navigationZone, navigationInitiator, resourceType, operation, } = useResourceOperationViewContext();
|
|
56
48
|
/*
|
|
57
49
|
* THIS HOST READS THE AMBIENT OPERATION VIEW, NOT ITS `resourceContext` PROP — so a host rendered
|
|
58
50
|
* outside its operation's own view silently executes the wrong operation, and the mismatch is
|
|
@@ -87,67 +79,18 @@ export function ResourceLayout_SemanticOperationFallback({ ...props }) {
|
|
|
87
79
|
component: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,
|
|
88
80
|
resource: resourceType,
|
|
89
81
|
});
|
|
90
|
-
const doOperationRef = useRef(doOperation);
|
|
91
|
-
doOperationRef.current = doOperation;
|
|
92
82
|
const i18nKeys = useMemo(() => [
|
|
93
83
|
`resources.${resourceType}`,
|
|
94
84
|
`components.${FrontendComponentType.RESOURCES_LAYOUTS_ACTION}`,
|
|
95
85
|
], [resourceType]);
|
|
96
|
-
const [isExecutingWithoutForm, setIsExecutingWithoutForm] = useState(false);
|
|
97
86
|
// True while a CRITICAL zero-input action awaits typed double-validation.
|
|
98
87
|
const [pendingCriticalExecute, setPendingCriticalExecute] = useState(false);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}), [
|
|
106
|
-
currentResourceContext.contextResourceIdentifiers,
|
|
107
|
-
currentResourceContext.parentResourcesRequirements,
|
|
108
|
-
]);
|
|
109
|
-
const routeResourceId = useMemo(() => {
|
|
110
|
-
const identifier = currentResourceContext.contextResourceIdentifiers?.[resourceType];
|
|
111
|
-
if (!identifier) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
return frontendResourceUtils.getResourceId(identifier) ?? null;
|
|
115
|
-
}, [currentResourceContext.contextResourceIdentifiers, resourceType]);
|
|
116
|
-
const currentResourceId = routeResourceId ?? (bootstrappedRow?.contextKey === bootstrapContextKey
|
|
117
|
-
&& typeof bootstrappedRow.row._id === 'string'
|
|
118
|
-
&& bootstrappedRow.row._id.length > 0
|
|
119
|
-
? bootstrappedRow.row._id
|
|
120
|
-
: null);
|
|
121
|
-
const contextResourceIdentifiersWithResourceId = useMemo(() => {
|
|
122
|
-
if (!currentResourceId || currentResourceContext.contextResourceIdentifiers?.[resourceType]) {
|
|
123
|
-
return currentResourceContext.contextResourceIdentifiers;
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
...currentResourceContext.contextResourceIdentifiers,
|
|
127
|
-
[resourceType]: currentResourceId,
|
|
128
|
-
};
|
|
129
|
-
}, [currentResourceContext.contextResourceIdentifiers, currentResourceId, resourceType]);
|
|
130
|
-
const contextualParameters = useMemo(() => {
|
|
131
|
-
return FrontendResourceUtils.buildContextualParameters(contextResourceIdentifiersWithResourceId, registry);
|
|
132
|
-
}, [contextResourceIdentifiersWithResourceId, registry]);
|
|
133
|
-
const canonicalReadOperationPathKey = useMemo(() => {
|
|
134
|
-
return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {
|
|
135
|
-
hasResourceId: Boolean(currentResourceId),
|
|
136
|
-
contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,
|
|
137
|
-
contextualParameters,
|
|
138
|
-
});
|
|
139
|
-
}, [contextResourceIdentifiersWithResourceId, contextualParameters, currentResourceId, registry, resourceType]);
|
|
140
|
-
const { rmm } = useResourceRMM({
|
|
141
|
-
resourceType,
|
|
142
|
-
resourceId: currentResourceId,
|
|
143
|
-
doOperationRef,
|
|
144
|
-
contextualParameters,
|
|
145
|
-
parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
|
|
146
|
-
contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,
|
|
147
|
-
resourceSchema: registry.resourceConfigurations[resourceType]?.mainSchema,
|
|
148
|
-
enabled: isUpdateLikeOperation && !!currentResourceId,
|
|
149
|
-
conflictPolicy: { strategy: ConflictStrategy.ACCEPT_REMOTE },
|
|
150
|
-
});
|
|
88
|
+
/*
|
|
89
|
+
* The form-less execution — RMM-or-direct, the target-id bootstrap, the outcome announcement — is
|
|
90
|
+
* `useOperationDirectExecution`, shared with the DROPDOWN host. The form below is handed the same
|
|
91
|
+
* success and failure paths, so every way this host can finish means the same thing.
|
|
92
|
+
*/
|
|
93
|
+
const { execute, isExecuting: isExecutingWithoutForm, isBootstrapping: isBootstrappingResourceId, completeWithSuccess: handleSuccess, reportFailure: handleError, } = useOperationDirectExecution({ onSuccess, errorMessage, errorComponent });
|
|
151
94
|
const actionLabel = useMemo(() => {
|
|
152
95
|
// An ungenerated operation title is its key path (#1450) — this is a LABEL, so it must look
|
|
153
96
|
// missing. The type-to-confirm phrase further down deliberately differs: it goes through
|
|
@@ -163,136 +106,9 @@ export function ResourceLayout_SemanticOperationFallback({ ...props }) {
|
|
|
163
106
|
params: { actionLabel },
|
|
164
107
|
});
|
|
165
108
|
}, [actionLabel, tComponent]);
|
|
166
|
-
const executionFailedLabel = useMemo(() => {
|
|
167
|
-
return resolveComponentLabel({
|
|
168
|
-
tComponent,
|
|
169
|
-
componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,
|
|
170
|
-
key: 'executionFailed',
|
|
171
|
-
});
|
|
172
|
-
}, [tComponent]);
|
|
173
|
-
const announceOutcome = useResourceOperationOutcomeEmitter(currentResourceContext, operation);
|
|
174
|
-
/**
|
|
175
|
-
* The outcome is ALWAYS announced; `onSuccess` replaces only what happens next. It used to
|
|
176
|
-
* replace both, so every host that had to close itself (the anchored panel, the in-place row)
|
|
177
|
-
* silently swallowed the event the listing and the bulk selection wait for.
|
|
178
|
-
*/
|
|
179
|
-
const handleSuccess = useCallback((result) => {
|
|
180
|
-
announceOutcome(result);
|
|
181
|
-
if (onSuccess) {
|
|
182
|
-
onSuccess(result);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
goBackWithinZone();
|
|
186
|
-
}, [announceOutcome, goBackWithinZone, onSuccess]);
|
|
187
|
-
const handleError = useCallback((error) => {
|
|
188
|
-
reportError(error, errorMessage, errorComponent);
|
|
189
|
-
}, [errorComponent, errorMessage, reportError]);
|
|
190
|
-
useEffect(() => {
|
|
191
|
-
if (!isUpdateLikeOperation || currentResourceId || !canonicalReadOperationPathKey) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
let cancelled = false;
|
|
195
|
-
setIsBootstrappingResourceId(true);
|
|
196
|
-
void performCanonicalRMMRead({
|
|
197
|
-
doOperation: doOperationRef.current,
|
|
198
|
-
readOperationPathKey: canonicalReadOperationPathKey,
|
|
199
|
-
contextualParameters,
|
|
200
|
-
parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
|
|
201
|
-
}).then((row) => {
|
|
202
|
-
if (cancelled)
|
|
203
|
-
return;
|
|
204
|
-
setBootstrappedRow({
|
|
205
|
-
contextKey: bootstrapContextKey,
|
|
206
|
-
row,
|
|
207
|
-
});
|
|
208
|
-
}).catch((error) => {
|
|
209
|
-
if (cancelled)
|
|
210
|
-
return;
|
|
211
|
-
handleError(error instanceof Error ? error : new Error(String(error)));
|
|
212
|
-
}).finally(() => {
|
|
213
|
-
if (!cancelled) {
|
|
214
|
-
setIsBootstrappingResourceId(false);
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
return () => {
|
|
218
|
-
cancelled = true;
|
|
219
|
-
};
|
|
220
|
-
}, [
|
|
221
|
-
bootstrapContextKey,
|
|
222
|
-
canonicalReadOperationPathKey,
|
|
223
|
-
contextualParameters,
|
|
224
|
-
currentResourceContext.parentResourcesRequirements,
|
|
225
|
-
currentResourceId,
|
|
226
|
-
handleError,
|
|
227
|
-
isUpdateLikeOperation,
|
|
228
|
-
]);
|
|
229
|
-
useEffect(() => {
|
|
230
|
-
if (!rmm || !bootstrappedRow || bootstrappedRow.contextKey !== bootstrapContextKey) {
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (typeof rmm.getSnapshot === 'function' && rmm.getSnapshot().confirmedData !== null) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
if (typeof rmm.setInitialState === 'function') {
|
|
237
|
-
const row = bootstrappedRow.row;
|
|
238
|
-
rmm.setInitialState(row, row._version ?? 0, row._field_meta);
|
|
239
|
-
}
|
|
240
|
-
}, [bootstrapContextKey, bootstrappedRow, rmm]);
|
|
241
109
|
const handleExecuteWithoutForm = useCallback(async () => {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
let result;
|
|
245
|
-
if (isUpdateLikeOperation) {
|
|
246
|
-
if (!rmm) {
|
|
247
|
-
throw new MissingRMMRuntimeError({
|
|
248
|
-
surfaceName: 'ResourceLayout_SemanticOperationFallback zero-input action',
|
|
249
|
-
resourceType,
|
|
250
|
-
operationIdentifier: String(operation.operationIdentifier),
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
const mutationResult = await rmm.queueMutation({}, {
|
|
254
|
-
type: MutationType.CUSTOM,
|
|
255
|
-
priority: MutationPriority.HIGH,
|
|
256
|
-
source: {
|
|
257
|
-
type: MutationSourceType.CUSTOM,
|
|
258
|
-
subscriberId: `semantic-fallback:${String(operation.operationIdentifier)}`,
|
|
259
|
-
},
|
|
260
|
-
transportOverride: {
|
|
261
|
-
operationPathKey: ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation),
|
|
262
|
-
contextualParameters,
|
|
263
|
-
parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,
|
|
264
|
-
requestData: {},
|
|
265
|
-
readBackOnSuccess: true,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
|
-
if (!mutationResult.success) {
|
|
269
|
-
throw mutationErrorForReport(mutationResult.error, executionFailedLabel);
|
|
270
|
-
}
|
|
271
|
-
result = mutationResult.responseData;
|
|
272
|
-
}
|
|
273
|
-
else {
|
|
274
|
-
result = await executeCurrentOperation();
|
|
275
|
-
}
|
|
276
|
-
handleSuccess(result);
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
handleError(error instanceof Error ? error : new Error(executionFailedLabel));
|
|
280
|
-
}
|
|
281
|
-
finally {
|
|
282
|
-
setIsExecutingWithoutForm(false);
|
|
283
|
-
}
|
|
284
|
-
}, [
|
|
285
|
-
contextualParameters,
|
|
286
|
-
currentResourceContext.parentResourcesRequirements,
|
|
287
|
-
executeCurrentOperation,
|
|
288
|
-
handleError,
|
|
289
|
-
handleSuccess,
|
|
290
|
-
isUpdateLikeOperation,
|
|
291
|
-
operation,
|
|
292
|
-
resourceType,
|
|
293
|
-
rmm,
|
|
294
|
-
executionFailedLabel,
|
|
295
|
-
]);
|
|
110
|
+
await execute();
|
|
111
|
+
}, [execute]);
|
|
296
112
|
// "Is there a form?" is the same question the action ladder asks before firing directly — a bulk
|
|
297
113
|
// body holding only the host-filled selector is not one, and rendered as an empty form with Save.
|
|
298
114
|
const hasRequestSchema = !operationCollectsNoCallerInput(operation) && !isGeneratedFileRegenerateOperation(operation);
|
|
@@ -320,7 +136,7 @@ export function ResourceLayout_SemanticOperationFallback({ ...props }) {
|
|
|
320
136
|
const isCompactChrome = chrome === ResourceOperationHostChrome.COMPACT;
|
|
321
137
|
if (isReady === false)
|
|
322
138
|
return null;
|
|
323
|
-
return (_jsx(LoadingGate, { i18nKeys: i18nKeys, children: _jsxs("div", { className: isCompactChrome ? 'space-y-field' : 'space-y-section', children: [!isCompactChrome && (_jsx(ResourceLayout_Header, { resourceContext: currentResourceContext, navigationZone: navigationZone, navigationInitiator: navigationInitiator })), hasRequestSchema ? (_jsx(ResourceAutomatedForm, { resourceContext: currentResourceContext, navigationZone: navigationZone, onSuccess: handleSuccess, onError: handleError, onCancel: onCancel, showErrorSummary: true, className: isCompactChrome ? undefined : 'max-w-2xl', updateLikeMutationFallbackMode:
|
|
139
|
+
return (_jsx(LoadingGate, { i18nKeys: i18nKeys, children: _jsxs("div", { className: isCompactChrome ? 'space-y-field' : 'space-y-section', children: [!isCompactChrome && (_jsx(ResourceLayout_Header, { resourceContext: currentResourceContext, navigationZone: navigationZone, navigationInitiator: navigationInitiator })), hasRequestSchema ? (_jsx(ResourceAutomatedForm, { resourceContext: currentResourceContext, navigationZone: navigationZone, onSuccess: handleSuccess, onError: handleError, onCancel: onCancel, showErrorSummary: true, className: isCompactChrome ? undefined : 'max-w-2xl', updateLikeMutationFallbackMode: resolveDeclaredUpdateLikeMutationFallbackMode(operation) })) : (_jsxs("div", { className: isCompactChrome ? 'bg-muted rounded-lg p-container' : 'bg-muted rounded-lg p-container max-w-2xl', children: [_jsx("p", { className: "text-sm text-muted-foreground mb-field", children: resolveComponentLabel({
|
|
324
140
|
tComponent,
|
|
325
141
|
componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,
|
|
326
142
|
key: 'confirmMessage',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_SemanticOperationFallback.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_SemanticOperationFallback.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { mutationErrorForReport } from '~wildo-frontend-lib/core/resources/rmm/mutation-error-report.utils';\n\nimport { ResourceAutomatedForm } from '~wildo-frontend-lib/components/form/automated/ResourceAutomatedForm';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveOperationDisplayTitle } from '~wildo-frontend-lib/core/i18n/operation-title-resolution.utils';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useResourceOperationViewContext } from '~wildo-frontend-lib/core/resources/ResourceOperationViewContext';\nimport { FrontendResourceUtils, frontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { UpdateLikeMutationFallbackMode } from '~wildo-frontend-lib/core/resources/rmm/update-like-mutation-fallback.frontend';\nimport { MissingRMMRuntimeError } from '~wildo-frontend-lib/core/resources/rmm/update-like-mutation-fallback.frontend';\nimport { useResourceRMM } from '~wildo-frontend-lib/core/resources/rmm/useResourceRMM';\nimport { ConflictStrategy, MutationPriority, MutationSourceType, MutationType } from '~wildo-frontend-lib/core/resources/rmm/types';\nimport type { FieldMetaEntry } from '@wildo-ai/saas-models';\nimport {\n performCanonicalRMMRead,\n resolveCanonicalRMMReadOperationPathKey,\n} from '~wildo-frontend-lib/core/resources/rmm/canonical-read.frontend.utils';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { Button } from '~wildo-frontend-lib/components/actions/button';\nimport { ButtonVariants_Variant } from '~wildo-frontend-lib/components/actions/button';\nimport { OperationsConfirmCritical } from '~wildo-frontend-lib/components/feedback/operations-confirm-critical';\nimport { FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { ResourcesConfig_OperationPathUtils, ResourceOperationRiskLevel } from '@wildo-ai/saas-models';\nimport {\n isGeneratedFileRegenerateOperation,\n isSingleResourceUpdateLikeOperation,\n operationCollectsNoCallerInput,\n} from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { useResourceOperationOutcomeEmitter } from '~wildo-frontend-lib/core/resources/useResourceOperationOutcomeEmitter';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\n\nconst logger = LoggerFrontendService.getLogger();\n\n/**\n * How much page chrome the operation body renders around its form.\n *\n * The body itself — the RMM contract, the CRITICAL double-validation, the success/error events, the\n * zero-input confirm path — is IDENTICAL in every host, and that is the point of this being a mode\n * rather than a second component. A popover that re-implemented the execution flow to drop a header\n * would be a second source of the operation contract, which is how the bulk selector came to be\n * spelled two different ways.\n */\nexport enum ResourceOperationHostChrome {\n /** Page/overlay host: resource header above the form, form width capped for readability. */\n FULL = 'full',\n /**\n * Anchored host (a popover): no header — the button the panel is anchored to already names the\n * action, so a heading repeats it — and no width cap, because the panel sizes itself.\n */\n COMPACT = 'compact',\n}\n\nexport interface ResourceLayoutSemanticOperationFallbackProps extends BaseResourcesLayoutProps {\n errorMessage: string;\n errorComponent: string;\n onSuccess?: (result: unknown) => void;\n /**\n * Cancel affordance forwarded to the action form's footer (audit D5).\n * Overlay hosts pass the modal-close path here — see `ResourceAutomatedForm.onCancel`.\n */\n onCancel?: () => void;\n /** Chrome density — see {@link ResourceOperationHostChrome}. Defaults to `FULL`. */\n chrome?: ResourceOperationHostChrome;\n}\n\ntype BootstrappedTargetRow = {\n contextKey: string;\n row: Record<string, unknown>;\n};\n\n/**\n * Temporary default body for custom operations that already resolve into a core\n * host family via `resourceOperationLike`, but do not yet have a richer\n * family-specific preset/runtime. This keeps the new host-family contract safe\n * while preserving the proven action-form execution flow.\n */\nexport function ResourceLayout_SemanticOperationFallback({\n ...props\n}: ResourceLayoutSemanticOperationFallbackProps): React.JSX.Element | null {\n const { errorMessage, errorComponent, onSuccess, onCancel, chrome } = props;\n const {\n resourceContext: currentResourceContext,\n navigationZone,\n navigationInitiator,\n resourceType,\n operation,\n reportError,\n goBackWithinZone,\n executeCurrentOperation,\n } = useResourceOperationViewContext();\n const { doOperation, registry } = useResourceRegistry();\n\n /*\n * THIS HOST READS THE AMBIENT OPERATION VIEW, NOT ITS `resourceContext` PROP — so a host rendered\n * outside its operation's own view silently executes the wrong operation, and the mismatch is\n * reported here rather than left to show up as an empty form.\n *\n * It did show up that way: the anchored \"Change status\" panel on the Wonder Todos list was handed\n * `change_status` and rendered the LISTING's form — an empty schema, so the authored template's\n * `workflow` group drew its heading and nothing else, and Submit would have run `list`. The fix is\n * `ResourceOperationDetachedHost`, which establishes the view a detached host needs; this is the\n * signal for the next host that renders the fallback without one.\n *\n * Reported, not thrown. A throw here would take down a working page to announce a wrong form one\n * layer inside it, and the navigation hosts that pass a `resourceContext` identical to their view\n * must keep rendering. Compared by operation PATH KEY, which names the operation AND its variant —\n * the bulk `admin` variant and the default variant of one operation are different forms.\n */\n const handedOperation = props.resourceContext?.operation;\n const handedOperationKey = handedOperation\n ? ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(handedOperation)\n : undefined;\n const ambientOperationKey = operation\n ? ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation)\n : undefined;\n useEffect(() => {\n if (handedOperationKey && ambientOperationKey && handedOperationKey !== ambientOperationKey) {\n logger.error(\n `[ResourceLayout_SemanticOperationFallback] handed \"${handedOperationKey}\" but the nearest operation view is `\n + `\"${ambientOperationKey}\" — this host would render and execute the wrong operation. A host rendered outside its `\n + `operation's own view must provide one; use ResourceOperationDetachedHost.`,\n );\n }\n }, [handedOperationKey, ambientOperationKey]);\n const { tComponent, tResourceOperation, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n resource: resourceType,\n });\n const doOperationRef = useRef(doOperation);\n doOperationRef.current = doOperation;\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_ACTION}`,\n ], [resourceType]);\n const [isExecutingWithoutForm, setIsExecutingWithoutForm] = useState(false);\n // True while a CRITICAL zero-input action awaits typed double-validation.\n const [pendingCriticalExecute, setPendingCriticalExecute] = useState(false);\n const [isBootstrappingResourceId, setIsBootstrappingResourceId] = useState(false);\n const [bootstrappedRow, setBootstrappedRow] = useState<BootstrappedTargetRow | null>(null);\n const isUpdateLikeOperation = useMemo(() => isSingleResourceUpdateLikeOperation(operation), [operation]);\n const bootstrapContextKey = useMemo(() => JSON.stringify({\n contextResourceIdentifiers: FrontendResourceUtils.buildContextResourceIdentifiersKey(\n currentResourceContext.contextResourceIdentifiers ?? {},\n ),\n parentResourcesRequirements: currentResourceContext.parentResourcesRequirements ?? [],\n }), [\n currentResourceContext.contextResourceIdentifiers,\n currentResourceContext.parentResourcesRequirements,\n ]);\n const routeResourceId = useMemo(() => {\n const identifier = currentResourceContext.contextResourceIdentifiers?.[resourceType];\n if (!identifier) {\n return null;\n }\n return frontendResourceUtils.getResourceId(identifier) ?? null;\n }, [currentResourceContext.contextResourceIdentifiers, resourceType]);\n const currentResourceId = routeResourceId ?? (\n bootstrappedRow?.contextKey === bootstrapContextKey\n && typeof bootstrappedRow.row._id === 'string'\n && bootstrappedRow.row._id.length > 0\n ? bootstrappedRow.row._id\n : null\n );\n const contextResourceIdentifiersWithResourceId = useMemo(() => {\n if (!currentResourceId || currentResourceContext.contextResourceIdentifiers?.[resourceType]) {\n return currentResourceContext.contextResourceIdentifiers;\n }\n\n return {\n ...currentResourceContext.contextResourceIdentifiers,\n [resourceType]: currentResourceId,\n };\n }, [currentResourceContext.contextResourceIdentifiers, currentResourceId, resourceType]);\n const contextualParameters = useMemo(() => {\n return FrontendResourceUtils.buildContextualParameters(\n contextResourceIdentifiersWithResourceId,\n registry,\n );\n }, [contextResourceIdentifiersWithResourceId, registry]);\n const canonicalReadOperationPathKey = useMemo(() => {\n return resolveCanonicalRMMReadOperationPathKey(resourceType, registry, {\n hasResourceId: Boolean(currentResourceId),\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n contextualParameters,\n });\n }, [contextResourceIdentifiersWithResourceId, contextualParameters, currentResourceId, registry, resourceType]);\n const { rmm } = useResourceRMM({\n resourceType,\n resourceId: currentResourceId,\n doOperationRef,\n contextualParameters,\n parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,\n contextResourceIdentifiers: contextResourceIdentifiersWithResourceId,\n resourceSchema: registry.resourceConfigurations[resourceType]?.mainSchema,\n enabled: isUpdateLikeOperation && !!currentResourceId,\n conflictPolicy: { strategy: ConflictStrategy.ACCEPT_REMOTE },\n });\n\n const actionLabel = useMemo(() => {\n // An ungenerated operation title is its key path (#1450) — this is a LABEL, so it must look\n // missing. The type-to-confirm phrase further down deliberately differs: it goes through\n // `resolveOperationDisplayTitle` and falls back to the operation IDENTIFIER, because that one is\n // text a person has to TYPE, and nobody should be asked to type a key path.\n return tResourceOperation(resourceType, String(operation.operationIdentifier), 'title');\n }, [operation.operationIdentifier, resourceType, tResourceOperation]);\n const runningActionLabel = useMemo(() => {\n return resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n key: 'runningAction',\n params: { actionLabel },\n });\n }, [actionLabel, tComponent]);\n const executionFailedLabel = useMemo(() => {\n return resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n key: 'executionFailed',\n });\n }, [tComponent]);\n\n const announceOutcome = useResourceOperationOutcomeEmitter(currentResourceContext, operation);\n /**\n * The outcome is ALWAYS announced; `onSuccess` replaces only what happens next. It used to\n * replace both, so every host that had to close itself (the anchored panel, the in-place row)\n * silently swallowed the event the listing and the bulk selection wait for.\n */\n const handleSuccess = useCallback((result: unknown) => {\n announceOutcome(result);\n if (onSuccess) {\n onSuccess(result);\n return;\n }\n goBackWithinZone();\n }, [announceOutcome, goBackWithinZone, onSuccess]);\n\n const handleError = useCallback((error: Error) => {\n reportError(error, errorMessage, errorComponent);\n }, [errorComponent, errorMessage, reportError]);\n\n useEffect(() => {\n if (!isUpdateLikeOperation || currentResourceId || !canonicalReadOperationPathKey) {\n return;\n }\n\n let cancelled = false;\n setIsBootstrappingResourceId(true);\n void performCanonicalRMMRead({\n doOperation: doOperationRef.current,\n readOperationPathKey: canonicalReadOperationPathKey,\n contextualParameters,\n parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,\n }).then((row) => {\n if (cancelled) return;\n setBootstrappedRow({\n contextKey: bootstrapContextKey,\n row,\n });\n }).catch((error: unknown) => {\n if (cancelled) return;\n handleError(error instanceof Error ? error : new Error(String(error)));\n }).finally(() => {\n if (!cancelled) {\n setIsBootstrappingResourceId(false);\n }\n });\n\n return () => {\n cancelled = true;\n };\n }, [\n bootstrapContextKey,\n canonicalReadOperationPathKey,\n contextualParameters,\n currentResourceContext.parentResourcesRequirements,\n currentResourceId,\n handleError,\n isUpdateLikeOperation,\n ]);\n\n useEffect(() => {\n if (!rmm || !bootstrappedRow || bootstrappedRow.contextKey !== bootstrapContextKey) {\n return;\n }\n\n if (typeof rmm.getSnapshot === 'function' && rmm.getSnapshot().confirmedData !== null) {\n return;\n }\n\n if (typeof rmm.setInitialState === 'function') {\n const row = bootstrappedRow.row;\n rmm.setInitialState(\n row,\n (row._version as number | undefined) ?? 0,\n row._field_meta as Record<string, FieldMetaEntry> | undefined,\n );\n }\n }, [bootstrapContextKey, bootstrappedRow, rmm]);\n\n const handleExecuteWithoutForm = useCallback(async () => {\n setIsExecutingWithoutForm(true);\n try {\n let result: unknown;\n\n if (isUpdateLikeOperation) {\n if (!rmm) {\n throw new MissingRMMRuntimeError({\n surfaceName: 'ResourceLayout_SemanticOperationFallback zero-input action',\n resourceType,\n operationIdentifier: String(operation.operationIdentifier),\n });\n }\n\n const mutationResult = await rmm.queueMutation({}, {\n type: MutationType.CUSTOM,\n priority: MutationPriority.HIGH,\n source: {\n type: MutationSourceType.CUSTOM,\n subscriberId: `semantic-fallback:${String(operation.operationIdentifier)}`,\n },\n transportOverride: {\n operationPathKey: ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation),\n contextualParameters,\n parentResourcesRequirements: currentResourceContext.parentResourcesRequirements,\n requestData: {},\n readBackOnSuccess: true,\n },\n });\n\n if (!mutationResult.success) {\n throw mutationErrorForReport(mutationResult.error, executionFailedLabel);\n }\n\n result = mutationResult.responseData;\n } else {\n result = await executeCurrentOperation();\n }\n\n handleSuccess(result);\n } catch (error) {\n handleError(error instanceof Error ? error : new Error(executionFailedLabel));\n } finally {\n setIsExecutingWithoutForm(false);\n }\n }, [\n contextualParameters,\n currentResourceContext.parentResourcesRequirements,\n executeCurrentOperation,\n handleError,\n handleSuccess,\n isUpdateLikeOperation,\n operation,\n resourceType,\n rmm,\n executionFailedLabel,\n ]);\n\n // \"Is there a form?\" is the same question the action ladder asks before firing directly — a bulk\n // body holding only the host-filled selector is not one, and rendered as an empty form with Save.\n const hasRequestSchema = !operationCollectsNoCallerInput(operation) && !isGeneratedFileRegenerateOperation(operation);\n\n // ── CRITICAL \"double validation\" on the zero-input action button ─────────\n // A CRITICAL custom op with no requestDto executes from a single confirm\n // button here. Gate it with the same typed double-validation the action bar\n // and form-submit paths use, so every CRITICAL op is consistent regardless of\n // its input shape.\n const isCriticalOperation = operation.riskLevel === ResourceOperationRiskLevel.CRITICAL;\n const criticalConfirmationPhrase = useMemo(\n () => resolveOperationDisplayTitle(tResourceOperation, resourceType, String(operation.operationIdentifier)),\n [tResourceOperation, resourceType, operation.operationIdentifier],\n );\n const handleExecuteWithCriticalGuard = useCallback(() => {\n if (isCriticalOperation) {\n setPendingCriticalExecute(true);\n return;\n }\n void handleExecuteWithoutForm();\n }, [isCriticalOperation, handleExecuteWithoutForm]);\n const handleConfirmCriticalExecute = useCallback(() => {\n setPendingCriticalExecute(false);\n void handleExecuteWithoutForm();\n }, [handleExecuteWithoutForm]);\n const handleCancelCriticalExecute = useCallback(() => {\n setPendingCriticalExecute(false);\n }, []);\n\n const isCompactChrome = chrome === ResourceOperationHostChrome.COMPACT;\n\n if (isReady === false) return null;\n\n return (\n <LoadingGate i18nKeys={i18nKeys}>\n <div className={isCompactChrome ? 'space-y-field' : 'space-y-section'}>\n {!isCompactChrome && (\n <ResourceLayout_Header\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n )}\n\n {hasRequestSchema ? (\n <ResourceAutomatedForm\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n onSuccess={handleSuccess}\n onError={handleError}\n onCancel={onCancel}\n showErrorSummary\n className={isCompactChrome ? undefined : 'max-w-2xl'}\n updateLikeMutationFallbackMode={UpdateLikeMutationFallbackMode.RMM_REQUIRED}\n />\n ) : (\n <div className={isCompactChrome ? 'bg-muted rounded-lg p-container' : 'bg-muted rounded-lg p-container max-w-2xl'}>\n <p className=\"text-sm text-muted-foreground mb-field\">\n {resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n key: 'confirmMessage',\n })}\n </p>\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.DEFAULT}\n onClick={handleExecuteWithCriticalGuard}\n disabled={isExecutingWithoutForm || isBootstrappingResourceId}\n >\n {isExecutingWithoutForm || isBootstrappingResourceId ? runningActionLabel : actionLabel}\n </Button>\n </div>\n )}\n\n {/* CRITICAL double-validation for a zero-input action: type the action label to proceed. */}\n {pendingCriticalExecute && (\n <OperationsConfirmCritical\n open\n onOpenChange={(open) => { if (!open) handleCancelCriticalExecute(); }}\n cancelCallback={handleCancelCriticalExecute}\n validationCallback={handleConfirmCriticalExecute}\n requireTypedConfirmation\n confirmationPhrase={criticalConfirmationPhrase}\n />\n )}\n </div>\n </LoadingGate>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceLayout_SemanticOperationFallback.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_SemanticOperationFallback.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ResourceAutomatedForm } from '~wildo-frontend-lib/components/form/automated/ResourceAutomatedForm';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveOperationDisplayTitle } from '~wildo-frontend-lib/core/i18n/operation-title-resolution.utils';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useResourceOperationViewContext } from '~wildo-frontend-lib/core/resources/ResourceOperationViewContext';\nimport { resolveDeclaredUpdateLikeMutationFallbackMode } from '~wildo-frontend-lib/core/resources/rmm/update-like-mutation-fallback.frontend';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\nimport { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { Button } from '~wildo-frontend-lib/components/actions/button';\nimport { ButtonVariants_Variant } from '~wildo-frontend-lib/components/actions/button';\nimport { OperationsConfirmCritical } from '~wildo-frontend-lib/components/feedback/operations-confirm-critical';\nimport { FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { ResourcesConfig_OperationPathUtils, ResourceOperationRiskLevel } from '@wildo-ai/saas-models';\nimport {\n isGeneratedFileRegenerateOperation,\n operationCollectsNoCallerInput,\n} from '~wildo-frontend-lib/core/resources/operation-semantics.frontend.utils';\nimport { useOperationDirectExecution } from '~wildo-frontend-lib/core/resources/useOperationDirectExecution';\n\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\n\nconst logger = LoggerFrontendService.getLogger();\n\n/**\n * How much page chrome the operation body renders around its form.\n *\n * The body itself — the RMM contract, the CRITICAL double-validation, the success/error events, the\n * zero-input confirm path — is IDENTICAL in every host, and that is the point of this being a mode\n * rather than a second component. A popover that re-implemented the execution flow to drop a header\n * would be a second source of the operation contract, which is how the bulk selector came to be\n * spelled two different ways.\n */\nexport enum ResourceOperationHostChrome {\n /** Page/overlay host: resource header above the form, form width capped for readability. */\n FULL = 'full',\n /**\n * Anchored host (a popover): no header — the button the panel is anchored to already names the\n * action, so a heading repeats it — and no width cap, because the panel sizes itself.\n */\n COMPACT = 'compact',\n}\n\nexport interface ResourceLayoutSemanticOperationFallbackProps extends BaseResourcesLayoutProps {\n errorMessage: string;\n errorComponent: string;\n onSuccess?: (result: unknown) => void;\n /**\n * Cancel affordance forwarded to the action form's footer (audit D5).\n * Overlay hosts pass the modal-close path here — see `ResourceAutomatedForm.onCancel`.\n */\n onCancel?: () => void;\n /** Chrome density — see {@link ResourceOperationHostChrome}. Defaults to `FULL`. */\n chrome?: ResourceOperationHostChrome;\n}\n\n/**\n * Temporary default body for custom operations that already resolve into a core\n * host family via `resourceOperationLike`, but do not yet have a richer\n * family-specific preset/runtime. This keeps the new host-family contract safe\n * while preserving the proven action-form execution flow.\n */\nexport function ResourceLayout_SemanticOperationFallback({\n ...props\n}: ResourceLayoutSemanticOperationFallbackProps): React.JSX.Element | null {\n const { errorMessage, errorComponent, onSuccess, onCancel, chrome } = props;\n const {\n resourceContext: currentResourceContext,\n navigationZone,\n navigationInitiator,\n resourceType,\n operation,\n } = useResourceOperationViewContext();\n /*\n * THIS HOST READS THE AMBIENT OPERATION VIEW, NOT ITS `resourceContext` PROP — so a host rendered\n * outside its operation's own view silently executes the wrong operation, and the mismatch is\n * reported here rather than left to show up as an empty form.\n *\n * It did show up that way: the anchored \"Change status\" panel on the Wonder Todos list was handed\n * `change_status` and rendered the LISTING's form — an empty schema, so the authored template's\n * `workflow` group drew its heading and nothing else, and Submit would have run `list`. The fix is\n * `ResourceOperationDetachedHost`, which establishes the view a detached host needs; this is the\n * signal for the next host that renders the fallback without one.\n *\n * Reported, not thrown. A throw here would take down a working page to announce a wrong form one\n * layer inside it, and the navigation hosts that pass a `resourceContext` identical to their view\n * must keep rendering. Compared by operation PATH KEY, which names the operation AND its variant —\n * the bulk `admin` variant and the default variant of one operation are different forms.\n */\n const handedOperation = props.resourceContext?.operation;\n const handedOperationKey = handedOperation\n ? ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(handedOperation)\n : undefined;\n const ambientOperationKey = operation\n ? ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation)\n : undefined;\n useEffect(() => {\n if (handedOperationKey && ambientOperationKey && handedOperationKey !== ambientOperationKey) {\n logger.error(\n `[ResourceLayout_SemanticOperationFallback] handed \"${handedOperationKey}\" but the nearest operation view is `\n + `\"${ambientOperationKey}\" — this host would render and execute the wrong operation. A host rendered outside its `\n + `operation's own view must provide one; use ResourceOperationDetachedHost.`,\n );\n }\n }, [handedOperationKey, ambientOperationKey]);\n const { tComponent, tResourceOperation, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n resource: resourceType,\n });\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_ACTION}`,\n ], [resourceType]);\n // True while a CRITICAL zero-input action awaits typed double-validation.\n const [pendingCriticalExecute, setPendingCriticalExecute] = useState(false);\n\n /*\n * The form-less execution — RMM-or-direct, the target-id bootstrap, the outcome announcement — is\n * `useOperationDirectExecution`, shared with the DROPDOWN host. The form below is handed the same\n * success and failure paths, so every way this host can finish means the same thing.\n */\n const {\n execute,\n isExecuting: isExecutingWithoutForm,\n isBootstrapping: isBootstrappingResourceId,\n completeWithSuccess: handleSuccess,\n reportFailure: handleError,\n } = useOperationDirectExecution({ onSuccess, errorMessage, errorComponent });\n\n const actionLabel = useMemo(() => {\n // An ungenerated operation title is its key path (#1450) — this is a LABEL, so it must look\n // missing. The type-to-confirm phrase further down deliberately differs: it goes through\n // `resolveOperationDisplayTitle` and falls back to the operation IDENTIFIER, because that one is\n // text a person has to TYPE, and nobody should be asked to type a key path.\n return tResourceOperation(resourceType, String(operation.operationIdentifier), 'title');\n }, [operation.operationIdentifier, resourceType, tResourceOperation]);\n const runningActionLabel = useMemo(() => {\n return resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n key: 'runningAction',\n params: { actionLabel },\n });\n }, [actionLabel, tComponent]);\n\n const handleExecuteWithoutForm = useCallback(async () => {\n await execute();\n }, [execute]);\n\n // \"Is there a form?\" is the same question the action ladder asks before firing directly — a bulk\n // body holding only the host-filled selector is not one, and rendered as an empty form with Save.\n const hasRequestSchema = !operationCollectsNoCallerInput(operation) && !isGeneratedFileRegenerateOperation(operation);\n\n // ── CRITICAL \"double validation\" on the zero-input action button ─────────\n // A CRITICAL custom op with no requestDto executes from a single confirm\n // button here. Gate it with the same typed double-validation the action bar\n // and form-submit paths use, so every CRITICAL op is consistent regardless of\n // its input shape.\n const isCriticalOperation = operation.riskLevel === ResourceOperationRiskLevel.CRITICAL;\n const criticalConfirmationPhrase = useMemo(\n () => resolveOperationDisplayTitle(tResourceOperation, resourceType, String(operation.operationIdentifier)),\n [tResourceOperation, resourceType, operation.operationIdentifier],\n );\n const handleExecuteWithCriticalGuard = useCallback(() => {\n if (isCriticalOperation) {\n setPendingCriticalExecute(true);\n return;\n }\n void handleExecuteWithoutForm();\n }, [isCriticalOperation, handleExecuteWithoutForm]);\n const handleConfirmCriticalExecute = useCallback(() => {\n setPendingCriticalExecute(false);\n void handleExecuteWithoutForm();\n }, [handleExecuteWithoutForm]);\n const handleCancelCriticalExecute = useCallback(() => {\n setPendingCriticalExecute(false);\n }, []);\n\n const isCompactChrome = chrome === ResourceOperationHostChrome.COMPACT;\n\n if (isReady === false) return null;\n\n return (\n <LoadingGate i18nKeys={i18nKeys}>\n <div className={isCompactChrome ? 'space-y-field' : 'space-y-section'}>\n {!isCompactChrome && (\n <ResourceLayout_Header\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n )}\n\n {hasRequestSchema ? (\n <ResourceAutomatedForm\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n onSuccess={handleSuccess}\n onError={handleError}\n onCancel={onCancel}\n showErrorSummary\n className={isCompactChrome ? undefined : 'max-w-2xl'}\n updateLikeMutationFallbackMode={resolveDeclaredUpdateLikeMutationFallbackMode(operation)}\n />\n ) : (\n <div className={isCompactChrome ? 'bg-muted rounded-lg p-container' : 'bg-muted rounded-lg p-container max-w-2xl'}>\n <p className=\"text-sm text-muted-foreground mb-field\">\n {resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_ACTION,\n key: 'confirmMessage',\n })}\n </p>\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.DEFAULT}\n onClick={handleExecuteWithCriticalGuard}\n disabled={isExecutingWithoutForm || isBootstrappingResourceId}\n >\n {isExecutingWithoutForm || isBootstrappingResourceId ? runningActionLabel : actionLabel}\n </Button>\n </div>\n )}\n\n {/* CRITICAL double-validation for a zero-input action: type the action label to proceed. */}\n {pendingCriticalExecute && (\n <OperationsConfirmCritical\n open\n onOpenChange={(open) => { if (!open) handleCancelCriticalExecute(); }}\n cancelCallback={handleCancelCriticalExecute}\n validationCallback={handleConfirmCriticalExecute}\n requireTypedConfirmation\n confirmationPhrase={criticalConfirmationPhrase}\n />\n )}\n </div>\n </LoadingGate>\n );\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Default UPDATE layout preset.
|
|
3
3
|
*
|
|
4
|
-
* ── Tabbed Mode Awareness
|
|
4
|
+
* ── Tabbed Mode Awareness ─────────
|
|
5
5
|
*
|
|
6
|
-
* When
|
|
6
|
+
* When NavigationZoneContentModel.TABBED is active, UPDATE forms can be opened
|
|
7
7
|
* as tabs alongside READ views. The pane renders a tab bar with both
|
|
8
8
|
* READ and UPDATE entries visible.
|
|
9
9
|
*
|
|
@@ -2,9 +2,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
/**
|
|
3
3
|
* Default UPDATE layout preset.
|
|
4
4
|
*
|
|
5
|
-
* ── Tabbed Mode Awareness
|
|
5
|
+
* ── Tabbed Mode Awareness ─────────
|
|
6
6
|
*
|
|
7
|
-
* When
|
|
7
|
+
* When NavigationZoneContentModel.TABBED is active, UPDATE forms can be opened
|
|
8
8
|
* as tabs alongside READ views. The pane renders a tab bar with both
|
|
9
9
|
* READ and UPDATE entries visible.
|
|
10
10
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_Update.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Update.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Default UPDATE layout preset.\n *\n * ── Tabbed Mode Awareness (Phase 5 — not yet implemented) ─────────\n *\n * When NavigationTransition.TAB is active, UPDATE forms can be opened\n * as tabs alongside READ views. The pane renders a tab bar with both\n * READ and UPDATE entries visible.\n *\n * Tab-specific behaviors for UPDATE:\n * - Successful form submission navigates back to READ. In tab mode,\n * this replaces the tab entry's content (TAB stays, operation changes).\n * - Cancel closes the UPDATE and reverts the tab to READ (or closes\n * the tab if UPDATE was opened via PUSH-on-tab from another pane).\n * - Dirty form + tab switch: prompt unsaved changes warning.\n * - Tab label shows \"[Resource Title] (editing)\" to distinguish from READ.\n *\n * Key invariant: UPDATE in a tab is ALWAYS for a single resource.\n * Bulk UPDATE goes through standard PUSH navigation, not TAB.\n *\n * No changes needed now — ZoneContentRenderer handles tab rendering.\n * This component already works in isolation and supports multiple instances.\n */\n\nimport React, { useCallback, useMemo } from 'react';\nimport { NavigationTransition } from '@wildo-ai/saas-models';\nimport { NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { ResourceAutomatedForm } from '~wildo-frontend-lib/components/form/automated/ResourceAutomatedForm';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useNavigationController } from '~wildo-frontend-lib/core/navigation/useNavigationController';\nimport { useResourceOperationSurface } from '~wildo-frontend-lib/core/resources/useResourceOperationSurface';\nimport { useResourceOperationOutcomeEmitter } from '~wildo-frontend-lib/core/resources/useResourceOperationOutcomeEmitter';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\n\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas'\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper'\nimport { CorePresetNames, FrontendComponentType } from '@wildo-ai/presets-components-models'\nimport {\n resolveResourceOperationPresetKey,\n resolveResourceOperationCustomView,\n} from '~wildo-frontend-lib/core/resources/resource-operation-view.frontend.utils';\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\nimport { ResourceLayout_SemanticOperationFallback } from './ResourceLayout_SemanticOperationFallback';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Update_DefaultProps extends BaseResourcesLayoutProps {}\n\nexport const ResourceLayoutPreset_Update_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator\n}: ResourceLayoutPreset_Update_DefaultProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n });\n const {\n resourceContext: currentResourceContext,\n operation,\n isSemanticCustomOperation,\n navigateToPreferredRead,\n goBackWithinZone,\n reportError,\n } = useResourceOperationSurface({\n resourceContext,\n navigationZone,\n navigationInitiator,\n });\n const formUpdateFailedLabel = resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n key: 'formUpdateFailed',\n });\n const semanticOperationFailedLabel = resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n key: 'semanticOperationFailed',\n });\n const { closeOverlay } = useNavigationController();\n /**\n * What happens AFTER a successful update — navigation only. Announcing the outcome is\n * `useResourceOperationOutcomeEmitter`'s job: the form branch below calls it, and the semantic\n * branch hands this to `ResourceLayout_SemanticOperationFallback`, which announces on its own.\n * A bulk update goes back to the listing it came from; a single-row one reveals the record.\n */\n const navigateAfterSuccess = useCallback(() => {\n if (operation.isBulkOperation) {\n goBackWithinZone();\n return;\n }\n\n // When the update form is hosted in an OVERLAY, revealing the updated record\n // must BREAK OUT of the transient dialog into a structural zone — otherwise\n // the READ resolves through `fromOverlay.transitions` and stacks inside the\n // dialog, leaving the popup stuck open. PROMOTE clears the overlay and places\n // the reveal in PRIMARY. Non-overlay hosts keep the default source-zone policy.\n navigateToPreferredRead({\n transitionOverride: navigationZone === NavigationZone.OVERLAY\n ? NavigationTransition.PROMOTE\n : undefined,\n });\n }, [goBackWithinZone, navigateToPreferredRead, navigationZone, operation.isBulkOperation]);\n\n const announceOutcome = useResourceOperationOutcomeEmitter(currentResourceContext, operation);\n const handleFormSuccess = useCallback((result: unknown) => {\n announceOutcome(result);\n navigateAfterSuccess();\n }, [announceOutcome, navigateAfterSuccess]);\n\n // Handle form error - integrate with centralized error management\n const handleError = useCallback((error: Error) => {\n reportError(error, formUpdateFailedLabel, 'ResourceLayoutPreset_Update_Default');\n }, [formUpdateFailedLabel, reportError]);\n\n // Audit D5: overlay-hosted update forms get a secondary Cancel button that\n // closes the modal through the same path as the top-right X. Non-overlay\n // hosts keep the single-primary footer.\n const handleCancel = useMemo(\n () => (navigationZone === NavigationZone.OVERLAY ? () => closeOverlay() : undefined),\n [navigationZone, closeOverlay],\n );\n\n if (!isReady) return null;\n\n if (isSemanticCustomOperation) {\n return (\n <ResourceLayout_SemanticOperationFallback\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n errorMessage={semanticOperationFailedLabel}\n errorComponent=\"ResourceLayoutPreset_Update_Default\"\n onSuccess={navigateAfterSuccess}\n onCancel={handleCancel}\n />\n );\n }\n\n return (\n <div className=\"space-y-section\">\n {/* Header with back button */}\n <ResourceLayout_Header\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n\n {/* Form */}\n <ResourceAutomatedForm\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n onSuccess={handleFormSuccess}\n onError={handleError}\n onCancel={handleCancel}\n showErrorSummary\n />\n </div>\n );\n};\n\nexport function ResourceLayout_Update({ preset, ...props }: ResourceLayoutPreset_Update_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const ComponentOverride = resolveResourceOperationCustomView<ResourceLayoutPreset_Update_DefaultProps>(props.resourceContext.operation);\n if (ComponentOverride) {\n return <ComponentOverride {...props} />;\n }\n\n const operationPreset = resolveResourceOperationPresetKey(props.resourceContext.operation);\n const resolvedPreset = preset ?? operationPreset ?? CorePresetNames.DEFAULT;\n const Component = createComponentResolver<ResourceLayoutPreset_Update_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_UPDATE, 'ResourceLayout_Update')(resolvedPreset);\n return <Component {...props} />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceLayout_Update.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Update.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Default UPDATE layout preset.\n *\n * ── Tabbed Mode Awareness ─────────\n *\n * When NavigationZoneContentModel.TABBED is active, UPDATE forms can be opened\n * as tabs alongside READ views. The pane renders a tab bar with both\n * READ and UPDATE entries visible.\n *\n * Tab-specific behaviors for UPDATE:\n * - Successful form submission navigates back to READ. In tab mode,\n * this replaces the tab entry's content (TAB stays, operation changes).\n * - Cancel closes the UPDATE and reverts the tab to READ (or closes\n * the tab if UPDATE was opened via PUSH-on-tab from another pane).\n * - Dirty form + tab switch: prompt unsaved changes warning.\n * - Tab label shows \"[Resource Title] (editing)\" to distinguish from READ.\n *\n * Key invariant: UPDATE in a tab is ALWAYS for a single resource.\n * Bulk UPDATE goes through standard PUSH navigation, not TAB.\n *\n * No changes needed now — ZoneContentRenderer handles tab rendering.\n * This component already works in isolation and supports multiple instances.\n */\n\nimport React, { useCallback, useMemo } from 'react';\nimport { NavigationTransition } from '@wildo-ai/saas-models';\nimport { NavigationZone } from '~wildo-frontend-lib/core/navigation/navigation.schemas';\nimport { ResourceAutomatedForm } from '~wildo-frontend-lib/components/form/automated/ResourceAutomatedForm';\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { useNavigationController } from '~wildo-frontend-lib/core/navigation/useNavigationController';\nimport { useResourceOperationSurface } from '~wildo-frontend-lib/core/resources/useResourceOperationSurface';\nimport { useResourceOperationOutcomeEmitter } from '~wildo-frontend-lib/core/resources/useResourceOperationOutcomeEmitter';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\n\nimport { ComponentPresetProps } from '~wildo-frontend-lib/core/components-registry/component-registry.frontend.schemas'\nimport { createComponentResolver } from '~wildo-frontend-lib/core/components-registry/component-resolver.frontend.helper'\nimport { CorePresetNames, FrontendComponentType } from '@wildo-ai/presets-components-models'\nimport {\n resolveResourceOperationPresetKey,\n resolveResourceOperationCustomView,\n} from '~wildo-frontend-lib/core/resources/resource-operation-view.frontend.utils';\nimport { BaseResourcesLayoutProps } from './component-props.resources-layout.frontend.schemas'\nimport { ResourceLayout_SemanticOperationFallback } from './ResourceLayout_SemanticOperationFallback';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Update_DefaultProps extends BaseResourcesLayoutProps {}\n\nexport const ResourceLayoutPreset_Update_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator\n}: ResourceLayoutPreset_Update_DefaultProps): React.JSX.Element | null => {\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n });\n const {\n resourceContext: currentResourceContext,\n operation,\n isSemanticCustomOperation,\n navigateToPreferredRead,\n goBackWithinZone,\n reportError,\n } = useResourceOperationSurface({\n resourceContext,\n navigationZone,\n navigationInitiator,\n });\n const formUpdateFailedLabel = resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n key: 'formUpdateFailed',\n });\n const semanticOperationFailedLabel = resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_UPDATE,\n key: 'semanticOperationFailed',\n });\n const { closeOverlay } = useNavigationController();\n /**\n * What happens AFTER a successful update — navigation only. Announcing the outcome is\n * `useResourceOperationOutcomeEmitter`'s job: the form branch below calls it, and the semantic\n * branch hands this to `ResourceLayout_SemanticOperationFallback`, which announces on its own.\n * A bulk update goes back to the listing it came from; a single-row one reveals the record.\n */\n const navigateAfterSuccess = useCallback(() => {\n if (operation.isBulkOperation) {\n goBackWithinZone();\n return;\n }\n\n // When the update form is hosted in an OVERLAY, revealing the updated record\n // must BREAK OUT of the transient dialog into a structural zone — otherwise\n // the READ resolves through `fromOverlay.transitions` and stacks inside the\n // dialog, leaving the popup stuck open. PROMOTE clears the overlay and places\n // the reveal in PRIMARY. Non-overlay hosts keep the default source-zone policy.\n navigateToPreferredRead({\n transitionOverride: navigationZone === NavigationZone.OVERLAY\n ? NavigationTransition.PROMOTE\n : undefined,\n });\n }, [goBackWithinZone, navigateToPreferredRead, navigationZone, operation.isBulkOperation]);\n\n const announceOutcome = useResourceOperationOutcomeEmitter(currentResourceContext, operation);\n const handleFormSuccess = useCallback((result: unknown) => {\n announceOutcome(result);\n navigateAfterSuccess();\n }, [announceOutcome, navigateAfterSuccess]);\n\n // Handle form error - integrate with centralized error management\n const handleError = useCallback((error: Error) => {\n reportError(error, formUpdateFailedLabel, 'ResourceLayoutPreset_Update_Default');\n }, [formUpdateFailedLabel, reportError]);\n\n // Audit D5: overlay-hosted update forms get a secondary Cancel button that\n // closes the modal through the same path as the top-right X. Non-overlay\n // hosts keep the single-primary footer.\n const handleCancel = useMemo(\n () => (navigationZone === NavigationZone.OVERLAY ? () => closeOverlay() : undefined),\n [navigationZone, closeOverlay],\n );\n\n if (!isReady) return null;\n\n if (isSemanticCustomOperation) {\n return (\n <ResourceLayout_SemanticOperationFallback\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n errorMessage={semanticOperationFailedLabel}\n errorComponent=\"ResourceLayoutPreset_Update_Default\"\n onSuccess={navigateAfterSuccess}\n onCancel={handleCancel}\n />\n );\n }\n\n return (\n <div className=\"space-y-section\">\n {/* Header with back button */}\n <ResourceLayout_Header\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n\n {/* Form */}\n <ResourceAutomatedForm\n resourceContext={currentResourceContext}\n navigationZone={navigationZone}\n onSuccess={handleFormSuccess}\n onError={handleError}\n onCancel={handleCancel}\n showErrorSummary\n />\n </div>\n );\n};\n\nexport function ResourceLayout_Update({ preset, ...props }: ResourceLayoutPreset_Update_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const ComponentOverride = resolveResourceOperationCustomView<ResourceLayoutPreset_Update_DefaultProps>(props.resourceContext.operation);\n if (ComponentOverride) {\n return <ComponentOverride {...props} />;\n }\n\n const operationPreset = resolveResourceOperationPresetKey(props.resourceContext.operation);\n const resolvedPreset = preset ?? operationPreset ?? CorePresetNames.DEFAULT;\n const Component = createComponentResolver<ResourceLayoutPreset_Update_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_UPDATE, 'ResourceLayout_Update')(resolvedPreset);\n return <Component {...props} />;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceListItemRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceListItemRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,+DAA+D,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourceListItemRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceListItemRenderer.tsx"],"names":[],"mappings":"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"}
|