@acorex-platform/module-assessment-management-client 0.0.54 → 0.0.56

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 (74) hide show
  1. package/fesm2022/{acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-CZtfv53E.mjs → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs} +42 -42
  2. package/fesm2022/{acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-CZtfv53E.mjs.map → acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-DvD4E7zS.mjs → acorex-platform-module-assessment-management-client-assessment-voice.commands-CaElbuNh.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-assessment-management-client-assessment-voice.commands-DvD4E7zS.mjs.map → acorex-platform-module-assessment-management-client-assessment-voice.commands-CaElbuNh.mjs.map} +1 -1
  5. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs +1 -1
  6. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-case.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs +1 -1
  8. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-assessment-session.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-question-bank-item.mjs +1 -1
  10. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-question-bank-item.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs +1 -1
  12. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entities-questionnaire.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Pa8mdKRV.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DYpWu3Vx.mjs} +6 -6
  14. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-Pa8mdKRV.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-acorex-platform-module-assessment-management-client-contracts-entity-catalog-DYpWu3Vx.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DJeaqilT.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-CUctZ-0K.mjs} +3 -3
  16. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-CUctZ-0K.mjs.map +1 -0
  17. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BSP4UQ47.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-C2JJw_JJ.mjs} +3 -3
  18. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-C2JJw_JJ.mjs.map +1 -0
  19. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CVgepxbX.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-D3y_rWUI.mjs} +3 -3
  20. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-D3y_rWUI.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-8Dqdbm6i.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-CVz5W0fF.mjs} +3 -3
  22. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-CVz5W0fF.mjs.map +1 -0
  23. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BTDJAnF1.mjs → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-C01AW5NW.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-BTDJAnF1.mjs.map → acorex-platform-module-assessment-management-client-contracts-entity-catalog-template.entity-C01AW5NW.mjs.map} +1 -1
  25. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog.mjs +1 -1
  26. package/fesm2022/{acorex-platform-module-assessment-management-client-fill-assessment-session.command-Dp6gSQWO.mjs → acorex-platform-module-assessment-management-client-fill-assessment-session.command-CMIq-DDl.mjs} +15 -8
  27. package/fesm2022/acorex-platform-module-assessment-management-client-fill-assessment-session.command-CMIq-DDl.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-B94T15Vb.mjs → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-COZcUPEj.mjs} +2 -2
  29. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-B94T15Vb.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer-popup.component-COZcUPEj.mjs.map} +1 -1
  30. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-DpEeqw34.mjs → acorex-platform-module-assessment-management-client-form-template-viewer.service-CvSRpoos.mjs} +3 -3
  31. package/fesm2022/{acorex-platform-module-assessment-management-client-form-template-viewer.service-DpEeqw34.mjs.map → acorex-platform-module-assessment-management-client-form-template-viewer.service-CvSRpoos.mjs.map} +1 -1
  32. package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-5E3IK-OG.mjs → acorex-platform-module-assessment-management-client-open-form-template.command-CmR-xFHE.mjs} +3 -3
  33. package/fesm2022/{acorex-platform-module-assessment-management-client-open-form-template.command-5E3IK-OG.mjs.map → acorex-platform-module-assessment-management-client-open-form-template.command-CmR-xFHE.mjs.map} +1 -1
  34. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-COIcfqBQ.mjs → acorex-platform-module-assessment-management-client-preview-form-template.command-BEzE0620.mjs} +2 -2
  35. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-form-template.command-COIcfqBQ.mjs.map → acorex-platform-module-assessment-management-client-preview-form-template.command-BEzE0620.mjs.map} +1 -1
  36. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-question.command-ZTIjmXdy.mjs → acorex-platform-module-assessment-management-client-preview-question.command-BGT8qB1_.mjs} +10 -7
  37. package/fesm2022/acorex-platform-module-assessment-management-client-preview-question.command-BGT8qB1_.mjs.map +1 -0
  38. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-questionnaire.command-CyiaPtLs.mjs → acorex-platform-module-assessment-management-client-preview-questionnaire.command-duK7Tjjp.mjs} +8 -10
  39. package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-duK7Tjjp.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-module-assessment-management-client-preview-session-pdf.command-BsiJU6ep.mjs → acorex-platform-module-assessment-management-client-preview-session-pdf.command-DjBxg7Yn.mjs} +2 -2
  41. package/fesm2022/acorex-platform-module-assessment-management-client-preview-session-pdf.command-DjBxg7Yn.mjs.map +1 -0
  42. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-CRRrPiJ9.mjs → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B7_G_C5B.mjs} +2 -2
  43. package/fesm2022/{acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-CRRrPiJ9.mjs.map → acorex-platform-module-assessment-management-client-question-bank-interface-editor-widget-edit.component-B7_G_C5B.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-Cn3kk7b6.mjs → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-daQL4OD_.mjs} +2 -2
  45. package/fesm2022/{acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-Cn3kk7b6.mjs.map → acorex-platform-module-assessment-management-client-questionnaire-viewer-popup.component-daQL4OD_.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-module-assessment-management-client-review-assessment-session.command-Cf6SKE8F.mjs → acorex-platform-module-assessment-management-client-review-assessment-session.command-CPeFh1m7.mjs} +12 -7
  47. package/fesm2022/acorex-platform-module-assessment-management-client-review-assessment-session.command-CPeFh1m7.mjs.map +1 -0
  48. package/fesm2022/{acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs → acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs} +3 -3
  49. package/fesm2022/acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs.map +1 -0
  50. package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-D3XNxDqe.mjs → acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs} +2 -2
  51. package/fesm2022/{acorex-platform-module-assessment-management-client-template-widget-edit.component-D3XNxDqe.mjs.map → acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs.map} +1 -1
  52. package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-DlnnmAlD.mjs → acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs} +2 -2
  53. package/fesm2022/{acorex-platform-module-assessment-management-client-view-session-answers.command-DlnnmAlD.mjs.map → acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs.map} +1 -1
  54. package/fesm2022/acorex-platform-module-assessment-management-client.mjs +1 -1
  55. package/i18n/en-AU/assessment-management.json +1083 -0
  56. package/i18n/en-AU/form-template-management.json +322 -0
  57. package/i18n/en-AU/questionnaire.json +195 -0
  58. package/i18n/en-US/assessment-management.json +1083 -0
  59. package/i18n/en-US/form-template-management.json +322 -0
  60. package/i18n/en-US/questionnaire.json +195 -0
  61. package/i18n/fa-IR/assessment-management.json +1118 -0
  62. package/i18n/fa-IR/form-template-management.json +322 -0
  63. package/i18n/fa-IR/questionnaire.json +195 -0
  64. package/package.json +3 -3
  65. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-case.entity-DJeaqilT.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-assessment-session.entity-BSP4UQ47.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-question-bank-item.entity-CVgepxbX.mjs.map +0 -1
  68. package/fesm2022/acorex-platform-module-assessment-management-client-contracts-entity-catalog-questionnaire.entity-8Dqdbm6i.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-module-assessment-management-client-fill-assessment-session.command-Dp6gSQWO.mjs.map +0 -1
  70. package/fesm2022/acorex-platform-module-assessment-management-client-preview-question.command-ZTIjmXdy.mjs.map +0 -1
  71. package/fesm2022/acorex-platform-module-assessment-management-client-preview-questionnaire.command-CyiaPtLs.mjs.map +0 -1
  72. package/fesm2022/acorex-platform-module-assessment-management-client-preview-session-pdf.command-BsiJU6ep.mjs.map +0 -1
  73. package/fesm2022/acorex-platform-module-assessment-management-client-review-assessment-session.command-Cf6SKE8F.mjs.map +0 -1
  74. package/fesm2022/acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs.map +0 -1
@@ -235,7 +235,7 @@ class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {
235
235
  }
236
236
  }
237
237
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTemplateWidgetPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
238
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col lg:h-[60vh]\">\n <div class=\"p-2 surface-lowest border-b flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"flex flex-grow h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"flex h-full p-2 overflow-auto w-1/3 justify-start items-start surface-lowest border-e\"\n >\n <ax-tree-view\n [selectMode]=\"'none'\"\n [dragBehavior]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [nodeTemplate]=\"categoryTemplate\"\n [titleField]=\"'title'\"\n [idField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [datasource]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeToggle)=\"handleNodeToggle($event)\"\n class=\"w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-node=\"node\">\n @let item = node;\n <ax-icon class=\"fa-solid fa-folder text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'flex h-full flex-col w-full overflow-hidden'\n : 'flex h-full flex-col w-2/3 overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"flex flex-col p-4\">\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"my-4 border-dashed\" />\n }\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
238
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTemplateWidgetPickerComponent, isStandalone: true, selector: "ng-component", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTerm: "searchTermChange" }, usesInheritance: true, ngImport: i0, template: "<div class=\"flex flex-col lg:h-[60vh]\">\n <div class=\"p-2 surface-lowest border-b flex-none\">\n <ax-search-box\n look=\"fill\"\n [placeholder]=\"'@form-template-management:designer.components.template-picker.search-placeholder' | translate | async\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"flex flex-grow h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"flex h-full p-2 overflow-auto w-1/3 justify-start items-start surface-lowest border-e\"\n >\n <ax-tree-view\n [selectMode]=\"'none'\"\n [dragBehavior]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [nodeTemplate]=\"categoryTemplate\"\n [titleField]=\"'title'\"\n [idField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [datasource]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeToggle)=\"handleNodeToggle($event)\"\n class=\"w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-node=\"node\">\n @let item = node;\n <ax-icon class=\"fa-solid fa-folder text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'flex h-full flex-col w-full overflow-hidden'\n : 'flex h-full flex-col w-2/3 overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"flex flex-col p-4\">\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"my-4 border-dashed\" />\n }\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@form-template-management:designer.components.widget-picker.selected-count' | translate: { params: { count: selectedWidgets().length } } | async\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type:
239
239
  //
240
240
  AXCommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: AXTreeViewComponent, selector: "ax-tree-view", inputs: ["datasource", "selectMode", "selectionBehavior", "dragArea", "dragBehavior", "showIcons", "showChildrenBadge", "expandedIcon", "collapsedIcon", "indentSize", "look", "alternate", "nodeTemplate", "idField", "titleField", "highlightText", "tooltipField", "iconField", "expandedField", "selectedField", "indeterminateField", "disabledField", "hiddenField", "childrenField", "childrenCountField", "dataField", "inheritDisabled", "expandOnDoubleClick", "doubleClickDuration", "tooltipDelay", "controlledSelection", "selectedIds"], outputs: ["datasourceChange", "selectedIdsChange", "onBeforeDrop", "onNodeToggle", "onNodeSelect", "onNodeDoubleClick", "onNodeClick", "onSelectionChange", "onOrderChange", "onMoveChange", "onItemsChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPWidgetItemComponent, selector: "axp-widget-item", inputs: ["widget", "isSelected", "showPinButton", "customClasses"], outputs: ["onWidgetClick", "onPinClick"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager, encapsulation: i0.ViewEncapsulation.None }); }
241
241
  }
@@ -253,8 +253,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
253
253
  AXTranslationModule,
254
254
  AXPWidgetItemComponent,
255
255
  AXPStateMessageComponent,
256
- ], changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col lg:h-[60vh]\">\n <div class=\"p-2 surface-lowest border-b flex-none\">\n <ax-search-box\n look=\"fill\"\n placeholder=\"e.g. Button, Text, ...\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"flex flex-grow h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"flex h-full p-2 overflow-auto w-1/3 justify-start items-start surface-lowest border-e\"\n >\n <ax-tree-view\n [selectMode]=\"'none'\"\n [dragBehavior]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [nodeTemplate]=\"categoryTemplate\"\n [titleField]=\"'title'\"\n [idField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [datasource]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeToggle)=\"handleNodeToggle($event)\"\n class=\"w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-node=\"node\">\n @let item = node;\n <ax-icon class=\"fa-solid fa-folder text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'flex h-full flex-col w-full overflow-hidden'\n : 'flex h-full flex-col w-2/3 overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"flex flex-col p-4\">\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"my-4 border-dashed\" />\n }\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n text=\"{{ selectedWidgets().length }} Selected\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n" }]
256
+ ], changeDetection: ChangeDetectionStrategy.Eager, encapsulation: ViewEncapsulation.None, template: "<div class=\"flex flex-col lg:h-[60vh]\">\n <div class=\"p-2 surface-lowest border-b flex-none\">\n <ax-search-box\n look=\"fill\"\n [placeholder]=\"'@form-template-management:designer.components.template-picker.search-placeholder' | translate | async\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"flex flex-grow h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"flex h-full p-2 overflow-auto w-1/3 justify-start items-start surface-lowest border-e\"\n >\n <ax-tree-view\n [selectMode]=\"'none'\"\n [dragBehavior]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [nodeTemplate]=\"categoryTemplate\"\n [titleField]=\"'title'\"\n [idField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [datasource]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeToggle)=\"handleNodeToggle($event)\"\n class=\"w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-node=\"node\">\n @let item = node;\n <ax-icon class=\"fa-solid fa-folder text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'flex h-full flex-col w-full overflow-hidden'\n : 'flex h-full flex-col w-2/3 overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"flex flex-col p-4\">\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"my-4 border-dashed\" />\n }\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@form-template-management:designer.components.widget-picker.selected-count' | translate: { params: { count: selectedWidgets().length } } | async\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n" }]
257
257
  }], propDecorators: { searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTerm", required: false }] }, { type: i0.Output, args: ["searchTermChange"] }] } });
258
258
 
259
259
  export { AXPTemplateWidgetPickerComponent };
260
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-picker.component-RFv42PnE.mjs.map
260
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-template-picker.component-D_UCdFOH.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/components/template-picker/template-picker.component.ts","../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/components/template-picker/template-picker.component.html"],"sourcesContent":["import { AXCommonModule } from '@acorex/cdk/common';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPPlatformScope } from '@acorex-platform/framework-shared/core';\nimport { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n inject,\n model,\n signal,\n ViewEncapsulation,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { orderBy } from 'lodash';\nimport { AXPTemplateWidgetListItem } from './template.provider';\n\nimport { AXTreeViewComponent, AXTreeViewNode, AXTreeViewNodeClickEvent, AXTreeViewNodeToggleEvent } from '@acorex/components/tree-view';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport {\n AXPStateMessageComponent,\n AXPWidgetItemClickEvent,\n AXPWidgetItemComponent,\n AXPWidgetItemData,\n} from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';\n\nexport interface AXPDisplayWidgetProvided extends AXPTemplateWidgetListItem {\n pinned: boolean;\n}\n\nexport interface AXPCategoryDisplayModel extends AXTreeViewNode {\n id: string;\n title: string;\n parentId?: string;\n childrenCount: number;\n expanded?: boolean;\n}\n\n/**\n * Maps AXPDisplayWidgetProvided to generic AXPWidgetItemData\n */\nfunction mapToWidgetItemData(widget: AXPDisplayWidgetProvided): AXPWidgetItemData {\n return {\n title: widget.title,\n description: widget.description,\n icon: widget.icon ?? 'fa-solid fa-cube',\n isPinned: widget.pinned,\n data: widget,\n };\n}\n\n@Component({\n imports: [\n CommonModule,\n FormsModule,\n //\n AXCommonModule,\n AXButtonModule,\n AXDecoratorModule,\n AXSearchBoxModule,\n AXTreeViewComponent,\n AXTranslationModule,\n AXPWidgetItemComponent,\n AXPStateMessageComponent,\n ],\n templateUrl: './template-picker.component.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPTemplateWidgetPickerComponent extends AXBasePageComponent {\n private settingsService = inject(AXPSettingsService);\n private entityService = inject(AXPEntityService);\n private categoryEntityDataAccessor = this.entityService\n .withEntity(RootConfig.module.name, 'Category')\n .data<any, any>();\n\n private readonly expandedCategoriesKey = 'forms:templates:picker:expandedCategories';\n\n // Track expanded category IDs\n private expandedCategoryIds = signal<string[]>([]);\n\n protected override async ngOnInit() {\n super.ngOnInit();\n // Load expanded categories from settings\n const savedExpandedIds = (await this.settingsService.get<string[]>(this.expandedCategoriesKey)) || [];\n this.expandedCategoryIds.set(savedExpandedIds);\n //\n const pinnedWidgets = (await this.settingsService.get<string[]>(this.pinnedSettingKey)) || [];\n this.displayWidgets.set(\n this.widgets.map((c) => ({\n ...c,\n pinned: pinnedWidgets.includes(c.id),\n icon: c.icon ?? 'fa-solid fa-file-invoice',\n })),\n );\n }\n\n private readonly pinnedSettingKey = 'forms:templates:picker:pinned';\n\n protected searchTerm = model('');\n\n // Data properties - populated by popup service\n widgets: AXPTemplateWidgetListItem[] = [];\n\n // Signals\n private displayWidgets = signal<AXPDisplayWidgetProvided[]>([]);\n\n // Signal to track selected widgets\n protected selectedWidgets = signal<AXPDisplayWidgetProvided[]>([]);\n\n // Computed for filtered and ordered widget list\n private orderedList = computed(() => {\n const search = this.searchTerm().toLowerCase();\n const selectedCategory = this.selectedCategory();\n const selectedCategoryId = selectedCategory ? selectedCategory.id : null;\n\n const filterByCategory = (widget: AXPDisplayWidgetProvided) => {\n if (!selectedCategoryId || selectedCategoryId == 'all') return true;\n return selectedCategoryId === widget.group.name;\n };\n\n return orderBy(\n this.displayWidgets().filter((w) => {\n const matchesCategory = filterByCategory(w);\n const matchesSearch =\n !search || w.title.toLowerCase().includes(search) || w.description?.toLowerCase().includes(search);\n return matchesCategory && matchesSearch;\n }),\n ['pinned', 'title'],\n ['desc', 'asc'],\n );\n });\n\n // Pinned and regular lists\n protected pinnedList = computed(() => this.orderedList().filter((c) => c.pinned));\n protected regularList = computed(() => this.orderedList().filter((c) => !c.pinned));\n\n // Mapped data for generic widget items\n protected pinnedWidgetItems = computed(() => this.pinnedList().map(mapToWidgetItemData));\n protected regularWidgetItems = computed(() => this.regularList().map(mapToWidgetItemData));\n\n // Computed property to check if we're in search mode\n protected isSearchMode = computed(() => this.searchTerm().trim().length > 0);\n\n // Computed property to check if there are any results\n protected hasResults = computed(() => this.orderedList().length > 0);\n\n protected handleWidgetClick(clickEvent: AXPWidgetItemClickEvent): void {\n const { event, widget } = clickEvent;\n const originalWidget = widget.data as AXPDisplayWidgetProvided;\n\n if (event.ctrlKey) {\n const currentSelection = this.selectedWidgets();\n const isAlreadySelected = currentSelection.some((w) => w === originalWidget);\n\n if (isAlreadySelected) {\n // Deselect widget if already selected\n this.selectedWidgets.set(currentSelection.filter((w) => w !== originalWidget));\n } else {\n // Add widget to selection\n this.selectedWidgets.set([...currentSelection, originalWidget]);\n }\n } else {\n // If CTRL is not pressed, select only the clicked widget\n this.close({ widgets: [originalWidget] });\n }\n }\n\n protected async handleWidgetPinClick(clickEvent: AXPWidgetItemClickEvent): Promise<void> {\n const { widget } = clickEvent;\n const originalWidget = widget.data as AXPDisplayWidgetProvided;\n\n originalWidget.pinned = !originalWidget.pinned;\n\n // Get the current list of pinned widgets from settings\n let pinnedWidgets = (await this.settingsService.get<string[]>(this.pinnedSettingKey)) || [];\n\n // Update the list of pinned widgets based on the pinned status\n if (originalWidget.pinned) {\n if (!pinnedWidgets.includes(originalWidget.id)) {\n pinnedWidgets.push(originalWidget.id);\n }\n } else {\n pinnedWidgets = pinnedWidgets.filter((name) => name !== originalWidget.id);\n }\n\n // Save the updated list of pinned widgets\n await this.settingsService.scope(AXPPlatformScope.User).set(this.pinnedSettingKey, pinnedWidgets);\n\n // Trigger a re-render of the widgets\n this.displayWidgets.set([...this.displayWidgets()]);\n }\n\n // Check if a widget is selected\n protected isWidgetSelected(widget: AXPDisplayWidgetProvided): boolean {\n return this.selectedWidgets().includes(widget);\n }\n\n // Check if a generic widget item is selected\n protected isWidgetItemSelected(widgetItem: AXPWidgetItemData): boolean {\n const originalWidget = widgetItem.data as AXPDisplayWidgetProvided;\n return this.isWidgetSelected(originalWidget);\n }\n\n protected handleConfirmSelection(): void {\n this.close({ widgets: this.selectedWidgets() });\n }\n\n //#region Category Tree\n\n protected provideLazyTreeView = async (selectedItemId?: string | number): Promise<AXTreeViewNode[]> => {\n if (selectedItemId == 'all') {\n const categories = await this.categoryEntityDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: {\n type: 'isEmpty',\n },\n value: true,\n },\n });\n const items = categories.items.map((item: any) => ({\n id: item.id,\n title: item.title,\n childrenCount: item.childrenCount ?? 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n return items;\n } else if (selectedItemId) {\n const categories = await this.categoryEntityDataAccessor.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'parentId',\n operator: {\n type: 'equal',\n },\n value: selectedItemId as string,\n },\n });\n return categories.items.map((item: any) => ({\n id: item.id,\n title: item.title,\n parentId: item.parentId,\n childrenCount: item.childrenCount ?? 0,\n expanded: this.expandedCategoryIds().includes(item.id),\n }));\n } else {\n return [\n {\n childrenCount: 1,\n id: 'all',\n title: 'All Items',\n expanded: true,\n } as AXPCategoryDisplayModel,\n ];\n }\n };\n\n protected selectedCategory = signal<AXPCategoryDisplayModel | null>(null);\n\n protected handleNodeClick(event: AXTreeViewNodeClickEvent) {\n const item = event.node as AXPCategoryDisplayModel;\n this.selectedCategory.set(item);\n }\n\n protected async handleNodeToggle(event: AXTreeViewNodeToggleEvent) {\n const item = event.node as AXPCategoryDisplayModel;\n const isExpanded = event.node['expanded'] === true;\n const currentExpanded = this.expandedCategoryIds();\n\n if (isExpanded) {\n // Category was expanded - add to expanded list\n if (!currentExpanded.includes(item.id)) {\n const newExpanded = [...currentExpanded, item.id];\n this.expandedCategoryIds.set(newExpanded);\n await this.settingsService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n } else {\n // Category was collapsed - remove from expanded list\n const newExpanded = currentExpanded.filter((id) => id !== item.id);\n this.expandedCategoryIds.set(newExpanded);\n await this.settingsService.scope(AXPPlatformScope.User).set(this.expandedCategoriesKey, newExpanded);\n }\n }\n\n //#end region\n}\n","<div class=\"flex flex-col lg:h-[60vh]\">\n <div class=\"p-2 surface-lowest border-b flex-none\">\n <ax-search-box\n look=\"fill\"\n [placeholder]=\"'@form-template-management:designer.components.template-picker.search-placeholder' | translate | async\"\n class=\"ax-sm\"\n [(ngModel)]=\"searchTerm\"\n [delayTime]=\"300\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-search-box>\n </div>\n <div class=\"flex flex-grow h-full\">\n <!-- Category Tree - Hidden in search mode -->\n @if (!isSearchMode()) {\n <div\n class=\"flex h-full p-2 overflow-auto w-1/3 justify-start items-start surface-lowest border-e\"\n >\n <ax-tree-view\n [selectMode]=\"'none'\"\n [dragBehavior]=\"'none'\"\n [showIcons]=\"false\"\n [showChildrenBadge]=\"false\"\n [nodeTemplate]=\"categoryTemplate\"\n [titleField]=\"'title'\"\n [idField]=\"'id'\"\n [expandedField]=\"'expanded'\"\n [datasource]=\"provideLazyTreeView\"\n (onNodeClick)=\"handleNodeClick($event)\"\n (onNodeToggle)=\"handleNodeToggle($event)\"\n class=\"w-full\"\n >\n </ax-tree-view>\n\n <ng-template #categoryTemplate let-node=\"node\">\n @let item = node;\n <ax-icon class=\"fa-solid fa-folder text-yellow-500 fa-fw\"></ax-icon>\n {{ item.title | translate | async }}\n </ng-template>\n </div>\n }\n\n <!-- Widget Grid - Full width in search mode, 2/3 width otherwise -->\n <div\n [class]=\"\n isSearchMode()\n ? 'flex h-full flex-col w-full overflow-hidden'\n : 'flex h-full flex-col w-2/3 overflow-hidden'\n \"\n >\n @if (hasResults()) {\n <div class=\"flex flex-col p-4\">\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of pinnedWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n @if (pinnedWidgetItems().length) {\n <hr class=\"my-4 border-dashed\" />\n }\n <div class=\"grid grid-cols-2 gap-2\">\n @for (widgetItem of regularWidgetItems(); track widgetItem.title) {\n <axp-widget-item\n [widget]=\"widgetItem\"\n [isSelected]=\"isWidgetItemSelected(widgetItem)\"\n (onWidgetClick)=\"handleWidgetClick($event)\"\n (onPinClick)=\"handleWidgetPinClick($event)\"\n >\n </axp-widget-item>\n }\n </div>\n </div>\n } @else {\n <!-- Empty State -->\n <axp-state-message\n icon=\"fa-light fa-search\"\n [title]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.title'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.title'\n \"\n [description]=\"\n isSearchMode()\n ? '@form-template-management:designer.components.template-picker.empty-states.no-search-results.description'\n : '@form-template-management:designer.components.template-picker.empty-states.no-category-results.description'\n \"\n >\n @if (isSearchMode()) {\n <ax-button\n look=\"blank\"\n [text]=\"'@form-template-management:designer.components.template-picker.clear-search' | translate | async\"\n class=\"mt-4\"\n (onClick)=\"searchTerm.set('')\"\n ></ax-button>\n }\n </axp-state-message>\n }\n </div>\n </div>\n</div>\n\n@if (selectedWidgets().length) {\n <ax-footer>\n <ax-suffix>\n <ax-button\n look=\"solid\"\n color=\"primary\"\n [text]=\"'@form-template-management:designer.components.widget-picker.selected-count' | translate: { params: { count: selectedWidgets().length } } | async\"\n (onClick)=\"handleConfirmSelection()\"\n ></ax-button>\n </ax-suffix>\n </ax-footer>\n}\n"],"names":["i1","i2","i3","i5","i6"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4CA;;AAEG;AACH,SAAS,mBAAmB,CAAC,MAAgC,EAAA;IAC3D,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,kBAAkB;QACvC,QAAQ,EAAE,MAAM,CAAC,MAAM;AACvB,QAAA,IAAI,EAAE,MAAM;KACb;AACH;AAoBM,MAAO,gCAAiC,SAAQ,mBAAmB,CAAA;AAlBzE,IAAA,WAAA,GAAA;;AAmBU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxC,IAAA,CAAA,0BAA0B,GAAG,IAAI,CAAC;aACvC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU;AAC7C,aAAA,IAAI,EAAY;QAEF,IAAA,CAAA,qBAAqB,GAAG,2CAA2C;;QAG5E,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAW,EAAE;gGAAC;QAkBjC,IAAA,CAAA,gBAAgB,GAAG,+BAA+B;QAEzD,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,EAAE;uFAAC;;QAGhC,IAAA,CAAA,OAAO,GAAgC,EAAE;;QAGjC,IAAA,CAAA,cAAc,GAAG,MAAM,CAA6B,EAAE;2FAAC;;QAGrD,IAAA,CAAA,eAAe,GAAG,MAAM,CAA6B,EAAE;4FAAC;;AAG1D,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE;AAC9C,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,GAAG,IAAI;AAExE,YAAA,MAAM,gBAAgB,GAAG,CAAC,MAAgC,KAAI;AAC5D,gBAAA,IAAI,CAAC,kBAAkB,IAAI,kBAAkB,IAAI,KAAK;AAAE,oBAAA,OAAO,IAAI;AACnE,gBAAA,OAAO,kBAAkB,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI;AACjD,YAAA,CAAC;AAED,YAAA,OAAO,OAAO,CACZ,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACjC,gBAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC;AAC3C,gBAAA,MAAM,aAAa,GACjB,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpG,OAAO,eAAe,IAAI,aAAa;AACzC,YAAA,CAAC,CAAC,EACF,CAAC,QAAQ,EAAE,OAAO,CAAC,EACnB,CAAC,MAAM,EAAE,KAAK,CAAC,CAChB;QACH,CAAC;wFAAC;;QAGQ,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;uFAAC;QACvE,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;wFAAC;;AAGzE,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC;8FAAC;AAC9E,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC;+FAAC;;AAGhF,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;yFAAC;;AAGlE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;uFAAC;;AAiE1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,OAAO,cAAgC,KAA+B;AACpG,YAAA,IAAI,cAAc,IAAI,KAAK,EAAE;gBAC3B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AAC7D,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE;AACR,4BAAA,IAAI,EAAE,SAAS;AAChB,yBAAA;AACD,wBAAA,KAAK,EAAE,IAAI;AACZ,qBAAA;AACF,iBAAA,CAAC;AACF,gBAAA,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBACjD,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;oBACtC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACvD,iBAAA,CAAC,CAAC;AACH,gBAAA,OAAO,KAAK;YACd;iBAAO,IAAI,cAAc,EAAE;gBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;AAC7D,oBAAA,IAAI,EAAE,CAAC;AACP,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE;AACN,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,QAAQ,EAAE;AACR,4BAAA,IAAI,EAAE,OAAO;AACd,yBAAA;AACD,wBAAA,KAAK,EAAE,cAAwB;AAChC,qBAAA;AACF,iBAAA,CAAC;gBACF,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,MAAM;oBAC1C,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,oBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;oBACtC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACvD,iBAAA,CAAC,CAAC;YACL;iBAAO;gBACL,OAAO;AACL,oBAAA;AACE,wBAAA,aAAa,EAAE,CAAC;AAChB,wBAAA,EAAE,EAAE,KAAK;AACT,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,QAAQ,EAAE,IAAI;AACY,qBAAA;iBAC7B;YACH;AACF,QAAA,CAAC;QAES,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAiC,IAAI;6FAAC;AA4B1E,IAAA;AAhNoB,IAAA,MAAM,QAAQ,GAAA;QAC/B,KAAK,CAAC,QAAQ,EAAE;;AAEhB,QAAA,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAW,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;AACrG,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC;;AAE9C,QAAA,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAW,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AAC7F,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvB,YAAA,GAAG,CAAC;YACJ,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,YAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,0BAA0B;SAC3C,CAAC,CAAC,CACJ;IACH;AAoDU,IAAA,iBAAiB,CAAC,UAAmC,EAAA;AAC7D,QAAA,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU;AACpC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,IAAgC;AAE9D,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC;YAE5E,IAAI,iBAAiB,EAAE;;AAErB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,cAAc,CAAC,CAAC;YAChF;iBAAO;;AAEL,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,cAAc,CAAC,CAAC;YACjE;QACF;aAAO;;YAEL,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3C;IACF;IAEU,MAAM,oBAAoB,CAAC,UAAmC,EAAA;AACtE,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU;AAC7B,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,IAAgC;AAE9D,QAAA,cAAc,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,MAAM;;AAG9C,QAAA,IAAI,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAW,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;AAG3F,QAAA,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;AAC9C,gBAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACvC;QACF;aAAO;AACL,YAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QAC5E;;AAGA,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC;;AAGjG,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACrD;;AAGU,IAAA,gBAAgB,CAAC,MAAgC,EAAA;QACzD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChD;;AAGU,IAAA,oBAAoB,CAAC,UAA6B,EAAA;AAC1D,QAAA,MAAM,cAAc,GAAG,UAAU,CAAC,IAAgC;AAClE,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC9C;IAEU,sBAAsB,GAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;IACjD;AAyDU,IAAA,eAAe,CAAC,KAA+B,EAAA;AACvD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B;AAClD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;IACjC;IAEU,MAAM,gBAAgB,CAAC,KAAgC,EAAA;AAC/D,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAA+B;QAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI;AAClD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAElD,IAAI,UAAU,EAAE;;YAEd,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACtC,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC;AACjD,gBAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACzC,gBAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC;YACtG;QACF;aAAO;;AAEL,YAAA,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAClE,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACzC,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC;QACtG;IACF;8GAzNW,gCAAgC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3E7C,m3IAuHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5DI,YAAY,8BACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA;;AAEX,gBAAA,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,8IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,eAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,sBAAsB,0KACtB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMf,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAlB5C,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;wBACZ,WAAW;;wBAEX,cAAc;wBACd,cAAc;wBACd,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,sBAAsB;wBACtB,wBAAwB;AACzB,qBAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,KAAK,EAAA,aAAA,EAC/B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,m3IAAA,EAAA;;;"}
@@ -3,7 +3,7 @@ import * as i1 from '@acorex-platform/framework-client/layout/widget-core';
3
3
  import { AXPValueWidgetComponent, AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';
4
4
  import * as i0 from '@angular/core';
5
5
  import { inject, computed, signal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
6
- import { j as AXPTemplateWidgetProviderService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-CZtfv53E.mjs';
6
+ import { j as AXPTemplateWidgetProviderService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs';
7
7
 
8
8
  class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {
9
9
  // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
104
104
  }], ctorParameters: () => [] });
105
105
 
106
106
  export { AXPTemplateWidgetEditComponent };
107
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-widget-edit.component-D3XNxDqe.mjs.map
107
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-template-widget-edit.component-D3XNxDqe.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/widgets/template/template-widget-edit.component.ts"],"sourcesContent":["import type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPTemplateWidgetProviderService } from '../../components/template-picker/template.provider';\n\n@Component({\n selector: 'axp-template-widget-edit',\n template: `\n @for (node of nodes(); track $index) {\n <ng-container axp-widget-renderer\n [node]=\"node\"\n [parentNode]=\"this\"\n [mode]=\"this.mode\">\n </ng-container>\n }\n <!-- @if(nodes().length>0) {\n <ng-container>\n \n </ng-container> -->\n <!-- @if(showRemove())\n {\n <div\n class=\"text-danger-500 hover:text-danger-800 mt-2 text-xs cursor-pointer\"\n (click)=\"handleRemoveClick()\"\n >\n {{ '@form-template-management:templates.terms.remove-template' | translate | async }}\n </div>\n }\n } \n @else {\n <span\n class=\"underline decoration-dotted underline-offset-8 hover:text-primary-500 cursor-pointer\"\n (click)=\"handleSelectClick()\"\n >\n {{ '@form-template-management:templates.terms.choose-template' | translate | async }}\n </span>\n } -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPWidgetCoreModule, AXTranslationModule]\n})\nexport class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {\n private metaKey = '__meta__';\n\n private templateProvider = inject(AXPTemplateWidgetProviderService);\n protected templateId = computed<string>(() => this.options()['templateId'] as string);\n protected nodes = signal<AXPWidgetNode[]>([]);\n // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);\n\n\n // protected showRemove = computed(() => {\n // return this.allowRemove() && this.parent?.config.name != 'template';\n // });\n\n constructor() {\n super();\n //\n effect(\n async () => {\n this.nodes.set([]);\n const templateId = this.templateId();\n if (templateId) {\n const item = await this.templateProvider.get(templateId);\n if (item) {\n this.nodes.set(item.nodes);\n }\n }\n }\n );\n }\n\n //TODO: make a new widget to handle select widget in edit mode\n // protected async handleSelectClick() {\n // const result = await this.templateProvider.chooseTemplate();\n // if (result) {\n // this.setOptions({ templateId: result.id });\n // const value = this.getValue() ?? {};\n // set(value, this.metaKey, { templateId: result.id });\n // this.setValue(value);\n // }\n // }\n\n // protected async handleRemoveClick() {\n // this.setOptions({ templateId: null });\n // this.setValue(null);\n // }\n}\n"],"names":[],"mappings":";;;;;;;AA4CM,MAAO,8BAA+B,SAAQ,uBAAuB,CAAA;;;;;AAazE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAbD,IAAA,CAAA,OAAO,GAAG,UAAU;AAEpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAW;uFAAC;QAC3E,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,EAAE;kFAAC;;QAW3C,MAAM,CACJ,YAAW;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5B;YACF;AACF,QAAA,CAAC,CACF;IACH;8GA5BW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,mBAAmB,uQAAE,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEvC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB;AACnD,iBAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-template-widget-edit.component-DERabYdH.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/form-template/designer/widgets/template/template-widget-edit.component.ts"],"sourcesContent":["import type { AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\n\n\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPTemplateWidgetProviderService } from '../../components/template-picker/template.provider';\n\n@Component({\n selector: 'axp-template-widget-edit',\n template: `\n @for (node of nodes(); track $index) {\n <ng-container axp-widget-renderer\n [node]=\"node\"\n [parentNode]=\"this\"\n [mode]=\"this.mode\">\n </ng-container>\n }\n <!-- @if(nodes().length>0) {\n <ng-container>\n \n </ng-container> -->\n <!-- @if(showRemove())\n {\n <div\n class=\"text-danger-500 hover:text-danger-800 mt-2 text-xs cursor-pointer\"\n (click)=\"handleRemoveClick()\"\n >\n {{ '@form-template-management:templates.terms.remove-template' | translate | async }}\n </div>\n }\n } \n @else {\n <span\n class=\"underline decoration-dotted underline-offset-8 hover:text-primary-500 cursor-pointer\"\n (click)=\"handleSelectClick()\"\n >\n {{ '@form-template-management:templates.terms.choose-template' | translate | async }}\n </span>\n } -->\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXPWidgetCoreModule, AXTranslationModule]\n})\nexport class AXPTemplateWidgetEditComponent extends AXPValueWidgetComponent {\n private metaKey = '__meta__';\n\n private templateProvider = inject(AXPTemplateWidgetProviderService);\n protected templateId = computed<string>(() => this.options()['templateId'] as string);\n protected nodes = signal<AXPWidgetNode[]>([]);\n // protected allowRemove = computed<boolean>(() => this.options()['allowRemove'] as boolean ?? false);\n\n\n // protected showRemove = computed(() => {\n // return this.allowRemove() && this.parent?.config.name != 'template';\n // });\n\n constructor() {\n super();\n //\n effect(\n async () => {\n this.nodes.set([]);\n const templateId = this.templateId();\n if (templateId) {\n const item = await this.templateProvider.get(templateId);\n if (item) {\n this.nodes.set(item.nodes);\n }\n }\n }\n );\n }\n\n //TODO: make a new widget to handle select widget in edit mode\n // protected async handleSelectClick() {\n // const result = await this.templateProvider.chooseTemplate();\n // if (result) {\n // this.setOptions({ templateId: result.id });\n // const value = this.getValue() ?? {};\n // set(value, this.metaKey, { templateId: result.id });\n // this.setValue(value);\n // }\n // }\n\n // protected async handleRemoveClick() {\n // this.setOptions({ templateId: null });\n // this.setValue(null);\n // }\n}\n"],"names":[],"mappings":";;;;;;;AA4CM,MAAO,8BAA+B,SAAQ,uBAAuB,CAAA;;;;;AAazE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QAbD,IAAA,CAAA,OAAO,GAAG,UAAU;AAEpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gCAAgC,CAAC;AACzD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAW;uFAAC;QAC3E,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,EAAE;kFAAC;;QAW3C,MAAM,CACJ,YAAW;AACT,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,UAAU,EAAE;gBACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;gBACxD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC5B;YACF;AACF,QAAA,CAAC,CACF;IACH;8GA5BW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,mBAAmB,uQAAE,mBAAmB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEvC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBApC1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB;AACnD,iBAAA;;;"}
@@ -3,7 +3,7 @@ import * as i0 from '@angular/core';
3
3
  import { inject, Injectable } from '@angular/core';
4
4
  import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
5
5
  import { isString, isEmpty, toString, get, defaultTo, first } from 'lodash';
6
- import { a as AXMQuestionnaireViewerService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-CZtfv53E.mjs';
6
+ import { a as AXMQuestionnaireViewerService } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs';
7
7
  import { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';
8
8
  import { o as openAssessmentSessionAnswersView } from './acorex-platform-module-assessment-management-client-assessment-session-answers-view.util-42ZcOY2C.mjs';
9
9
 
@@ -277,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
277
277
  }] });
278
278
 
279
279
  export { ViewSessionAnswersCommand };
280
- //# sourceMappingURL=acorex-platform-module-assessment-management-client-view-session-answers.command-DlnnmAlD.mjs.map
280
+ //# sourceMappingURL=acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-assessment-management-client-view-session-answers.command-DlnnmAlD.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/commands/view-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { openAssessmentSessionAnswersView, type OpenAssessmentSessionAnswersInitialStep } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionAnswers command.\n */\nexport interface ViewSessionAnswersCommandInput {\n /**\n * Assessment Case ID. Required when `sessionId` is omitted; used to resolve the latest session.\n */\n caseId?: string;\n\n /**\n * Assessment Session ID to view answers for. When omitted, the latest session for `caseId` is used.\n */\n sessionId?: string;\n\n /**\n * When `results`, opens the readonly viewer on the outcome results step (requires stored session outcomes).\n */\n initialStep?: OpenAssessmentSessionAnswersInitialStep;\n}\n\n/** Entity list passes evaluated action options on `options` / row `data`. */\ntype ViewSessionAnswersCommandInvocation = ViewSessionAnswersCommandInput & {\n data?: Record<string, unknown>;\n options?: Partial<ViewSessionAnswersCommandInput>;\n};\n\n//#endregion\n\n//#region ---- View Session Answers Command ----\n\n/**\n * Command that opens a readonly view of assessment session answers in a dialog.\n */\n@Injectable()\nexport class ViewSessionAnswersCommand implements AXPCommand<ViewSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, 'options.sessionId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n if (row && this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves case id from root input, action options, or list row data.\n */\n private resolveCaseId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'caseId'),\n get(input, 'options.caseId'),\n get(input, 'options.caseId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n if (row && !this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves initial viewer step from root input or action options.\n */\n private resolveInitialStep(input: ViewSessionAnswersCommandInvocation): OpenAssessmentSessionAnswersInitialStep {\n const candidates = [\n get(input, 'initialStep'),\n get(input, 'options.initialStep'),\n get(input, 'options.initialStep'),\n ];\n\n for (const candidate of candidates) {\n const normalized = this.asNonEmptyString(candidate);\n if (normalized === 'results') {\n return 'results';\n }\n }\n\n return 'answers';\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionAnswersCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: defaultTo(get(row, 'answers') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n /**\n * Finds the latest session record for a case (by lastSavedAt, then createdAt).\n */\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n async execute(input: ViewSessionAnswersCommandInvocation): AXPCommandExecuteResultPromise<void> {\n try {\n const sessionId = this.resolveSessionId(input);\n const caseId = this.resolveCaseId(input);\n\n if (!sessionId && !caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment case ID or session ID is required',\n },\n };\n }\n\n let session: AXMAssessmentManagementAssessmentSessionEntityModel | null = null;\n let assessmentCase: AXMAssessmentManagementAssessmentCaseEntityModel | null = null;\n\n if (sessionId) {\n session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const resolvedCaseId = this.asNonEmptyString(get(session, 'caseId')) ?? caseId;\n if (!resolvedCaseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n assessmentCase = await this.loadCase(resolvedCaseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${resolvedCaseId} not found`,\n },\n };\n }\n } else if (caseId) {\n assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n session = await this.findLatestSession(caseId);\n if (!session) {\n const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';\n const messageText =\n (await this.translationService.translateAsync(messageKey)) ||\n 'No assessment session found for this case';\n return {\n success: false,\n message: {\n text: messageText,\n },\n };\n }\n }\n\n if (!session || !assessmentCase) {\n return {\n success: false,\n message: {\n text: 'Unable to resolve assessment session answers',\n },\n };\n }\n\n const initialStep = this.resolveInitialStep(input);\n if (initialStep === 'results' && isEmpty(get(session, 'outcomes'))) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.view-outcomes.empty',\n ),\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n { initialStep },\n );\n\n return { success: true, kind: 'object', data: undefined,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-assessment-management-client-view-session-answers.command-DjJajIkL.mjs","sources":["../../../../libs/modules/assessment-management/client/src/lib/features/questionnaire-viewer/commands/view-session-answers.command.ts"],"sourcesContent":["//#region ---- Imports ----\n\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Injectable, inject } from '@angular/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { defaultTo, first, get, isEmpty, isString, toString } from 'lodash';\nimport { AXMQuestionnaireViewerService } from '../questionnaire-viewer.service';\nimport type { AXMAssessmentManagementAssessmentCaseEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport type { AXMAssessmentManagementAssessmentSessionEntityModel } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { RootConfig } from '@acorex-platform/module-assessment-management-client/contracts';\nimport { openAssessmentSessionAnswersView, type OpenAssessmentSessionAnswersInitialStep } from '../utils/assessment-session-answers-view.util';\n\n//#endregion\n\n//#region ---- Command Input/Output Types ----\n\n/**\n * Input for ViewSessionAnswers command.\n */\nexport interface ViewSessionAnswersCommandInput {\n /**\n * Assessment Case ID. Required when `sessionId` is omitted; used to resolve the latest session.\n */\n caseId?: string;\n\n /**\n * Assessment Session ID to view answers for. When omitted, the latest session for `caseId` is used.\n */\n sessionId?: string;\n\n /**\n * When `results`, opens the readonly viewer on the outcome results step (requires stored session outcomes).\n */\n initialStep?: OpenAssessmentSessionAnswersInitialStep;\n}\n\n/** Entity list passes evaluated action options on `options` / row `data`. */\ntype ViewSessionAnswersCommandInvocation = ViewSessionAnswersCommandInput & {\n data?: Record<string, unknown>;\n options?: Partial<ViewSessionAnswersCommandInput>;\n};\n\n//#endregion\n\n//#region ---- View Session Answers Command ----\n\n/**\n * Command that opens a readonly view of assessment session answers in a dialog.\n */\n@Injectable()\nexport class ViewSessionAnswersCommand implements AXPCommand<ViewSessionAnswersCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n private readonly questionnaireViewerService = inject(AXMQuestionnaireViewerService);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command Implementation ----\n\n /**\n * Returns a non-empty string or undefined.\n */\n private asNonEmptyString(value: unknown): string | undefined {\n if (isString(value) && !isEmpty(value)) {\n return value;\n }\n if (value != null && !isString(value)) {\n const normalized = toString(value).trim();\n return isEmpty(normalized) ? undefined : normalized;\n }\n return undefined;\n }\n\n /**\n * Resolves session id from root input, action options, or related-list row data.\n */\n private resolveSessionId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'sessionId'),\n get(input, 'options.sessionId'),\n get(input, 'options.sessionId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n if (row && this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves case id from root input, action options, or list row data.\n */\n private resolveCaseId(input: ViewSessionAnswersCommandInvocation): string | null {\n const candidates = [\n get(input, 'caseId'),\n get(input, 'options.caseId'),\n get(input, 'options.caseId'),\n ];\n\n for (const candidate of candidates) {\n const resolved = this.asNonEmptyString(candidate);\n if (resolved) {\n return resolved;\n }\n }\n\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n if (row && !this.asNonEmptyString(get(row, 'caseId'))) {\n return this.asNonEmptyString(get(row, 'id')) ?? null;\n }\n\n return null;\n }\n\n /**\n * Resolves initial viewer step from root input or action options.\n */\n private resolveInitialStep(input: ViewSessionAnswersCommandInvocation): OpenAssessmentSessionAnswersInitialStep {\n const candidates = [\n get(input, 'initialStep'),\n get(input, 'options.initialStep'),\n get(input, 'options.initialStep'),\n ];\n\n for (const candidate of candidates) {\n const normalized = this.asNonEmptyString(candidate);\n if (normalized === 'results') {\n return 'results';\n }\n }\n\n return 'answers';\n }\n\n /**\n * Loads session from related-list row data, list query, or byKey (in that order).\n */\n private async loadSession(\n sessionId: string,\n input: ViewSessionAnswersCommandInvocation,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const row = get(input, 'data') as Record<string, unknown> | undefined;\n const rowCaseId = this.asNonEmptyString(get(row, 'caseId'));\n\n if (row && rowCaseId) {\n return {\n ...(row as unknown as AXMAssessmentManagementAssessmentSessionEntityModel),\n id: sessionId,\n answers: defaultTo(get(row, 'answers') as Record<string, unknown> | undefined, {}),\n };\n }\n\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: sessionId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await sessionAccessor.byKey(sessionId), null);\n }\n\n /**\n * Loads case by id using query first, then byKey.\n */\n private async loadCase(caseId: string): Promise<AXMAssessmentManagementAssessmentCaseEntityModel | null> {\n const caseAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentCase.name)\n .data<string, AXMAssessmentManagementAssessmentCaseEntityModel>();\n\n const listMatch = await caseAccessor.query({\n skip: 0,\n take: 1,\n filter: {\n field: 'id',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n const fromQuery = first(listMatch.items);\n if (fromQuery) {\n return fromQuery;\n }\n\n return defaultTo(await caseAccessor.byKey(caseId), null);\n }\n\n /**\n * Finds the latest session record for a case (by lastSavedAt, then createdAt).\n */\n private async findLatestSession(\n caseId: string,\n ): Promise<AXMAssessmentManagementAssessmentSessionEntityModel | null> {\n const sessionAccessor = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.assessmentSession.name)\n .data<string, AXMAssessmentManagementAssessmentSessionEntityModel>();\n\n const listMatch = await sessionAccessor.query({\n skip: 0,\n take: 1,\n sort: [\n { field: 'lastSavedAt', dir: 'desc' },\n { field: 'createdAt', dir: 'desc' },\n ],\n filter: {\n field: 'caseId',\n operator: { type: 'equal' },\n value: caseId,\n },\n });\n\n return first(listMatch.items) ?? null;\n }\n\n async execute(input: ViewSessionAnswersCommandInvocation): AXPCommandExecuteResultPromise<void> {\n try {\n const sessionId = this.resolveSessionId(input);\n const caseId = this.resolveCaseId(input);\n\n if (!sessionId && !caseId) {\n return {\n success: false,\n message: {\n text: 'Assessment case ID or session ID is required',\n },\n };\n }\n\n let session: AXMAssessmentManagementAssessmentSessionEntityModel | null = null;\n let assessmentCase: AXMAssessmentManagementAssessmentCaseEntityModel | null = null;\n\n if (sessionId) {\n session = await this.loadSession(sessionId, input);\n if (!session) {\n return {\n success: false,\n message: {\n text: `Assessment session with ID ${sessionId} not found`,\n },\n };\n }\n\n const resolvedCaseId = this.asNonEmptyString(get(session, 'caseId')) ?? caseId;\n if (!resolvedCaseId) {\n return {\n success: false,\n message: {\n text: 'Assessment session is missing caseId',\n },\n };\n }\n\n assessmentCase = await this.loadCase(resolvedCaseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${resolvedCaseId} not found`,\n },\n };\n }\n } else if (caseId) {\n assessmentCase = await this.loadCase(caseId);\n if (!assessmentCase) {\n return {\n success: false,\n message: {\n text: `Assessment case with ID ${caseId} not found`,\n },\n };\n }\n\n session = await this.findLatestSession(caseId);\n if (!session) {\n const messageKey = '@assessment-management:cases.actions.view-last-session-answers.no-session';\n const messageText =\n (await this.translationService.translateAsync(messageKey)) ||\n 'No assessment session found for this case';\n return {\n success: false,\n message: {\n text: messageText,\n },\n };\n }\n }\n\n if (!session || !assessmentCase) {\n return {\n success: false,\n message: {\n text: 'Unable to resolve assessment session answers',\n },\n };\n }\n\n const initialStep = this.resolveInitialStep(input);\n if (initialStep === 'results' && isEmpty(get(session, 'outcomes'))) {\n return {\n success: false,\n message: {\n text: await this.translationService.translateAsync(\n '@assessment-management:sessions.actions.view-outcomes.empty',\n ),\n },\n };\n }\n\n await openAssessmentSessionAnswersView(\n {\n entityService: this.entityService,\n questionnaireViewerService: this.questionnaireViewerService,\n translationService: this.translationService,\n },\n session,\n assessmentCase,\n { initialStep },\n );\n\n return { success: true, kind: 'object', data: undefined,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Unknown error';\n return {\n success: false,\n message: {\n text: `Error viewing session answers: ${message}`,\n },\n };\n }\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { l as AXMAssessmentManagementFeatureDefinitionProvider, m as AXMAssessmentManagementMenuProvider, n as AXMAssessmentManagementModule, o as AXMAssessmentManagementPermissionDefinitionProvider, q as AXMAssessmentManagementSearchCommandProvider, t as AXMQuestionnaireViewerPageComponent, a as AXMQuestionnaireViewerService, u as AXMQuestionnaireViewerStandalonePageComponent, r as resolveWidgetNodeFromMetaDataDefinitionInterface, s as stripQuestionBankInterfaceMetadata } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-CZtfv53E.mjs';
1
+ export { l as AXMAssessmentManagementFeatureDefinitionProvider, m as AXMAssessmentManagementMenuProvider, n as AXMAssessmentManagementModule, o as AXMAssessmentManagementPermissionDefinitionProvider, q as AXMAssessmentManagementSearchCommandProvider, t as AXMQuestionnaireViewerPageComponent, a as AXMQuestionnaireViewerService, u as AXMQuestionnaireViewerStandalonePageComponent, r as resolveWidgetNodeFromMetaDataDefinitionInterface, s as stripQuestionBankInterfaceMetadata } from './acorex-platform-module-assessment-management-client-acorex-platform-module-assessment-management-client-juxXq2pM.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-assessment-management-client.mjs.map