ngx-t-forms 2.0.29 → 2.0.31

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 (161) hide show
  1. package/fesm2022/ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs +104 -0
  2. package/fesm2022/ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs.map +1 -0
  3. package/fesm2022/ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs +85 -0
  4. package/fesm2022/ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs.map +1 -0
  5. package/fesm2022/ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs +643 -0
  6. package/fesm2022/ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs.map +1 -0
  7. package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs +97 -0
  8. package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs.map +1 -0
  9. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs +195 -0
  10. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs.map +1 -0
  11. package/fesm2022/ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs +261 -0
  12. package/fesm2022/ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs.map +1 -0
  13. package/fesm2022/ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs +85 -0
  14. package/fesm2022/ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs.map +1 -0
  15. package/fesm2022/ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs +156 -0
  16. package/fesm2022/ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs.map +1 -0
  17. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs +368 -0
  18. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs.map +1 -0
  19. package/fesm2022/ngx-t-forms-document-picker.component-qObjcqhE.mjs +704 -0
  20. package/fesm2022/ngx-t-forms-document-picker.component-qObjcqhE.mjs.map +1 -0
  21. package/fesm2022/ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs +294 -0
  22. package/fesm2022/ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs.map +1 -0
  23. package/fesm2022/ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs +240 -0
  24. package/fesm2022/ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs.map +1 -0
  25. package/fesm2022/ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs +205 -0
  26. package/fesm2022/ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs.map +1 -0
  27. package/fesm2022/ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs +86 -0
  28. package/fesm2022/ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs.map +1 -0
  29. package/fesm2022/ngx-t-forms-form-json-view.component-856Hx1Bg.mjs +22 -0
  30. package/fesm2022/ngx-t-forms-form-json-view.component-856Hx1Bg.mjs.map +1 -0
  31. package/fesm2022/ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs +179 -0
  32. package/fesm2022/ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs.map +1 -0
  33. package/fesm2022/ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs +319 -0
  34. package/fesm2022/ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs.map +1 -0
  35. package/fesm2022/ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs +379 -0
  36. package/fesm2022/ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs.map +1 -0
  37. package/fesm2022/ngx-t-forms-geo-location.component-Bosp1UzR.mjs +124 -0
  38. package/fesm2022/ngx-t-forms-geo-location.component-Bosp1UzR.mjs.map +1 -0
  39. package/fesm2022/ngx-t-forms-getInputIcon-B4ADgevZ.mjs +31 -0
  40. package/fesm2022/ngx-t-forms-getInputIcon-B4ADgevZ.mjs.map +1 -0
  41. package/fesm2022/ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs +180 -0
  42. package/fesm2022/ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs.map +1 -0
  43. package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs +2 -0
  44. package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs.map +1 -0
  45. package/fesm2022/ngx-t-forms-input-custom.component-BkbHFAyR.mjs +105 -0
  46. package/fesm2022/ngx-t-forms-input-custom.component-BkbHFAyR.mjs.map +1 -0
  47. package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs +181 -0
  48. package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs.map +1 -0
  49. package/fesm2022/{ngx-t-forms-map-mat-options-keys-CbdW82su.mjs → ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs} +12 -14
  50. package/fesm2022/ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs.map +1 -0
  51. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs +66 -0
  52. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs.map +1 -0
  53. package/fesm2022/ngx-t-forms-mat-slider-editor.component-CTSBrM-j.mjs +211 -0
  54. package/fesm2022/ngx-t-forms-mat-slider-editor.component-CTSBrM-j.mjs.map +1 -0
  55. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-CcYiwx-8.mjs +165 -0
  56. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-CcYiwx-8.mjs.map +1 -0
  57. package/fesm2022/ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs +38 -0
  58. package/fesm2022/ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs.map +1 -0
  59. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs +38 -0
  60. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs.map +1 -0
  61. package/fesm2022/ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs +126 -0
  62. package/fesm2022/ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs.map +1 -0
  63. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs +336 -0
  64. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs.map +1 -0
  65. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-B1Z-IXSL.mjs +74 -0
  66. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-B1Z-IXSL.mjs.map +1 -0
  67. package/fesm2022/ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs +905 -0
  68. package/fesm2022/ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs.map +1 -0
  69. package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs +19461 -0
  70. package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs.map +1 -0
  71. package/fesm2022/ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs +555 -0
  72. package/fesm2022/ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs.map +1 -0
  73. package/fesm2022/ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs +748 -0
  74. package/fesm2022/ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs.map +1 -0
  75. package/fesm2022/ngx-t-forms-record-list-manager.component-CUMMvMch.mjs +358 -0
  76. package/fesm2022/ngx-t-forms-record-list-manager.component-CUMMvMch.mjs.map +1 -0
  77. package/fesm2022/ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs +272 -0
  78. package/fesm2022/ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs.map +1 -0
  79. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs +398 -0
  80. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs.map +1 -0
  81. package/fesm2022/ngx-t-forms-search-field.component-B2ZO7lqO.mjs +38 -0
  82. package/fesm2022/ngx-t-forms-search-field.component-B2ZO7lqO.mjs.map +1 -0
  83. package/fesm2022/ngx-t-forms-section-report.component-BxOhR6C0.mjs +98 -0
  84. package/fesm2022/ngx-t-forms-section-report.component-BxOhR6C0.mjs.map +1 -0
  85. package/fesm2022/ngx-t-forms-select-input-element.component-DbgZdNoe.mjs +150 -0
  86. package/fesm2022/ngx-t-forms-select-input-element.component-DbgZdNoe.mjs.map +1 -0
  87. package/fesm2022/ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs +169 -0
  88. package/fesm2022/ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs.map +1 -0
  89. package/fesm2022/ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs +204 -0
  90. package/fesm2022/ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs.map +1 -0
  91. package/fesm2022/ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs +95 -0
  92. package/fesm2022/ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs.map +1 -0
  93. package/fesm2022/ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs +82 -0
  94. package/fesm2022/ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs.map +1 -0
  95. package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs +733 -0
  96. package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs.map +1 -0
  97. package/fesm2022/ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs +1303 -0
  98. package/fesm2022/ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs.map +1 -0
  99. package/fesm2022/ngx-t-forms.mjs +2 -1
  100. package/fesm2022/ngx-t-forms.mjs.map +1 -1
  101. package/package.json +20 -18
  102. package/styles/_editor-mixins.scss +62 -0
  103. package/styles/_json-editor-syntax.scss +26 -0
  104. package/styles/_signature-pad.scss +26 -0
  105. package/styles/_tokens.scss +148 -0
  106. package/types/ngx-t-forms.d.ts +1767 -621
  107. package/fesm2022/ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs +0 -313
  108. package/fesm2022/ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs.map +0 -1
  109. package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs +0 -191
  110. package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs.map +0 -1
  111. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs +0 -207
  112. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs.map +0 -1
  113. package/fesm2022/ngx-t-forms-data-source-picker.component-DxORinAD.mjs +0 -204
  114. package/fesm2022/ngx-t-forms-data-source-picker.component-DxORinAD.mjs.map +0 -1
  115. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs +0 -289
  116. package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs.map +0 -1
  117. package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs +0 -134
  118. package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs.map +0 -1
  119. package/fesm2022/ngx-t-forms-form-json-view.component-DePf44w6.mjs +0 -22
  120. package/fesm2022/ngx-t-forms-form-json-view.component-DePf44w6.mjs.map +0 -1
  121. package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs +0 -270
  122. package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs.map +0 -1
  123. package/fesm2022/ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs +0 -345
  124. package/fesm2022/ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs.map +0 -1
  125. package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs +0 -147
  126. package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs.map +0 -1
  127. package/fesm2022/ngx-t-forms-map-mat-options-keys-CbdW82su.mjs.map +0 -1
  128. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs +0 -105
  129. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs.map +0 -1
  130. package/fesm2022/ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs +0 -109
  131. package/fesm2022/ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs.map +0 -1
  132. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs +0 -155
  133. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs.map +0 -1
  134. package/fesm2022/ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs +0 -28
  135. package/fesm2022/ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs.map +0 -1
  136. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs +0 -43
  137. package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs.map +0 -1
  138. package/fesm2022/ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs +0 -116
  139. package/fesm2022/ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs.map +0 -1
  140. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs +0 -296
  141. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs.map +0 -1
  142. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs +0 -83
  143. package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs.map +0 -1
  144. package/fesm2022/ngx-t-forms-ngx-t-forms-D9qmig6g.mjs +0 -16844
  145. package/fesm2022/ngx-t-forms-ngx-t-forms-D9qmig6g.mjs.map +0 -1
  146. package/fesm2022/ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs +0 -613
  147. package/fesm2022/ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs.map +0 -1
  148. package/fesm2022/ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs +0 -269
  149. package/fesm2022/ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs.map +0 -1
  150. package/fesm2022/ngx-t-forms-required-inputs.component-CSIJvSHq.mjs +0 -190
  151. package/fesm2022/ngx-t-forms-required-inputs.component-CSIJvSHq.mjs.map +0 -1
  152. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs +0 -291
  153. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs.map +0 -1
  154. package/fesm2022/ngx-t-forms-section-report.component-12-KdKT6.mjs +0 -156
  155. package/fesm2022/ngx-t-forms-section-report.component-12-KdKT6.mjs.map +0 -1
  156. package/fesm2022/ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs +0 -186
  157. package/fesm2022/ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs.map +0 -1
  158. package/fesm2022/ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs +0 -187
  159. package/fesm2022/ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs.map +0 -1
  160. package/fesm2022/ngx-t-forms-validators-config.component-B3j9Dmgu.mjs +0 -215
  161. package/fesm2022/ngx-t-forms-validators-config.component-B3j9Dmgu.mjs.map +0 -1
@@ -0,0 +1,38 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@angular/material/button';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import * as i3 from '@angular/material/icon';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import * as i5 from '@angular/material/toolbar';
8
+ import { MatToolbarModule } from '@angular/material/toolbar';
9
+ import { A as ACCOUNTING_BASIS, z as getToolbarColor, C as getToolbarBackground, G as getToolbarIconColor } from './ngx-t-forms-ngx-t-forms-u_kigDid.mjs';
10
+
11
+ class MscoaChartToolbarComponent {
12
+ constructor() {
13
+ this.accountingBasis = input(undefined, ...(ngDevMode ? [{ debugName: "accountingBasis" }] : /* istanbul ignore next */ []));
14
+ this.canCollapse = input(false, ...(ngDevMode ? [{ debugName: "canCollapse" }] : /* istanbul ignore next */ []));
15
+ this.isExpanded = input(true, ...(ngDevMode ? [{ debugName: "isExpanded" }] : /* istanbul ignore next */ []));
16
+ this.toggleExpansion = output();
17
+ this.ACCOUNTING_BASIS = ACCOUNTING_BASIS;
18
+ this.getToolbarColor = getToolbarColor;
19
+ this.getToolbarBackground = getToolbarBackground;
20
+ this.getToolbarIconColor = getToolbarIconColor;
21
+ this.displayBasis = computed(() => {
22
+ const basis = this.accountingBasis() || ACCOUNTING_BASIS.ACCRUAL;
23
+ return basis.charAt(0).toUpperCase() + basis.slice(1);
24
+ }, ...(ngDevMode ? [{ debugName: "displayBasis" }] : /* istanbul ignore next */ []));
25
+ }
26
+ onToggleClick() {
27
+ this.toggleExpansion.emit();
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MscoaChartToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: MscoaChartToolbarComponent, isStandalone: true, selector: "lib-mscoa-chart-toolbar", inputs: { accountingBasis: { classPropertyName: "accountingBasis", publicName: "accountingBasis", isSignal: true, isRequired: false, transformFunction: null }, canCollapse: { classPropertyName: "canCollapse", publicName: "canCollapse", isSignal: true, isRequired: false, transformFunction: null }, isExpanded: { classPropertyName: "isExpanded", publicName: "isExpanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleExpansion: "toggleExpansion" }, ngImport: i0, template: "<mat-toolbar\r\n [color]=\"getToolbarColor(accountingBasis())\"\r\n [style.background]=\"getToolbarBackground(accountingBasis())\"\r\n class=\"mscoa-chart-toolbar\"\r\n [attr.aria-label]=\"'Accounting basis: ' + displayBasis()\">\r\n\r\n <span class=\"mscoa-chart-toolbar__label\">\r\n Basis: {{ displayBasis() }}\r\n </span>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @if (canCollapse()) {\r\n <button\r\n mat-icon-button\r\n (click)=\"onToggleClick()\"\r\n [attr.aria-label]=\"(isExpanded() ? 'Collapse' : 'Expand') + ' ' + displayBasis() + ' basis table'\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <mat-icon [style.color]=\"getToolbarIconColor(accountingBasis())\">\r\n {{ isExpanded() ? 'expand_less' : 'expand_more' }}\r\n </mat-icon>\r\n </button>\r\n }\r\n</mat-toolbar>\r\n", styles: [".mscoa-chart-toolbar{gap:var(--mscoa-chart-spacing-sm, 8px);height:48px;font-size:.875em;font-weight:500;transition:background-color var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-chart-toolbar__label{flex:1}.mscoa-chart-toolbar button:focus-visible{outline:2px solid var(--mat-sys-primary);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MscoaChartToolbarComponent, decorators: [{
33
+ type: Component,
34
+ args: [{ selector: 'lib-mscoa-chart-toolbar', imports: [MatToolbarModule, MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-toolbar\r\n [color]=\"getToolbarColor(accountingBasis())\"\r\n [style.background]=\"getToolbarBackground(accountingBasis())\"\r\n class=\"mscoa-chart-toolbar\"\r\n [attr.aria-label]=\"'Accounting basis: ' + displayBasis()\">\r\n\r\n <span class=\"mscoa-chart-toolbar__label\">\r\n Basis: {{ displayBasis() }}\r\n </span>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @if (canCollapse()) {\r\n <button\r\n mat-icon-button\r\n (click)=\"onToggleClick()\"\r\n [attr.aria-label]=\"(isExpanded() ? 'Collapse' : 'Expand') + ' ' + displayBasis() + ' basis table'\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <mat-icon [style.color]=\"getToolbarIconColor(accountingBasis())\">\r\n {{ isExpanded() ? 'expand_less' : 'expand_more' }}\r\n </mat-icon>\r\n </button>\r\n }\r\n</mat-toolbar>\r\n", styles: [".mscoa-chart-toolbar{gap:var(--mscoa-chart-spacing-sm, 8px);height:48px;font-size:.875em;font-weight:500;transition:background-color var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-chart-toolbar__label{flex:1}.mscoa-chart-toolbar button:focus-visible{outline:2px solid var(--mat-sys-primary);outline-offset:2px}\n"] }]
35
+ }], propDecorators: { accountingBasis: [{ type: i0.Input, args: [{ isSignal: true, alias: "accountingBasis", required: false }] }], canCollapse: [{ type: i0.Input, args: [{ isSignal: true, alias: "canCollapse", required: false }] }], isExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isExpanded", required: false }] }], toggleExpansion: [{ type: i0.Output, args: ["toggleExpansion"] }] } });
36
+
37
+ export { MscoaChartToolbarComponent };
38
+ //# sourceMappingURL=ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-toolbar/mscoa-chart-toolbar.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-chart-toolbar/mscoa-chart-toolbar.component.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { ACCOUNTING_BASIS } from '../../utils/mscoa-chart.constants';\r\nimport { getToolbarBackground, getToolbarColor, getToolbarIconColor } from '../../utils/mscoa-chart.helpers';\r\nimport type { AccountingBasis } from '../../utils/mscoa-chart.constants';\r\n\r\n@Component({\r\n selector: 'lib-mscoa-chart-toolbar',\r\n imports: [MatToolbarModule, MatButtonModule, MatIconModule],\r\n templateUrl: './mscoa-chart-toolbar.component.html',\r\n styleUrls: ['./mscoa-chart-toolbar.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MscoaChartToolbarComponent {\r\n readonly accountingBasis = input<AccountingBasis | string | undefined>(undefined);\r\n readonly canCollapse = input<boolean>(false);\r\n readonly isExpanded = input<boolean>(true);\r\n\r\n readonly toggleExpansion = output<void>();\r\n\r\n protected readonly ACCOUNTING_BASIS = ACCOUNTING_BASIS;\r\n\r\n protected readonly getToolbarColor = getToolbarColor;\r\n protected readonly getToolbarBackground = getToolbarBackground;\r\n protected readonly getToolbarIconColor = getToolbarIconColor;\r\n\r\n protected readonly displayBasis = computed<string>(() => {\r\n const basis = this.accountingBasis() || ACCOUNTING_BASIS.ACCRUAL;\r\n return basis.charAt(0).toUpperCase() + basis.slice(1);\r\n });\r\n\r\n protected onToggleClick(): void {\r\n this.toggleExpansion.emit();\r\n }\r\n}\r\n","<mat-toolbar\r\n [color]=\"getToolbarColor(accountingBasis())\"\r\n [style.background]=\"getToolbarBackground(accountingBasis())\"\r\n class=\"mscoa-chart-toolbar\"\r\n [attr.aria-label]=\"'Accounting basis: ' + displayBasis()\">\r\n\r\n <span class=\"mscoa-chart-toolbar__label\">\r\n Basis: {{ displayBasis() }}\r\n </span>\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @if (canCollapse()) {\r\n <button\r\n mat-icon-button\r\n (click)=\"onToggleClick()\"\r\n [attr.aria-label]=\"(isExpanded() ? 'Collapse' : 'Expand') + ' ' + displayBasis() + ' basis table'\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <mat-icon [style.color]=\"getToolbarIconColor(accountingBasis())\">\r\n {{ isExpanded() ? 'expand_less' : 'expand_more' }}\r\n </mat-icon>\r\n </button>\r\n }\r\n</mat-toolbar>\r\n"],"names":["i1"],"mappings":";;;;;;;;;;MAea,0BAA0B,CAAA;AAPvC,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAuC,SAAS,sFAAC;AACxE,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAU,IAAI,iFAAC;QAEjC,IAAA,CAAA,eAAe,GAAG,MAAM,EAAQ;QAEtB,IAAA,CAAA,gBAAgB,GAAG,gBAAgB;QAEnC,IAAA,CAAA,eAAe,GAAG,eAAe;QACjC,IAAA,CAAA,oBAAoB,GAAG,oBAAoB;QAC3C,IAAA,CAAA,mBAAmB,GAAG,mBAAmB;AAEzC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAS,MAAK;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,gBAAgB,CAAC,OAAO;AAChE,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,QAAA,CAAC,mFAAC;AAKH,IAAA;IAHW,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;IAC7B;+GApBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,ujBCfvC,g1BAwBA,EAAA,MAAA,EAAA,CAAA,0UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDdY,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,qNAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK/C,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;+BACE,yBAAyB,EAAA,OAAA,EAC1B,CAAC,gBAAgB,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,eAAA,EAG1C,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,g1BAAA,EAAA,MAAA,EAAA,CAAA,0UAAA,CAAA,EAAA;;;;;"}
@@ -0,0 +1,126 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, signal, computed, inject, DestroyRef, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import * as i1 from '@angular/material/button';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import * as i3 from '@angular/material/icon';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { Subject, timer } from 'rxjs';
9
+ import { takeUntil } from 'rxjs/operators';
10
+
11
+ /**
12
+ * Displays a list of error/warning/info/success messages inside the MSCOA chart UI.
13
+ * Optionally auto-hides after a duration and can be dismissed.
14
+ */
15
+ class MscoaErrorDisplayComponent {
16
+ #destroyRef;
17
+ #hideTimer$;
18
+ #previousErrorsLength;
19
+ #initialized;
20
+ constructor() {
21
+ /** Error messages to display. */
22
+ this.errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
23
+ /** Visual variant. */
24
+ this.type = input('error', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
25
+ /** Optional context (segment, accounting basis, etc.) for screen readers / parent inspection. */
26
+ this.context = input(undefined, ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
27
+ /** Whether to render the leading icon. */
28
+ this.showIcon = input(true, ...(ngDevMode ? [{ debugName: "showIcon" }] : /* istanbul ignore next */ []));
29
+ /** Compact visual density. */
30
+ this.compact = input(false, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
31
+ /** When set, display auto-hides after this many ms. Keeps error styling. */
32
+ this.duration = input(undefined, ...(ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []));
33
+ /** Whether to show the dismiss button. */
34
+ this.showDismiss = input(false, ...(ngDevMode ? [{ debugName: "showDismiss" }] : /* istanbul ignore next */ []));
35
+ this.visible = signal(true, ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
36
+ this.iconName = computed(() => {
37
+ switch (this.type()) {
38
+ case 'error':
39
+ return 'error';
40
+ case 'warning':
41
+ return 'warning';
42
+ case 'info':
43
+ return 'info';
44
+ case 'success':
45
+ return 'check_circle';
46
+ default:
47
+ return 'error';
48
+ }
49
+ }, ...(ngDevMode ? [{ debugName: "iconName" }] : /* istanbul ignore next */ []));
50
+ this.ariaLabel = computed(() => {
51
+ const t = this.type();
52
+ const typeText = t === 'error'
53
+ ? 'errors'
54
+ : t === 'warning'
55
+ ? 'warnings'
56
+ : t === 'success'
57
+ ? 'success messages'
58
+ : 'messages';
59
+ return `${this.errors().length} ${typeText}`;
60
+ }, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
61
+ this.#destroyRef = inject(DestroyRef);
62
+ this.#hideTimer$ = new Subject();
63
+ this.#previousErrorsLength = 0;
64
+ this.#initialized = false;
65
+ // Replaces ngOnInit + ngOnChanges. Reacts to errors[] / duration changes.
66
+ effect(() => {
67
+ const length = this.errors()?.length ?? 0;
68
+ const duration = this.duration();
69
+ const wasInitialized = this.#initialized;
70
+ const previousLength = this.#previousErrorsLength;
71
+ this.#previousErrorsLength = length;
72
+ this.#initialized = true;
73
+ if (!wasInitialized) {
74
+ // Initial pass — mirror old ngOnInit behaviour.
75
+ if (duration != null && length > 0) {
76
+ this.#show();
77
+ }
78
+ return;
79
+ }
80
+ if (duration != null) {
81
+ if (length > 0 && previousLength === 0) {
82
+ this.#show();
83
+ }
84
+ else if (length === 0 && previousLength > 0) {
85
+ this.hide();
86
+ }
87
+ }
88
+ else {
89
+ this.visible.set(true);
90
+ }
91
+ });
92
+ this.#destroyRef.onDestroy(() => {
93
+ this.#hideTimer$.next();
94
+ this.#hideTimer$.complete();
95
+ });
96
+ }
97
+ trackByIndex(index) {
98
+ return index;
99
+ }
100
+ #show() {
101
+ this.#hideTimer$.next();
102
+ this.visible.set(true);
103
+ const duration = this.duration();
104
+ if (duration != null && duration > 0) {
105
+ timer(duration)
106
+ .pipe(takeUntil(this.#hideTimer$), takeUntilDestroyed(this.#destroyRef))
107
+ .subscribe(() => this.hide());
108
+ }
109
+ }
110
+ hide() {
111
+ this.#hideTimer$.next();
112
+ this.visible.set(false);
113
+ }
114
+ dismiss() {
115
+ this.hide();
116
+ }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MscoaErrorDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
118
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: MscoaErrorDisplayComponent, isStandalone: true, selector: "lib-mscoa-error-display", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, showDismiss: { classPropertyName: "showDismiss", publicName: "showDismiss", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (visible() && errors() && errors().length > 0) {\r\n <div\r\n class=\"mscoa-error-display\"\r\n [class.mscoa-error-display--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display--success]=\"type() === 'success'\"\r\n [class.mscoa-error-display--compact]=\"compact()\"\r\n role=\"alert\"\r\n [attr.aria-live]=\"type() === 'error' ? 'assertive' : 'polite'\"\r\n [attr.aria-label]=\"ariaLabel()\">\r\n\r\n @if (showIcon()) {\r\n <mat-icon\r\n class=\"mscoa-error-display__icon\"\r\n [class.mscoa-error-display__icon--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display__icon--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display__icon--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display__icon--success]=\"type() === 'success'\"\r\n [attr.aria-hidden]=\"true\">\r\n {{ iconName() }}\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"mscoa-error-display__content\">\r\n @if (errors().length === 1) {\r\n <p class=\"mscoa-error-display__message\">{{ errors()[0] }}</p>\r\n } @else {\r\n <ul class=\"mscoa-error-display__list\">\r\n @for (error of errors(); track trackByIndex($index)) {\r\n <li class=\"mscoa-error-display__item\">{{ error }}</li>\r\n }\r\n </ul>\r\n }\r\n <sub class=\"mscoa-error-display__hint\">\r\n Hover over the account for the error message or scroll to bottom of input to see all errors.\r\n </sub>\r\n </div>\r\n\r\n @if (showDismiss()) {\r\n <button\r\n class=\"mscoa-error-display__dismiss\"\r\n (click)=\"dismiss()\"\r\n [attr.aria-label]=\"'Dismiss'\"\r\n mat-icon-button\r\n type=\"button\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: [".mscoa-error-display{display:flex;align-items:flex-start;gap:var(--mscoa-chart-spacing-sm, 8px);padding:var(--mscoa-chart-spacing-md, 16px);border-radius:var(--mscoa-chart-border-radius, 4px);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;margin-top:var(--mscoa-chart-spacing-sm, 8px);transition:background-color var(--lib-forms-duration-hover) var(--lib-forms-easing),color var(--lib-forms-duration-hover) var(--lib-forms-easing),border-color var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-error-display--compact{padding:var(--mscoa-chart-spacing-sm, 8px);font-size:13px}.mscoa-error-display--error{background-color:var(--sem-error-surface);color:var(--lib-forms-on-error-container);border-left:4px solid var(--sem-error)}.mscoa-error-display--warning{background-color:var(--sem-warning-surface);color:var(--lib-forms-on-surface);border-left:4px solid var(--sem-warning)}.mscoa-error-display--info{background-color:var(--sem-info-surface);color:var(--sem-info);border-left:4px solid var(--sem-info)}.mscoa-error-display--success{background-color:var(--sem-success-surface);color:var(--sem-success);border-left:4px solid var(--sem-success)}.mscoa-error-display__icon{flex-shrink:0;width:20px;height:20px;font-size:20px;margin-top:2px}.mscoa-error-display__icon--error{color:var(--sem-error)}.mscoa-error-display__icon--warning{color:var(--sem-warning)}.mscoa-error-display__icon--info{color:var(--sem-info)}.mscoa-error-display__icon--success{color:var(--sem-success)}.mscoa-error-display__content{flex:1;min-width:0}.mscoa-error-display__message{margin:0;font-weight:400}.mscoa-error-display__hint{display:block;margin:var(--mscoa-chart-spacing-xs, 4px) 0 0;font-size:12px;opacity:.85;font-weight:400}.mscoa-error-display__list{margin:0;padding-left:var(--mscoa-chart-spacing-md, 16px);list-style-type:disc}.mscoa-error-display__item{margin-bottom:var(--mscoa-chart-spacing-xs, 4px)}.mscoa-error-display__item:last-child{margin-bottom:0}.mscoa-error-display__dismiss{flex-shrink:0;width:24px;height:24px;opacity:.7;transition:opacity var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-error-display__dismiss:hover{opacity:1}.mscoa-error-display__dismiss mat-icon{font-size:18px;width:18px;height:18px}@media(prefers-contrast:high){.mscoa-error-display{border-width:2px;font-weight:500}}@media(prefers-reduced-motion:reduce){.mscoa-error-display{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
119
+ }
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MscoaErrorDisplayComponent, decorators: [{
121
+ type: Component,
122
+ args: [{ selector: 'lib-mscoa-error-display', imports: [MatButtonModule, MatIconModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "@if (visible() && errors() && errors().length > 0) {\r\n <div\r\n class=\"mscoa-error-display\"\r\n [class.mscoa-error-display--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display--success]=\"type() === 'success'\"\r\n [class.mscoa-error-display--compact]=\"compact()\"\r\n role=\"alert\"\r\n [attr.aria-live]=\"type() === 'error' ? 'assertive' : 'polite'\"\r\n [attr.aria-label]=\"ariaLabel()\">\r\n\r\n @if (showIcon()) {\r\n <mat-icon\r\n class=\"mscoa-error-display__icon\"\r\n [class.mscoa-error-display__icon--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display__icon--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display__icon--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display__icon--success]=\"type() === 'success'\"\r\n [attr.aria-hidden]=\"true\">\r\n {{ iconName() }}\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"mscoa-error-display__content\">\r\n @if (errors().length === 1) {\r\n <p class=\"mscoa-error-display__message\">{{ errors()[0] }}</p>\r\n } @else {\r\n <ul class=\"mscoa-error-display__list\">\r\n @for (error of errors(); track trackByIndex($index)) {\r\n <li class=\"mscoa-error-display__item\">{{ error }}</li>\r\n }\r\n </ul>\r\n }\r\n <sub class=\"mscoa-error-display__hint\">\r\n Hover over the account for the error message or scroll to bottom of input to see all errors.\r\n </sub>\r\n </div>\r\n\r\n @if (showDismiss()) {\r\n <button\r\n class=\"mscoa-error-display__dismiss\"\r\n (click)=\"dismiss()\"\r\n [attr.aria-label]=\"'Dismiss'\"\r\n mat-icon-button\r\n type=\"button\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n", styles: [".mscoa-error-display{display:flex;align-items:flex-start;gap:var(--mscoa-chart-spacing-sm, 8px);padding:var(--mscoa-chart-spacing-md, 16px);border-radius:var(--mscoa-chart-border-radius, 4px);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;margin-top:var(--mscoa-chart-spacing-sm, 8px);transition:background-color var(--lib-forms-duration-hover) var(--lib-forms-easing),color var(--lib-forms-duration-hover) var(--lib-forms-easing),border-color var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-error-display--compact{padding:var(--mscoa-chart-spacing-sm, 8px);font-size:13px}.mscoa-error-display--error{background-color:var(--sem-error-surface);color:var(--lib-forms-on-error-container);border-left:4px solid var(--sem-error)}.mscoa-error-display--warning{background-color:var(--sem-warning-surface);color:var(--lib-forms-on-surface);border-left:4px solid var(--sem-warning)}.mscoa-error-display--info{background-color:var(--sem-info-surface);color:var(--sem-info);border-left:4px solid var(--sem-info)}.mscoa-error-display--success{background-color:var(--sem-success-surface);color:var(--sem-success);border-left:4px solid var(--sem-success)}.mscoa-error-display__icon{flex-shrink:0;width:20px;height:20px;font-size:20px;margin-top:2px}.mscoa-error-display__icon--error{color:var(--sem-error)}.mscoa-error-display__icon--warning{color:var(--sem-warning)}.mscoa-error-display__icon--info{color:var(--sem-info)}.mscoa-error-display__icon--success{color:var(--sem-success)}.mscoa-error-display__content{flex:1;min-width:0}.mscoa-error-display__message{margin:0;font-weight:400}.mscoa-error-display__hint{display:block;margin:var(--mscoa-chart-spacing-xs, 4px) 0 0;font-size:12px;opacity:.85;font-weight:400}.mscoa-error-display__list{margin:0;padding-left:var(--mscoa-chart-spacing-md, 16px);list-style-type:disc}.mscoa-error-display__item{margin-bottom:var(--mscoa-chart-spacing-xs, 4px)}.mscoa-error-display__item:last-child{margin-bottom:0}.mscoa-error-display__dismiss{flex-shrink:0;width:24px;height:24px;opacity:.7;transition:opacity var(--lib-forms-duration-hover) var(--lib-forms-easing)}.mscoa-error-display__dismiss:hover{opacity:1}.mscoa-error-display__dismiss mat-icon{font-size:18px;width:18px;height:18px}@media(prefers-contrast:high){.mscoa-error-display{border-width:2px;font-weight:500}}@media(prefers-reduced-motion:reduce){.mscoa-error-display{transition:none}}\n"] }]
123
+ }], ctorParameters: () => [], propDecorators: { errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], showDismiss: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDismiss", required: false }] }] } });
124
+
125
+ export { MscoaErrorDisplayComponent };
126
+ //# sourceMappingURL=ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-error-display/mscoa-error-display.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/components/mscoa-error-display/mscoa-error-display.component.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n ViewEncapsulation,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject, timer } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nexport type ErrorDisplayType = 'error' | 'warning' | 'info' | 'success';\r\n\r\nexport interface ErrorDisplayContext {\r\n segment?: string;\r\n accountingBasis?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\n/**\r\n * Displays a list of error/warning/info/success messages inside the MSCOA chart UI.\r\n * Optionally auto-hides after a duration and can be dismissed.\r\n */\r\n@Component({\r\n selector: 'lib-mscoa-error-display',\r\n imports: [MatButtonModule, MatIconModule],\r\n templateUrl: './mscoa-error-display.component.html',\r\n styleUrls: ['./mscoa-error-display.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.Emulated,\r\n})\r\nexport class MscoaErrorDisplayComponent {\r\n /** Error messages to display. */\r\n readonly errors = input<string[]>([]);\r\n /** Visual variant. */\r\n readonly type = input<ErrorDisplayType>('error');\r\n /** Optional context (segment, accounting basis, etc.) for screen readers / parent inspection. */\r\n readonly context = input<ErrorDisplayContext | undefined>(undefined);\r\n /** Whether to render the leading icon. */\r\n readonly showIcon = input<boolean>(true);\r\n /** Compact visual density. */\r\n readonly compact = input<boolean>(false);\r\n /** When set, display auto-hides after this many ms. Keeps error styling. */\r\n readonly duration = input<number | undefined>(undefined);\r\n /** Whether to show the dismiss button. */\r\n readonly showDismiss = input<boolean>(false);\r\n\r\n protected readonly visible = signal<boolean>(true);\r\n\r\n protected readonly iconName = computed<string>(() => {\r\n switch (this.type()) {\r\n case 'error':\r\n return 'error';\r\n case 'warning':\r\n return 'warning';\r\n case 'info':\r\n return 'info';\r\n case 'success':\r\n return 'check_circle';\r\n default:\r\n return 'error';\r\n }\r\n });\r\n\r\n protected readonly ariaLabel = computed<string>(() => {\r\n const t = this.type();\r\n const typeText =\r\n t === 'error'\r\n ? 'errors'\r\n : t === 'warning'\r\n ? 'warnings'\r\n : t === 'success'\r\n ? 'success messages'\r\n : 'messages';\r\n return `${this.errors().length} ${typeText}`;\r\n });\r\n\r\n readonly #destroyRef = inject(DestroyRef);\r\n readonly #hideTimer$ = new Subject<void>();\r\n #previousErrorsLength = 0;\r\n #initialized = false;\r\n\r\n constructor() {\r\n // Replaces ngOnInit + ngOnChanges. Reacts to errors[] / duration changes.\r\n effect(() => {\r\n const length = this.errors()?.length ?? 0;\r\n const duration = this.duration();\r\n const wasInitialized = this.#initialized;\r\n const previousLength = this.#previousErrorsLength;\r\n this.#previousErrorsLength = length;\r\n this.#initialized = true;\r\n\r\n if (!wasInitialized) {\r\n // Initial pass — mirror old ngOnInit behaviour.\r\n if (duration != null && length > 0) {\r\n this.#show();\r\n }\r\n return;\r\n }\r\n\r\n if (duration != null) {\r\n if (length > 0 && previousLength === 0) {\r\n this.#show();\r\n } else if (length === 0 && previousLength > 0) {\r\n this.hide();\r\n }\r\n } else {\r\n this.visible.set(true);\r\n }\r\n });\r\n\r\n this.#destroyRef.onDestroy(() => {\r\n this.#hideTimer$.next();\r\n this.#hideTimer$.complete();\r\n });\r\n }\r\n\r\n protected trackByIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n #show(): void {\r\n this.#hideTimer$.next();\r\n this.visible.set(true);\r\n const duration = this.duration();\r\n if (duration != null && duration > 0) {\r\n timer(duration)\r\n .pipe(takeUntil(this.#hideTimer$), takeUntilDestroyed(this.#destroyRef))\r\n .subscribe(() => this.hide());\r\n }\r\n }\r\n\r\n hide(): void {\r\n this.#hideTimer$.next();\r\n this.visible.set(false);\r\n }\r\n\r\n dismiss(): void {\r\n this.hide();\r\n }\r\n}\r\n","@if (visible() && errors() && errors().length > 0) {\r\n <div\r\n class=\"mscoa-error-display\"\r\n [class.mscoa-error-display--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display--success]=\"type() === 'success'\"\r\n [class.mscoa-error-display--compact]=\"compact()\"\r\n role=\"alert\"\r\n [attr.aria-live]=\"type() === 'error' ? 'assertive' : 'polite'\"\r\n [attr.aria-label]=\"ariaLabel()\">\r\n\r\n @if (showIcon()) {\r\n <mat-icon\r\n class=\"mscoa-error-display__icon\"\r\n [class.mscoa-error-display__icon--error]=\"type() === 'error'\"\r\n [class.mscoa-error-display__icon--warning]=\"type() === 'warning'\"\r\n [class.mscoa-error-display__icon--info]=\"type() === 'info'\"\r\n [class.mscoa-error-display__icon--success]=\"type() === 'success'\"\r\n [attr.aria-hidden]=\"true\">\r\n {{ iconName() }}\r\n </mat-icon>\r\n }\r\n\r\n <div class=\"mscoa-error-display__content\">\r\n @if (errors().length === 1) {\r\n <p class=\"mscoa-error-display__message\">{{ errors()[0] }}</p>\r\n } @else {\r\n <ul class=\"mscoa-error-display__list\">\r\n @for (error of errors(); track trackByIndex($index)) {\r\n <li class=\"mscoa-error-display__item\">{{ error }}</li>\r\n }\r\n </ul>\r\n }\r\n <sub class=\"mscoa-error-display__hint\">\r\n Hover over the account for the error message or scroll to bottom of input to see all errors.\r\n </sub>\r\n </div>\r\n\r\n @if (showDismiss()) {\r\n <button\r\n class=\"mscoa-error-display__dismiss\"\r\n (click)=\"dismiss()\"\r\n [attr.aria-label]=\"'Dismiss'\"\r\n mat-icon-button\r\n type=\"button\">\r\n <mat-icon aria-hidden=\"true\">close</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n"],"names":["i2"],"mappings":"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"}