@masterteam/components 0.0.136 → 0.0.138

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 (111) hide show
  1. package/assets/common.css +1 -1
  2. package/assets/i18n/ar.json +5 -1
  3. package/assets/i18n/en.json +5 -1
  4. package/fesm2022/masterteam-components-avatar-text.mjs +15 -15
  5. package/fesm2022/masterteam-components-avatar-text.mjs.map +1 -1
  6. package/fesm2022/masterteam-components-avatar.mjs +14 -14
  7. package/fesm2022/masterteam-components-avatar.mjs.map +1 -1
  8. package/fesm2022/masterteam-components-breadcrumb.mjs +6 -6
  9. package/fesm2022/masterteam-components-breadcrumb.mjs.map +1 -1
  10. package/fesm2022/masterteam-components-business-fields.mjs +52 -52
  11. package/fesm2022/masterteam-components-business-fields.mjs.map +1 -1
  12. package/fesm2022/masterteam-components-button-group.mjs +3 -3
  13. package/fesm2022/masterteam-components-button.mjs +26 -26
  14. package/fesm2022/masterteam-components-button.mjs.map +1 -1
  15. package/fesm2022/masterteam-components-card.mjs +9 -9
  16. package/fesm2022/masterteam-components-card.mjs.map +1 -1
  17. package/fesm2022/masterteam-components-checkbox-field.mjs +12 -12
  18. package/fesm2022/masterteam-components-checkbox-field.mjs.map +1 -1
  19. package/fesm2022/masterteam-components-chip.mjs +9 -9
  20. package/fesm2022/masterteam-components-chip.mjs.map +1 -1
  21. package/fesm2022/masterteam-components-client-page-menu.mjs +8 -8
  22. package/fesm2022/masterteam-components-client-page-menu.mjs.map +1 -1
  23. package/fesm2022/masterteam-components-client-page.mjs +224 -44
  24. package/fesm2022/masterteam-components-client-page.mjs.map +1 -1
  25. package/fesm2022/masterteam-components-color-picker-field.mjs +13 -13
  26. package/fesm2022/masterteam-components-color-picker-field.mjs.map +1 -1
  27. package/fesm2022/masterteam-components-confirmation.mjs +7 -7
  28. package/fesm2022/masterteam-components-confirmation.mjs.map +1 -1
  29. package/fesm2022/masterteam-components-date-field.mjs +16 -16
  30. package/fesm2022/masterteam-components-date-field.mjs.map +1 -1
  31. package/fesm2022/masterteam-components-dialog.mjs +3 -3
  32. package/fesm2022/masterteam-components-drawer.mjs +17 -17
  33. package/fesm2022/masterteam-components-drawer.mjs.map +1 -1
  34. package/fesm2022/masterteam-components-dynamic-drawer.mjs +20 -20
  35. package/fesm2022/masterteam-components-dynamic-drawer.mjs.map +1 -1
  36. package/fesm2022/masterteam-components-editor-field.mjs +13 -13
  37. package/fesm2022/masterteam-components-editor-field.mjs.map +1 -1
  38. package/fesm2022/masterteam-components-entities.mjs +140 -140
  39. package/fesm2022/masterteam-components-entities.mjs.map +1 -1
  40. package/fesm2022/masterteam-components-field-validation.mjs +8 -8
  41. package/fesm2022/masterteam-components-field-validation.mjs.map +1 -1
  42. package/fesm2022/masterteam-components-formula.mjs +190 -116
  43. package/fesm2022/masterteam-components-formula.mjs.map +1 -1
  44. package/fesm2022/masterteam-components-icon-field.mjs +6 -6
  45. package/fesm2022/masterteam-components-icon-field.mjs.map +1 -1
  46. package/fesm2022/masterteam-components-list.mjs +8 -8
  47. package/fesm2022/masterteam-components-list.mjs.map +1 -1
  48. package/fesm2022/masterteam-components-menu.mjs +22 -22
  49. package/fesm2022/masterteam-components-menu.mjs.map +1 -1
  50. package/fesm2022/masterteam-components-modal.mjs +3 -3
  51. package/fesm2022/masterteam-components-module-summary-card.mjs +10 -10
  52. package/fesm2022/masterteam-components-module-summary-card.mjs.map +1 -1
  53. package/fesm2022/masterteam-components-multi-select-field.mjs +32 -32
  54. package/fesm2022/masterteam-components-multi-select-field.mjs.map +1 -1
  55. package/fesm2022/masterteam-components-number-field.mjs +17 -17
  56. package/fesm2022/masterteam-components-number-field.mjs.map +1 -1
  57. package/fesm2022/masterteam-components-page-header.mjs +16 -16
  58. package/fesm2022/masterteam-components-page-header.mjs.map +1 -1
  59. package/fesm2022/masterteam-components-page.mjs +16 -16
  60. package/fesm2022/masterteam-components-page.mjs.map +1 -1
  61. package/fesm2022/masterteam-components-paginator.mjs +13 -13
  62. package/fesm2022/masterteam-components-paginator.mjs.map +1 -1
  63. package/fesm2022/masterteam-components-pick-list-field.mjs +26 -26
  64. package/fesm2022/masterteam-components-pick-list-field.mjs.map +1 -1
  65. package/fesm2022/masterteam-components-progress.mjs +16 -16
  66. package/fesm2022/masterteam-components-progress.mjs.map +1 -1
  67. package/fesm2022/masterteam-components-property-filter-builder.mjs +17 -17
  68. package/fesm2022/masterteam-components-property-filter-builder.mjs.map +1 -1
  69. package/fesm2022/masterteam-components-radio-button-field.mjs +14 -14
  70. package/fesm2022/masterteam-components-radio-button-field.mjs.map +1 -1
  71. package/fesm2022/masterteam-components-radio-cards-field.mjs +16 -16
  72. package/fesm2022/masterteam-components-radio-cards-field.mjs.map +1 -1
  73. package/fesm2022/masterteam-components-radio-cards.mjs +15 -15
  74. package/fesm2022/masterteam-components-radio-cards.mjs.map +1 -1
  75. package/fesm2022/masterteam-components-select-field.mjs +41 -36
  76. package/fesm2022/masterteam-components-select-field.mjs.map +1 -1
  77. package/fesm2022/masterteam-components-sidebar.mjs +14 -14
  78. package/fesm2022/masterteam-components-sidebar.mjs.map +1 -1
  79. package/fesm2022/masterteam-components-slider-field.mjs +18 -18
  80. package/fesm2022/masterteam-components-slider-field.mjs.map +1 -1
  81. package/fesm2022/masterteam-components-statistic-card.mjs +5 -5
  82. package/fesm2022/masterteam-components-statistic-card.mjs.map +1 -1
  83. package/fesm2022/masterteam-components-table.mjs +67 -67
  84. package/fesm2022/masterteam-components-table.mjs.map +1 -1
  85. package/fesm2022/masterteam-components-tabs.mjs +10 -10
  86. package/fesm2022/masterteam-components-tabs.mjs.map +1 -1
  87. package/fesm2022/masterteam-components-text-field.mjs +17 -17
  88. package/fesm2022/masterteam-components-text-field.mjs.map +1 -1
  89. package/fesm2022/masterteam-components-textarea-field.mjs +14 -14
  90. package/fesm2022/masterteam-components-textarea-field.mjs.map +1 -1
  91. package/fesm2022/masterteam-components-toast.mjs +6 -6
  92. package/fesm2022/masterteam-components-toggle-field.mjs +19 -19
  93. package/fesm2022/masterteam-components-toggle-field.mjs.map +1 -1
  94. package/fesm2022/masterteam-components-tooltip.mjs +6 -6
  95. package/fesm2022/masterteam-components-topbar.mjs +12 -12
  96. package/fesm2022/masterteam-components-topbar.mjs.map +1 -1
  97. package/fesm2022/masterteam-components-tree.mjs +31 -31
  98. package/fesm2022/masterteam-components-tree.mjs.map +1 -1
  99. package/fesm2022/masterteam-components-upload-field.mjs +62 -61
  100. package/fesm2022/masterteam-components-upload-field.mjs.map +1 -1
  101. package/fesm2022/masterteam-components-user-search-field.mjs +49 -27
  102. package/fesm2022/masterteam-components-user-search-field.mjs.map +1 -1
  103. package/fesm2022/masterteam-components.mjs +14 -7
  104. package/fesm2022/masterteam-components.mjs.map +1 -1
  105. package/package.json +12 -11
  106. package/types/masterteam-components-client-page.d.ts +47 -6
  107. package/types/masterteam-components-formula.d.ts +7 -0
  108. package/types/masterteam-components-select-field.d.ts +2 -1
  109. package/types/masterteam-components-upload-field.d.ts +1 -0
  110. package/types/masterteam-components-user-search-field.d.ts +8 -3
  111. package/types/masterteam-components.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-components-breadcrumb.mjs","sources":["../../../../packages/masterteam/components/breadcrumb/breadcrumb.ts","../../../../packages/masterteam/components/breadcrumb/breadcrumb.html","../../../../packages/masterteam/components/breadcrumb/masterteam-components-breadcrumb.ts"],"sourcesContent":["import { Component, input, output, signal } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { Icon } from '@masterteam/icons';\r\nexport interface BreadcrumbItem {\r\n label?: string;\r\n routerLink?: string;\r\n icon?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-breadcrumb',\r\n standalone: true,\r\n imports: [RouterModule, Icon],\r\n templateUrl: './breadcrumb.html',\r\n styleUrls: ['./breadcrumb.scss'],\r\n host: {\r\n '[class]': 'styleClass()',\r\n },\r\n})\r\nexport class Breadcrumb {\r\n readonly items = input<BreadcrumbItem[]>([]);\r\n readonly styleClass = input<string | undefined>(undefined);\r\n readonly onItemClick = output<BreadcrumbItem>();\r\n\r\n rtl = signal<boolean>(document.documentElement.dir === 'rtl');\r\n}\r\n","<nav aria-label=\"breadcrumb\">\r\n <ol class=\"flex items-center space-x-2\">\r\n @for (\r\n item of items();\r\n track item.label;\r\n let isFirst = $first;\r\n let isLast = $last\r\n ) {\r\n @if (!isFirst) {\r\n <li>\r\n <span class=\"text-gray-400 flex\">\r\n <mt-icon\r\n [icon]=\"this.rtl() ? 'arrow.chevron-left' : 'arrow.chevron-right'\"\r\n ></mt-icon>\r\n </span>\r\n </li>\r\n }\r\n <li>\r\n @if (item.routerLink) {\r\n <a\r\n [routerLink]=\"item.routerLink\"\r\n class=\"flex cursor-pointer items-center gap-1 text-[.95rem] text-gray-500 hover:text-gray-700\"\r\n (click)=\"onItemClick.emit(item)\"\r\n >\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\"></mt-icon>\r\n }\r\n @if (item.label) {\r\n <span>{{ item.label }}</span>\r\n }\r\n </a>\r\n } @else {\r\n <span\r\n class=\"\r\n {{\r\n isLast\r\n ? 'bg-primary-50 text-primary-400 flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-[.95rem]'\r\n : 'flex cursor-pointer items-center gap-1 text-[.95rem] text-gray-500 hover:text-gray-700'\r\n }}\"\r\n (click)=\"onItemClick.emit(item)\"\r\n >\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\"></mt-icon>\r\n }\r\n @if (item.label) {\r\n <span>{{ item.label }}</span>\r\n }\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAmBa,UAAU,CAAA;AACZ,IAAA,KAAK,GAAG,KAAK,CAAmB,EAAE,iDAAC;AACnC,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,sDAAC;IACjD,WAAW,GAAG,MAAM,EAAkB;IAE/C,GAAG,GAAG,MAAM,CAAU,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;uGALlD,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBvB,msDAqDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzCY,YAAY,gRAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAOjB,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,CAAC,EAAA,IAAA,EAGvB;AACJ,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA,EAAA,QAAA,EAAA,msDAAA,EAAA;;;AEjBH;;AAEG;;;;"}
1
+ {"version":3,"file":"masterteam-components-breadcrumb.mjs","sources":["../../../../packages/masterteam/components/breadcrumb/breadcrumb.ts","../../../../packages/masterteam/components/breadcrumb/breadcrumb.html","../../../../packages/masterteam/components/breadcrumb/masterteam-components-breadcrumb.ts"],"sourcesContent":["import { Component, input, output, signal } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { Icon } from '@masterteam/icons';\r\nexport interface BreadcrumbItem {\r\n label?: string;\r\n routerLink?: string;\r\n icon?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'mt-breadcrumb',\r\n standalone: true,\r\n imports: [RouterModule, Icon],\r\n templateUrl: './breadcrumb.html',\r\n styleUrls: ['./breadcrumb.scss'],\r\n host: {\r\n '[class]': 'styleClass()',\r\n },\r\n})\r\nexport class Breadcrumb {\r\n readonly items = input<BreadcrumbItem[]>([]);\r\n readonly styleClass = input<string | undefined>(undefined);\r\n readonly onItemClick = output<BreadcrumbItem>();\r\n\r\n rtl = signal<boolean>(document.documentElement.dir === 'rtl');\r\n}\r\n","<nav aria-label=\"breadcrumb\">\r\n <ol class=\"flex items-center space-x-2\">\r\n @for (\r\n item of items();\r\n track item.label;\r\n let isFirst = $first;\r\n let isLast = $last\r\n ) {\r\n @if (!isFirst) {\r\n <li>\r\n <span class=\"text-gray-400 flex\">\r\n <mt-icon\r\n [icon]=\"this.rtl() ? 'arrow.chevron-left' : 'arrow.chevron-right'\"\r\n ></mt-icon>\r\n </span>\r\n </li>\r\n }\r\n <li>\r\n @if (item.routerLink) {\r\n <a\r\n [routerLink]=\"item.routerLink\"\r\n class=\"flex cursor-pointer items-center gap-1 text-[.95rem] text-gray-500 hover:text-gray-700\"\r\n (click)=\"onItemClick.emit(item)\"\r\n >\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\"></mt-icon>\r\n }\r\n @if (item.label) {\r\n <span>{{ item.label }}</span>\r\n }\r\n </a>\r\n } @else {\r\n <span\r\n class=\"\r\n {{\r\n isLast\r\n ? 'bg-primary-50 text-primary-400 flex cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-[.95rem]'\r\n : 'flex cursor-pointer items-center gap-1 text-[.95rem] text-gray-500 hover:text-gray-700'\r\n }}\"\r\n (click)=\"onItemClick.emit(item)\"\r\n >\r\n @if (item.icon) {\r\n <mt-icon [icon]=\"item.icon\"></mt-icon>\r\n }\r\n @if (item.label) {\r\n <span>{{ item.label }}</span>\r\n }\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAmBa,UAAU,CAAA;AACZ,IAAA,KAAK,GAAG,KAAK,CAAmB,EAAE,4EAAC;AACnC,IAAA,UAAU,GAAG,KAAK,CAAqB,SAAS,iFAAC;IACjD,WAAW,GAAG,MAAM,EAAkB;IAE/C,GAAG,GAAG,MAAM,CAAU,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,KAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;uGALlD,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBvB,msDAqDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzCY,YAAY,gRAAE,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAOjB,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,IAAI,CAAC,EAAA,IAAA,EAGvB;AACJ,wBAAA,SAAS,EAAE,cAAc;AAC1B,qBAAA,EAAA,QAAA,EAAA,msDAAA,EAAA;;;AEjBH;;AAEG;;;;"}
@@ -19,27 +19,27 @@ import { NumberField } from '@masterteam/components/number-field';
19
19
  import { Table } from '@masterteam/components/table';
20
20
 
21
21
  class LookupMatrixField {
22
- config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
22
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
23
23
  controlContainer = inject(ControlContainer, {
24
24
  optional: true,
25
25
  });
26
26
  destroyRef = inject(DestroyRef);
27
- valueVersion = signal(0, ...(ngDevMode ? [{ debugName: "valueVersion" }] : []));
28
- xOptions = computed(() => this.config().xOptions ?? [], ...(ngDevMode ? [{ debugName: "xOptions" }] : []));
29
- yOptions = computed(() => this.config().yOptions ?? [], ...(ngDevMode ? [{ debugName: "yOptions" }] : []));
30
- hasMatrix = computed(() => this.config().cells.length > 0, ...(ngDevMode ? [{ debugName: "hasMatrix" }] : []));
27
+ valueVersion = signal(0, ...(ngDevMode ? [{ debugName: "valueVersion" }] : /* istanbul ignore next */ []));
28
+ xOptions = computed(() => this.config().xOptions ?? [], ...(ngDevMode ? [{ debugName: "xOptions" }] : /* istanbul ignore next */ []));
29
+ yOptions = computed(() => this.config().yOptions ?? [], ...(ngDevMode ? [{ debugName: "yOptions" }] : /* istanbul ignore next */ []));
30
+ hasMatrix = computed(() => this.config().cells.length > 0, ...(ngDevMode ? [{ debugName: "hasMatrix" }] : /* istanbul ignore next */ []));
31
31
  cellMap = computed(() => new Map(this.config().cells.map((cell) => [
32
32
  this.cellKey(cell.xLookupItemId, cell.yLookupItemId),
33
33
  cell,
34
- ])), ...(ngDevMode ? [{ debugName: "cellMap" }] : []));
34
+ ])), ...(ngDevMode ? [{ debugName: "cellMap" }] : /* istanbul ignore next */ []));
35
35
  selectedXOption = computed(() => {
36
36
  this.valueVersion();
37
37
  return this.resolveSelectedOption(this.xOptions(), this.getControlValue(this.config().xFieldKey));
38
- }, ...(ngDevMode ? [{ debugName: "selectedXOption" }] : []));
38
+ }, ...(ngDevMode ? [{ debugName: "selectedXOption" }] : /* istanbul ignore next */ []));
39
39
  selectedYOption = computed(() => {
40
40
  this.valueVersion();
41
41
  return this.resolveSelectedOption(this.yOptions(), this.getControlValue(this.config().yFieldKey));
42
- }, ...(ngDevMode ? [{ debugName: "selectedYOption" }] : []));
42
+ }, ...(ngDevMode ? [{ debugName: "selectedYOption" }] : /* istanbul ignore next */ []));
43
43
  activeCell = computed(() => {
44
44
  const selectedX = this.selectedXOption();
45
45
  const selectedY = this.selectedYOption();
@@ -47,7 +47,7 @@ class LookupMatrixField {
47
47
  return null;
48
48
  }
49
49
  return this.getCell(selectedX.id ?? selectedX.value, selectedY.id ?? selectedY.value);
50
- }, ...(ngDevMode ? [{ debugName: "activeCell" }] : []));
50
+ }, ...(ngDevMode ? [{ debugName: "activeCell" }] : /* istanbul ignore next */ []));
51
51
  selectionSummary = computed(() => {
52
52
  const parts = [];
53
53
  const xAxisLabel = this.config().xAxisLabel.trim() || 'X';
@@ -61,18 +61,18 @@ class LookupMatrixField {
61
61
  parts.push(`${yAxisLabel}: ${selectedY.label}`);
62
62
  }
63
63
  return parts.join(' / ');
64
- }, ...(ngDevMode ? [{ debugName: "selectionSummary" }] : []));
64
+ }, ...(ngDevMode ? [{ debugName: "selectionSummary" }] : /* istanbul ignore next */ []));
65
65
  pendingMessage = computed(() => {
66
66
  const xAxisLabel = this.config().xAxisLabel.trim() || 'the first value';
67
67
  const yAxisLabel = this.config().yAxisLabel.trim() || 'the second value';
68
68
  return `Select ${xAxisLabel} and ${yAxisLabel} first.`;
69
- }, ...(ngDevMode ? [{ debugName: "pendingMessage" }] : []));
69
+ }, ...(ngDevMode ? [{ debugName: "pendingMessage" }] : /* istanbul ignore next */ []));
70
70
  missingResultMessage = computed(() => {
71
71
  if (!this.selectedXOption() || !this.selectedYOption()) {
72
72
  return this.pendingMessage();
73
73
  }
74
74
  return 'No matching value for the selected combination.';
75
- }, ...(ngDevMode ? [{ debugName: "missingResultMessage" }] : []));
75
+ }, ...(ngDevMode ? [{ debugName: "missingResultMessage" }] : /* istanbul ignore next */ []));
76
76
  constructor() {
77
77
  const control = this.controlContainer?.control;
78
78
  if (!control)
@@ -123,10 +123,10 @@ class LookupMatrixField {
123
123
  }
124
124
  return `var(--p-${color}-500)`;
125
125
  }
126
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LookupMatrixField, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: LookupMatrixField, isStandalone: true, selector: "mt-lookup-matrix-field", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "grid gap-2" }, ngImport: i0, template: "@if (config().label) {\r\n <label class=\"text-sm font-medium text-color\">\r\n {{ config().label }}\r\n </label>\r\n}\r\n\r\n<div\r\n class=\"rounded-lg border border-surface-200 bg-surface-50 px-3 flex items-center\"\r\n>\r\n @if (activeCell(); as cell) {\r\n <div class=\"flex flex-1 min-h-6 items-center gap-2 justify-between\">\r\n <span\r\n class=\"h-6 w-2 shrink-0 rounded-[2px] border border-surface-200\"\r\n [ngStyle]=\"getSwatchStyle(cell.color)\"\r\n ></span>\r\n\r\n <div class=\"min-w-0 flex-1 py-2 flex items-center justify-between\">\r\n <div class=\"truncate font-semibold text-gray-500\">\r\n {{ cell.label }}\r\n </div>\r\n\r\n @if (selectionSummary()) {\r\n <div class=\"font-bold text-gray-500\">\r\n <mt-icon\r\n [mtTooltip]=\"selectionSummary()\"\r\n icon=\"general.info-circle\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"flex min-h-6 items-center text-muted-color py-2\">\r\n {{ hasMatrix() ? missingResultMessage() : config().emptyMessage }}\r\n </div>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: LookupMatrixField, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: LookupMatrixField, isStandalone: true, selector: "mt-lookup-matrix-field", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "grid gap-2" }, ngImport: i0, template: "@if (config().label) {\r\n <label class=\"text-sm font-medium text-color\">\r\n {{ config().label }}\r\n </label>\r\n}\r\n\r\n<div\r\n class=\"rounded-lg border border-surface-200 bg-surface-50 px-3 flex items-center\"\r\n>\r\n @if (activeCell(); as cell) {\r\n <div class=\"flex flex-1 min-h-6 items-center gap-2 justify-between\">\r\n <span\r\n class=\"h-6 w-2 shrink-0 rounded-[2px] border border-surface-200\"\r\n [ngStyle]=\"getSwatchStyle(cell.color)\"\r\n ></span>\r\n\r\n <div class=\"min-w-0 flex-1 py-2 flex items-center justify-between\">\r\n <div class=\"truncate font-semibold text-gray-500\">\r\n {{ cell.label }}\r\n </div>\r\n\r\n @if (selectionSummary()) {\r\n <div class=\"font-bold text-gray-500\">\r\n <mt-icon\r\n [mtTooltip]=\"selectionSummary()\"\r\n icon=\"general.info-circle\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"flex min-h-6 items-center text-muted-color py-2\">\r\n {{ hasMatrix() ? missingResultMessage() : config().emptyMessage }}\r\n </div>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
128
128
  }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LookupMatrixField, decorators: [{
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: LookupMatrixField, decorators: [{
130
130
  type: Component,
131
131
  args: [{ selector: 'mt-lookup-matrix-field', standalone: true, imports: [CommonModule, Tooltip, Icon], changeDetection: ChangeDetectionStrategy.OnPush, host: {
132
132
  class: 'grid gap-2',
@@ -137,28 +137,28 @@ class SchemaConnectionField {
137
137
  // ============================================================================
138
138
  // Inputs
139
139
  // ============================================================================
140
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
141
- placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
142
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
143
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
144
- filter = input(true, ...(ngDevMode ? [{ debugName: "filter" }] : []));
140
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
141
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
142
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
143
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
144
+ filter = input(true, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
145
145
  /**
146
146
  * Full connection configuration object from the API.
147
147
  * Includes `targetLevelId`, `sourceLevels[]`, `payloadTemplate`, etc.
148
148
  */
149
- configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : []));
149
+ configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
150
150
  /**
151
151
  * Optional HttpContext for API requests (e.g. to set base URL behavior).
152
152
  */
153
- context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : []));
153
+ context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
154
154
  // ============================================================================
155
155
  // Internal State
156
156
  // ============================================================================
157
157
  /** The full ConnectionPayload value */
158
- value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : []));
159
- disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
158
+ value = signal(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
159
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
160
160
  /** Per-source-level state: options + loading */
161
- sourceLevelStates = signal([], ...(ngDevMode ? [{ debugName: "sourceLevelStates" }] : []));
161
+ sourceLevelStates = signal([], ...(ngDevMode ? [{ debugName: "sourceLevelStates" }] : /* istanbul ignore next */ []));
162
162
  /** Mutable selections per source level: sourceLevelId -> selected value */
163
163
  selections = {};
164
164
  requiredValidator = Validators.required;
@@ -172,7 +172,7 @@ class SchemaConnectionField {
172
172
  */
173
173
  sourceLevels = computed(() => {
174
174
  return this.configuration()?.sourceLevels ?? [];
175
- }, ...(ngDevMode ? [{ debugName: "sourceLevels" }] : []));
175
+ }, ...(ngDevMode ? [{ debugName: "sourceLevels" }] : /* istanbul ignore next */ []));
176
176
  /**
177
177
  * Percentage width for each dropdown, evenly divided.
178
178
  */
@@ -181,7 +181,7 @@ class SchemaConnectionField {
181
181
  if (count <= 0)
182
182
  return '100%';
183
183
  return `${100 / count}%`;
184
- }, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : []));
184
+ }, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : /* istanbul ignore next */ []));
185
185
  constructor() {
186
186
  this.ngControl = inject(NgControl, { self: true, optional: true });
187
187
  if (this.ngControl) {
@@ -348,10 +348,10 @@ class SchemaConnectionField {
348
348
  setDisabledState(disabled) {
349
349
  this.disabled.set(disabled);
350
350
  }
351
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchemaConnectionField, deps: [], target: i0.ɵɵFactoryTarget.Component });
352
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: SchemaConnectionField, isStandalone: true, selector: "mt-schema-connection-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, ngImport: i0, template: "<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track getSourceId(state.source)) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{\r\n state.source.name?.en ||\r\n state.source.levelKey ||\r\n state.source.moduleKey\r\n }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: MultiSelectField, selector: "mt-multi-select-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "display", "required", "maxSelectedLabels", "group", "optionGroupLabel", "optionGroupChildren", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
351
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchemaConnectionField, deps: [], target: i0.ɵɵFactoryTarget.Component });
352
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SchemaConnectionField, isStandalone: true, selector: "mt-schema-connection-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, ngImport: i0, template: "<!-- @if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n} -->\r\n\r\n<div class=\"flex gap-4 w-full\">\r\n @for (state of sourceLevelStates(); track getSourceId(state.source)) {\r\n <div [style.width]=\"dropdownWidth()\" class=\"min-w-0\">\r\n @if (sourceLevelStates().length > 1) {\r\n <span class=\"text-sm text-muted-color mb-1 block truncate\">\r\n {{\r\n state.source.name?.en ||\r\n state.source.levelKey ||\r\n state.source.moduleKey\r\n }}\r\n </span>\r\n }\r\n\r\n @if (state.source.allowManyToMany) {\r\n <mt-multi-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [showClear]=\"true\"\r\n display=\"chip\"\r\n />\r\n } @else {\r\n <mt-select-field\r\n [field]=\"false\"\r\n [(ngModel)]=\"selections[getSourceId(state.source)]\"\r\n (ngModelChange)=\"syncValue()\"\r\n [options]=\"state.options\"\r\n optionLabel=\"name\"\r\n optionValue=\"id\"\r\n [placeholder]=\"placeholder() || state.source.name?.en || 'Select...'\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [filter]=\"filter()\"\r\n [loading]=\"state.loading\"\r\n [showClear]=\"true\"\r\n />\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: MultiSelectField, selector: "mt-multi-select-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "display", "required", "maxSelectedLabels", "group", "optionGroupLabel", "optionGroupChildren", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
353
353
  }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchemaConnectionField, decorators: [{
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchemaConnectionField, decorators: [{
355
355
  type: Component,
356
356
  args: [{ selector: 'mt-schema-connection-field', standalone: true, imports: [FormsModule, SelectField, MultiSelectField, FieldValidation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
357
357
  class: 'grid gap-1',
@@ -374,31 +374,31 @@ class SchedulePredecessorField {
374
374
  predecessorCellTpl = viewChild.required('predecessorCellTpl');
375
375
  typeCellTpl = viewChild.required('typeCellTpl');
376
376
  lagCellTpl = viewChild.required('lagCellTpl');
377
- label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
378
- placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
379
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
380
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
381
- configuration = input(null, ...(ngDevMode ? [{ debugName: "configuration" }] : []));
382
- runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : []));
383
- loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
384
- taskOptions = signal([], ...(ngDevMode ? [{ debugName: "taskOptions" }] : []));
385
- rows = signal([], ...(ngDevMode ? [{ debugName: "rows" }] : []));
386
- disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
377
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
378
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
379
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
380
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
381
+ configuration = input(null, ...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
382
+ runtimeContext = input(null, ...(ngDevMode ? [{ debugName: "runtimeContext" }] : /* istanbul ignore next */ []));
383
+ loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
384
+ taskOptions = signal([], ...(ngDevMode ? [{ debugName: "taskOptions" }] : /* istanbul ignore next */ []));
385
+ rows = signal([], ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
386
+ disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
387
387
  typeOptions = computed(() => [
388
388
  { label: 'FS', value: 0 },
389
389
  { label: 'SS', value: 1 },
390
390
  { label: 'FF', value: 2 },
391
391
  { label: 'SF', value: 3 },
392
- ], ...(ngDevMode ? [{ debugName: "typeOptions" }] : []));
392
+ ], ...(ngDevMode ? [{ debugName: "typeOptions" }] : /* istanbul ignore next */ []));
393
393
  availableTaskOptions = computed(() => {
394
394
  const currentTaskId = this.runtimeContext()?.moduleDataId;
395
395
  return this.taskOptions().filter((item) => String(item.value) !== String(currentTaskId ?? ''));
396
- }, ...(ngDevMode ? [{ debugName: "availableTaskOptions" }] : []));
396
+ }, ...(ngDevMode ? [{ debugName: "availableTaskOptions" }] : /* istanbul ignore next */ []));
397
397
  canAddRow = computed(() => !!this.runtimeContext()?.levelId &&
398
398
  !!this.runtimeContext()?.levelDataId &&
399
- this.availableTaskOptions().length > 0, ...(ngDevMode ? [{ debugName: "canAddRow" }] : []));
400
- addTooltip = computed(() => this.canAddRow() ? undefined : this.texts().noAvailable, ...(ngDevMode ? [{ debugName: "addTooltip" }] : []));
401
- pageSize = computed(() => this.rows().length > 0 ? this.rows().length : 1, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
399
+ this.availableTaskOptions().length > 0, ...(ngDevMode ? [{ debugName: "canAddRow" }] : /* istanbul ignore next */ []));
400
+ addTooltip = computed(() => this.canAddRow() ? undefined : this.texts().noAvailable, ...(ngDevMode ? [{ debugName: "addTooltip" }] : /* istanbul ignore next */ []));
401
+ pageSize = computed(() => this.rows().length > 0 ? this.rows().length : 1, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
402
402
  columns = linkedSignal(() => [
403
403
  {
404
404
  key: 'predecessorId',
@@ -418,7 +418,7 @@ class SchedulePredecessorField {
418
418
  type: 'custom',
419
419
  customCellTpl: this.lagCellTpl(),
420
420
  },
421
- ], ...(ngDevMode ? [{ debugName: "columns" }] : []));
421
+ ], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
422
422
  rowActions = computed(() => [
423
423
  {
424
424
  icon: 'general.trash-01',
@@ -428,7 +428,7 @@ class SchedulePredecessorField {
428
428
  hidden: () => this.disabled() || this.readonly(),
429
429
  action: (row) => this.removeRow(row.key),
430
430
  },
431
- ], ...(ngDevMode ? [{ debugName: "rowActions" }] : []));
431
+ ], ...(ngDevMode ? [{ debugName: "rowActions" }] : /* istanbul ignore next */ []));
432
432
  requiredValidator = Validators.required;
433
433
  onTouched = () => { };
434
434
  onModelChange = () => { };
@@ -449,7 +449,7 @@ class SchedulePredecessorField {
449
449
  lagDays: this.transloco.translate('components.schedulePredecessorField.lagDays'),
450
450
  delete: this.transloco.translate('components.schedulePredecessorField.delete'),
451
451
  };
452
- }, ...(ngDevMode ? [{ debugName: "texts" }] : []));
452
+ }, ...(ngDevMode ? [{ debugName: "texts" }] : /* istanbul ignore next */ []));
453
453
  constructor() {
454
454
  this.ngControl = inject(NgControl, { self: true, optional: true });
455
455
  if (this.ngControl) {
@@ -590,10 +590,10 @@ class SchedulePredecessorField {
590
590
  const lag = row.lagDays > 0 ? `+${row.lagDays}` : row.lagDays < 0 ? row.lagDays : '';
591
591
  return `${row.predecessorId}${PREDECESSOR_TOKEN_BY_TYPE[row.type]}${lag}`;
592
592
  }
593
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchedulePredecessorField, deps: [], target: i0.ɵɵFactoryTarget.Component });
594
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: SchedulePredecessorField, isStandalone: true, selector: "mt-schedule-predecessor-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, viewQueries: [{ propertyName: "predecessorCellTpl", first: true, predicate: ["predecessorCellTpl"], descendants: true, isSignal: true }, { propertyName: "typeCellTpl", first: true, predicate: ["typeCellTpl"], descendants: true, isSignal: true }, { propertyName: "lagCellTpl", first: true, predicate: ["lagCellTpl"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n}\r\n\r\n<div class=\"grid gap-3\">\r\n <div class=\"flex items-center justify-end\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"'components.schedulePredecessorField.add' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [disabled]=\"disabled() || readonly() || !canAddRow()\"\r\n [tooltip]=\"addTooltip()\"\r\n (onClick)=\"addRow()\"\r\n />\r\n </div>\r\n\r\n <ng-template #predecessorCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"availableTaskOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [placeholder]=\"\r\n placeholder() ||\r\n ('components.schedulePredecessorField.selectPredecessor' | transloco)\r\n \"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [loading]=\"loading()\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.predecessorId || undefined\"\r\n (onChange)=\"updateRow(row.key, { predecessorId: $event ?? '' })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #typeCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"typeOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.type\"\r\n (onChange)=\"updateRow(row.key, { type: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #lagCellTpl let-row>\r\n <mt-number-field\r\n [field]=\"false\"\r\n [useGrouping]=\"false\"\r\n [placeholder]=\"'components.schedulePredecessorField.lagDays' | transloco\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.lagDays\"\r\n (ngModelChange)=\"updateRow(row.key, { lagDays: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [rowActions]=\"rowActions()\"\r\n [pageSize]=\"pageSize()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [dataKey]=\"'key'\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div\r\n class=\"rounded-xl border border-dashed border-surface px-4 py-5 text-sm text-muted-color\"\r\n >\r\n {{ \"components.schedulePredecessorField.empty\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "component", type: NumberField, selector: "mt-number-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "format", "useGrouping", "maxFractionDigits", "min", "max", "required"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "exportFilename", "actionShape", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i2.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
593
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchedulePredecessorField, deps: [], target: i0.ɵɵFactoryTarget.Component });
594
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: SchedulePredecessorField, isStandalone: true, selector: "mt-schedule-predecessor-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, runtimeContext: { classPropertyName: "runtimeContext", publicName: "runtimeContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "grid gap-1" }, viewQueries: [{ propertyName: "predecessorCellTpl", first: true, predicate: ["predecessorCellTpl"], descendants: true, isSignal: true }, { propertyName: "typeCellTpl", first: true, predicate: ["typeCellTpl"], descendants: true, isSignal: true }, { propertyName: "lagCellTpl", first: true, predicate: ["lagCellTpl"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n}\r\n\r\n<div class=\"grid gap-3\">\r\n <div class=\"flex items-center justify-end\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"'components.schedulePredecessorField.add' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [disabled]=\"disabled() || readonly() || !canAddRow()\"\r\n [tooltip]=\"addTooltip()\"\r\n (onClick)=\"addRow()\"\r\n />\r\n </div>\r\n\r\n <ng-template #predecessorCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"availableTaskOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [placeholder]=\"\r\n placeholder() ||\r\n ('components.schedulePredecessorField.selectPredecessor' | transloco)\r\n \"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [loading]=\"loading()\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.predecessorId || undefined\"\r\n (onChange)=\"updateRow(row.key, { predecessorId: $event ?? '' })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #typeCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"typeOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.type\"\r\n (onChange)=\"updateRow(row.key, { type: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #lagCellTpl let-row>\r\n <mt-number-field\r\n [field]=\"false\"\r\n [useGrouping]=\"false\"\r\n [placeholder]=\"'components.schedulePredecessorField.lagDays' | transloco\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.lagDays\"\r\n (ngModelChange)=\"updateRow(row.key, { lagDays: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [rowActions]=\"rowActions()\"\r\n [pageSize]=\"pageSize()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [dataKey]=\"'key'\"\r\n storageKey=\"schedule-predecessor-field-table\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div\r\n class=\"rounded-xl border border-dashed border-surface px-4 py-5 text-sm text-muted-color\"\r\n >\r\n {{ \"components.schedulePredecessorField.empty\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: FieldValidation, selector: "mt-field-validation", inputs: ["control", "touched"] }, { kind: "component", type: NumberField, selector: "mt-number-field", inputs: ["field", "label", "placeholder", "class", "readonly", "pInputs", "format", "useGrouping", "maxFractionDigits", "min", "max", "required"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "size", "optionGroupLabel", "optionGroupChildren", "loading", "optionIcon", "optionIconColor", "optionIconShape", "optionAvatarShape", "optionGroupIcon", "optionGroupIconColor", "optionGroupIconShape", "optionGroupAvatarShape"], outputs: ["onChange"] }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "exportFilename", "actionShape", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i2.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
595
595
  }
596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: SchedulePredecessorField, decorators: [{
596
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: SchedulePredecessorField, decorators: [{
597
597
  type: Component,
598
598
  args: [{ selector: 'mt-schedule-predecessor-field', standalone: true, imports: [
599
599
  CommonModule,
@@ -606,7 +606,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImpor
606
606
  TranslocoModule,
607
607
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
608
608
  class: 'grid gap-1',
609
- }, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n}\r\n\r\n<div class=\"grid gap-3\">\r\n <div class=\"flex items-center justify-end\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"'components.schedulePredecessorField.add' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [disabled]=\"disabled() || readonly() || !canAddRow()\"\r\n [tooltip]=\"addTooltip()\"\r\n (onClick)=\"addRow()\"\r\n />\r\n </div>\r\n\r\n <ng-template #predecessorCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"availableTaskOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [placeholder]=\"\r\n placeholder() ||\r\n ('components.schedulePredecessorField.selectPredecessor' | transloco)\r\n \"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [loading]=\"loading()\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.predecessorId || undefined\"\r\n (onChange)=\"updateRow(row.key, { predecessorId: $event ?? '' })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #typeCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"typeOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.type\"\r\n (onChange)=\"updateRow(row.key, { type: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #lagCellTpl let-row>\r\n <mt-number-field\r\n [field]=\"false\"\r\n [useGrouping]=\"false\"\r\n [placeholder]=\"'components.schedulePredecessorField.lagDays' | transloco\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.lagDays\"\r\n (ngModelChange)=\"updateRow(row.key, { lagDays: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [rowActions]=\"rowActions()\"\r\n [pageSize]=\"pageSize()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [dataKey]=\"'key'\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div\r\n class=\"rounded-xl border border-dashed border-surface px-4 py-5 text-sm text-muted-color\"\r\n >\r\n {{ \"components.schedulePredecessorField.empty\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n" }]
609
+ }, template: "@if (label()) {\r\n <label\r\n [class.required]=\"ngControl?.control?.hasValidator(requiredValidator)\"\r\n [for]=\"ngControl?.name || label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n}\r\n\r\n<div class=\"grid gap-3\">\r\n <div class=\"flex items-center justify-end\">\r\n <mt-button\r\n icon=\"general.plus\"\r\n [label]=\"'components.schedulePredecessorField.add' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n [disabled]=\"disabled() || readonly() || !canAddRow()\"\r\n [tooltip]=\"addTooltip()\"\r\n (onClick)=\"addRow()\"\r\n />\r\n </div>\r\n\r\n <ng-template #predecessorCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"availableTaskOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [placeholder]=\"\r\n placeholder() ||\r\n ('components.schedulePredecessorField.selectPredecessor' | transloco)\r\n \"\r\n [filter]=\"true\"\r\n [showClear]=\"true\"\r\n [loading]=\"loading()\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.predecessorId || undefined\"\r\n (onChange)=\"updateRow(row.key, { predecessorId: $event ?? '' })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #typeCellTpl let-row>\r\n <mt-select-field\r\n [field]=\"false\"\r\n [options]=\"typeOptions()\"\r\n optionLabel=\"label\"\r\n optionValue=\"value\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.type\"\r\n (onChange)=\"updateRow(row.key, { type: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #lagCellTpl let-row>\r\n <mt-number-field\r\n [field]=\"false\"\r\n [useGrouping]=\"false\"\r\n [placeholder]=\"'components.schedulePredecessorField.lagDays' | transloco\"\r\n [readonly]=\"disabled() || readonly()\"\r\n [ngModel]=\"row.lagDays\"\r\n (ngModelChange)=\"updateRow(row.key, { lagDays: $event ?? 0 })\"\r\n />\r\n </ng-template>\r\n\r\n <mt-table\r\n [data]=\"rows()\"\r\n [columns]=\"columns()\"\r\n [rowActions]=\"rowActions()\"\r\n [pageSize]=\"pageSize()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [dataKey]=\"'key'\"\r\n storageKey=\"schedule-predecessor-field-table\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div\r\n class=\"rounded-xl border border-dashed border-surface px-4 py-5 text-sm text-muted-color\"\r\n >\r\n {{ \"components.schedulePredecessorField.empty\" | transloco }}\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n</div>\r\n\r\n<mt-field-validation [control]=\"ngControl?.control\"></mt-field-validation>\r\n" }]
610
610
  }], ctorParameters: () => [], propDecorators: { predecessorCellTpl: [{ type: i0.ViewChild, args: ['predecessorCellTpl', { isSignal: true }] }], typeCellTpl: [{ type: i0.ViewChild, args: ['typeCellTpl', { isSignal: true }] }], lagCellTpl: [{ type: i0.ViewChild, args: ['lagCellTpl', { isSignal: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: false }] }], runtimeContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "runtimeContext", required: false }] }] } });
611
611
 
612
612
  /**