@acorex/modules 20.7.9 → 20.7.11

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 (121) hide show
  1. package/assessment-management/index.d.ts +266 -1
  2. package/common/index.d.ts +1 -1
  3. package/fesm2022/{acorex-modules-assessment-management-acorex-modules-assessment-management-5peOXPDz.mjs → acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs} +846 -24
  4. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-ClgGS32i.mjs.map +1 -0
  5. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D6KO7up6.mjs → acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs} +2 -2
  6. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-column.component-D6KO7up6.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-column.component-UmXUT6Xn.mjs.map} +1 -1
  7. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs → acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs} +2 -2
  8. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-edit.component-C4NilFjL.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-edit.component-vVfXtden.mjs.map} +1 -1
  9. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-DtHvmJQD.mjs → acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs} +2 -2
  10. package/fesm2022/{acorex-modules-assessment-management-answers-viewer-widget-view.component-DtHvmJQD.mjs.map → acorex-modules-assessment-management-answers-viewer-widget-view.component-C75zxKgV.mjs.map} +1 -1
  11. package/fesm2022/{acorex-modules-assessment-management-assessment-case.entity-BDRkvtin.mjs → acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs} +3 -2
  12. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-CjhC5YAF.mjs.map +1 -0
  13. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-MLP74IAt.mjs → acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs} +2 -2
  14. package/fesm2022/{acorex-modules-assessment-management-assessment-session.entity-MLP74IAt.mjs.map → acorex-modules-assessment-management-assessment-session.entity-B_IDiEzp.mjs.map} +1 -1
  15. package/fesm2022/{acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs → acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs} +40 -6
  16. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-zT5u3h_s.mjs.map +1 -0
  17. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs → acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs} +4 -4
  18. package/fesm2022/{acorex-modules-assessment-management-preview-questionnaire.command-Cm7cniSG.mjs.map → acorex-modules-assessment-management-preview-questionnaire.command-BIXy9eut.mjs.map} +1 -1
  19. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BIGQMXEc.mjs → acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs} +2 -2
  20. package/fesm2022/{acorex-modules-assessment-management-question-bank-item.entity-BIGQMXEc.mjs.map → acorex-modules-assessment-management-question-bank-item.entity-BWYLXvCp.mjs.map} +1 -1
  21. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs → acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs} +2 -2
  22. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-edit.component-BxN8kxpu.mjs.map → acorex-modules-assessment-management-questionnaire-builder-edit.component-3wVcKQGE.mjs.map} +1 -1
  23. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-CHA00XC0.mjs → acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs} +2 -2
  24. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder-view.component-CHA00XC0.mjs.map → acorex-modules-assessment-management-questionnaire-builder-view.component-meuUo7Vx.mjs.map} +1 -1
  25. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-C-AX1MiC.mjs → acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs} +3 -3
  26. package/fesm2022/{acorex-modules-assessment-management-questionnaire-builder.component-C-AX1MiC.mjs.map → acorex-modules-assessment-management-questionnaire-builder.component-CGgUUkOY.mjs.map} +1 -1
  27. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BY8YfBf1.mjs → acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs} +2 -2
  28. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer-popup.component-BY8YfBf1.mjs.map → acorex-modules-assessment-management-questionnaire-viewer-popup.component-kVnWtedV.mjs.map} +1 -1
  29. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-ktXkCzVb.mjs → acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs} +2 -2
  30. package/fesm2022/{acorex-modules-assessment-management-questionnaire-viewer.service-ktXkCzVb.mjs.map → acorex-modules-assessment-management-questionnaire-viewer.service-D3k3J93r.mjs.map} +1 -1
  31. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C2soGbpn.mjs → acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs} +2 -2
  32. package/fesm2022/{acorex-modules-assessment-management-questionnaire.entity-C2soGbpn.mjs.map → acorex-modules-assessment-management-questionnaire.entity-C8sX0d_p.mjs.map} +1 -1
  33. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs → acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs} +3 -3
  34. package/fesm2022/{acorex-modules-assessment-management-view-session-answers.command-RvdyXryB.mjs.map → acorex-modules-assessment-management-view-session-answers.command-Czq7cj9R.mjs.map} +1 -1
  35. package/fesm2022/acorex-modules-assessment-management.mjs +1 -1
  36. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs → acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs} +14 -14
  37. package/fesm2022/acorex-modules-auth-acorex-modules-auth-IIyirCLb.mjs.map +1 -0
  38. package/fesm2022/{acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs → acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-app-chooser.component-Dr8EZ7ZX.mjs.map → acorex-modules-auth-app-chooser.component-BGLW8Qtn.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-login.module-C7Rt6tLk.mjs → acorex-modules-auth-login.module-uUQkWCgY.mjs} +4 -4
  41. package/fesm2022/{acorex-modules-auth-login.module-C7Rt6tLk.mjs.map → acorex-modules-auth-login.module-uUQkWCgY.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-master.layout-CgD5kk65.mjs → acorex-modules-auth-master.layout-XkwT3Slv.mjs} +2 -2
  43. package/fesm2022/{acorex-modules-auth-master.layout-CgD5kk65.mjs.map → acorex-modules-auth-master.layout-XkwT3Slv.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs → acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-oauth-callback.component-CuGIGBVO.mjs.map → acorex-modules-auth-oauth-callback.component-C0p17V1b.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-password.component-DmohsIxt.mjs → acorex-modules-auth-password.component-CaH-OaIv.mjs} +4 -4
  47. package/fesm2022/acorex-modules-auth-password.component-CaH-OaIv.mjs.map +1 -0
  48. package/fesm2022/{acorex-modules-auth-password.component-C6TCAUm4.mjs → acorex-modules-auth-password.component-DDFOsrkt.mjs} +3 -3
  49. package/fesm2022/acorex-modules-auth-password.component-DDFOsrkt.mjs.map +1 -0
  50. package/fesm2022/{acorex-modules-auth-routes-C3162bwa.mjs → acorex-modules-auth-routes-Cik9Y3RJ.mjs} +2 -2
  51. package/fesm2022/{acorex-modules-auth-routes-C3162bwa.mjs.map → acorex-modules-auth-routes-Cik9Y3RJ.mjs.map} +1 -1
  52. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs → acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs} +2 -2
  53. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-Ce-n3WC9.mjs.map → acorex-modules-auth-tenant-chooser.component-B9VJd12P.mjs.map} +1 -1
  54. package/fesm2022/{acorex-modules-auth-two-factor.module-B2nPzX-3.mjs → acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs} +2 -2
  55. package/fesm2022/{acorex-modules-auth-two-factor.module-B2nPzX-3.mjs.map → acorex-modules-auth-two-factor.module-D1TKyIXZ.mjs.map} +1 -1
  56. package/fesm2022/{acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs → acorex-modules-auth-user-sessions.component-MZJramlf.mjs} +2 -2
  57. package/fesm2022/{acorex-modules-auth-user-sessions.component-wVKJ2KIm.mjs.map → acorex-modules-auth-user-sessions.component-MZJramlf.mjs.map} +1 -1
  58. package/fesm2022/acorex-modules-auth.mjs +1 -1
  59. package/fesm2022/acorex-modules-business-core.mjs +1 -1
  60. package/fesm2022/acorex-modules-business-core.mjs.map +1 -1
  61. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs +95 -0
  62. package/fesm2022/acorex-modules-calendar-management-datasource.provider-C_iazC89.mjs.map +1 -0
  63. package/fesm2022/acorex-modules-calendar-management.mjs +68 -33
  64. package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
  65. package/fesm2022/acorex-modules-common.mjs +25 -17
  66. package/fesm2022/acorex-modules-common.mjs.map +1 -1
  67. package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
  68. package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
  69. package/fesm2022/acorex-modules-data-management.mjs +387 -12
  70. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  71. package/fesm2022/{acorex-modules-document-management-link-dialog.component-Civ7UZb8.mjs → acorex-modules-document-management-link-dialog.component-F1DkJ4Ns.mjs} +2 -2
  72. package/fesm2022/acorex-modules-document-management-link-dialog.component-F1DkJ4Ns.mjs.map +1 -0
  73. package/fesm2022/{acorex-modules-document-management-share-dialog.component-BwUZShJg.mjs → acorex-modules-document-management-share-dialog.component-BV2JJmED.mjs} +2 -2
  74. package/fesm2022/acorex-modules-document-management-share-dialog.component-BV2JJmED.mjs.map +1 -0
  75. package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-BMiCmb1k.mjs → acorex-modules-document-management-share-email-dialog.component-Dn-j0ETn.mjs} +2 -2
  76. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Dn-j0ETn.mjs.map +1 -0
  77. package/fesm2022/acorex-modules-document-management.mjs +3 -3
  78. package/fesm2022/acorex-modules-financial-core-data-source.provider-Do4rvgy4.mjs +73 -0
  79. package/fesm2022/acorex-modules-financial-core-data-source.provider-Do4rvgy4.mjs.map +1 -0
  80. package/fesm2022/acorex-modules-financial-core.mjs +4 -2
  81. package/fesm2022/acorex-modules-financial-core.mjs.map +1 -1
  82. package/fesm2022/acorex-modules-form-template-management.mjs +37 -405
  83. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  84. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs → acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs} +3 -3
  85. package/fesm2022/{acorex-modules-help-desk-acorex-modules-help-desk-CydmGF5Q.mjs.map → acorex-modules-help-desk-acorex-modules-help-desk-Clea9Hhv.mjs.map} +1 -1
  86. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs → acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs} +2 -2
  87. package/fesm2022/{acorex-modules-help-desk-capture-screen.component-Bsq1FJId.mjs.map → acorex-modules-help-desk-capture-screen.component-CiQv__MW.mjs.map} +1 -1
  88. package/fesm2022/acorex-modules-help-desk.mjs +1 -1
  89. package/fesm2022/acorex-modules-locale-management.mjs +13 -355
  90. package/fesm2022/acorex-modules-locale-management.mjs.map +1 -1
  91. package/fesm2022/acorex-modules-location-management.mjs +140 -6
  92. package/fesm2022/acorex-modules-location-management.mjs.map +1 -1
  93. package/fesm2022/acorex-modules-measurement-core.mjs +1 -1
  94. package/fesm2022/acorex-modules-measurement-core.mjs.map +1 -1
  95. package/fesm2022/acorex-modules-notification-management.mjs +1 -1
  96. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  97. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs → acorex-modules-platform-management-acorex-modules-platform-management-BAIx0BJe.mjs} +3 -3
  98. package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-DVkP3JKC.mjs.map → acorex-modules-platform-management-acorex-modules-platform-management-BAIx0BJe.mjs.map} +1 -1
  99. package/fesm2022/{acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs → acorex-modules-platform-management-menu-list.component-BxGLun0f.mjs} +2 -2
  100. package/fesm2022/{acorex-modules-platform-management-menu-list.component-C_mdsuRc.mjs.map → acorex-modules-platform-management-menu-list.component-BxGLun0f.mjs.map} +1 -1
  101. package/fesm2022/acorex-modules-platform-management.mjs +1 -1
  102. package/fesm2022/{acorex-modules-product-catalog-product.entity-CuTXUcc1.mjs → acorex-modules-product-catalog-product.entity-BXDh4Wlu.mjs} +10 -2
  103. package/fesm2022/acorex-modules-product-catalog-product.entity-BXDh4Wlu.mjs.map +1 -0
  104. package/fesm2022/acorex-modules-product-catalog.mjs +1 -1
  105. package/fesm2022/{acorex-modules-task-management-task-board.page-BUp5SQ7b.mjs → acorex-modules-task-management-task-board.page-Cgxdk78j.mjs} +3 -3
  106. package/fesm2022/acorex-modules-task-management-task-board.page-Cgxdk78j.mjs.map +1 -0
  107. package/fesm2022/acorex-modules-task-management.mjs +1 -1
  108. package/form-template-management/index.d.ts +2 -12
  109. package/locale-management/index.d.ts +3 -23
  110. package/package.json +2 -2
  111. package/fesm2022/acorex-modules-assessment-management-acorex-modules-assessment-management-5peOXPDz.mjs.map +0 -1
  112. package/fesm2022/acorex-modules-assessment-management-assessment-case.entity-BDRkvtin.mjs.map +0 -1
  113. package/fesm2022/acorex-modules-assessment-management-fill-assessment-session.command-wtCw3l5I.mjs.map +0 -1
  114. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Dg9sg98-.mjs.map +0 -1
  115. package/fesm2022/acorex-modules-auth-password.component-C6TCAUm4.mjs.map +0 -1
  116. package/fesm2022/acorex-modules-auth-password.component-DmohsIxt.mjs.map +0 -1
  117. package/fesm2022/acorex-modules-document-management-link-dialog.component-Civ7UZb8.mjs.map +0 -1
  118. package/fesm2022/acorex-modules-document-management-share-dialog.component-BwUZShJg.mjs.map +0 -1
  119. package/fesm2022/acorex-modules-document-management-share-email-dialog.component-BMiCmb1k.mjs.map +0 -1
  120. package/fesm2022/acorex-modules-product-catalog-product.entity-CuTXUcc1.mjs.map +0 -1
  121. package/fesm2022/acorex-modules-task-management-task-board.page-BUp5SQ7b.mjs.map +0 -1
@@ -1493,7 +1493,7 @@ class AXMMenuProvider {
1493
1493
  }
1494
1494
  async provide(context) {
1495
1495
  const module = RootConfig.module;
1496
- context.find(AXPCommonMenuKeys.FoundationData).addItems([
1496
+ context.find(AXPCommonMenuKeys.Configuration).addItems([
1497
1497
  {
1498
1498
  name: AXPDataManagementMenuKeys.Root,
1499
1499
  text: '@data-management:module.menus.root.title',
@@ -1589,6 +1589,367 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
1589
1589
  type: Injectable
1590
1590
  }] });
1591
1591
 
1592
+ /**
1593
+ * Provides common choice-option datasources (yes/no, rating scale, agreement, frequency, satisfaction, priority)
1594
+ * for use across forms, questionnaires, surveys, and other modules.
1595
+ */
1596
+ class AXMChoiceOptionsDataSourceDefinition {
1597
+ constructor() {
1598
+ //#region ---- Yes/No Options ----
1599
+ this.yesNoOptions = {
1600
+ name: 'yes-no-options',
1601
+ title: '@questionnaire:datasources.yes-no-options.title',
1602
+ columns: [
1603
+ {
1604
+ name: 'value',
1605
+ title: '@questionnaire:datasources.yes-no-options.columns.value.title',
1606
+ type: AXPWidgetsCatalog.text,
1607
+ datatype: 'string',
1608
+ },
1609
+ {
1610
+ name: 'title',
1611
+ title: '@questionnaire:datasources.yes-no-options.columns.title.title',
1612
+ type: AXPWidgetsCatalog.text,
1613
+ datatype: 'string',
1614
+ },
1615
+ ],
1616
+ filters: [],
1617
+ textField: { name: 'title', title: '@questionnaire:datasources.yes-no-options.columns.title.title' },
1618
+ valueField: { name: 'value', title: '@questionnaire:datasources.yes-no-options.columns.value.title' },
1619
+ samples: [
1620
+ { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },
1621
+ { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },
1622
+ ],
1623
+ source: () => {
1624
+ return new AXDataSource({
1625
+ pageSize: 10,
1626
+ key: 'value',
1627
+ load: async () => {
1628
+ return {
1629
+ items: [
1630
+ { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },
1631
+ { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },
1632
+ ],
1633
+ total: 2,
1634
+ };
1635
+ },
1636
+ byKey: async (key) => {
1637
+ const items = [
1638
+ { value: 'yes', title: '@questionnaire:datasources.yes-no-options.samples.yes' },
1639
+ { value: 'no', title: '@questionnaire:datasources.yes-no-options.samples.no' },
1640
+ ];
1641
+ return items.find(item => item.value === key);
1642
+ },
1643
+ });
1644
+ },
1645
+ };
1646
+ //#endregion
1647
+ //#region ---- Rating Scale Options ----
1648
+ this.ratingScaleOptions = {
1649
+ name: 'rating-scale-options',
1650
+ title: '@questionnaire:datasources.rating-scale-options.title',
1651
+ columns: [
1652
+ {
1653
+ name: 'value',
1654
+ title: '@questionnaire:datasources.rating-scale-options.columns.value.title',
1655
+ type: AXPWidgetsCatalog.text,
1656
+ datatype: 'number',
1657
+ },
1658
+ {
1659
+ name: 'title',
1660
+ title: '@questionnaire:datasources.rating-scale-options.columns.title.title',
1661
+ type: AXPWidgetsCatalog.text,
1662
+ datatype: 'string',
1663
+ },
1664
+ {
1665
+ name: 'description',
1666
+ title: '@questionnaire:datasources.rating-scale-options.columns.description.title',
1667
+ type: AXPWidgetsCatalog.text,
1668
+ datatype: 'string',
1669
+ },
1670
+ ],
1671
+ filters: [],
1672
+ textField: { name: 'title', title: '@questionnaire:datasources.rating-scale-options.columns.title.title' },
1673
+ valueField: { name: 'value', title: '@questionnaire:datasources.rating-scale-options.columns.value.title' },
1674
+ samples: [
1675
+ { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },
1676
+ { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },
1677
+ { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },
1678
+ { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },
1679
+ { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },
1680
+ ],
1681
+ source: () => {
1682
+ return new AXDataSource({
1683
+ pageSize: 10,
1684
+ key: 'value',
1685
+ load: async () => {
1686
+ return {
1687
+ items: [
1688
+ { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },
1689
+ { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },
1690
+ { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },
1691
+ { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },
1692
+ { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },
1693
+ ],
1694
+ total: 5,
1695
+ };
1696
+ },
1697
+ byKey: async (key) => {
1698
+ const items = [
1699
+ { value: 1, title: '@questionnaire:datasources.rating-scale-options.samples.1', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.1' },
1700
+ { value: 2, title: '@questionnaire:datasources.rating-scale-options.samples.2', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.2' },
1701
+ { value: 3, title: '@questionnaire:datasources.rating-scale-options.samples.3', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.3' },
1702
+ { value: 4, title: '@questionnaire:datasources.rating-scale-options.samples.4', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.4' },
1703
+ { value: 5, title: '@questionnaire:datasources.rating-scale-options.samples.5', description: '@questionnaire:datasources.rating-scale-options.samples.descriptions.5' },
1704
+ ];
1705
+ return items.find(item => item.value === key);
1706
+ },
1707
+ });
1708
+ },
1709
+ };
1710
+ //#endregion
1711
+ //#region ---- Agreement Scale Options ----
1712
+ this.agreementScaleOptions = {
1713
+ name: 'agreement-scale-options',
1714
+ title: '@questionnaire:datasources.agreement-scale-options.title',
1715
+ columns: [
1716
+ {
1717
+ name: 'value',
1718
+ title: '@questionnaire:datasources.agreement-scale-options.columns.value.title',
1719
+ type: AXPWidgetsCatalog.text,
1720
+ datatype: 'string',
1721
+ },
1722
+ {
1723
+ name: 'title',
1724
+ title: '@questionnaire:datasources.agreement-scale-options.columns.title.title',
1725
+ type: AXPWidgetsCatalog.text,
1726
+ datatype: 'string',
1727
+ },
1728
+ ],
1729
+ filters: [],
1730
+ textField: { name: 'title', title: '@questionnaire:datasources.agreement-scale-options.columns.title.title' },
1731
+ valueField: { name: 'value', title: '@questionnaire:datasources.agreement-scale-options.columns.value.title' },
1732
+ samples: [
1733
+ { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },
1734
+ { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },
1735
+ { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },
1736
+ { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },
1737
+ { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },
1738
+ ],
1739
+ source: () => {
1740
+ return new AXDataSource({
1741
+ pageSize: 10,
1742
+ key: 'value',
1743
+ load: async () => {
1744
+ return {
1745
+ items: [
1746
+ { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },
1747
+ { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },
1748
+ { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },
1749
+ { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },
1750
+ { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },
1751
+ ],
1752
+ total: 5,
1753
+ };
1754
+ },
1755
+ byKey: async (key) => {
1756
+ const items = [
1757
+ { value: 'strongly-disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-disagree' },
1758
+ { value: 'disagree', title: '@questionnaire:datasources.agreement-scale-options.samples.disagree' },
1759
+ { value: 'neutral', title: '@questionnaire:datasources.agreement-scale-options.samples.neutral' },
1760
+ { value: 'agree', title: '@questionnaire:datasources.agreement-scale-options.samples.agree' },
1761
+ { value: 'strongly-agree', title: '@questionnaire:datasources.agreement-scale-options.samples.strongly-agree' },
1762
+ ];
1763
+ return items.find(item => item.value === key);
1764
+ },
1765
+ });
1766
+ },
1767
+ };
1768
+ //#endregion
1769
+ //#region ---- Frequency Options ----
1770
+ this.frequencyOptions = {
1771
+ name: 'frequency-options',
1772
+ title: '@questionnaire:datasources.frequency-options.title',
1773
+ columns: [
1774
+ {
1775
+ name: 'value',
1776
+ title: '@questionnaire:datasources.frequency-options.columns.value.title',
1777
+ type: AXPWidgetsCatalog.text,
1778
+ datatype: 'string',
1779
+ },
1780
+ {
1781
+ name: 'title',
1782
+ title: '@questionnaire:datasources.frequency-options.columns.title.title',
1783
+ type: AXPWidgetsCatalog.text,
1784
+ datatype: 'string',
1785
+ },
1786
+ ],
1787
+ filters: [],
1788
+ textField: { name: 'title', title: '@questionnaire:datasources.frequency-options.columns.title.title' },
1789
+ valueField: { name: 'value', title: '@questionnaire:datasources.frequency-options.columns.value.title' },
1790
+ samples: [
1791
+ { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },
1792
+ { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },
1793
+ { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },
1794
+ { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },
1795
+ { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },
1796
+ ],
1797
+ source: () => {
1798
+ return new AXDataSource({
1799
+ pageSize: 10,
1800
+ key: 'value',
1801
+ load: async () => {
1802
+ return {
1803
+ items: [
1804
+ { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },
1805
+ { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },
1806
+ { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },
1807
+ { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },
1808
+ { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },
1809
+ ],
1810
+ total: 5,
1811
+ };
1812
+ },
1813
+ byKey: async (key) => {
1814
+ const items = [
1815
+ { value: 'never', title: '@questionnaire:datasources.frequency-options.samples.never' },
1816
+ { value: 'rarely', title: '@questionnaire:datasources.frequency-options.samples.rarely' },
1817
+ { value: 'sometimes', title: '@questionnaire:datasources.frequency-options.samples.sometimes' },
1818
+ { value: 'often', title: '@questionnaire:datasources.frequency-options.samples.often' },
1819
+ { value: 'always', title: '@questionnaire:datasources.frequency-options.samples.always' },
1820
+ ];
1821
+ return items.find(item => item.value === key);
1822
+ },
1823
+ });
1824
+ },
1825
+ };
1826
+ //#endregion
1827
+ //#region ---- Satisfaction Options ----
1828
+ this.satisfactionOptions = {
1829
+ name: 'satisfaction-options',
1830
+ title: '@questionnaire:datasources.satisfaction-options.title',
1831
+ columns: [
1832
+ {
1833
+ name: 'value',
1834
+ title: '@questionnaire:datasources.satisfaction-options.columns.value.title',
1835
+ type: AXPWidgetsCatalog.text,
1836
+ datatype: 'string',
1837
+ },
1838
+ {
1839
+ name: 'title',
1840
+ title: '@questionnaire:datasources.satisfaction-options.columns.title.title',
1841
+ type: AXPWidgetsCatalog.text,
1842
+ datatype: 'string',
1843
+ },
1844
+ ],
1845
+ filters: [],
1846
+ textField: { name: 'title', title: '@questionnaire:datasources.satisfaction-options.columns.title.title' },
1847
+ valueField: { name: 'value', title: '@questionnaire:datasources.satisfaction-options.columns.value.title' },
1848
+ samples: [
1849
+ { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },
1850
+ { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },
1851
+ { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },
1852
+ { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },
1853
+ { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },
1854
+ ],
1855
+ source: () => {
1856
+ return new AXDataSource({
1857
+ pageSize: 10,
1858
+ key: 'value',
1859
+ load: async () => {
1860
+ return {
1861
+ items: [
1862
+ { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },
1863
+ { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },
1864
+ { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },
1865
+ { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },
1866
+ { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },
1867
+ ],
1868
+ total: 5,
1869
+ };
1870
+ },
1871
+ byKey: async (key) => {
1872
+ const items = [
1873
+ { value: 'very-dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-dissatisfied' },
1874
+ { value: 'dissatisfied', title: '@questionnaire:datasources.satisfaction-options.samples.dissatisfied' },
1875
+ { value: 'neutral', title: '@questionnaire:datasources.satisfaction-options.samples.neutral' },
1876
+ { value: 'satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.satisfied' },
1877
+ { value: 'very-satisfied', title: '@questionnaire:datasources.satisfaction-options.samples.very-satisfied' },
1878
+ ];
1879
+ return items.find(item => item.value === key);
1880
+ },
1881
+ });
1882
+ },
1883
+ };
1884
+ //#endregion
1885
+ //#region ---- Priority Options ----
1886
+ this.priorityOptions = {
1887
+ name: 'priority-options',
1888
+ title: '@questionnaire:datasources.priority-options.title',
1889
+ columns: [
1890
+ {
1891
+ name: 'value',
1892
+ title: '@questionnaire:datasources.priority-options.columns.value.title',
1893
+ type: AXPWidgetsCatalog.text,
1894
+ datatype: 'string',
1895
+ },
1896
+ {
1897
+ name: 'title',
1898
+ title: '@questionnaire:datasources.priority-options.columns.title.title',
1899
+ type: AXPWidgetsCatalog.text,
1900
+ datatype: 'string',
1901
+ },
1902
+ ],
1903
+ filters: [],
1904
+ textField: { name: 'title', title: '@questionnaire:datasources.priority-options.columns.title.title' },
1905
+ valueField: { name: 'value', title: '@questionnaire:datasources.priority-options.columns.value.title' },
1906
+ samples: [
1907
+ { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },
1908
+ { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },
1909
+ { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },
1910
+ { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },
1911
+ ],
1912
+ source: () => {
1913
+ return new AXDataSource({
1914
+ pageSize: 10,
1915
+ key: 'value',
1916
+ load: async () => {
1917
+ return {
1918
+ items: [
1919
+ { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },
1920
+ { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },
1921
+ { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },
1922
+ { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },
1923
+ ],
1924
+ total: 4,
1925
+ };
1926
+ },
1927
+ byKey: async (key) => {
1928
+ const items = [
1929
+ { value: 'low', title: '@questionnaire:datasources.priority-options.samples.low' },
1930
+ { value: 'medium', title: '@questionnaire:datasources.priority-options.samples.medium' },
1931
+ { value: 'high', title: '@questionnaire:datasources.priority-options.samples.high' },
1932
+ { value: 'critical', title: '@questionnaire:datasources.priority-options.samples.critical' },
1933
+ ];
1934
+ return items.find(item => item.value === key);
1935
+ },
1936
+ });
1937
+ },
1938
+ };
1939
+ }
1940
+ //#endregion
1941
+ async items() {
1942
+ return [
1943
+ this.yesNoOptions,
1944
+ this.ratingScaleOptions,
1945
+ this.agreementScaleOptions,
1946
+ this.frequencyOptions,
1947
+ this.satisfactionOptions,
1948
+ this.priorityOptions,
1949
+ ];
1950
+ }
1951
+ }
1952
+
1592
1953
  class AXMDataSourceListDataSourceDefinition {
1593
1954
  get parent() {
1594
1955
  return this['__parent__'];
@@ -3486,7 +3847,7 @@ class AXMColumnFilterSelectorWidgetFilterComponent extends AXPValueWidgetCompone
3486
3847
  >
3487
3848
  <ax-clear-button></ax-clear-button>
3488
3849
  </ax-text-box>
3489
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3850
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3490
3851
  }
3491
3852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMColumnFilterSelectorWidgetFilterComponent, decorators: [{
3492
3853
  type: Component,
@@ -6127,7 +6488,7 @@ class AXPAggregateBuilderComponent {
6127
6488
  });
6128
6489
  }
6129
6490
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPAggregateBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPAggregateBuilderComponent, isStandalone: true, selector: "axp-aggregate-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, databaseType: { classPropertyName: "databaseType", publicName: "databaseType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: [".axp-aggregate-builder{display:flex;flex-direction:column;gap:1rem}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:.5rem}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1 1 0%;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));padding:1rem}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1 1 0%;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:.5rem}.axp-aggregate-builder .__section-body .__empty-state{padding-top:2rem;padding-bottom:2rem;text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));padding:.75rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1 1 0%;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:.5rem;margin-left:1.5rem;display:flex;flex-direction:column;gap:.5rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1));padding-left:1rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));padding:.75rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1 1 0%;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.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: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.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: AXCheckBoxModule }, { kind: "component", type: i3$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AXPAggregateBuilderComponent, isStandalone: true, selector: "axp-aggregate-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, databaseType: { classPropertyName: "databaseType", publicName: "databaseType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: [".axp-aggregate-builder{display:flex;flex-direction:column;gap:1rem}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:1.125rem;line-height:1.75rem;font-weight:600}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:.5rem}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1 1 0%;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));padding:1rem}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1 1 0%;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:.5rem}.axp-aggregate-builder .__section-body .__empty-state{padding-top:2rem;padding-bottom:2rem;text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1));padding:.75rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1 1 0%;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:.875rem;line-height:1.25rem;font-style:italic;--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:.5rem;margin-left:1.5rem;display:flex;flex-direction:column;gap:.5rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1));padding-left:1rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1));padding:.75rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1 1 0%;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.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: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.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: AXCheckBoxModule }, { kind: "component", type: i3$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6131
6492
  }
6132
6493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXPAggregateBuilderComponent, decorators: [{
6133
6494
  type: Component,
@@ -8824,19 +9185,23 @@ class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {
8824
9185
  const defaultValue = metadata.defaultValue ?? metadata.configuration?.defaultValue;
8825
9186
  // Handle description: support both direct property and from configuration
8826
9187
  const description = metadata.description ?? metadata.configuration?.description;
9188
+ const widget = {
9189
+ type: interfaceConfig.type || 'text-editor',
9190
+ path: metadata.name || 'unnamed',
9191
+ options: {
9192
+ ...interfaceConfig.options,
9193
+ defaultValue: defaultValue,
9194
+ validations: this.parseValidations(metadata.interface),
9195
+ },
9196
+ };
9197
+ if (interfaceConfig.triggers?.length) {
9198
+ widget.triggers = interfaceConfig.triggers;
9199
+ }
8827
9200
  return {
8828
9201
  path: metadata.name || 'unnamed',
8829
9202
  title: metadata.title || 'Untitled Field',
8830
9203
  description: description,
8831
- widget: {
8832
- type: interfaceConfig.type || 'text-editor',
8833
- path: metadata.name || 'unnamed',
8834
- options: {
8835
- ...interfaceConfig.options,
8836
- defaultValue: defaultValue,
8837
- validations: this.parseValidations(metadata.interface),
8838
- },
8839
- },
9204
+ widget,
8840
9205
  };
8841
9206
  }
8842
9207
  /**
@@ -9715,6 +10080,11 @@ class AXMDataManagementModule {
9715
10080
  useClass: AXMDataSourceListDataSourceDefinition,
9716
10081
  multi: true,
9717
10082
  },
10083
+ {
10084
+ provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
10085
+ useClass: AXMChoiceOptionsDataSourceDefinition,
10086
+ multi: true,
10087
+ },
9718
10088
  ], imports: [AXPWidgetCoreModule.forChild({
9719
10089
  widgets: [AXPQueryBuilderWidget, AXMColumnFilterSelectorWidget],
9720
10090
  }),
@@ -9808,6 +10178,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
9808
10178
  useClass: AXMDataSourceListDataSourceDefinition,
9809
10179
  multi: true,
9810
10180
  },
10181
+ {
10182
+ provide: AXP_DATASOURCE_DEFINITION_PROVIDER,
10183
+ useClass: AXMChoiceOptionsDataSourceDefinition,
10184
+ multi: true,
10185
+ },
9811
10186
  ]
9812
10187
  }]
9813
10188
  }] });