@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
|
@@ -31,7 +31,6 @@ import { LoggerFrontendService } from '../../core/monitoring/logger.frontend.ser
|
|
|
31
31
|
import { ResourceLayout_Pagination } from '../../components/resources/ResourceLayout_Pagination.js';
|
|
32
32
|
import { ResourceLayout_SortControl } from '../../components/resources/ResourceLayout_SortControl.js';
|
|
33
33
|
import { ResourceLayout_FiltersControl } from '../../components/resources/ResourceLayout_FiltersControl.js';
|
|
34
|
-
import { ResourceEmptyState } from '../../components/feedback/resource-empty-state.js';
|
|
35
34
|
import { ErrorDisplay } from '../../components/feedback/error-display.js';
|
|
36
35
|
import { Skeleton } from '../../components/feedback/skeleton.js';
|
|
37
36
|
import { createComponentResolver } from '../../core/components-registry/component-resolver.frontend.helper.js';
|
|
@@ -50,7 +49,12 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
50
49
|
navigationZone,
|
|
51
50
|
navigationInitiator,
|
|
52
51
|
});
|
|
53
|
-
const { tComponent, tResourceFieldDisplay, tResourceFieldEnumValue } = useI18n({
|
|
52
|
+
const { tComponent, tResourceFieldDisplay, tResourceFieldEnumValue } = useI18n({
|
|
53
|
+
// LIST's vocabulary too: a search that matched nothing uses the same "no matching items" words the
|
|
54
|
+
// list shows for its own narrowed-empty state.
|
|
55
|
+
component: [FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, FrontendComponentType.RESOURCES_LAYOUTS_LIST],
|
|
56
|
+
resource: resourceType,
|
|
57
|
+
});
|
|
54
58
|
// Stable identity, so the search effect may call it without listing it.
|
|
55
59
|
const toUserFacingErrorMessage = useUserFacingErrorMessage();
|
|
56
60
|
const tc = (key) => tComponent(FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, key);
|
|
@@ -145,9 +149,6 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
145
149
|
const isSearchable = useMemo(() => {
|
|
146
150
|
return operation?.isSearchable !== false;
|
|
147
151
|
}, [operation]);
|
|
148
|
-
const emptyStateConfig = useMemo(() => {
|
|
149
|
-
return resourceConfig?.frontendConfiguration?.emptyState;
|
|
150
|
-
}, [resourceConfig]);
|
|
151
152
|
const summaryFields = useMemo(() => {
|
|
152
153
|
return ResourceLayoutUtils.detectSummaryFields(resourceConfig);
|
|
153
154
|
}, [resourceConfig]);
|
|
@@ -195,10 +196,12 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
195
196
|
parentResourcesRequirements: resourceContext.parentResourcesRequirements,
|
|
196
197
|
}
|
|
197
198
|
: undefined);
|
|
199
|
+
// A field the host pinned is not the reader's to filter (#1630): its value is fixed on every fetch.
|
|
200
|
+
const readerFilterFields = ResourceLayoutUtils.withoutPinnedFilterFields(filterFields, resourceContext.pinnedFilters);
|
|
198
201
|
// SEARCH doesn't have filtersEnabled; show filters when filterFields exist
|
|
199
|
-
const filtersEnabled =
|
|
200
|
-
return { sortFields, filterFields, filtersEnabled };
|
|
201
|
-
}, [operation, registry, resourceConfig, contextualParameters, resourceContext.parentResourcesRequirements]);
|
|
202
|
+
const filtersEnabled = readerFilterFields.length > 0;
|
|
203
|
+
return { sortFields, filterFields: readerFilterFields, filtersEnabled };
|
|
204
|
+
}, [operation, registry, resourceConfig, contextualParameters, resourceContext.parentResourcesRequirements, resourceContext.pinnedFilters]);
|
|
202
205
|
// Extract dataMode: Component prop > Query param > Backend default
|
|
203
206
|
const dataMode = useMemo(() => {
|
|
204
207
|
return frontendResourceUtils.extractDataMode(searchParams, propDataMode);
|
|
@@ -217,6 +220,8 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
217
220
|
// Stable sort key for fetch dedup
|
|
218
221
|
const sortKey = sortStates.map(s => `${s.field}:${s.direction}`).join(',');
|
|
219
222
|
const filterKey = useMemo(() => JSON.stringify(filterValues), [filterValues]);
|
|
223
|
+
// Host-pinned filters (#1630) are part of the fetch identity: a host that re-pins refetches.
|
|
224
|
+
const pinnedFiltersKey = useMemo(() => JSON.stringify(resourceContext.pinnedFilters ?? {}), [resourceContext.pinnedFilters]);
|
|
220
225
|
// Announce this collection surface's ACTIVE FILTER SET. The surface states a
|
|
221
226
|
// fact about itself and owns no scope semantics — `AppScopeContext` decides
|
|
222
227
|
// whether a filter lands on a declared app-scope field (so the app-shell
|
|
@@ -227,6 +232,7 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
227
232
|
// all flow through this single announcement by construction, so a new setter
|
|
228
233
|
// cannot silently stop announcing.
|
|
229
234
|
const { emit: emitFrontendEvent } = useEventBus();
|
|
235
|
+
// The READER's filters only, not the host's pins (#1630): the announcement mirrors a reader's choice.
|
|
230
236
|
useEffect(() => {
|
|
231
237
|
emitFrontendEvent(FrontendEvents.RESOURCE_COLLECTION_FILTERS_CHANGED, {
|
|
232
238
|
resourceType,
|
|
@@ -236,7 +242,7 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
236
242
|
// drive the announcement (the object identity changes on every render).
|
|
237
243
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
238
244
|
}, [filterKey, resourceType, emitFrontendEvent]);
|
|
239
|
-
const fetchKey = `${resourceType}|${operationPathKey}|${contextResourceIdentifiersKey}|${debouncedQuery}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${isSearchable}`;
|
|
245
|
+
const fetchKey = `${resourceType}|${operationPathKey}|${contextResourceIdentifiersKey}|${debouncedQuery}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${pinnedFiltersKey}|${isSearchable}`;
|
|
240
246
|
// Execute search when debounced query changes - use refs to avoid infinite loops.
|
|
241
247
|
// When isSearchable is false, auto-trigger an initial filter/sort-only search.
|
|
242
248
|
// StrictMode double-mounts run this effect twice; the `cancelled` flag plus
|
|
@@ -261,9 +267,10 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
261
267
|
setError(null);
|
|
262
268
|
setHasSearched(true);
|
|
263
269
|
try {
|
|
264
|
-
// Build filters — only include non-empty values
|
|
265
|
-
const
|
|
266
|
-
|
|
270
|
+
// Build filters — only include non-empty values. The host's pins apply on top, and win on a shared key.
|
|
271
|
+
const mergedFilters = ResourceLayoutUtils.withPinnedFilters(filterValuesRef.current, resourceContextRef.current.pinnedFilters);
|
|
272
|
+
const activeFilters = Object.keys(mergedFilters).length > 0
|
|
273
|
+
? mergedFilters
|
|
267
274
|
: undefined;
|
|
268
275
|
const searchParams = {
|
|
269
276
|
contextualParameters,
|
|
@@ -369,7 +376,8 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
369
376
|
// carries is this search — its term AND its filters — so the server
|
|
370
377
|
// re-evaluates exactly what produced these results (#1461).
|
|
371
378
|
onSelectAllMatching: () => selection.selectAllMatching({
|
|
372
|
-
|
|
379
|
+
// The host's pins included (#1630): "all matching" is what this listing matches.
|
|
380
|
+
filters: ResourceLayoutUtils.withPinnedFilters(filterValues, resourceContext.pinnedFilters),
|
|
373
381
|
...(debouncedQuery ? { search: debouncedQuery } : {}),
|
|
374
382
|
matchedCount: pagination.total,
|
|
375
383
|
}),
|
|
@@ -386,7 +394,15 @@ export const ResourceLayoutPreset_Search_Default = ({ resourceContext, navigatio
|
|
|
386
394
|
key: 'errorCode',
|
|
387
395
|
params: { code: error.code },
|
|
388
396
|
})
|
|
389
|
-
: undefined })), inPlaceHost.isCreateActive && (_jsx(ResourceInPlaceOperationRow, { navigationZone: navigationZone, className: "border border-border rounded-lg" })), hasSearched && !error && (_jsxs(_Fragment, { children: [results.length === 0 ? (
|
|
397
|
+
: undefined })), inPlaceHost.isCreateActive && (_jsx(ResourceInPlaceOperationRow, { navigationZone: navigationZone, className: "border border-border rounded-lg" })), hasSearched && !error && (_jsxs(_Fragment, { children: [results.length === 0 ? (
|
|
398
|
+
/* A search that matched nothing is not an empty collection. The resource's empty state
|
|
399
|
+
says there are none YET and offers the first one, which is false here; this says the
|
|
400
|
+
query matched nothing, in the list's own words for the same case. */
|
|
401
|
+
_jsx("div", { className: "text-center py-section text-muted-foreground text-sm", role: "status", children: resolveComponentLabel({
|
|
402
|
+
tComponent,
|
|
403
|
+
componentType: FrontendComponentType.RESOURCES_LAYOUTS_LIST,
|
|
404
|
+
key: 'noSearchResults',
|
|
405
|
+
}) })) : (
|
|
390
406
|
/* Same contract as the LIST host: the select-all stands in the rows' own column, and
|
|
391
407
|
the toolbar cluster above keeps only the count and clear. */
|
|
392
408
|
_jsxs("div", { className: "space-y-item-sm", children: [selectionEnabled && (_jsx("div", { className: CARDS_SELECTION_RAIL_CLASS, "data-slot": "collection-selection-rail-host", children: _jsx(CollectionSelectionHeaderRail, { allSelected: currentPageAllSelected, onToggleAll: handleToggleAllCurrentPage }) })), _jsx("ul", { role: "list", "aria-label": resultsLabel, style: resolveCardsGridStyle(cardGridColumns), className: cn(resolveCardsContainerClass(cardGridColumns),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_Search.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Search.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useEffect, useState, useRef } from 'react';\n\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useIconRegistry } from '~wildo-frontend-lib/core/icons/useIconRegistry';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { useResourceOperationSurface } from '~wildo-frontend-lib/core/resources/useResourceOperationSurface';\nimport { FrontendComponentType, UIBehavior, InteractiveVariant } from '@wildo-ai/presets-components-models';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { Button } from '~wildo-frontend-lib/components/actions/button';\nimport { InputRoot } from '~wildo-frontend-lib/components/form/controls/input';\nimport { ResourceListItemRenderer } from '~wildo-frontend-lib/components/resources/ResourceListItemRenderer';\nimport { ResourceInPlaceOperationRow } from '~wildo-frontend-lib/components/resources/ResourceInPlaceOperationRow';\nimport { InPlaceOperationProvider, useInPlaceOperation } from '~wildo-frontend-lib/core/resources/in-place/InPlaceOperationContext';\nimport { ResourceLayoutUtils } from '~wildo-frontend-lib/components/resources/resourceLayout.utils';\nimport {\n CoreResourceOperation,\n ResourcesConfig_OperationPathUtils,\n ErrorCustomMessageReference,\n type Resources_PaginationMetadata,\n type Resources_PaginatedResult,\n DataMode,\n} from '@wildo-ai/saas-models';\nimport {\n type ResourceUIBehavior_EmptyState,\n ResourceFrontend_EmptyStateSecondaryActionType,\n CardLayoutStyle,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useResourceSelection } from '~wildo-frontend-lib/core/resources/useResourceSelection';\nimport { ResourceLayout_OperationBulk } from '~wildo-frontend-lib/components/resources/ResourceLayout_OperationBulk';\nimport { CollectionSelectionControls } from '~wildo-frontend-lib/components/resources/CollectionSelectionControls';\nimport { CollectionSelectionHeaderRail } from '~wildo-frontend-lib/components/resources/CollectionSelectionHeaderRail';\nimport { resolveCardsContainerClass, resolveCardsGridStyle, CARDS_SELECTION_RAIL_CLASS, CARDS_GRID_CELL_CLASS } from '~wildo-frontend-lib/components/resources/collection-card-layout.utils';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\nimport { StandardIconReference, IconSize } from '~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas';\nimport { ResourcesConfigOperationsUrlsBuilderUtils } from '@wildo-ai/saas-models';\nimport { ResourceSearchCallParameters } from '~wildo-frontend-lib/core/requests/wildo-http-client-resources.frontend.service';\nimport { useSearchParams } from 'react-router-dom';\nimport { type DisplayableError, extractErrorInfo } from '~wildo-frontend-lib/core/errors/errors.frontend.schemas';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { ResourceLayout_Pagination } from '~wildo-frontend-lib/components/resources/ResourceLayout_Pagination';\nimport { ResourceLayout_SortControl, type SortState } from '~wildo-frontend-lib/components/resources/ResourceLayout_SortControl';\nimport { ResourceLayout_FiltersControl, type FilterValues } from '~wildo-frontend-lib/components/resources/ResourceLayout_FiltersControl';\nimport { ResourceEmptyState } from '~wildo-frontend-lib/components/feedback/resource-empty-state';\nimport { ErrorDisplay } from '~wildo-frontend-lib/components/feedback/error-display';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\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 { CorePreset_ResourceLayout_Search } 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 { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { useComponentLoading } from '~wildo-frontend-lib/core/loading/useComponentLoading';\nimport { buildResourceLoadingScope } from '~wildo-frontend-lib/core/loading/loading-scope.frontend.utils';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Search_DefaultProps extends BaseResourcesLayoutProps {\n dataMode?: DataMode;\n}\n\nconst logger = LoggerFrontendService.getLogger();\n\ninterface SearchResult {\n id: string;\n [key: string]: any;\n}\n\nexport const ResourceLayoutPreset_Search_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n dataMode: propDataMode,\n}: ResourceLayoutPreset_Search_DefaultProps): React.JSX.Element | null => {\n const {\n resourceType,\n operation,\n resourceConfig,\n operationInitiator,\n contextualParameters,\n navigateToResourceOperation,\n } = useResourceOperationSurface({\n resourceContext,\n navigationZone,\n navigationInitiator,\n });\n const { tComponent, tResourceFieldDisplay, tResourceFieldEnumValue } = useI18n({ component: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, resource: resourceType });\n // Stable identity, so the search effect may call it without listing it.\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n const tc = (key: string) => tComponent(FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, key);\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n const { registry, doOperation } = useResourceRegistry();\n const [searchParams] = useSearchParams();\n\n // Cards presentation + selection, authored on the SEARCH operation's\n // `collectionDisplayConfig` (parity with the LIST view). Search is cards-only\n // (no table body), so `cardLayout`/`selectable` apply directly to the results\n // list; `cardActionPlacement` is inert here (search cards render no per-item\n // operations today) but threaded for symmetry.\n const collectionDisplayConfig = operation.operationFrontendConfig?.collectionDisplayConfig;\n const cardLayout = collectionDisplayConfig?.cardLayout;\n const cardActionPlacement = collectionDisplayConfig?.cardActionPlacement;\n const selectionEnabled = collectionDisplayConfig?.selectable ?? false;\n const isCardGrid = cardLayout?.style === CardLayoutStyle.GRID;\n // Narrow the union once, then feed both the container class and the intrinsic\n // grid-template-columns style (container-responsive; collapses in narrow panes).\n const cardGridColumns = cardLayout?.style === CardLayoutStyle.GRID ? cardLayout.columns : undefined;\n // Key selection on the resource's addressable identifier (same field\n // navigation + the bulk payload use) — threaded to BOTH the hook and the bulk\n // bar so selection identity and bulk-target identity can never diverge.\n const selectionIdField = resourceConfig?.resourceFieldIdentifier as string | undefined;\n const selection = useResourceSelection<SearchResult>({ idField: selectionIdField });\n // Which result row, if any, is transformed by an INLINE action. Provided by the wrapper below.\n const inPlaceHost = useInPlaceOperation();\n\n // State\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedQuery, setDebouncedQuery] = useState('');\n const [results, setResults] = useState<SearchResult[]>([]);\n // Current-page select-all (additive; preserves any cross-page selection).\n const currentPageAllSelected = results.length > 0 && results.every((r) => selection.isSelected(r));\n const handleToggleAllCurrentPage = useCallback(() => {\n if (results.length > 0 && results.every((r) => selection.isSelected(r))) {\n results.forEach((r) => selection.deselectItem(r));\n } else {\n results.forEach((r) => selection.selectItem(r));\n }\n }, [results, selection]);\n const [error, setError] = useState<DisplayableError | null>(null);\n const [hasSearched, setHasSearched] = useState(false);\n const [pagination, setPagination] = useState<Resources_PaginationMetadata>(() => {\n const searchOp = operation as { pageSize?: number; maxPaginatedResultPerPageLimit?: number };\n const configuredPageSize = searchOp?.pageSize ?? 20;\n const maxLimit = searchOp?.maxPaginatedResultPerPageLimit;\n const pageSize = maxLimit ? Math.min(configuredPageSize, maxLimit) : configuredPageSize;\n return { page: 1, limit: pageSize, total: 0, totalPages: 0 };\n });\n const [isFetching, setIsFetching] = useState(false);\n // Multi-field sort, highest priority first. Empty = no sorting.\n const [sortStates, setSortStates] = useState<SortState[]>([]);\n const [filterValues, setFilterValues] = useState<FilterValues>({});\n\n // Clear selection when the visible result set is redefined by a new query or a\n // filter change — a stale selection would let the bulk bar act on records that\n // no longer match / are no longer shown. Pagination is intentionally excluded.\n useEffect(() => {\n selection.clearSelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedQuery, filterValues]);\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_SEARCH}`,\n ], [resourceType]);\n\n // L-1: Tier-2 derived loading state. Distinguishes initial load (skeleton)\n // from refresh (subtle dim). Driven by the http client's resource loading\n // events (LOADING_RESOURCE_START/END) for this exact resource+operation.\n const operationIdForLoading = (operation as { operationIdentifier?: string })?.operationIdentifier ?? CoreResourceOperation.SEARCH;\n const { isInitialLoad, isRefreshing } = useComponentLoading(\n buildResourceLoadingScope({\n resourceType,\n operation: operationIdForLoading,\n }),\n );\n\n // Refs for stable function references and objects (avoid infinite loops)\n const doOperationRef = useRef(doOperation);\n const resourceContextRef = useRef(resourceContext);\n\n const sortStatesRef = useRef(sortStates);\n const filterValuesRef = useRef(filterValues);\n\n // Keep refs updated\n doOperationRef.current = doOperation;\n resourceContextRef.current = resourceContext;\n sortStatesRef.current = sortStates;\n filterValuesRef.current = filterValues;\n\n // Build stable key for context identifiers\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(resourceContext.contextResourceIdentifiers);\n }, [resourceContext.contextResourceIdentifiers]);\n\n // Determine if free-text search is enabled on this SEARCH operation\n // isSearchable defaults to true when a SEARCH operation exists (factory default)\n // When false, the search bar is hidden but filters/sort/results still render\n const isSearchable = useMemo(() => {\n return (operation as { isSearchable?: boolean })?.isSearchable !== false;\n }, [operation]);\n\n const emptyStateConfig = useMemo<ResourceUIBehavior_EmptyState | undefined>(() => {\n return resourceConfig?.frontendConfiguration?.emptyState as ResourceUIBehavior_EmptyState | undefined;\n }, [resourceConfig]);\n\n const summaryFields = useMemo<string[]>(() => {\n return ResourceLayoutUtils.detectSummaryFields(resourceConfig);\n }, [resourceConfig]);\n\n // Resolve i18n field labels for summary fields\n const resultsLabel = useMemo(\n () => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'resultsLabel',\n }),\n [tComponent],\n );\n\n const fieldLabelsMap = useMemo<Record<string, string>>(() => {\n const result: Record<string, string> = {};\n for (const fieldName of summaryFields) {\n result[fieldName] = tResourceFieldDisplay(resourceType, fieldName, 'label');\n }\n return result;\n }, [summaryFields, resourceType, tResourceFieldDisplay]);\n\n const resolveReadOperationForIdentifiers = useCallback((\n contextResourceIdentifiers: typeof resourceContext.contextResourceIdentifiers,\n ) => {\n if (!resourceConfig) {\n return null;\n }\n\n return pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: frontendResourceUtils.getResourceId(contextResourceIdentifiers[resourceType]).length > 0,\n requireFrontendAddressable: true,\n contextResourceIdentifiers,\n contextualParameters: FrontendResourceUtils.buildContextualParameters(\n contextResourceIdentifiers,\n registry,\n ),\n }) ?? null;\n }, [registry, resourceConfig, resourceType]);\n\n // Read sortFields and filterFields from SEARCH operation directly.\n // Transport context: exclude transport-pinned fields (primary-scope FK +\n // selected-route URL parameters) and classify FK fields as reference\n // selectors. See FilterFieldTransportContext.\n const { sortFields, filterFields, filtersEnabled } = useMemo(() => {\n const searchOp = operation as { sortFields?: readonly string[]; filterFields?: Record<string, unknown> };\n const sortFields = searchOp?.sortFields ?? [];\n const filterFields = ResourceLayoutUtils.parseFilterFieldDefinitions(\n searchOp?.filterFields,\n resourceConfig\n ? {\n registry,\n resourceConfig,\n operation,\n contextualParameters,\n parentResourcesRequirements: resourceContext.parentResourcesRequirements,\n }\n : undefined,\n );\n // SEARCH doesn't have filtersEnabled; show filters when filterFields exist\n const filtersEnabled = filterFields.length > 0;\n return { sortFields, filterFields, filtersEnabled };\n }, [operation, registry, resourceConfig, contextualParameters, resourceContext.parentResourcesRequirements]);\n\n // Extract dataMode: Component prop > Query param > Backend default\n const dataMode = useMemo(() => {\n return frontendResourceUtils.extractDataMode(searchParams, propDataMode);\n }, [searchParams, propDataMode]);\n\n // Build operation path for SEARCH from the operation object on context\n const operationPathKey = useMemo(() => {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }, [operation]);\n\n // Debounce search query\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedQuery(searchQuery);\n }, 300);\n return () => clearTimeout(timer);\n }, [searchQuery]);\n\n // Stable sort key for fetch dedup\n const sortKey = sortStates.map(s => `${s.field}:${s.direction}`).join(',');\n const filterKey = useMemo(() => JSON.stringify(filterValues), [filterValues]);\n\n // Announce this collection surface's ACTIVE FILTER SET. The surface states a\n // fact about itself and owns no scope semantics — `AppScopeContext` decides\n // whether a filter lands on a declared app-scope field (so the app-shell\n // scope control mirrors a listing filtered to one record).\n //\n // Emitted from ONE effect keyed on the serialized filter set rather than from\n // each setter: the panel, the quick-filter tabs and any future filter writer\n // all flow through this single announcement by construction, so a new setter\n // cannot silently stop announcing.\n const { emit: emitFrontendEvent } = useEventBus();\n useEffect(() => {\n emitFrontendEvent(FrontendEvents.RESOURCE_COLLECTION_FILTERS_CHANGED, {\n resourceType,\n filterValues: filterValuesRef.current as Record<string, unknown>,\n });\n // `filterKey` is the serialized filter set — the value identity that must\n // drive the announcement (the object identity changes on every render).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterKey, resourceType, emitFrontendEvent]);\n const fetchKey = `${resourceType}|${operationPathKey}|${contextResourceIdentifiersKey}|${debouncedQuery}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${isSearchable}`;\n\n // Execute search when debounced query changes - use refs to avoid infinite loops.\n // When isSearchable is false, auto-trigger an initial filter/sort-only search.\n // StrictMode double-mounts run this effect twice; the `cancelled` flag plus\n // cleanup disposes of the first mount's in-flight search so the second\n // mount's result lands in state. Do NOT add a per-fetchKey dedup Set —\n // entries that survive cleanup turn the second mount into a no-op while the\n // first mount's result is silently dropped by `if (cancelled) return`,\n // leaving the surface stuck in `isFetching` forever.\n useEffect(() => {\n if (!debouncedQuery && !hasSearched && isSearchable) return;\n\n let cancelled = false;\n let loadingStopped = false;\n\n const stopLoading = () => {\n if (!loadingStopped) {\n loadingStopped = true;\n setIsFetching(false);\n }\n };\n\n const executeSearch = async () => {\n setIsFetching(true);\n setError(null);\n setHasSearched(true);\n\n try {\n // Build filters — only include non-empty values\n const activeFilters = Object.keys(filterValuesRef.current).length > 0\n ? filterValuesRef.current\n : undefined;\n\n const searchParams: ResourceSearchCallParameters = {\n contextualParameters,\n searchQuery: debouncedQuery || undefined,\n filters: activeFilters,\n pagination: {\n page: pagination.page,\n limit: pagination.limit,\n },\n sort: sortStatesRef.current.length ? [...sortStatesRef.current] : undefined,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode, // Pass dataMode to API call\n };\n\n const result = await doOperationRef.current(operationPathKey, searchParams);\n\n if (cancelled) return;\n\n // Handle paginated response format (Resources_PaginatedResult)\n if (result && typeof result === 'object' && 'data' in result && 'pagination' in result) {\n const paginatedResult = result as Resources_PaginatedResult<SearchResult>;\n setResults(paginatedResult.data);\n setPagination(paginatedResult.pagination);\n } else if (Array.isArray(result)) {\n // Legacy: raw array response (internal calls)\n setResults(result);\n setPagination(prev => ({ ...prev, total: result.length, totalPages: 1 }));\n }\n } catch (err) {\n if (cancelled) return;\n const errorInfo = extractErrorInfo(err);\n // Rendered to the person: localized text, never the reference or the raw message (#1160).\n setError({ ...errorInfo, message: toUserFacingErrorMessage(err) });\n logger.error('[ResourceLayoutPreset_Search_Default] Search error:', { ...errorInfo, error: err });\n } finally {\n if (!cancelled) {\n stopLoading();\n }\n }\n };\n\n executeSearch();\n\n return () => {\n cancelled = true;\n stopLoading();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using refs for unstable functions/objects; fetchKey handles all deps\n }, [fetchKey]);\n\n // Handle navigation to READ (result click)\n // Uses resourceContextRef to avoid unstable resourceContext object in deps\n const handleResultClick = useCallback((item: SearchResult) => {\n if (!resourceConfig) return;\n\n const itemId = FrontendResourceUtils.getResourceObjectId(\n item as Record<string, unknown>,\n resourceConfig.resourceFieldIdentifier as string,\n );\n // Fail closed: a result whose id cannot be resolved must NOT navigate to\n // `/<resource>/undefined` — an unrenderable, CPU-pegging detail surface.\n if (!itemId) {\n logger.error('[ResourceLayoutPreset_Search] Result click ignored: could not resolve resource id from search result.', {\n resourceType,\n fieldIdentifier: resourceConfig.resourceFieldIdentifier,\n itemKeys: Object.keys(item ?? {}),\n });\n return;\n }\n\n const contextResourceIdentifiers = {\n ...resourceContextRef.current.contextResourceIdentifiers,\n [resourceType]: itemId,\n };\n const itemReadOperation = resolveReadOperationForIdentifiers(contextResourceIdentifiers);\n if (!itemReadOperation) return;\n\n navigateToResourceOperation({\n operation: itemReadOperation,\n contextResourceIdentifiers,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n initiatorOverride: operationInitiator,\n });\n }, [resourceConfig, resourceConfig?.resourceFieldIdentifier, resourceType, navigateToResourceOperation, operationInitiator, resolveReadOperationForIdentifiers]);\n\n // Handle sort change — stable callback for the sort control.\n const handleSortChange = useCallback((newSorts: SortState[]) => {\n setSortStates(newSorts);\n setPagination(prev => ({ ...prev, page: 1 }));\n }, []);\n\n // Handle filter change — stable callback for FiltersControl\n const handleFiltersChange = useCallback((newFilters: FilterValues) => {\n setFilterValues(newFilters);\n setPagination(prev => ({ ...prev, page: 1 }));\n }, []);\n\n // Handle search form submit\n const handleSubmit = useCallback((e: React.SubmitEvent<HTMLFormElement>) => {\n e.preventDefault();\n setDebouncedQuery(searchQuery);\n }, [searchQuery]);\n\n // Render icons\n const searchIcon = renderIcon(\n StandardIconReference.SEARCH,\n { size: IconSize.SM }\n );\n\n return (\n <LoadingGate\n i18nKeys={i18nKeys}\n readiness={[{ id: 'search-initial-load', isReady: !isInitialLoad }]}\n renderLoading={() => (\n <Skeleton\n template=\"list\"\n density=\"auto\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n />\n )}\n >\n <div className=\"space-y-section\">\n {/* Header with back button */}\n <ResourceLayout_Header\n resourceContext={resourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n\n {/* Search form — hidden when isSearchable is false on the SEARCH operation */}\n {isSearchable && (\n <form onSubmit={handleSubmit} role=\"search\" className=\"flex gap-element\">\n <div className=\"flex-1\">\n <InputRoot\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={tc('placeholder')}\n aria-label={tc('placeholder')}\n prefix={searchIcon}\n />\n </div>\n <Button type=\"submit\" disabled={isFetching}>\n {tc('search')}\n </Button>\n </form>\n )}\n\n {/* Filters and Sort controls — shown between search form and results */}\n {(filtersEnabled || (sortFields.length > 0 && hasSearched)) && (\n <div className=\"flex flex-col gap-element-sm\">\n {/* Filter controls — shown when filter fields exist */}\n {filtersEnabled && filterFields.length > 0 && (\n <ResourceLayout_FiltersControl\n resourceType={resourceType}\n filterFields={filterFields}\n currentFilters={filterValues}\n onFiltersChange={handleFiltersChange}\n />\n )}\n {/* Sort control — shown when sortFields exist and results are present */}\n {sortFields.length > 0 && hasSearched && (\n <ResourceLayout_SortControl\n resourceType={resourceType}\n sortFields={sortFields}\n currentSorts={sortStates}\n onSortChange={handleSortChange}\n />\n )}\n </div>\n )}\n\n {/* Selection + bulk actions — LOCAL to this search view (no global bar).\n The select-all/count/clear cluster leads; the contextual bulk actions\n trail (Search has no Create action to replace, so they simply appear\n while a selection is active). */}\n {/* Show the cluster whenever there ARE results OR a selection is still live\n (cross-page): otherwise paginating to an empty page would strip the\n clear/bulk affordances while items remain selected. */}\n {selectionEnabled && hasSearched && (results.length > 0 || selection.selectionCount > 0) && (\n <div className=\"flex flex-wrap items-center gap-element\">\n <CollectionSelectionControls\n count={selection.selectionCount}\n onClear={selection.clearSelection}\n {...(currentPageAllSelected && !selection.matchAllSelection && pagination.total > results.length\n ? {\n matchAllOffer: {\n matchedCount: pagination.total,\n // Search is where the offer earns its place: a person narrows to a population\n // and then wants to act on it, not on the twenty rows that fit. The query it\n // carries is this search — its term AND its filters — so the server\n // re-evaluates exactly what produced these results (#1461).\n onSelectAllMatching: () => selection.selectAllMatching({\n filters: filterValues as Record<string, unknown>,\n ...(debouncedQuery ? { search: debouncedQuery } : {}),\n matchedCount: pagination.total,\n }),\n },\n }\n : {})}\n {...(selection.matchAllSelection ? { isMatchAllSelected: true } : {})}\n />\n {selection.selectionCount > 0 && (\n <div className=\"ms-auto\">\n <ResourceLayout_OperationBulk\n resourceContext={resourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n selectedItems={selection.selectedItems}\n matchAllSelection={selection.matchAllSelection}\n explicitIdSelection={selection.explicitIdSelection}\n onSelectIds={selection.selectIds}\n idField={selectionIdField}\n onSelectionClear={selection.clearSelection}\n onSelectionReplace={selection.selectAll}\n />\n </div>\n )}\n </div>\n )}\n\n {/* Error state — E-2: replaced inline alert with ErrorDisplay */}\n {error && (\n <ErrorDisplay\n variant=\"error\"\n iconRef={StandardIconReference.ERROR_APPLICATION}\n title={resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'errorLoading',\n })}\n message={error.message}\n suggestion={\n error.code\n ? resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'errorCode',\n params: { code: error.code },\n })\n : undefined\n }\n />\n )}\n\n {/* A CREATE hosted IN PLACE — above the results, for the same reasons as the list host: it is\n an ADDITION rather than a replacement, and a form is not a list item. Outside the\n `hasSearched` gate deliberately, so authoring a new record does not vanish the moment the\n query is cleared. */}\n {inPlaceHost.isCreateActive && (\n <ResourceInPlaceOperationRow navigationZone={navigationZone} className=\"border border-border rounded-lg\" />\n )}\n\n {/* Results */}\n {hasSearched && !error && (\n <>\n {results.length === 0 ? (\n <ResourceEmptyState\n resourceType={resourceType}\n config={{ ...emptyStateConfig, primaryAction: false }}\n hasCreateOperation={false}\n variant=\"compact\"\n />\n ) : (\n /* Same contract as the LIST host: the select-all stands in the rows' own column, and\n the toolbar cluster above keeps only the count and clear. */\n <div className=\"space-y-item-sm\">\n {selectionEnabled && (\n <div className={CARDS_SELECTION_RAIL_CLASS} data-slot=\"collection-selection-rail-host\">\n <CollectionSelectionHeaderRail\n allSelected={currentPageAllSelected}\n onToggleAll={handleToggleAllCurrentPage}\n />\n </div>\n )}\n <ul\n role=\"list\"\n aria-label={resultsLabel}\n style={resolveCardsGridStyle(cardGridColumns)}\n className={cn(\n resolveCardsContainerClass(cardGridColumns),\n // L-1: subtle refresh affordance (results stay visible while updating)\n isRefreshing && \"opacity-70 transition-opacity duration-150 motion-reduce:transition-none\",\n )}\n aria-busy={isInitialLoad || isRefreshing || undefined}\n >\n {results.map((item, index) => {\n const fieldIdentifier = resourceConfig?.resourceFieldIdentifier as string;\n if (!fieldIdentifier) {\n throw FrontendResourceUtils.buildConfigurationError(\n ErrorCustomMessageReference.FRONTEND_RESOURCE_FIELD_IDENTIFIER_NOT_FOUND,\n { resourceType, component: 'ResourceLayoutPreset_Search' }\n );\n }\n const itemId = FrontendResourceUtils.getResourceObjectId(item, fieldIdentifier);\n\n if (inPlaceHost.isElementActive(itemId)) {\n return (\n <li key={itemId || index} className={cn('list-none', isCardGrid && CARDS_GRID_CELL_CLASS)}>\n <ResourceInPlaceOperationRow navigationZone={navigationZone} />\n </li>\n );\n }\n\n return (\n <li key={itemId || index} className={cn('list-none', isCardGrid && CARDS_GRID_CELL_CLASS)}>\n <ResourceListItemRenderer\n item={item}\n resourceType={resourceType}\n resourceConfig={resourceConfig!}\n registry={registry}\n summaryFields={summaryFields}\n fieldLabelsMap={fieldLabelsMap}\n tResourceFieldEnumValue={tResourceFieldEnumValue}\n onItemClick={handleResultClick}\n cardActionPlacement={cardActionPlacement}\n selectable={selectionEnabled}\n isSelected={selection.isSelected(item)}\n selectionActive={selection.selectionCount > 0}\n onToggleSelect={selection.toggleSelection}\n // Selection labels live in the LIST namespace and are reused\n // across surfaces (as CollectionSelectionControls does for\n // `selectAll`); gives the checkbox a \"Select row N\" name\n // instead of falling back to the item title.\n selectAriaLabel={tComponent(FrontendComponentType.RESOURCES_LAYOUTS_LIST, 'selectRow', { row: index + 1 })}\n interactiveClasses={{\n hover: ghostRecipe.states.hover,\n transition: ghostRecipe.motion.transition,\n }}\n />\n </li>\n );\n })}\n </ul>\n </div>\n )}\n\n {/* Pagination */}\n {/* (kept inside the `hasSearched && !error` branch so it stays in sync with results) */}\n <ResourceLayout_Pagination\n pagination={pagination}\n onPaginationChange={setPagination}\n />\n </>\n )}\n </div>\n </LoadingGate>\n );\n};\n\nexport function ResourceLayout_Search({ preset, ...props }: ResourceLayoutPreset_Search_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const ComponentOverride = resolveResourceOperationCustomView<ResourceLayoutPreset_Search_DefaultProps>(props.resourceContext.operation);\n const operationPreset = resolveResourceOperationPresetKey(props.resourceContext.operation);\n const resolvedPreset = preset ?? operationPreset ?? CorePreset_ResourceLayout_Search.DEFAULT;\n\n const body = ComponentOverride\n ? <ComponentOverride {...props} />\n : React.createElement(\n createComponentResolver<ResourceLayoutPreset_Search_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, 'ResourceLayout_Search')(resolvedPreset),\n props,\n );\n\n // SEARCH is a collection surface too — it renders rows, it offers selection, and each row carries\n // an action bar. Without the host here, the same INLINE action would transform its row in the LIST\n // and quietly degrade to an overlay in SEARCH: one operation, two behaviours, decided by which\n // screen the user happened to be on. Same reasoning as the cards↔table pair inside the list host.\n return (\n <InPlaceOperationProvider resourceType={props.resourceContext.resourceType}>\n {body}\n </InPlaceOperationProvider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ResourceLayout_Search.js","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_Search.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useMemo, useEffect, useState, useRef } from 'react';\n\nimport { useI18n } from '~wildo-frontend-lib/core/i18n/useI18n';\nimport { useEventBus } from '~wildo-frontend-lib/core/events/useEventBus';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useIconRegistry } from '~wildo-frontend-lib/core/icons/useIconRegistry';\nimport { useResourceRegistry } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { frontendResourceUtils, FrontendResourceUtils } from '~wildo-frontend-lib/core/resources/frontend-resource.utils';\nimport { useResourceOperationSurface } from '~wildo-frontend-lib/core/resources/useResourceOperationSurface';\nimport { FrontendComponentType, UIBehavior, InteractiveVariant } from '@wildo-ai/presets-components-models';\nimport { useUI } from '~wildo-frontend-lib/core/ui/useUI';\nimport { Button } from '~wildo-frontend-lib/components/actions/button';\nimport { InputRoot } from '~wildo-frontend-lib/components/form/controls/input';\nimport { ResourceListItemRenderer } from '~wildo-frontend-lib/components/resources/ResourceListItemRenderer';\nimport { ResourceInPlaceOperationRow } from '~wildo-frontend-lib/components/resources/ResourceInPlaceOperationRow';\nimport { InPlaceOperationProvider, useInPlaceOperation } from '~wildo-frontend-lib/core/resources/in-place/InPlaceOperationContext';\nimport { ResourceLayoutUtils } from '~wildo-frontend-lib/components/resources/resourceLayout.utils';\nimport {\n CoreResourceOperation,\n ResourcesConfig_OperationPathUtils,\n ErrorCustomMessageReference,\n type Resources_PaginationMetadata,\n type Resources_PaginatedResult,\n DataMode,\n} from '@wildo-ai/saas-models';\nimport {\n CardLayoutStyle,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useResourceSelection } from '~wildo-frontend-lib/core/resources/useResourceSelection';\nimport { ResourceLayout_OperationBulk } from '~wildo-frontend-lib/components/resources/ResourceLayout_OperationBulk';\nimport { CollectionSelectionControls } from '~wildo-frontend-lib/components/resources/CollectionSelectionControls';\nimport { CollectionSelectionHeaderRail } from '~wildo-frontend-lib/components/resources/CollectionSelectionHeaderRail';\nimport { resolveCardsContainerClass, resolveCardsGridStyle, CARDS_SELECTION_RAIL_CLASS, CARDS_GRID_CELL_CLASS } from '~wildo-frontend-lib/components/resources/collection-card-layout.utils';\nimport { ResourceLayout_Header } from '~wildo-frontend-lib/components/resources/ResourceLayout_Header';\nimport { StandardIconReference, IconSize } from '~wildo-frontend-lib/core/icons/icon-registry.frontend.schemas';\nimport { ResourcesConfigOperationsUrlsBuilderUtils } from '@wildo-ai/saas-models';\nimport { ResourceSearchCallParameters } from '~wildo-frontend-lib/core/requests/wildo-http-client-resources.frontend.service';\nimport { useSearchParams } from 'react-router-dom';\nimport { type DisplayableError, extractErrorInfo } from '~wildo-frontend-lib/core/errors/errors.frontend.schemas';\nimport { useUserFacingErrorMessage } from '~wildo-frontend-lib/core/errors/useUserFacingErrorMessage';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { ResourceLayout_Pagination } from '~wildo-frontend-lib/components/resources/ResourceLayout_Pagination';\nimport { ResourceLayout_SortControl, type SortState } from '~wildo-frontend-lib/components/resources/ResourceLayout_SortControl';\nimport { ResourceLayout_FiltersControl, type FilterValues } from '~wildo-frontend-lib/components/resources/ResourceLayout_FiltersControl';\nimport { ErrorDisplay } from '~wildo-frontend-lib/components/feedback/error-display';\nimport { Skeleton } from '~wildo-frontend-lib/components/feedback/skeleton';\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 { CorePreset_ResourceLayout_Search } 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 { LoadingGate } from '~wildo-frontend-lib/core/loading/LoadingGate';\nimport { useComponentLoading } from '~wildo-frontend-lib/core/loading/useComponentLoading';\nimport { buildResourceLoadingScope } from '~wildo-frontend-lib/core/loading/loading-scope.frontend.utils';\nimport { resolveComponentLabel } from '~wildo-frontend-lib/core/i18n/component-label-resolution.utils';\nimport { cn } from '~wildo-frontend-lib/core/ui/cn';\nimport { pickPreferredOperationForCoreSemanticAddressability } from '~wildo-frontend-lib/core/resources/resource-addressability.frontend.utils';\n\n// --- Contract ---\nexport interface ResourceLayoutPreset_Search_DefaultProps extends BaseResourcesLayoutProps {\n dataMode?: DataMode;\n}\n\nconst logger = LoggerFrontendService.getLogger();\n\ninterface SearchResult {\n id: string;\n [key: string]: any;\n}\n\nexport const ResourceLayoutPreset_Search_Default = ({\n resourceContext,\n navigationZone,\n navigationInitiator,\n dataMode: propDataMode,\n}: ResourceLayoutPreset_Search_DefaultProps): React.JSX.Element | null => {\n const {\n resourceType,\n operation,\n resourceConfig,\n operationInitiator,\n contextualParameters,\n navigateToResourceOperation,\n } = useResourceOperationSurface({\n resourceContext,\n navigationZone,\n navigationInitiator,\n });\n const { tComponent, tResourceFieldDisplay, tResourceFieldEnumValue } = useI18n({\n // LIST's vocabulary too: a search that matched nothing uses the same \"no matching items\" words the\n // list shows for its own narrowed-empty state.\n component: [FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, FrontendComponentType.RESOURCES_LAYOUTS_LIST],\n resource: resourceType,\n });\n // Stable identity, so the search effect may call it without listing it.\n const toUserFacingErrorMessage = useUserFacingErrorMessage();\n const tc = (key: string) => tComponent(FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, key);\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n const { registry, doOperation } = useResourceRegistry();\n const [searchParams] = useSearchParams();\n\n // Cards presentation + selection, authored on the SEARCH operation's\n // `collectionDisplayConfig` (parity with the LIST view). Search is cards-only\n // (no table body), so `cardLayout`/`selectable` apply directly to the results\n // list; `cardActionPlacement` is inert here (search cards render no per-item\n // operations today) but threaded for symmetry.\n const collectionDisplayConfig = operation.operationFrontendConfig?.collectionDisplayConfig;\n const cardLayout = collectionDisplayConfig?.cardLayout;\n const cardActionPlacement = collectionDisplayConfig?.cardActionPlacement;\n const selectionEnabled = collectionDisplayConfig?.selectable ?? false;\n const isCardGrid = cardLayout?.style === CardLayoutStyle.GRID;\n // Narrow the union once, then feed both the container class and the intrinsic\n // grid-template-columns style (container-responsive; collapses in narrow panes).\n const cardGridColumns = cardLayout?.style === CardLayoutStyle.GRID ? cardLayout.columns : undefined;\n // Key selection on the resource's addressable identifier (same field\n // navigation + the bulk payload use) — threaded to BOTH the hook and the bulk\n // bar so selection identity and bulk-target identity can never diverge.\n const selectionIdField = resourceConfig?.resourceFieldIdentifier as string | undefined;\n const selection = useResourceSelection<SearchResult>({ idField: selectionIdField });\n // Which result row, if any, is transformed by an INLINE action. Provided by the wrapper below.\n const inPlaceHost = useInPlaceOperation();\n\n // State\n const [searchQuery, setSearchQuery] = useState('');\n const [debouncedQuery, setDebouncedQuery] = useState('');\n const [results, setResults] = useState<SearchResult[]>([]);\n // Current-page select-all (additive; preserves any cross-page selection).\n const currentPageAllSelected = results.length > 0 && results.every((r) => selection.isSelected(r));\n const handleToggleAllCurrentPage = useCallback(() => {\n if (results.length > 0 && results.every((r) => selection.isSelected(r))) {\n results.forEach((r) => selection.deselectItem(r));\n } else {\n results.forEach((r) => selection.selectItem(r));\n }\n }, [results, selection]);\n const [error, setError] = useState<DisplayableError | null>(null);\n const [hasSearched, setHasSearched] = useState(false);\n const [pagination, setPagination] = useState<Resources_PaginationMetadata>(() => {\n const searchOp = operation as { pageSize?: number; maxPaginatedResultPerPageLimit?: number };\n const configuredPageSize = searchOp?.pageSize ?? 20;\n const maxLimit = searchOp?.maxPaginatedResultPerPageLimit;\n const pageSize = maxLimit ? Math.min(configuredPageSize, maxLimit) : configuredPageSize;\n return { page: 1, limit: pageSize, total: 0, totalPages: 0 };\n });\n const [isFetching, setIsFetching] = useState(false);\n // Multi-field sort, highest priority first. Empty = no sorting.\n const [sortStates, setSortStates] = useState<SortState[]>([]);\n const [filterValues, setFilterValues] = useState<FilterValues>({});\n\n // Clear selection when the visible result set is redefined by a new query or a\n // filter change — a stale selection would let the bulk bar act on records that\n // no longer match / are no longer shown. Pagination is intentionally excluded.\n useEffect(() => {\n selection.clearSelection();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [debouncedQuery, filterValues]);\n\n const i18nKeys = useMemo(() => [\n `resources.${resourceType}`,\n `components.${FrontendComponentType.RESOURCES_LAYOUTS_SEARCH}`,\n ], [resourceType]);\n\n // L-1: Tier-2 derived loading state. Distinguishes initial load (skeleton)\n // from refresh (subtle dim). Driven by the http client's resource loading\n // events (LOADING_RESOURCE_START/END) for this exact resource+operation.\n const operationIdForLoading = (operation as { operationIdentifier?: string })?.operationIdentifier ?? CoreResourceOperation.SEARCH;\n const { isInitialLoad, isRefreshing } = useComponentLoading(\n buildResourceLoadingScope({\n resourceType,\n operation: operationIdForLoading,\n }),\n );\n\n // Refs for stable function references and objects (avoid infinite loops)\n const doOperationRef = useRef(doOperation);\n const resourceContextRef = useRef(resourceContext);\n\n const sortStatesRef = useRef(sortStates);\n const filterValuesRef = useRef(filterValues);\n\n // Keep refs updated\n doOperationRef.current = doOperation;\n resourceContextRef.current = resourceContext;\n sortStatesRef.current = sortStates;\n filterValuesRef.current = filterValues;\n\n // Build stable key for context identifiers\n const contextResourceIdentifiersKey = useMemo(() => {\n return FrontendResourceUtils.buildContextResourceIdentifiersKey(resourceContext.contextResourceIdentifiers);\n }, [resourceContext.contextResourceIdentifiers]);\n\n // Determine if free-text search is enabled on this SEARCH operation\n // isSearchable defaults to true when a SEARCH operation exists (factory default)\n // When false, the search bar is hidden but filters/sort/results still render\n const isSearchable = useMemo(() => {\n return (operation as { isSearchable?: boolean })?.isSearchable !== false;\n }, [operation]);\n\n const summaryFields = useMemo<string[]>(() => {\n return ResourceLayoutUtils.detectSummaryFields(resourceConfig);\n }, [resourceConfig]);\n\n // Resolve i18n field labels for summary fields\n const resultsLabel = useMemo(\n () => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'resultsLabel',\n }),\n [tComponent],\n );\n\n const fieldLabelsMap = useMemo<Record<string, string>>(() => {\n const result: Record<string, string> = {};\n for (const fieldName of summaryFields) {\n result[fieldName] = tResourceFieldDisplay(resourceType, fieldName, 'label');\n }\n return result;\n }, [summaryFields, resourceType, tResourceFieldDisplay]);\n\n const resolveReadOperationForIdentifiers = useCallback((\n contextResourceIdentifiers: typeof resourceContext.contextResourceIdentifiers,\n ) => {\n if (!resourceConfig) {\n return null;\n }\n\n return pickPreferredOperationForCoreSemanticAddressability({\n resourceConfig,\n operations: resourceConfig.operations ?? [],\n coreOperation: CoreResourceOperation.READ,\n registry,\n hasResourceId: frontendResourceUtils.getResourceId(contextResourceIdentifiers[resourceType]).length > 0,\n requireFrontendAddressable: true,\n contextResourceIdentifiers,\n contextualParameters: FrontendResourceUtils.buildContextualParameters(\n contextResourceIdentifiers,\n registry,\n ),\n }) ?? null;\n }, [registry, resourceConfig, resourceType]);\n\n // Read sortFields and filterFields from SEARCH operation directly.\n // Transport context: exclude transport-pinned fields (primary-scope FK +\n // selected-route URL parameters) and classify FK fields as reference\n // selectors. See FilterFieldTransportContext.\n const { sortFields, filterFields, filtersEnabled } = useMemo(() => {\n const searchOp = operation as { sortFields?: readonly string[]; filterFields?: Record<string, unknown> };\n const sortFields = searchOp?.sortFields ?? [];\n const filterFields = ResourceLayoutUtils.parseFilterFieldDefinitions(\n searchOp?.filterFields,\n resourceConfig\n ? {\n registry,\n resourceConfig,\n operation,\n contextualParameters,\n parentResourcesRequirements: resourceContext.parentResourcesRequirements,\n }\n : undefined,\n );\n // A field the host pinned is not the reader's to filter (#1630): its value is fixed on every fetch.\n const readerFilterFields = ResourceLayoutUtils.withoutPinnedFilterFields(filterFields, resourceContext.pinnedFilters);\n // SEARCH doesn't have filtersEnabled; show filters when filterFields exist\n const filtersEnabled = readerFilterFields.length > 0;\n return { sortFields, filterFields: readerFilterFields, filtersEnabled };\n }, [operation, registry, resourceConfig, contextualParameters, resourceContext.parentResourcesRequirements, resourceContext.pinnedFilters]);\n\n // Extract dataMode: Component prop > Query param > Backend default\n const dataMode = useMemo(() => {\n return frontendResourceUtils.extractDataMode(searchParams, propDataMode);\n }, [searchParams, propDataMode]);\n\n // Build operation path for SEARCH from the operation object on context\n const operationPathKey = useMemo(() => {\n return ResourcesConfig_OperationPathUtils.createOperationPathKeyFromOperation(operation);\n }, [operation]);\n\n // Debounce search query\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedQuery(searchQuery);\n }, 300);\n return () => clearTimeout(timer);\n }, [searchQuery]);\n\n // Stable sort key for fetch dedup\n const sortKey = sortStates.map(s => `${s.field}:${s.direction}`).join(',');\n const filterKey = useMemo(() => JSON.stringify(filterValues), [filterValues]);\n // Host-pinned filters (#1630) are part of the fetch identity: a host that re-pins refetches.\n const pinnedFiltersKey = useMemo(() => JSON.stringify(resourceContext.pinnedFilters ?? {}), [resourceContext.pinnedFilters]);\n\n // Announce this collection surface's ACTIVE FILTER SET. The surface states a\n // fact about itself and owns no scope semantics — `AppScopeContext` decides\n // whether a filter lands on a declared app-scope field (so the app-shell\n // scope control mirrors a listing filtered to one record).\n //\n // Emitted from ONE effect keyed on the serialized filter set rather than from\n // each setter: the panel, the quick-filter tabs and any future filter writer\n // all flow through this single announcement by construction, so a new setter\n // cannot silently stop announcing.\n const { emit: emitFrontendEvent } = useEventBus();\n // The READER's filters only, not the host's pins (#1630): the announcement mirrors a reader's choice.\n useEffect(() => {\n emitFrontendEvent(FrontendEvents.RESOURCE_COLLECTION_FILTERS_CHANGED, {\n resourceType,\n filterValues: filterValuesRef.current as Record<string, unknown>,\n });\n // `filterKey` is the serialized filter set — the value identity that must\n // drive the announcement (the object identity changes on every render).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filterKey, resourceType, emitFrontendEvent]);\n const fetchKey = `${resourceType}|${operationPathKey}|${contextResourceIdentifiersKey}|${debouncedQuery}|${pagination.page}|${pagination.limit}|${sortKey}|${filterKey}|${pinnedFiltersKey}|${isSearchable}`;\n\n // Execute search when debounced query changes - use refs to avoid infinite loops.\n // When isSearchable is false, auto-trigger an initial filter/sort-only search.\n // StrictMode double-mounts run this effect twice; the `cancelled` flag plus\n // cleanup disposes of the first mount's in-flight search so the second\n // mount's result lands in state. Do NOT add a per-fetchKey dedup Set —\n // entries that survive cleanup turn the second mount into a no-op while the\n // first mount's result is silently dropped by `if (cancelled) return`,\n // leaving the surface stuck in `isFetching` forever.\n useEffect(() => {\n if (!debouncedQuery && !hasSearched && isSearchable) return;\n\n let cancelled = false;\n let loadingStopped = false;\n\n const stopLoading = () => {\n if (!loadingStopped) {\n loadingStopped = true;\n setIsFetching(false);\n }\n };\n\n const executeSearch = async () => {\n setIsFetching(true);\n setError(null);\n setHasSearched(true);\n\n try {\n // Build filters — only include non-empty values. The host's pins apply on top, and win on a shared key.\n const mergedFilters = ResourceLayoutUtils.withPinnedFilters(filterValuesRef.current, resourceContextRef.current.pinnedFilters);\n const activeFilters = Object.keys(mergedFilters).length > 0\n ? mergedFilters\n : undefined;\n\n const searchParams: ResourceSearchCallParameters = {\n contextualParameters,\n searchQuery: debouncedQuery || undefined,\n filters: activeFilters,\n pagination: {\n page: pagination.page,\n limit: pagination.limit,\n },\n sort: sortStatesRef.current.length ? [...sortStatesRef.current] : undefined,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n dataMode, // Pass dataMode to API call\n };\n\n const result = await doOperationRef.current(operationPathKey, searchParams);\n\n if (cancelled) return;\n\n // Handle paginated response format (Resources_PaginatedResult)\n if (result && typeof result === 'object' && 'data' in result && 'pagination' in result) {\n const paginatedResult = result as Resources_PaginatedResult<SearchResult>;\n setResults(paginatedResult.data);\n setPagination(paginatedResult.pagination);\n } else if (Array.isArray(result)) {\n // Legacy: raw array response (internal calls)\n setResults(result);\n setPagination(prev => ({ ...prev, total: result.length, totalPages: 1 }));\n }\n } catch (err) {\n if (cancelled) return;\n const errorInfo = extractErrorInfo(err);\n // Rendered to the person: localized text, never the reference or the raw message (#1160).\n setError({ ...errorInfo, message: toUserFacingErrorMessage(err) });\n logger.error('[ResourceLayoutPreset_Search_Default] Search error:', { ...errorInfo, error: err });\n } finally {\n if (!cancelled) {\n stopLoading();\n }\n }\n };\n\n executeSearch();\n\n return () => {\n cancelled = true;\n stopLoading();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- using refs for unstable functions/objects; fetchKey handles all deps\n }, [fetchKey]);\n\n // Handle navigation to READ (result click)\n // Uses resourceContextRef to avoid unstable resourceContext object in deps\n const handleResultClick = useCallback((item: SearchResult) => {\n if (!resourceConfig) return;\n\n const itemId = FrontendResourceUtils.getResourceObjectId(\n item as Record<string, unknown>,\n resourceConfig.resourceFieldIdentifier as string,\n );\n // Fail closed: a result whose id cannot be resolved must NOT navigate to\n // `/<resource>/undefined` — an unrenderable, CPU-pegging detail surface.\n if (!itemId) {\n logger.error('[ResourceLayoutPreset_Search] Result click ignored: could not resolve resource id from search result.', {\n resourceType,\n fieldIdentifier: resourceConfig.resourceFieldIdentifier,\n itemKeys: Object.keys(item ?? {}),\n });\n return;\n }\n\n const contextResourceIdentifiers = {\n ...resourceContextRef.current.contextResourceIdentifiers,\n [resourceType]: itemId,\n };\n const itemReadOperation = resolveReadOperationForIdentifiers(contextResourceIdentifiers);\n if (!itemReadOperation) return;\n\n navigateToResourceOperation({\n operation: itemReadOperation,\n contextResourceIdentifiers,\n parentResourcesRequirements: resourceContextRef.current.parentResourcesRequirements,\n initiatorOverride: operationInitiator,\n });\n }, [resourceConfig, resourceConfig?.resourceFieldIdentifier, resourceType, navigateToResourceOperation, operationInitiator, resolveReadOperationForIdentifiers]);\n\n // Handle sort change — stable callback for the sort control.\n const handleSortChange = useCallback((newSorts: SortState[]) => {\n setSortStates(newSorts);\n setPagination(prev => ({ ...prev, page: 1 }));\n }, []);\n\n // Handle filter change — stable callback for FiltersControl\n const handleFiltersChange = useCallback((newFilters: FilterValues) => {\n setFilterValues(newFilters);\n setPagination(prev => ({ ...prev, page: 1 }));\n }, []);\n\n // Handle search form submit\n const handleSubmit = useCallback((e: React.SubmitEvent<HTMLFormElement>) => {\n e.preventDefault();\n setDebouncedQuery(searchQuery);\n }, [searchQuery]);\n\n // Render icons\n const searchIcon = renderIcon(\n StandardIconReference.SEARCH,\n { size: IconSize.SM }\n );\n\n return (\n <LoadingGate\n i18nKeys={i18nKeys}\n readiness={[{ id: 'search-initial-load', isReady: !isInitialLoad }]}\n renderLoading={() => (\n <Skeleton\n template=\"list\"\n density=\"auto\"\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n />\n )}\n >\n <div className=\"space-y-section\">\n {/* Header with back button */}\n <ResourceLayout_Header\n resourceContext={resourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n />\n\n {/* Search form — hidden when isSearchable is false on the SEARCH operation */}\n {isSearchable && (\n <form onSubmit={handleSubmit} role=\"search\" className=\"flex gap-element\">\n <div className=\"flex-1\">\n <InputRoot\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder={tc('placeholder')}\n aria-label={tc('placeholder')}\n prefix={searchIcon}\n />\n </div>\n <Button type=\"submit\" disabled={isFetching}>\n {tc('search')}\n </Button>\n </form>\n )}\n\n {/* Filters and Sort controls — shown between search form and results */}\n {(filtersEnabled || (sortFields.length > 0 && hasSearched)) && (\n <div className=\"flex flex-col gap-element-sm\">\n {/* Filter controls — shown when filter fields exist */}\n {filtersEnabled && filterFields.length > 0 && (\n <ResourceLayout_FiltersControl\n resourceType={resourceType}\n filterFields={filterFields}\n currentFilters={filterValues}\n onFiltersChange={handleFiltersChange}\n />\n )}\n {/* Sort control — shown when sortFields exist and results are present */}\n {sortFields.length > 0 && hasSearched && (\n <ResourceLayout_SortControl\n resourceType={resourceType}\n sortFields={sortFields}\n currentSorts={sortStates}\n onSortChange={handleSortChange}\n />\n )}\n </div>\n )}\n\n {/* Selection + bulk actions — LOCAL to this search view (no global bar).\n The select-all/count/clear cluster leads; the contextual bulk actions\n trail (Search has no Create action to replace, so they simply appear\n while a selection is active). */}\n {/* Show the cluster whenever there ARE results OR a selection is still live\n (cross-page): otherwise paginating to an empty page would strip the\n clear/bulk affordances while items remain selected. */}\n {selectionEnabled && hasSearched && (results.length > 0 || selection.selectionCount > 0) && (\n <div className=\"flex flex-wrap items-center gap-element\">\n <CollectionSelectionControls\n count={selection.selectionCount}\n onClear={selection.clearSelection}\n {...(currentPageAllSelected && !selection.matchAllSelection && pagination.total > results.length\n ? {\n matchAllOffer: {\n matchedCount: pagination.total,\n // Search is where the offer earns its place: a person narrows to a population\n // and then wants to act on it, not on the twenty rows that fit. The query it\n // carries is this search — its term AND its filters — so the server\n // re-evaluates exactly what produced these results (#1461).\n onSelectAllMatching: () => selection.selectAllMatching({\n // The host's pins included (#1630): \"all matching\" is what this listing matches.\n filters: ResourceLayoutUtils.withPinnedFilters(filterValues, resourceContext.pinnedFilters) as Record<string, unknown>,\n ...(debouncedQuery ? { search: debouncedQuery } : {}),\n matchedCount: pagination.total,\n }),\n },\n }\n : {})}\n {...(selection.matchAllSelection ? { isMatchAllSelected: true } : {})}\n />\n {selection.selectionCount > 0 && (\n <div className=\"ms-auto\">\n <ResourceLayout_OperationBulk\n resourceContext={resourceContext}\n navigationZone={navigationZone}\n navigationInitiator={navigationInitiator}\n selectedItems={selection.selectedItems}\n matchAllSelection={selection.matchAllSelection}\n explicitIdSelection={selection.explicitIdSelection}\n onSelectIds={selection.selectIds}\n idField={selectionIdField}\n onSelectionClear={selection.clearSelection}\n onSelectionReplace={selection.selectAll}\n />\n </div>\n )}\n </div>\n )}\n\n {/* Error state — E-2: replaced inline alert with ErrorDisplay */}\n {error && (\n <ErrorDisplay\n variant=\"error\"\n iconRef={StandardIconReference.ERROR_APPLICATION}\n title={resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'errorLoading',\n })}\n message={error.message}\n suggestion={\n error.code\n ? resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_SEARCH,\n key: 'errorCode',\n params: { code: error.code },\n })\n : undefined\n }\n />\n )}\n\n {/* A CREATE hosted IN PLACE — above the results, for the same reasons as the list host: it is\n an ADDITION rather than a replacement, and a form is not a list item. Outside the\n `hasSearched` gate deliberately, so authoring a new record does not vanish the moment the\n query is cleared. */}\n {inPlaceHost.isCreateActive && (\n <ResourceInPlaceOperationRow navigationZone={navigationZone} className=\"border border-border rounded-lg\" />\n )}\n\n {/* Results */}\n {hasSearched && !error && (\n <>\n {results.length === 0 ? (\n /* A search that matched nothing is not an empty collection. The resource's empty state\n says there are none YET and offers the first one, which is false here; this says the\n query matched nothing, in the list's own words for the same case. */\n <div className=\"text-center py-section text-muted-foreground text-sm\" role=\"status\">\n {resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.RESOURCES_LAYOUTS_LIST,\n key: 'noSearchResults',\n })}\n </div>\n ) : (\n /* Same contract as the LIST host: the select-all stands in the rows' own column, and\n the toolbar cluster above keeps only the count and clear. */\n <div className=\"space-y-item-sm\">\n {selectionEnabled && (\n <div className={CARDS_SELECTION_RAIL_CLASS} data-slot=\"collection-selection-rail-host\">\n <CollectionSelectionHeaderRail\n allSelected={currentPageAllSelected}\n onToggleAll={handleToggleAllCurrentPage}\n />\n </div>\n )}\n <ul\n role=\"list\"\n aria-label={resultsLabel}\n style={resolveCardsGridStyle(cardGridColumns)}\n className={cn(\n resolveCardsContainerClass(cardGridColumns),\n // L-1: subtle refresh affordance (results stay visible while updating)\n isRefreshing && \"opacity-70 transition-opacity duration-150 motion-reduce:transition-none\",\n )}\n aria-busy={isInitialLoad || isRefreshing || undefined}\n >\n {results.map((item, index) => {\n const fieldIdentifier = resourceConfig?.resourceFieldIdentifier as string;\n if (!fieldIdentifier) {\n throw FrontendResourceUtils.buildConfigurationError(\n ErrorCustomMessageReference.FRONTEND_RESOURCE_FIELD_IDENTIFIER_NOT_FOUND,\n { resourceType, component: 'ResourceLayoutPreset_Search' }\n );\n }\n const itemId = FrontendResourceUtils.getResourceObjectId(item, fieldIdentifier);\n\n if (inPlaceHost.isElementActive(itemId)) {\n return (\n <li key={itemId || index} className={cn('list-none', isCardGrid && CARDS_GRID_CELL_CLASS)}>\n <ResourceInPlaceOperationRow navigationZone={navigationZone} />\n </li>\n );\n }\n\n return (\n <li key={itemId || index} className={cn('list-none', isCardGrid && CARDS_GRID_CELL_CLASS)}>\n <ResourceListItemRenderer\n item={item}\n resourceType={resourceType}\n resourceConfig={resourceConfig!}\n registry={registry}\n summaryFields={summaryFields}\n fieldLabelsMap={fieldLabelsMap}\n tResourceFieldEnumValue={tResourceFieldEnumValue}\n onItemClick={handleResultClick}\n cardActionPlacement={cardActionPlacement}\n selectable={selectionEnabled}\n isSelected={selection.isSelected(item)}\n selectionActive={selection.selectionCount > 0}\n onToggleSelect={selection.toggleSelection}\n // Selection labels live in the LIST namespace and are reused\n // across surfaces (as CollectionSelectionControls does for\n // `selectAll`); gives the checkbox a \"Select row N\" name\n // instead of falling back to the item title.\n selectAriaLabel={tComponent(FrontendComponentType.RESOURCES_LAYOUTS_LIST, 'selectRow', { row: index + 1 })}\n interactiveClasses={{\n hover: ghostRecipe.states.hover,\n transition: ghostRecipe.motion.transition,\n }}\n />\n </li>\n );\n })}\n </ul>\n </div>\n )}\n\n {/* Pagination */}\n {/* (kept inside the `hasSearched && !error` branch so it stays in sync with results) */}\n <ResourceLayout_Pagination\n pagination={pagination}\n onPaginationChange={setPagination}\n />\n </>\n )}\n </div>\n </LoadingGate>\n );\n};\n\nexport function ResourceLayout_Search({ preset, ...props }: ResourceLayoutPreset_Search_DefaultProps & ComponentPresetProps): React.JSX.Element {\n const ComponentOverride = resolveResourceOperationCustomView<ResourceLayoutPreset_Search_DefaultProps>(props.resourceContext.operation);\n const operationPreset = resolveResourceOperationPresetKey(props.resourceContext.operation);\n const resolvedPreset = preset ?? operationPreset ?? CorePreset_ResourceLayout_Search.DEFAULT;\n\n const body = ComponentOverride\n ? <ComponentOverride {...props} />\n : React.createElement(\n createComponentResolver<ResourceLayoutPreset_Search_DefaultProps>(FrontendComponentType.RESOURCES_LAYOUTS_SEARCH, 'ResourceLayout_Search')(resolvedPreset),\n props,\n );\n\n // SEARCH is a collection surface too — it renders rows, it offers selection, and each row carries\n // an action bar. Without the host here, the same INLINE action would transform its row in the LIST\n // and quietly degrade to an overlay in SEARCH: one operation, two behaviours, decided by which\n // screen the user happened to be on. Same reasoning as the cards↔table pair inside the list host.\n return (\n <InPlaceOperationProvider resourceType={props.resourceContext.resourceType}>\n {body}\n </InPlaceOperationProvider>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceLayout_SemanticOperationFallback.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_SemanticOperationFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ResourceLayout_SemanticOperationFallback.d.ts","sourceRoot":"","sources":["../../../../../src/components/resources/ResourceLayout_SemanticOperationFallback.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAqBzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAK/F;;;;;;;;GAQG;AACH,oBAAY,2BAA2B;IACrC,4FAA4F;IAC5F,IAAI,SAAS;IACb;;;OAGG;IACH,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,4CAA6C,SAAQ,wBAAwB;IAC5F,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,oFAAoF;IACpF,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,wCAAwC,CAAC,EACvD,GAAG,KAAK,EACT,EAAE,4CAA4C,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA+KzE"}
|