@acorex/modules 21.0.0-next.31 → 21.0.0-next.34

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.
Files changed (65) hide show
  1. package/fesm2022/{acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs → acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs} +10 -11
  2. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-WuqoH4OL.mjs.map +1 -0
  3. package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs} +2 -2
  4. package/fesm2022/{acorex-modules-ai-management-agent.entity-C2APPc7g.mjs.map → acorex-modules-ai-management-agent.entity-DK9GNMdR.mjs.map} +1 -1
  5. package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-D_54-MqC.mjs.map → acorex-modules-ai-management-ai-delegated-agent-transcript-popup.component-CWXEW9yL.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs → acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs} +6 -4
  8. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-CNKwIqUE.mjs.map +1 -0
  9. package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-ai-management-assist.entity-D7sIFWTx.mjs.map → acorex-modules-ai-management-assist.entity-DX2U9sd5.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs → acorex-modules-ai-management-index-KX3TVRXr.mjs} +2 -2
  12. package/fesm2022/{acorex-modules-ai-management-index-DoOTRMvM.mjs.map → acorex-modules-ai-management-index-KX3TVRXr.mjs.map} +1 -1
  13. package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs → acorex-modules-ai-management-model.entity-BeuDUahR.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-ai-management-model.entity-xhfG1tFZ.mjs.map → acorex-modules-ai-management-model.entity-BeuDUahR.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs} +2 -2
  16. package/fesm2022/{acorex-modules-ai-management-open-ai-endpoint.entity-Bot8Ctq1.mjs.map → acorex-modules-ai-management-open-ai-endpoint.entity-D-9unl6i.mjs.map} +1 -1
  17. package/fesm2022/acorex-modules-ai-management.mjs +1 -1
  18. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs} +25 -25
  19. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-D1DhOSYU.mjs.map → acorex-modules-assessment-management-acorex-modules-assessment-management-BNK6C-Ng.mjs.map} +1 -1
  20. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs} +2 -2
  21. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BwwarDP0.mjs.map → acorex-modules-assessment-management-assessment-case.entity-Ds8pRzvE.mjs.map} +1 -1
  22. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs} +2 -2
  23. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-CQNn4Ryb.mjs.map → acorex-modules-assessment-management-assessment-session.entity-tq1Q4wkS.mjs.map} +1 -1
  24. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs} +2 -2
  25. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-AptlLpWh.mjs.map → acorex-modules-assessment-management-fill-assessment-session.command-yf0PnWC0.mjs.map} +1 -1
  26. package/fesm2022/{acorex-modules-assessment-management-index-BBzx9W5u.mjs → acorex-modules-assessment-management-index-B2SncZAW.mjs} +6 -6
  27. package/fesm2022/acorex-modules-assessment-management-index-B2SncZAW.mjs.map +1 -0
  28. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-assessment-management-preview-question.command-BMoPn_op.mjs.map → acorex-modules-assessment-management-preview-question.command-DPzL8C44.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs} +2 -2
  31. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-BI7JJIbZ.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-BrI5gFtx.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-BfWuSVG9.mjs.map → acorex-modules-assessment-management-question-bank-interface-editor-widget-edit.component-XD5IJpvW.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-CcDAcPJJ.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-CZ32sQ9M.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-assessment-management-questionnaire-calculation.entity-DC7xwETF.mjs.map → acorex-modules-assessment-management-questionnaire-calculation.entity-C7gf4s1y.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-DF7F-quh.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-BZyIlYWg.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs} +3 -3
  41. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-zybar1sK.mjs.map → acorex-modules-assessment-management-questionnaire.entity-CmmThk2f.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-assessment-management-save-questionnaire-questions.command-DqJ-_k-4.mjs.map → acorex-modules-assessment-management-save-questionnaire-questions.command-GLqvK8wB.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-IHxXETJQ.mjs.map → acorex-modules-assessment-management-view-session-answers.command-CU1TVonZ.mjs.map} +1 -1
  46. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  47. package/fesm2022/acorex-modules-dashboard-management.mjs +4366 -3497
  48. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  49. package/fesm2022/acorex-modules-data-management.mjs +3 -2
  50. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  51. package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs +784 -0
  52. package/fesm2022/acorex-modules-organization-management-org-chart.page-eRTHzLDQ.mjs.map +1 -0
  53. package/fesm2022/acorex-modules-organization-management.mjs +3 -9
  54. package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
  55. package/fesm2022/acorex-modules-workflow-management.mjs +488 -105
  56. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  57. package/package.json +2 -2
  58. package/types/acorex-modules-dashboard-management.d.ts +397 -218
  59. package/types/acorex-modules-organization-management.d.ts +3 -12
  60. package/types/acorex-modules-workflow-management.d.ts +27 -0
  61. package/fesm2022/acorex-modules-ai-management-acorex-modules-ai-management-B6lnG21F.mjs.map +0 -1
  62. package/fesm2022/acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs.map +0 -1
  63. package/fesm2022/acorex-modules-assessment-management-index-BBzx9W5u.mjs.map +0 -1
  64. package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs +0 -638
  65. package/fesm2022/acorex-modules-organization-management-org-chart.page-E0hy7dXg.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-ai-management-assist-delegated-agent-configurator-widget-edit.component-pG9y9bqO.mjs","sources":["../../../../libs/modules/ai-management/src/lib/features/assist-delegated-agent-configurator/delegated-parameter-definitions-to-widget-properties.ts","../../../../libs/modules/ai-management/src/lib/features/assist-delegated-agent-configurator/assist-delegated-agent-configurator-widget-edit.component.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPWidgetProperty, AXPWidgetPropertyGroup, createStringProperty } from '@acorex/platform/layout/widget-core';\n\n//#endregion\n\n//#region ---- Delegated definitions → property viewer ----\n\ntype DelegatedParameterDefinition = {\n name: string;\n binding: string;\n title?: string;\n description?: string;\n defaultValue?: unknown;\n group?: { name: string; title: string; order?: number };\n};\n\n/**\n * Maps delegated parameter definitions to property-viewer compatible fields.\n */\nexport function mapDelegatedParameterDefinitionsToWidgetProperties(\n defs: ReadonlyArray<DelegatedParameterDefinition>,\n): AXPWidgetProperty[] {\n const defaultGroup: AXPWidgetPropertyGroup = {\n name: 'delegated-agent-parameters',\n title: 'Delegated parameters',\n order: 1,\n };\n\n const filtered = defs.filter((d) => d.binding === 'assist_locked' || d.binding === 'assist_default');\n const source =\n filtered.length > 0\n ? filtered\n : [{ name: 'query', binding: 'assist_default', title: 'Query', description: '' }];\n\n return source.map((d) => {\n const group: AXPWidgetPropertyGroup = d.group\n ? {\n name: d.group.name,\n title: d.group.title,\n order: d.group.order ?? 0,\n }\n : defaultGroup;\n\n const defaultStr =\n d.defaultValue !== undefined && d.defaultValue !== null ? String(d.defaultValue) : undefined;\n\n const property = createStringProperty({\n name: d.name,\n title: (d.title?.trim() || d.name) as string,\n path: d.name,\n group,\n visible: true,\n defaultValue: defaultStr,\n });\n\n const desc = typeof d.description === 'string' ? d.description.trim() : '';\n return desc ? { ...property, description: desc } : property;\n });\n}\n\nexport function isDelegatedParameterDefinitionList(value: unknown): value is DelegatedParameterDefinition[] {\n if (!Array.isArray(value) || value.length === 0) {\n return false;\n }\n\n const first = value[0];\n if (first == null || typeof first !== 'object' || Array.isArray(first)) {\n return false;\n }\n\n return (\n typeof (first as Record<string, unknown>)['name'] === 'string' &&\n typeof (first as Record<string, unknown>)['binding'] === 'string' &&\n !('schema' in (first as object))\n );\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPDataSourceDefinitionProviderService } from '@acorex/platform/core';\nimport { AXPItemConfiguratorComponent, ItemConfiguratorListItem } from '@acorex/platform/layout/components';\nimport type { AXPOptionsData } from '@acorex/platform/core';\nimport { AXPValueWidgetComponent, AXPWidgetNode, AXPWidgetProperty } from '@acorex/platform/layout/widget-core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, model, signal, untracked } from '@angular/core';\nimport { get, isEqual } from 'lodash-es';\nimport { AI_AGENT_CATALOG_DATASOURCE_NAME } from '../../datasources/ai-agent-catalog.datasource';\nimport {\n isDelegatedParameterDefinitionList,\n mapDelegatedParameterDefinitionsToWidgetProperties,\n} from './delegated-parameter-definitions-to-widget-properties';\n\n//#endregion\n\n//#region ---- Component ----\n\n@Component({\n selector: 'axm-assist-delegated-agent-configurator-widget-edit',\n template: `\n @if (isInitialized()) {\n <axp-item-configurator\n [(selectedItemId)]=\"selectedItemIdModel\"\n [(values)]=\"valuesModel\"\n [label]=\"label()\"\n [readonly]=\"readonly()\"\n [items]=\"listItems()\"\n ></axp-item-configurator>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPItemConfiguratorComponent],\n})\nexport class AXMAssistDelegatedAgentConfiguratorWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetNode> {\n //#region ---- Services & Dependencies ----\n\n private readonly dataSourceDefinitionService = inject(AXPDataSourceDefinitionProviderService);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected readonly = computed<boolean>(() => {\n const raw = this.options()['readonly'];\n if (typeof raw === 'string') {\n const normalized = raw.trim().toLowerCase();\n if (normalized === 'true') {\n return true;\n }\n if (normalized === 'false') {\n return false;\n }\n }\n return raw === true;\n });\n\n protected label = computed<string>(() => {\n const v = this.options()['label'];\n return typeof v === 'string' && v.trim() ? v.trim() : '@ai-management:assists.entities.assist.fields.delegated-agent.title';\n });\n\n private readonly dataSourceName = computed<string>(() => {\n const ds = this.options()['dataSource'];\n if (typeof ds === 'string' && ds.trim() !== '') {\n return ds.trim();\n }\n return AI_AGENT_CATALOG_DATASOURCE_NAME;\n });\n\n private readonly asyncNamedDataSourceItems = signal<unknown[] | undefined>(undefined);\n\n protected listItems = computed<ItemConfiguratorListItem[]>(() => {\n const rows = this.asyncNamedDataSourceItems() ?? [];\n const list: ItemConfiguratorListItem[] = [];\n\n for (const row of rows) {\n const idRaw = get(row as object, 'id');\n const id = idRaw != null ? String(idRaw).trim() : '';\n if (!id) {\n continue;\n }\n\n const titleRaw = get(row as object, 'title');\n const title = titleRaw != null ? String(titleRaw).trim() : id;\n const descriptionRaw = get(row as object, 'description');\n const description = descriptionRaw != null ? String(descriptionRaw) : undefined;\n const iconRaw = get(row as object, 'icon');\n const icon = iconRaw != null ? String(iconRaw) : undefined;\n const propertyDefinitions = resolvePropertyDefinitions(get(row as object, 'parameterDefinitions'));\n\n list.push({ id, title, description, icon, propertyDefinitions });\n }\n\n return list.sort((a, b) => a.title.localeCompare(b.title));\n });\n\n //#endregion\n\n //#region ---- State ----\n\n protected isInitialized = signal(false);\n\n //#endregion\n\n //#region ---- Models ----\n\n protected selectedItemIdModel = model<string>('');\n protected valuesModel = model<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Effects ----\n\n private loadNamedDataSourceEffect = effect((onCleanup) => {\n const name = this.dataSourceName();\n let cancelled = false;\n onCleanup(() => {\n cancelled = true;\n });\n\n void (async () => {\n try {\n const def = await this.dataSourceDefinitionService.get(name);\n if (cancelled) {\n return;\n }\n if (!def?.source) {\n this.asyncNamedDataSourceItems.set([]);\n return;\n }\n\n const source = def.source();\n const dataSource = source instanceof Promise ? await source : source;\n if (!dataSource) {\n this.asyncNamedDataSourceItems.set([]);\n return;\n }\n\n const dataSourceAny = dataSource as unknown as {\n config?: { load?: (event: unknown) => Promise<{ items?: unknown[] }> };\n };\n if (!dataSourceAny.config?.load) {\n this.asyncNamedDataSourceItems.set([]);\n return;\n }\n\n const loaded = await dataSourceAny.config.load({ skip: 0, take: 500 });\n if (cancelled) {\n return;\n }\n this.asyncNamedDataSourceItems.set(loaded.items ?? []);\n } catch {\n if (!cancelled) {\n this.asyncNamedDataSourceItems.set([]);\n }\n }\n })();\n });\n\n private syncValueToConfigurator = effect(() => {\n const value = this.getValue();\n\n if (value && value.type) {\n const currentSelected = untracked(() => this.selectedItemIdModel());\n const currentValues = untracked(() => this.valuesModel());\n const nextOptions = (value.options ?? {}) as Record<string, unknown>;\n\n if (value.type !== currentSelected || !isEqual(nextOptions, currentValues)) {\n untracked(() => {\n this.selectedItemIdModel.set(value.type);\n this.valuesModel.set(nextOptions);\n this.isInitialized.set(true);\n });\n }\n return;\n }\n\n untracked(() => {\n if (!this.isInitialized()) {\n this.selectedItemIdModel.set('');\n this.valuesModel.set({});\n this.isInitialized.set(true);\n }\n });\n });\n\n private syncConfiguratorToValue = effect(() => {\n const selectedId = this.selectedItemIdModel();\n const values = this.valuesModel();\n\n if (!untracked(() => this.isInitialized())) {\n return;\n }\n\n const currentValue = untracked(() => this.getValue());\n const empty: AXPWidgetNode = { type: '', options: {} };\n\n if (!selectedId) {\n if (!isEqual(currentValue ?? empty, empty)) {\n untracked(() => {\n this.setValue(empty);\n });\n }\n return;\n }\n\n const next: AXPWidgetNode = {\n ...(currentValue && typeof currentValue === 'object' ? currentValue : {}),\n type: selectedId,\n options: values as AXPOptionsData,\n };\n\n if (!isEqual(next, currentValue)) {\n untracked(() => {\n this.setValue(next);\n });\n }\n });\n\n //#endregion\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction tryParseJsonIfString(value: unknown): unknown {\n if (typeof value === 'string' && value.trim() !== '') {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n }\n return value;\n}\n\nfunction isWidgetPropertyArray(value: unknown): value is AXPWidgetProperty[] {\n if (!Array.isArray(value) || value.length === 0) {\n return false;\n }\n\n return value.every(\n (item) =>\n item != null &&\n typeof item === 'object' &&\n 'name' in item &&\n typeof (item as AXPWidgetProperty).name === 'string' &&\n 'schema' in item &&\n 'group' in item,\n );\n}\n\nfunction resolvePropertyDefinitions(rawValue: unknown): AXPWidgetProperty[] {\n const parsed = tryParseJsonIfString(rawValue);\n\n if (isWidgetPropertyArray(parsed)) {\n return parsed;\n }\n\n if (isDelegatedParameterDefinitionList(parsed)) {\n return mapDelegatedParameterDefinitionsToWidgetProperties(parsed);\n }\n\n return mapDelegatedParameterDefinitionsToWidgetProperties([\n { name: 'query', binding: 'assist_default', title: 'Query', description: '' },\n ]);\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"acorex-modules-assessment-management-index-BBzx9W5u.mjs","sources":["../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/pages/questionnaire-questions-page/QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/questionnaire-question-edit.property-tabs.ts","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/questionnaire-builder.component.ts","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/questionnaire-builder.component.html","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/pages/questionnaire-questions-page/questionnaire-questions-page.component.ts","../../../../libs/modules/assessment-management/src/lib/features/questionnaire-builder/pages/questionnaire-questions-page/questionnaire-questions-page-component.provider.ts"],"sourcesContent":["/** Component key for the questionnaire Questions page tab. Register via AXP_PAGE_COMPONENT_PROVIDER. */\nexport const QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY = 'questionnaire-questions-page';\n","//#region ---- Imports ----\n\nimport type { AXPPropertyViewerTab } from '@acorex/platform/layout/components';\nimport {\n AXPWidgetsCatalog,\n createBooleanProperty,\n type AXPWidgetProperty,\n type AXPWidgetPropertyGroup,\n} from '@acorex/platform/layout/widget-core';\n\nimport type { AXMAssessmentQuestionHintConfig } from '../../entities/question-bank-item/question-hint.types';\n\n//#endregion\n\n//#region ---- Groups ----\n\nconst GROUP_IDENTITY: AXPWidgetPropertyGroup = {\n name: 'identity',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.groups.identity.title',\n order: 0,\n};\n\nconst GROUP_VALIDATION: AXPWidgetPropertyGroup = {\n name: 'validation',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.groups.validation.title',\n order: 1,\n};\n\nconst GROUP_VISIBILITY: AXPWidgetPropertyGroup = {\n name: 'visibility',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.groups.visibility.title',\n order: 2,\n};\n\nconst GROUP_HINT: AXPWidgetPropertyGroup = {\n name: 'hint',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.groups.hint.title',\n order: 3,\n};\n\nconst GROUP_COMMENT: AXPWidgetPropertyGroup = {\n name: 'comment',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.groups.comment.title',\n order: 4,\n};\n\n//#endregion\n\n//#region ---- Shared options ----\n\nconst HINT_MODE_OPTIONS = [\n {\n id: 'off',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.off',\n },\n {\n id: 'info',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.info',\n },\n {\n id: 'warning',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.warning',\n },\n {\n id: 'danger',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.danger',\n },\n {\n id: 'success',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.success',\n },\n {\n id: 'neutral',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.options.neutral',\n },\n] as const;\n\n//#endregion\n\n//#region ---- Properties by group ----\n\nconst IDENTITY_PROPS: AXPWidgetProperty[] = [\n {\n name: 'name',\n title: '@general:terms.common.name',\n group: GROUP_IDENTITY,\n order: 10,\n schema: {\n dataType: 'string',\n defaultValue: '',\n interface: {\n name: 'name',\n path: 'name',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: '@general:terms.common.name',\n },\n },\n },\n visible: true,\n },\n {\n name: 'tags',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.tags.title',\n group: GROUP_IDENTITY,\n order: 20,\n schema: {\n dataType: 'array',\n defaultValue: [],\n interface: {\n name: 'tags',\n path: 'tags',\n type: 'tag-editor',\n options: {\n placeholder:\n '@assessment-management:questionnaires.components.questionnaire-builder.fields.tags.placeholder',\n allowDuplicate: false,\n },\n },\n },\n visible: true,\n },\n];\n\nconst VALIDATION_PROPS: AXPWidgetProperty[] = [\n {\n ...createBooleanProperty({\n name: 'isRequired',\n path: 'isRequired',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.is-required.title',\n group: GROUP_VALIDATION,\n defaultValue: false,\n }),\n order: 10,\n },\n];\n\nconst VISIBILITY_PROPS: AXPWidgetProperty[] = [\n {\n ...createBooleanProperty({\n name: 'isVisible',\n path: 'isVisible',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.visible.title',\n group: GROUP_VISIBILITY,\n defaultValue: true,\n }),\n order: 10,\n },\n];\n\nconst HINT_PROPS: AXPWidgetProperty[] = [\n {\n name: 'hintMode',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint-mode.title',\n group: GROUP_HINT,\n order: 10,\n schema: {\n dataType: 'string',\n defaultValue: { id: 'off', title: HINT_MODE_OPTIONS[0].title },\n interface: {\n name: 'hintMode',\n path: 'hint.mode',\n type: AXPWidgetsCatalog.select,\n options: {\n valueField: 'id',\n textField: 'title',\n dataSource: [...HINT_MODE_OPTIONS],\n },\n },\n },\n visible: true,\n },\n {\n name: 'hintContent',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.hint.title',\n group: GROUP_HINT,\n order: 20,\n schema: {\n dataType: 'string',\n defaultValue: '',\n interface: {\n name: 'hintContent',\n path: 'hint.content',\n type: AXPWidgetsCatalog.richText,\n options: {},\n },\n },\n visible: \"{{ context.eval('hint.mode') && (context.eval('hint.mode').id || context.eval('hint.mode')) != 'off' }}\",\n },\n];\n\nconst COMMENT_PROPS: AXPWidgetProperty[] = [\n {\n ...createBooleanProperty({\n name: 'commentEnabled',\n path: 'comment.enabled',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.comment-enabled.title',\n group: GROUP_COMMENT,\n defaultValue: false,\n }),\n order: 10,\n },\n {\n ...createBooleanProperty({\n name: 'commentRequired',\n path: 'comment.required',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.fields.comment-required.title',\n group: GROUP_COMMENT,\n defaultValue: false,\n visible: \"{{ context.eval('comment.enabled') === true }}\",\n }),\n order: 20,\n },\n];\n\n//#endregion\n\n//#region ---- Hint form context helper ----\n\n/**\n * Builds initial `hint` object for the question property viewer from the effective (merged) hint config.\n */\nexport function createQuestionHintFormContext(hint: AXMAssessmentQuestionHintConfig): {\n content: string;\n mode: { id: string; title: string };\n} {\n let content = '';\n if (hint.mode !== 'off') {\n const hc = hint.content;\n if (typeof hc === 'string') {\n content = hc;\n } else if (hc && typeof hc === 'object') {\n content = Object.values(hc as Record<string, string>)[0] ?? '';\n }\n }\n const modeId = hint.mode;\n const opt = HINT_MODE_OPTIONS.find((o) => o.id === modeId) ?? HINT_MODE_OPTIONS[0];\n return {\n content,\n mode: { id: opt.id, title: opt.title },\n };\n}\n\n//#endregion\n\n//#region ---- Tab definition ----\n\n/**\n * Property viewer tabs for editing a single questionnaire question row (metadata).\n */\nexport const QUESTIONNAIRE_QUESTION_EDIT_TABS: AXPPropertyViewerTab[] = [\n {\n name: 'general',\n title: '@assessment-management:questionnaires.components.questionnaire-builder.tabs.general.title',\n groups: [\n {\n name: GROUP_IDENTITY.name,\n title: GROUP_IDENTITY.title,\n isCollapsed: false,\n props: IDENTITY_PROPS,\n },\n {\n name: GROUP_VALIDATION.name,\n title: GROUP_VALIDATION.title,\n isCollapsed: false,\n props: VALIDATION_PROPS,\n },\n {\n name: GROUP_VISIBILITY.name,\n title: GROUP_VISIBILITY.title,\n isCollapsed: false,\n props: VISIBILITY_PROPS,\n },\n {\n name: GROUP_HINT.name,\n title: GROUP_HINT.title,\n isCollapsed: false,\n props: HINT_PROPS,\n },\n {\n name: GROUP_COMMENT.name,\n title: GROUP_COMMENT.title,\n isCollapsed: false,\n props: COMMENT_PROPS,\n },\n ],\n },\n];\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AXToastService } from '@acorex/components/toast';\nimport {\n AXPStandardSectionItemsBuilderComponent,\n type AXPBuilderBadge,\n type AXPStandardSectionItemsBuilderConfig,\n type AXPBuilderItem,\n type AXPBuilderItemViewModel,\n type AXPBuilderSection,\n type AXPBuilderValue,\n} from '@acorex/platform/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { AXDataSource } from '@acorex/cdk/common';\nimport { AXPEntity, AXPEntityProperty, AXPEntityTableColumn } from '@acorex/platform/common';\nimport {\n resolveMultiLanguageString,\n type AXPExpression,\n type AXPCategoryEntity,\n type AXPMultiLanguageString,\n} from '@acorex/platform/core';\nimport {\n AXPCategoryTreeDataSource,\n AXPDataSelectorService,\n type AXPPropertyViewerResult,\n AXPPropertyViewerService,\n} from '@acorex/platform/layout/components';\nimport { AXPEntityDefinitionRegistryService, AXPEntityService } from '@acorex/platform/layout/entity';\nimport { AXPWidgetRegistryService } from '@acorex/platform/layout/widget-core';\nimport { AXPCommandService } from '@acorex/platform/runtime';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../const';\nimport type { AXMAssessmentManagementQuestionBankItemEntityModel } from '../../entities/question-bank-item/question-bank-item.types';\nimport {\n diffQuestionCommentOverride,\n mergeQuestionCommentConfig,\n normalizeQuestionCommentConfig,\n type AXMAssessmentQuestionCommentConfig,\n} from '../../entities/question-bank-item/question-comment.types';\nimport {\n diffQuestionHintOverride,\n mergeQuestionHintForViewer,\n normalizeQuestionHintConfig,\n normalizeQuestionHintFromEntityRow,\n normalizeQuestionHintMode,\n parseQuestionHintPartialFromRecord,\n type AXMAssessmentQuestionHintConfig,\n type AXMAssessmentQuestionHintPartial,\n} from '../../entities/question-bank-item/question-hint.types';\nimport { stripHtmlToPlain } from '../questionnaire-viewer/utils/pre-post-content.utils';\nimport {\n QuestionnaireBuilderItem,\n QuestionnaireBuilderSection,\n QuestionnaireBuilderState,\n QuestionnaireBuilderValue,\n QuestionnaireDisplaySettings,\n allocateNextQuestionItemName,\n collectQuestionnaireItemNames,\n convertStateToValue,\n convertValueToState,\n createDefaultSection,\n getQuestionnaireItemRequiredBadgeMode,\n getQuestionnaireItemVisibilityBadgeMode,\n} from './questionnaire-builder.types';\nimport { AXFullScreenDirective } from '@acorex/cdk/full-screen';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer/questionnaire-viewer.service';\nimport type { PrePostConfig } from '../../entities/questionnaire/questionnaire.types';\nimport {\n createQuestionHintFormContext,\n QUESTIONNAIRE_QUESTION_EDIT_TABS,\n} from './questionnaire-question-edit.property-tabs';\n\n//#endregion\n\n//#region ---- Edit question dialog ----\n\ninterface QuestionnaireQuestionHintForm {\n content?: AXPMultiLanguageString;\n mode?: AXMAssessmentQuestionHintConfig['mode'] | string | { id?: string };\n}\n\ninterface QuestionnaireEditQuestionFormContext {\n /** Technical question name (maps to {@link QuestionnaireBuilderItem.name}). */\n name?: string;\n tags?: unknown;\n isRequired?: boolean | string;\n /** Default true when omitted (always visible). */\n isVisible?: boolean | AXPExpression;\n hint?: QuestionnaireQuestionHintForm;\n /** Effective comment policy (merged bank default + item overrides) for editing. */\n comment?: { enabled: boolean; required: boolean };\n}\n\n//#endregion\n\n//#region ---- Component ----\n\n/**\n * Reusable Questionnaire Builder Component\n * Can be used both in dialog and inline contexts\n */\n@Component({\n selector: 'axm-questionnaire-builder',\n templateUrl: './questionnaire-builder.component.html',\n styleUrl: './questionnaire-builder.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n FormsModule,\n AXButtonModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXFormModule,\n AXSwitchModule,\n AXLabelModule,\n AXTranslationModule,\n AXPStandardSectionItemsBuilderComponent,\n AXFullScreenDirective,\n ],\n})\nexport class AXMQuestionnaireBuilderComponent {\n //#region ---- Services & Dependencies ----\n\n protected dataSelectorService = inject(AXPDataSelectorService);\n private readonly entityService = inject(AXPEntityService);\n protected entityResolver = inject(AXPEntityDefinitionRegistryService);\n protected translationService = inject(AXTranslationService);\n protected propertyViewerService = inject(AXPPropertyViewerService);\n protected questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n protected toastService = inject(AXToastService);\n protected widgetRegistry = inject(AXPWidgetRegistryService);\n private readonly commandService = inject(AXPCommandService);\n\n //#endregion\n\n //#region ---- Question bank entity data ----\n\n private questionBankData() {\n return this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.questionBankItem.name)\n .data<string, AXMAssessmentManagementQuestionBankItemEntityModel>();\n }\n\n private questionBankCategoryData() {\n return this.entityService\n .withEntity(RootConfig.module.name, `${RootConfig.entities.questionBankItem.name}Category`)\n .data<string, AXPCategoryEntity<string>>();\n }\n\n //#endregion\n\n //#region ---- Inputs & Outputs ----\n\n /**\n * Initial value (QuestionnaireBuilderValue)\n */\n value = input<QuestionnaireBuilderValue | null>(null);\n\n /**\n * Readonly mode\n */\n readonly = input<boolean>(false);\n\n /**\n * Pre/post config for preview (welcome, review, summary).\n * When provided, passed to the preview dialog.\n */\n prePostConfig = input<PrePostConfig | null>(null);\n\n /**\n * When false, the header (Add Section, Settings, Preview, Full Screen) is hidden.\n * Use when actions are provided by the host (e.g. page primary header actions).\n */\n showHeader = input<boolean>(true);\n\n /**\n * Display settings (view mode, progress bar, timer, etc.) when provided by the host (e.g. entity form).\n * Used for preview. When not provided, falls back to state/value or defaults.\n */\n displaySettingsInput = input<QuestionnaireDisplaySettings | null>(null);\n\n /**\n * Persisted questionnaire id (e.g. from entity form) — enables questionnaire calculations in preview.\n */\n questionnaireEntityId = input<string | undefined>(undefined);\n\n /**\n * Value change event\n */\n valueChange = output<QuestionnaireBuilderValue>();\n\n //#endregion\n\n //#region ---- Class Properties ----\n\n // Designer state management - always start with at least one default section\n protected builderState = signal<QuestionnaireBuilderState>({\n sections: [createDefaultSection()],\n });\n\n // Selected item tracking\n protected selectedItemName = signal<string | null>(null);\n protected selectedSectionName = signal<string | null>(null);\n\n // Fullscreen directive reference\n protected readonly fullscreenDirective = viewChild<AXFullScreenDirective>('fullscreen');\n\n protected readonly standardRef = viewChild(AXPStandardSectionItemsBuilderComponent);\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n // Track last emitted value to prevent circular updates\n let lastEmittedValue: QuestionnaireBuilderValue | null = null;\n\n // Sync value input to state (only when value changes externally)\n effect(() => {\n const val = this.value();\n if (val !== null && val !== undefined) {\n const currentState = untracked(() => this.builderState());\n const currentValue = convertStateToValue(currentState);\n\n const valStr = JSON.stringify(val);\n const currentStr = JSON.stringify(currentValue);\n const lastEmittedStr = lastEmittedValue ? JSON.stringify(lastEmittedValue) : null;\n\n if (valStr !== currentStr && valStr !== lastEmittedStr) {\n const newState = convertValueToState(val);\n untracked(() => {\n this.builderState.set(newState);\n this.loadQuestionDetailsForState(newState);\n });\n }\n } else if (val === null || val === undefined) {\n // If value is null/undefined, ensure we have at least one default section\n const currentState = untracked(() => this.builderState());\n if (currentState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n untracked(() => {\n this.builderState.set({ sections: [defaultSection] });\n });\n }\n }\n });\n\n // Sync state changes to output\n effect(() => {\n const state = this.builderState();\n const currentValue = this.value();\n const value = convertStateToValue(state, currentValue || undefined);\n\n untracked(() => {\n lastEmittedValue = value;\n this.valueChange.emit(value);\n });\n });\n }\n\n /**\n * Load question details for all items in the state\n */\n private async loadQuestionDetailsForState(state: QuestionnaireBuilderState): Promise<void> {\n const questionIds = new Set<string>();\n\n // Collect all question bank item IDs\n state.sections.forEach((section) => {\n section.items.forEach((item) => {\n if (item.questionBankItemId && !item.question) {\n questionIds.add(item.questionBankItemId);\n }\n });\n });\n\n if (questionIds.size === 0) return;\n\n // Load all questions in parallel\n const questionPromises = Array.from(questionIds).map((id) =>\n this.questionBankData().byKey(id).catch(() => null),\n );\n const questions = await Promise.all(questionPromises);\n\n // Create a map of question ID to question data\n const questionMap = new Map<string, any>();\n questions.forEach((q) => {\n if (q) {\n questionMap.set(q.id, q);\n }\n });\n\n // Update state with question details\n this.builderState.update((currentState) => ({\n ...currentState,\n sections: currentState.sections.map((section) => ({\n ...section,\n items: section.items.map((item) => {\n if (item.question) return item; // Already has question data\n\n const questionData = questionMap.get(item.questionBankItemId);\n if (questionData) {\n return {\n ...item,\n question: {\n id: questionData.id,\n title: questionData.title,\n question: questionData.question,\n note: questionData.note,\n difficulty: questionData.difficulty,\n interface: questionData.interface,\n },\n };\n }\n\n return item;\n }),\n })),\n }));\n }\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n\n /** Value for {@link AXPStandardSectionItemsBuilderComponent} (sections only; drag/reorder handled there). */\n protected builderValue = computed<AXPBuilderValue>(() => ({\n sections: this.builderState().sections.map(\n (s) =>\n ({\n id: s.name,\n name: s.name,\n order: s.order,\n title: s.title,\n description: s.description,\n tags: s.tags,\n isVisible: s.isVisible,\n items: s.items.map(\n (it) =>\n ({\n id: it.name,\n name: it.name,\n order: it.order,\n questionBankItemId: it.questionBankItemId,\n isRequired: it.isRequired,\n isVisible: it.isVisible,\n interfaceOverride: it.interfaceOverride,\n hint: it.hint,\n comment: it.comment,\n tags: it.tags,\n question: it.question,\n isNewlyAdded: it.isNewlyAdded,\n }) as AXPBuilderItem,\n ),\n }) as AXPBuilderSection,\n ),\n }));\n\n protected isPreviewDisabled = computed(\n () =>\n this.builderState().sections.length === 0 ||\n this.builderState().sections.every((s) => s.items.length === 0),\n );\n\n protected readonly standardConfig = computed<AXPStandardSectionItemsBuilderConfig>(() => ({\n showSectionTechnicalName: true,\n minSectionCount: 1,\n texts: {\n addSection: '@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title',\n addItem:\n '@assessment-management:questionnaires.components.questionnaire-builder.actions.add-question.title',\n emptySectionsTitle:\n '@assessment-management:questionnaires.components.questionnaire-builder.empty-states.no-sections.title',\n emptySectionsDescription:\n '@assessment-management:questionnaires.components.questionnaire-builder.empty-states.no-sections.description',\n emptyItemsTitle:\n '@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.title',\n emptyItemsDescription:\n '@assessment-management:questionnaires.components.questionnaire-builder.empty-states.empty-section.description',\n defaultSectionBadge:\n '@assessment-management:questionnaires.components.questionnaire-builder.default-section-badge',\n },\n mapItemToView: (item, section) => this.mapQuestionnaireItemToView(item, section),\n promptAddItems: (sid, v) => this.questionnairePromptAddItems(sid, v),\n promptEditItem: (item, sid, v) => this.questionnairePromptEditItem(item, sid, v),\n }));\n\n private mapQuestionnaireItemToView(item: AXPBuilderItem, _section: AXPBuilderSection): AXPBuilderItemViewModel {\n const q = item as unknown as QuestionnaireBuilderItem;\n const title = this.itemQuestionHeading(q);\n const note = this.itemQuestionNotePreview(q);\n const badges: AXPBuilderBadge[] = [];\n const req = q.isRequired;\n const rawReq = typeof req === 'boolean' || typeof req === 'string' ? req : undefined;\n const requiredMode = getQuestionnaireItemRequiredBadgeMode(rawReq);\n if (requiredMode === 'required') {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.required',\n variant: 'danger',\n });\n } else if (requiredMode === 'conditional') {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.conditional-required',\n variant: 'warning',\n });\n } else {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.optional',\n variant: 'success',\n });\n }\n\n const rawVis = q.isVisible;\n const visibilityMode = getQuestionnaireItemVisibilityBadgeMode(\n typeof rawVis === 'boolean' || typeof rawVis === 'string' ? rawVis : undefined,\n );\n if (visibilityMode === 'hidden') {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.visibility-hidden',\n variant: 'danger',\n });\n } else if (visibilityMode === 'conditional') {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.visibility-conditional',\n variant: 'warning',\n });\n } else {\n badges.push({\n text: '@assessment-management:questionnaires.components.questionnaire-builder.item-badge.visibility-visible',\n variant: 'success',\n });\n }\n\n return {\n icon: this.getQuestionWidgetIcon(q),\n title,\n name: q.name,\n description: note || undefined,\n badges,\n };\n }\n\n /**\n * Standard section-items builder emits here. Uses direct `builderState.update` so the `valueChange`\n * effect runs in the same turn and hosts (e.g. questions page) can mark dirty.\n */\n protected onBuilderValueChange(next: AXPBuilderValue): void {\n this.builderState.update((state) => {\n const updatedState: QuestionnaireBuilderState = {\n ...state,\n sections: this.mergeSectionsFromStandardBuilder(\n next.sections as unknown as QuestionnaireBuilderSection[],\n state.sections,\n ),\n };\n if (updatedState.sections.length === 0) {\n const defaultSection = createDefaultSection();\n defaultSection.order = 0;\n return { ...updatedState, sections: [defaultSection] };\n }\n return updatedState;\n });\n }\n\n private mergeSectionsFromStandardBuilder(\n incoming: QuestionnaireBuilderSection[],\n previous: QuestionnaireBuilderSection[],\n ): QuestionnaireBuilderSection[] {\n const prevByName = new Map(previous.map((s) => [s.name, s]));\n return incoming.map((sec) => {\n const axSec = sec as unknown as AXPBuilderSection;\n const incomingName = String(axSec['name'] ?? axSec['id'] ?? '').trim();\n const prevSec = prevByName.get(incomingName);\n if (!prevSec) {\n return this.normalizeIncomingSection(sec);\n }\n const prevItemByName = new Map(prevSec.items.map((i) => [i.name, i]));\n const merged = this.normalizeIncomingSection(sec);\n return {\n ...merged,\n isNewlyAdded: prevSec.isNewlyAdded ?? merged.isNewlyAdded,\n items: merged.items.map((it) => {\n const prev = prevItemByName.get(it.name);\n if (!prev) {\n return it;\n }\n return {\n ...prev,\n ...it,\n question: it.question ?? prev.question,\n };\n }),\n };\n });\n }\n\n /** Map platform section rows (id + name) into domain sections (name only). */\n private normalizeIncomingSection(sec: QuestionnaireBuilderSection): QuestionnaireBuilderSection {\n const ax = sec as unknown as AXPBuilderSection;\n const name = String(ax['name'] ?? ax['id'] ?? '').trim() || `section-${Date.now()}`;\n return {\n name,\n title: sec.title,\n description: sec.description,\n order: sec.order,\n tags: sec.tags,\n isVisible: sec.isVisible,\n isNewlyAdded: sec.isNewlyAdded,\n items: sec.items.map((it) => this.normalizeIncomingItem(it as unknown as AXPBuilderItem)),\n };\n }\n\n private normalizeIncomingItem(it: AXPBuilderItem): QuestionnaireBuilderItem {\n const name = String(it['name'] ?? it['id'] ?? '').trim() || `item-${Date.now()}`;\n const qbi = (it as unknown as QuestionnaireBuilderItem).questionBankItemId;\n return {\n name,\n questionBankItemId: qbi,\n order: it.order,\n isRequired: (it as unknown as QuestionnaireBuilderItem).isRequired,\n isVisible: (it as unknown as QuestionnaireBuilderItem).isVisible,\n interfaceOverride: (it as unknown as QuestionnaireBuilderItem).interfaceOverride,\n hint: (it as unknown as QuestionnaireBuilderItem).hint,\n comment: (it as unknown as QuestionnaireBuilderItem).comment,\n tags: (it as unknown as QuestionnaireBuilderItem).tags,\n question: (it as unknown as QuestionnaireBuilderItem).question,\n isNewlyAdded: (it as unknown as QuestionnaireBuilderItem).isNewlyAdded,\n };\n }\n\n /** Edit dialog context: default visible; normalize legacy string booleans; expressions pass through (property viewer handles binding). */\n private questionEditFormIsVisible(raw: boolean | string | undefined): boolean | string {\n if (raw === undefined || raw === null) {\n return true;\n }\n if (typeof raw === 'boolean') {\n return raw;\n }\n if (raw.trim() === '') {\n return true;\n }\n const t = raw.trim().toLowerCase();\n if (t === 'true' || t === '1') {\n return true;\n }\n if (t === 'false' || t === '0') {\n return false;\n }\n return raw.trim();\n }\n\n private questionEditFormIsRequired(item: Pick<QuestionnaireBuilderItem, 'isRequired'>): boolean | string {\n const r = item.isRequired;\n if (typeof r === 'string') {\n const t = r.trim();\n if (!t) {\n return false;\n }\n const tl = t.toLowerCase();\n if (tl === 'true' || tl === '1') {\n return true;\n }\n if (tl === 'false' || tl === '0') {\n return false;\n }\n return t;\n }\n return r ?? false;\n }\n\n /** Persist from property viewer: omit when default visible; `false` when hidden; trimmed non-empty string = expression. */\n private persistQuestionIsVisibleFromForm(value: unknown): boolean | string | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return value ? undefined : false;\n }\n if (typeof value === 'string') {\n const t = value.trim();\n return t || undefined;\n }\n return undefined;\n }\n\n private persistQuestionIsRequiredFromForm(value: unknown): boolean | string {\n if (value === undefined || value === null) {\n return false;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n const t = value.trim();\n if (!t) {\n return false;\n }\n return t;\n }\n return false;\n }\n\n private async questionnairePromptEditItem(\n item: AXPBuilderItem,\n sectionId: string,\n _value: AXPBuilderValue,\n ): Promise<AXPBuilderItem | null> {\n const qItem = item as unknown as QuestionnaireBuilderItem;\n const validationFailed = async (\n titleKey: string,\n descKey: string,\n fallTitle: string,\n fallDesc: string,\n ): Promise<never> => {\n const title = (await this.translationService.translateAsync(titleKey)) || fallTitle;\n const content = (await this.translationService.translateAsync(descKey)) || fallDesc;\n this.toastService.show({ color: 'warning', title, content });\n throw new Error('QuestionnaireEditQuestionValidation');\n };\n\n try {\n const bankRow = qItem.questionBankItemId\n ? await this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.questionBankItem.name)\n .data<string, AXMAssessmentManagementQuestionBankItemEntityModel>()\n .byKey(qItem.questionBankItemId)\n .catch(() => null)\n : null;\n const bankComment = normalizeQuestionCommentConfig(bankRow?.comment);\n const mergedCommentForForm = mergeQuestionCommentConfig(bankComment, qItem.comment);\n const bankHint = normalizeQuestionHintFromEntityRow(bankRow ?? {});\n const mergedHintForForm = mergeQuestionHintForViewer(\n bankHint,\n parseQuestionHintPartialFromRecord(qItem as unknown as Record<string, unknown>),\n );\n\n const result = await this.propertyViewerService\n .create()\n .dialog((d) => {\n d.setTitle(\n '@assessment-management:questionnaires.components.questionnaire-builder.actions.edit-question.title',\n )\n .setSize('md')\n .setCloseButton(true)\n .setMode('advanced')\n .setTabs(QUESTIONNAIRE_QUESTION_EDIT_TABS)\n .setContext({\n name: qItem.name,\n tags: qItem.tags ?? [],\n isRequired: this.questionEditFormIsRequired(qItem),\n isVisible: this.questionEditFormIsVisible(qItem.isVisible),\n hint: createQuestionHintFormContext(mergedHintForForm),\n comment: mergedCommentForForm,\n })\n .onAction(async (ref) => {\n const context = ref.context() as QuestionnaireEditQuestionFormContext;\n const rawId = String(context.name ?? '').trim();\n if (!rawId) {\n await validationFailed(\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-required.title',\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-required.description',\n 'Question ID required',\n 'Enter a unique question ID.',\n );\n }\n if (!this.isValidQuestionnaireItemName(rawId)) {\n await validationFailed(\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-invalid.title',\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-invalid.description',\n 'Invalid question ID',\n 'Use letters, numbers, underscores, and hyphens (1–128 characters).',\n );\n }\n const isDuplicate = this.builderState().sections.some((s) =>\n s.items.some(\n (i) => (s.name !== sectionId || i.name !== qItem.name) && i.name === rawId,\n ),\n );\n if (isDuplicate) {\n await validationFailed(\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-duplicate.title',\n '@assessment-management:questionnaires.components.questionnaire-builder.validation.question-id-duplicate.description',\n 'Duplicate question ID',\n 'Another question already uses this ID.',\n );\n }\n });\n })\n .show();\n\n if (!result) {\n return null;\n }\n\n const formData = (result as AXPPropertyViewerResult).values as QuestionnaireEditQuestionFormContext;\n const rawIdOut = String(formData.name ?? '').trim();\n const tags = this.normalizeTagsFromForm(formData.tags);\n const hintPersist = this.persistQuestionHintFromForm(bankHint, formData.hint);\n const commentPersist = this.persistQuestionCommentFromForm(bankComment, formData.comment);\n const nextItem = {\n ...qItem,\n name: rawIdOut,\n id: rawIdOut,\n tags,\n isRequired: this.persistQuestionIsRequiredFromForm(formData.isRequired),\n isVisible: this.persistQuestionIsVisibleFromForm(formData.isVisible),\n } as QuestionnaireBuilderItem & AXPBuilderItem;\n if (hintPersist != null) {\n nextItem.hint = hintPersist;\n } else {\n delete nextItem.hint;\n }\n if (commentPersist != null) {\n nextItem.comment = commentPersist;\n } else {\n delete nextItem.comment;\n }\n return nextItem as AXPBuilderItem;\n } catch (error) {\n if (error instanceof Error && error.message === 'QuestionnaireEditQuestionValidation') {\n return null;\n }\n console.error('Error editing question:', error);\n return null;\n }\n }\n\n /**\n * Get current display settings from state or default\n */\n protected displaySettings = computed<QuestionnaireDisplaySettings>(() => {\n const fromInput = this.displaySettingsInput();\n if (fromInput != null) {\n return fromInput;\n }\n const state = this.builderState();\n if (state.displaySettings) {\n return state.displaySettings;\n }\n const currentValue = convertStateToValue(state, this.value() || undefined);\n return currentValue.displaySettings || {\n viewMode: 'single-page' as const,\n showProgressBar: true,\n showTimer: false,\n showQuestionNumbers: true,\n };\n });\n\n\n //#endregion\n\n //#region ---- Section Management ----\n\n /** Toolbar / page command: delegates to {@link AXPStandardSectionItemsBuilderComponent#addSection}. */\n async addSection(): Promise<void> {\n await this.standardRef()?.addSection();\n }\n\n //#endregion\n\n //#region ---- Item Management ----\n\n private async questionnairePromptAddItems(\n sectionId: string,\n value: AXPBuilderValue,\n ): Promise<AXPBuilderItem[] | null> {\n const all = value.sections as unknown as QuestionnaireBuilderSection[];\n const section = all.find((x) => x.name === sectionId);\n if (!section) return null;\n return (await this.selectQuestionsFromQuestionBankForSection(section, all)) as AXPBuilderItem[] | null;\n }\n\n /**\n * Open question bank selector and return new items (standard builder appends them).\n */\n private async selectQuestionsFromQuestionBankForSection(\n section: QuestionnaireBuilderSection,\n allSections: QuestionnaireBuilderSection[],\n ): Promise<QuestionnaireBuilderItem[] | null> {\n try {\n const dataSource = new AXDataSource({\n key: 'id',\n pageSize: 20,\n load: async (e) => {\n const questions = await this.questionBankData().query(e);\n return {\n items: questions.items,\n total: questions.total,\n };\n },\n });\n\n // Create category tree data source for filtering\n const categoryTreeDataSource: AXPCategoryTreeDataSource = {\n loadRootNodes: async () => {\n const result = await this.questionBankCategoryData().query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'isEmpty' },\n value: true,\n },\n });\n\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n loadChildNodes: async (parentId: string) => {\n const result = await this.questionBankCategoryData().query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: { type: 'equal' },\n value: parentId,\n },\n });\n\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n searchNodes: async (searchValue: string) => {\n const result = await this.questionBankCategoryData().query({\n skip: 0,\n take: 1000,\n filter: {\n filters: [\n {\n field: 'title',\n operator: { type: 'contains' },\n value: searchValue,\n },\n {\n field: 'name',\n operator: { type: 'contains' },\n value: searchValue,\n },\n ],\n logic: 'or',\n },\n });\n\n return result.items.map((item: any) => ({\n id: item.id,\n title: item.title || item.name,\n description: item.description || '',\n parentId: item.parentId,\n childrenCount: item.childrenCount || 0,\n }));\n },\n };\n\n const entity: AXPEntity | null = await this.entityResolver.resolve(\n RootConfig.module.name,\n RootConfig.entities.questionBankItem.name,\n );\n if (!entity) {\n throw new Error('Entity not found: ' + RootConfig.entities.questionBankItem.name);\n }\n\n const columns =\n entity.columns\n ?.filter((column: AXPEntityTableColumn) =>\n entity!.properties.some((property: AXPEntityProperty) => property.name === column.name),\n )\n .map((column: AXPEntityTableColumn) => {\n const property = entity!.properties.find((prop: AXPEntityProperty) => prop.name === column.name);\n return {\n name: column.name,\n title: property?.title ?? '',\n visible: column.options?.visible !== false,\n widget: {\n type: column.showAs?.type ?? property?.schema?.interface?.type ?? 'text-editor',\n options: column.showAs?.options ?? property?.schema?.interface?.options ?? {},\n },\n };\n }) || [];\n\n // Translate titles\n const selectQuestionsTitle = await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-builder.select-questions'\n ) || 'Select Questions from Question Bank';\n\n const categoriesTitle = await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-builder.categories'\n ) || 'Categories';\n\n const titleLabel = await this.translationService.translateAsync('@general:terms.common.title') || 'Title';\n const noteLabel =\n (await this.translationService.translateAsync(\n '@assessment-management:question-bank.entities.question-bank-item.fields.note.title',\n )) || 'Note';\n\n // Open data selector with category filter\n const result = await this.dataSelectorService.openWithCategoryFilter(\n {\n title: selectQuestionsTitle,\n dataSource: dataSource,\n columns: columns,\n selectionMode: 'multiple',\n searchFields: [\n { name: 'title', title: titleLabel },\n { name: 'note', title: noteLabel },\n ],\n allowCreate: 'full',\n onCreate: (mode) => this.createQuestionBankItem(entity, mode),\n },\n {\n title: categoriesTitle,\n dataSource: categoryTreeDataSource,\n filterField: 'categoryIds',\n filterOperator: 'contains',\n width: '350px',\n },\n );\n\n if (result?.items && result.items.length > 0) {\n const questionPromises = result.items.map((item: any) =>\n this.questionBankData().byKey(item.id).catch(() => null),\n );\n const questions = await Promise.all(questionPromises);\n\n const used = collectQuestionnaireItemNames(allSections);\n const baseOrder = section.items.length;\n const newItems: QuestionnaireBuilderItem[] = result.items.map((item: any, index: number) => {\n const fullQuestion = questions[index];\n const qName = allocateNextQuestionItemName(used);\n used.add(qName);\n return {\n name: qName,\n questionBankItemId: item.id,\n order: baseOrder + index,\n isRequired: false,\n isVisible: undefined,\n isNewlyAdded: true,\n question: fullQuestion\n ? {\n id: fullQuestion.id,\n title: fullQuestion.title,\n question: fullQuestion.question,\n note: fullQuestion.note,\n difficulty: fullQuestion.difficulty,\n }\n : {\n id: item.id,\n title: item.title || 'Question',\n question: item.question,\n note: item.note,\n difficulty: item.difficulty,\n },\n };\n });\n return newItems;\n }\n return null;\n } catch (error) {\n console.error('Error loading questions:', error);\n return null;\n }\n }\n\n /**\n * Create a new question bank item via Entity:Create and return it for selection in the data selector.\n */\n private async createQuestionBankItem(\n entity: AXPEntity,\n _mode: 'full' | 'quick',\n ): Promise<Record<string, unknown> | null> {\n const result = await this.commandService.execute('Entity:Create', {\n __context__: {\n entity: `${entity.module}.${entity.name}`,\n entityInfo: {\n name: entity.name,\n module: entity.module,\n title: entity.title,\n parentKey: entity.parentKey,\n },\n data: {},\n options: {},\n },\n });\n\n if (result?.success && result?.data) {\n const item = Array.isArray(result.data) ? result.data[0] : result.data;\n return item as Record<string, unknown>;\n }\n return null;\n }\n\n /**\n * Maps nested `hint` from the question property viewer to persisted questionnaire item `hint` partial (diff from bank).\n */\n private persistQuestionHintFromForm(\n bank: AXMAssessmentQuestionHintConfig,\n hint: QuestionnaireEditQuestionFormContext['hint'],\n ): AXMAssessmentQuestionHintPartial | undefined {\n if (!hint) {\n return undefined;\n }\n const modeRaw =\n hint.mode == null\n ? undefined\n : typeof hint.mode === 'string'\n ? hint.mode\n : (hint.mode as { id?: string }).id;\n const mode = normalizeQuestionHintMode(modeRaw) ?? 'off';\n const c = hint.content;\n let content: AXPMultiLanguageString | undefined;\n if (c == null) {\n content = undefined;\n } else if (typeof c === 'string') {\n const t = c.trim();\n content = t || undefined;\n } else if (typeof c === 'object') {\n content = c as AXPMultiLanguageString;\n }\n const edited = normalizeQuestionHintConfig({ mode, content });\n return diffQuestionHintOverride(bank, edited);\n }\n\n /**\n * Persists questionnaire item `comment` override: only fields that differ from the question bank default.\n */\n private persistQuestionCommentFromForm(\n bank: AXMAssessmentQuestionCommentConfig,\n form: QuestionnaireEditQuestionFormContext['comment'],\n ): Partial<AXMAssessmentQuestionCommentConfig> | undefined {\n if (!form) {\n return undefined;\n }\n const edited = normalizeQuestionCommentConfig(form);\n return diffQuestionCommentOverride(bank, edited);\n }\n\n /**\n * Normalize tag-editor output to trimmed unique strings (supports string[] or { title }[] from tag service).\n */\n private normalizeTagsFromForm(raw: unknown): string[] | undefined {\n if (raw == null || !Array.isArray(raw)) return undefined;\n const seen = new Set<string>();\n const out: string[] = [];\n for (const entry of raw) {\n let t = '';\n if (typeof entry === 'string') t = entry.trim();\n else if (entry && typeof entry === 'object' && 'title' in entry) {\n t = String((entry as { title: string }).title).trim();\n }\n if (!t) continue;\n const key = t.toLowerCase();\n if (seen.has(key)) continue;\n seen.add(key);\n out.push(t);\n }\n return out.length ? out : undefined;\n }\n\n /** Allowed characters for questionnaire item technical name (UUID-safe). */\n private isValidQuestionnaireItemName(name: string): boolean {\n return name.length >= 1 && name.length <= 128 && /^[a-zA-Z0-9_-]+$/.test(name);\n }\n\n /**\n * Plain heading for builder cards: prefer rich `question`, else admin list `title`.\n */\n protected itemQuestionHeading(item: QuestionnaireBuilderItem): string {\n const q = item.question;\n if (!q) {\n return 'Question';\n }\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const raw = q.question;\n if (raw != null && raw !== '') {\n const html = typeof raw === 'string' ? raw : resolveMultiLanguageString(raw as Record<string, string>, locale);\n const plain = stripHtmlToPlain(html);\n if (plain.trim()) {\n return plain;\n }\n }\n const titleResolved = resolveMultiLanguageString(q.title, locale);\n return titleResolved.trim() || 'Question';\n }\n\n /** Plain preview line for optional note under the heading. */\n protected itemQuestionNotePreview(item: QuestionnaireBuilderItem): string {\n const raw = item.question?.note;\n if (raw == null || raw === '') {\n return '';\n }\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n const html = typeof raw === 'string' ? raw : resolveMultiLanguageString(raw as Record<string, string>, locale);\n return stripHtmlToPlain(html);\n }\n\n /**\n * Resolve icon based on widget type, with safe fallback.\n */\n protected getQuestionWidgetIcon(item: QuestionnaireBuilderItem): string {\n const fallbackIcon = 'fa-light fa-question-circle';\n const widgetType = item.interfaceOverride?.type ?? item.question?.interface?.type;\n\n if (!widgetType) {\n return fallbackIcon;\n }\n\n try {\n return this.widgetRegistry.resolve(widgetType).icon ?? fallbackIcon;\n } catch {\n return fallbackIcon;\n }\n }\n\n //#endregion\n\n //#region ---- Preview ----\n\n /**\n * Open preview dialog with questionnaire viewer\n */\n async handlePreview(): Promise<void> {\n if (this.isPreviewDisabled()) {\n return;\n }\n\n try {\n const currentValue = convertStateToValue(this.builderState(), this.value() || undefined);\n // Always use the current displaySettings from the computed property to ensure preview uses latest settings\n currentValue.displaySettings = this.displaySettings();\n const previewTitle = await this.translationService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n ) || 'Preview';\n\n const result = await this.questionnaireViewerService.open({\n title: previewTitle,\n structure: currentValue,\n prePostConfig: this.prePostConfig() ?? undefined,\n questionnaireId: this.questionnaireEntityId(),\n });\n\n // Handle result if needed (answers, submitted status)\n if (result) {\n console.log('Questionnaire preview result:', result);\n }\n } catch (error) {\n console.error('Error opening preview:', error);\n }\n }\n\n /**\n * Toggle fullscreen mode using the directive\n */\n async handleFullscreen(): Promise<void> {\n const fullscreen = this.fullscreenDirective();\n if (fullscreen) {\n await fullscreen.toggle();\n }\n }\n\n //#endregion\n\n //#endregion\n}\n\n//#endregion\n\n","<div class=\"axm-questionnaire-builder\" axFullscreen #fullscreen=\"axFullscreen\">\n @if (showHeader()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n @if (!readonly()) {\n <ax-button\n class=\"ax-sm\"\n [text]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n | translate\n | async) || 'Add Section'\n \"\n [color]=\"'primary'\"\n (onClick)=\"addSection()\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n | translate\n | async) || 'Preview'\n \"\n [disabled]=\"isPreviewDisabled()\"\n (onClick)=\"handlePreview()\"\n >\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [title]=\"\n ('@assessment-management:questionnaires.components.questionnaire-builder.actions.fullscreen.title'\n | translate\n | async) || 'Full Screen'\n \"\n (onClick)=\"handleFullscreen()\"\n >\n <ax-icon icon=\"fa-light fa-expand\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n #standardRef\n class=\"ax-block ax-min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n","import {\n AXPActionMenuItem,\n AXPBroadcastEventService,\n AXPExecuteCommand,\n AXPExecuteCommandResult,\n} from '@acorex/platform/core';\nimport { AXPEntityEventsKeys } from '@acorex/platform/layout/entity';\nimport {\n AXPPageLayoutBase,\n AXPPageLayoutBaseComponent,\n} from '@acorex/platform/layout/views';\nimport type { AXPLayoutDetailsViewAction } from '@acorex/platform/layout/views';\nimport { AXPCommandService } from '@acorex/platform/runtime';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { RootConfig } from '../../../../const';\nimport type { PrePostConfig } from '../../../../entities/questionnaire/questionnaire.types';\nimport { toDisplaySettings, toPrePostConfig } from '../../../../entities/questionnaire/questionnaire.types';\nimport type { QuestionnaireBuilderValue } from '../../questionnaire-builder.types';\nimport { AXMQuestionnaireBuilderComponent } from '../../questionnaire-builder.component';\nimport {\n QUESTIONNAIRE_QUESTIONS_SAVE_COMMAND,\n SaveQuestionnaireQuestionsInput,\n} from './save-questionnaire-questions.command';\nimport { cloneDeep, isEqual, isNil } from 'lodash-es';\n\n/** Local command handled in execute(); reverts questions to rootContext (no AXPCommand). */\nconst QUESTIONNAIRE_QUESTIONS_DISCARD_COMMAND = 'Questionnaire:Questions:Discard';\nconst QUESTIONNAIRE_QUESTIONS_ADD_SECTION_COMMAND = 'Questionnaire:Questions:AddSection';\nconst QUESTIONNAIRE_QUESTIONS_PREVIEW_COMMAND = 'Questionnaire:Questions:Preview';\n\n//#region ---- Questionnaire Questions Page Component ----\n\n/**\n * Page component that renders the questions property using axm-questionnaire-builder.\n * Extends AXPPageLayoutBaseComponent to provide a Save button that persists questions via Questionnaire:Questions:Save.\n * Receives rootContext (entity data).\n */\n@Component({\n selector: 'axm-questionnaire-questions-page',\n standalone: true,\n imports: [AXMQuestionnaireBuilderComponent],\n template: `\n <axm-questionnaire-builder\n #builderRef\n [value]=\"questionsValue()\"\n [prePostConfig]=\"prePostConfig()\"\n [displaySettingsInput]=\"entityDisplaySettings()\"\n [questionnaireEntityId]=\"questionnaireEntityId()\"\n [showHeader]=\"false\"\n (valueChange)=\"onQuestionsChange($event)\">\n </axm-questionnaire-builder>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMQuestionnaireQuestionsPageComponent,\n },\n ],\n})\nexport class AXMQuestionnaireQuestionsPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Inputs ----\n\n rootContext = input<Record<string, unknown>>();\n /** Optional page config (e.g. field, layout) set by the page-component-renderer. */\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Services & Dependencies ----\n\n private commandService = inject(AXPCommandService);\n private eventService = inject(AXPBroadcastEventService);\n private hostPageLayout = inject(AXPPageLayoutBase, { optional: true, skipSelf: true });\n\n //#endregion\n\n //#region ---- View References ----\n\n builderRef = viewChild<AXMQuestionnaireBuilderComponent>('builderRef');\n\n //#endregion\n\n //#region ---- State Signals ----\n\n /** Latest context (includes edited questions). Used for Save when rootContext is not updated by the parent. */\n private localContext = signal<Record<string, unknown> | null>(null);\n\n /** When true, the next valueChange from the builder is ignored (avoids undoing discard due to stale emit). */\n private ignoreNextValueChange = signal(false);\n\n /** Stable pre/post config so we don't pass a new object every CD (avoids infinite loop). */\n private prePostConfigStable = signal<PrePostConfig | null>(null);\n /** Baseline snapshot of questions for dirty checks. */\n private baselineQuestions = signal<QuestionnaireBuilderValue | null | undefined>(null);\n /**\n * When true, the next builder emission should realign the baseline to the builder's canonical shape.\n * Root/API `questions` often differs from the normalized object emitted by the builder (defaults, ordering, derived fields), which would otherwise keep `isDirty` true on load and after discard/save.\n */\n private questionsBaselinePendingReconcile = signal(false);\n protected isDirty = signal(false);\n\n //#endregion\n\n //#region ---- Lifecycle ----\n\n constructor() {\n super();\n let previousRootId: unknown = undefined;\n effect(\n () => {\n const ctx = this.rootContext();\n const currentId = ctx != null && typeof ctx === 'object' ? ctx['id'] : undefined;\n if (currentId !== previousRootId) {\n previousRootId = currentId;\n this.localContext.set(null);\n const rootQuestions = ctx?.['questions'] as QuestionnaireBuilderValue | null | undefined;\n this.baselineQuestions.set(this.cloneQuestions(rootQuestions));\n this.isDirty.set(false);\n this.questionsBaselinePendingReconcile.set(true);\n }\n }\n );\n let lastPrePostKey = '';\n effect(\n () => {\n const ctx = this.rootContext();\n const next = toPrePostConfig(ctx ?? undefined);\n const key = next ? JSON.stringify(next) : '';\n if (key !== lastPrePostKey) {\n lastPrePostKey = key;\n this.prePostConfigStable.set(next);\n }\n }\n );\n }\n\n //#endregion\n\n //#region ---- Computed State ----\n\n /** Current context: prefer local updates so edits are preserved. */\n private context = computed(() => {\n const local = this.localContext();\n if (local != null) return local;\n return this.rootContext() ?? {};\n });\n\n /** Questions value passed to the builder (from context). */\n questionsValue = computed<QuestionnaireBuilderValue | null>(() => {\n const ctx = this.context();\n const q = ctx['questions'];\n return (q != null && typeof q === 'object' ? q : null) as QuestionnaireBuilderValue | null;\n });\n\n /** Pre/post config for preview; stable reference to avoid infinite change detection. */\n prePostConfig = computed(() => this.prePostConfigStable());\n\n /** Display settings from entity (for builder preview). */\n entityDisplaySettings = computed(() => toDisplaySettings((this.rootContext() ?? undefined) as Parameters<typeof toDisplaySettings>[0]) ?? null);\n\n /** Questionnaire entity id for preview calculation evaluation. */\n questionnaireEntityId = computed((): string | undefined => {\n const id = this.rootContext()?.['id'];\n return typeof id === 'string' && id.length > 0 ? id : undefined;\n });\n\n //#endregion\n\n //#region ---- Page Actions ----\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const addSectionTitle =\n (await this.translateService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-builder.actions.add-section.title'\n )) || 'Add Section';\n const previewTitle =\n (await this.translateService.translateAsync(\n '@assessment-management:questionnaires.components.questionnaire-builder.actions.preview.title'\n )) || 'Preview';\n const discardTitle =\n (await this.translateService.translateAsync('@general:actions.discard.title')) || 'Discard';\n const saveTitle =\n (await this.translateService.translateAsync('@general:actions.save.title')) || 'Save';\n\n const addSectionAction: AXPLayoutDetailsViewAction = {\n title: addSectionTitle,\n icon: 'fa-light fa-layer-group',\n zone: 'header',\n priority: 'primary',\n color: 'primary',\n command: {\n name: QUESTIONNAIRE_QUESTIONS_ADD_SECTION_COMMAND,\n options: {},\n },\n };\n const previewAction: AXPLayoutDetailsViewAction = {\n title: previewTitle,\n icon: 'fa-light fa-eye',\n zone: 'header',\n priority: 'primary',\n color: 'default',\n command: {\n name: QUESTIONNAIRE_QUESTIONS_PREVIEW_COMMAND,\n options: {},\n },\n };\n const discardAction: AXPLayoutDetailsViewAction = {\n title: discardTitle,\n icon: 'fa-light fa-rotate-left',\n zone: 'footer',\n priority: 'secondary',\n color: 'default',\n visible: this.isDirty(),\n command: {\n name: QUESTIONNAIRE_QUESTIONS_DISCARD_COMMAND,\n options: {},\n },\n };\n const saveAction: AXPLayoutDetailsViewAction = {\n title: saveTitle,\n icon: 'fa-light fa-floppy-disk',\n zone: 'footer',\n priority: 'primary',\n color: 'primary',\n visible: this.isDirty(),\n command: {\n name: QUESTIONNAIRE_QUESTIONS_SAVE_COMMAND,\n options: {},\n },\n };\n return [addSectionAction, previewAction, discardAction, saveAction];\n }\n\n //#endregion\n\n //#region ---- Command Handling ----\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n if (command.name === QUESTIONNAIRE_QUESTIONS_DISCARD_COMMAND) {\n this.ignoreNextValueChange.set(true);\n this.localContext.set(null);\n this.isDirty.set(false);\n this.questionsBaselinePendingReconcile.set(true);\n this.recompute();\n return;\n }\n if (command.name === QUESTIONNAIRE_QUESTIONS_ADD_SECTION_COMMAND) {\n void this.builderRef()?.addSection();\n return;\n }\n if (command.name === QUESTIONNAIRE_QUESTIONS_PREVIEW_COMMAND) {\n this.builderRef()?.handlePreview();\n return;\n }\n if (command.name !== QUESTIONNAIRE_QUESTIONS_SAVE_COMMAND) {\n return;\n }\n\n // Return result for delegateExecute; cast needed to satisfy base signature\n return this.handleSaveExecute() as unknown as Promise<void>;\n }\n\n private async handleSaveExecute(): Promise<AXPExecuteCommandResult> {\n const ctx = this.localContext() ?? this.rootContext() ?? {};\n const id = typeof ctx['id'] === 'string' ? ctx['id'] : undefined;\n const questions = ctx['questions'] as QuestionnaireBuilderValue | undefined;\n\n if (!id) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync('@general:messages.entity.invalid-data'),\n },\n };\n }\n\n const input: SaveQuestionnaireQuestionsInput = {\n id,\n questions: questions ?? { sections: [] },\n };\n\n const result = await this.commandService.execute<SaveQuestionnaireQuestionsInput, unknown>(\n QUESTIONNAIRE_QUESTIONS_SAVE_COMMAND,\n input\n );\n\n const execResult = (result ?? { success: false }) as AXPExecuteCommandResult;\n\n if (execResult.success) {\n const savedQuestions = questions ?? { sections: [] };\n this.baselineQuestions.set(this.cloneQuestions(savedQuestions));\n this.localContext.set(null);\n this.isDirty.set(false);\n this.questionsBaselinePendingReconcile.set(true);\n this.recompute();\n this.eventService.publish(AXPEntityEventsKeys.REFRESH_LAYOUT, {\n name: `${RootConfig.module.name}.${RootConfig.entities.questionnaire.name}`,\n });\n // Success toast is shown by details-view when execute() returns success\n }\n\n return execResult;\n }\n\n //#endregion\n\n //#region ---- UI Handlers ----\n\n /** Updates local context when the builder emits a new questions value. Skip if unchanged to avoid CD loop. */\n onQuestionsChange(value: QuestionnaireBuilderValue): void {\n if (this.ignoreNextValueChange()) {\n this.ignoreNextValueChange.set(false);\n return;\n }\n const current = this.questionsValue();\n if (this.areQuestionsEqual(current ?? undefined, value ?? undefined)) {\n if (this.questionsBaselinePendingReconcile()) {\n const aligned = current ?? value;\n this.baselineQuestions.set(this.cloneQuestions(aligned ?? undefined));\n this.questionsBaselinePendingReconcile.set(false);\n this.isDirty.set(false);\n }\n return;\n }\n const base = this.localContext() ?? this.rootContext() ?? {};\n\n if (this.questionsBaselinePendingReconcile() && this.localContext() == null) {\n this.baselineQuestions.set(this.cloneQuestions(value));\n this.isDirty.set(false);\n this.questionsBaselinePendingReconcile.set(false);\n this.localContext.set({ ...base, questions: value });\n this.recompute();\n return;\n }\n\n this.localContext.set({ ...base, questions: value });\n const baseline = this.baselineQuestions();\n const dirty = !this.areQuestionsEqual(baseline, value);\n this.isDirty.set(dirty);\n this.recompute();\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n\n private areQuestionsEqual(a: QuestionnaireBuilderValue | null | undefined, b: QuestionnaireBuilderValue | null | undefined): boolean {\n return isEqual(a, b);\n }\n\n private cloneQuestions(\n value: QuestionnaireBuilderValue | null | undefined,\n ): QuestionnaireBuilderValue | null | undefined {\n if (isNil(value)) return value;\n return cloneDeep(value);\n }\n\n protected override recompute(): void {\n super.recompute();\n const maybeLayout = this.hostPageLayout as unknown as { recompute?: () => void };\n maybeLayout.recompute?.();\n }\n\n //#endregion\n}\n\n//#endregion\n","import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex/platform/layout/components';\nimport { Injectable } from '@angular/core';\nimport { QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY } from './QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY';\n\n//#region ---- Questionnaire Questions Page Component Provider ----\n\n@Injectable()\nexport class AXMQuestionnaireQuestionsPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: QUESTIONNAIRE_QUESTIONS_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./questionnaire-questions-page.component').then(\n (m) => m.AXMQuestionnaireQuestionsPageComponent\n ),\n },\n ];\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}