@forgeroute/ui 0.3.1 → 0.3.2

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.
@@ -2728,6 +2728,7 @@ var ButtonComponent = class ButtonComponent {
2728
2728
  this.ariaLabel = input(void 0, ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
2729
2729
  this.ariaExpanded = input(void 0, ...ngDevMode ? [{ debugName: "ariaExpanded" }] : /* istanbul ignore next */ []);
2730
2730
  this.ariaPressed = input(void 0, ...ngDevMode ? [{ debugName: "ariaPressed" }] : /* istanbul ignore next */ []);
2731
+ this.ariaDescribedBy = input(void 0, ...ngDevMode ? [{ debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []);
2731
2732
  }
2732
2733
  static {
2733
2734
  this.ɵfac = i0.ɵɵngDeclareFactory({
@@ -2824,6 +2825,13 @@ var ButtonComponent = class ButtonComponent {
2824
2825
  isRequired: false,
2825
2826
  transformFunction: null
2826
2827
  },
2828
+ ariaDescribedBy: {
2829
+ classPropertyName: "ariaDescribedBy",
2830
+ publicName: "ariaDescribedBy",
2831
+ isSignal: true,
2832
+ isRequired: false,
2833
+ transformFunction: null
2834
+ },
2827
2835
  _footerLeft: {
2828
2836
  classPropertyName: "_footerLeft",
2829
2837
  publicName: "modal-footer-left",
@@ -2850,6 +2858,7 @@ var ButtonComponent = class ButtonComponent {
2850
2858
  [attr.aria-label]="ariaLabel()"
2851
2859
  [attr.aria-expanded]="ariaExpanded()"
2852
2860
  [attr.aria-pressed]="ariaPressed()"
2861
+ [attr.aria-describedby]="ariaDescribedBy() || null"
2853
2862
  [style.background]="color() || null"
2854
2863
  [style.border-color]="color() || null"
2855
2864
  >
@@ -2886,6 +2895,7 @@ i0.ɵɵngDeclareClassMetadata({
2886
2895
  [attr.aria-label]="ariaLabel()"
2887
2896
  [attr.aria-expanded]="ariaExpanded()"
2888
2897
  [attr.aria-pressed]="ariaPressed()"
2898
+ [attr.aria-describedby]="ariaDescribedBy() || null"
2889
2899
  [style.background]="color() || null"
2890
2900
  [style.border-color]="color() || null"
2891
2901
  >
@@ -2987,6 +2997,14 @@ i0.ɵɵngDeclareClassMetadata({
2987
2997
  required: false
2988
2998
  }]
2989
2999
  }],
3000
+ ariaDescribedBy: [{
3001
+ type: i0.Input,
3002
+ args: [{
3003
+ isSignal: true,
3004
+ alias: "ariaDescribedBy",
3005
+ required: false
3006
+ }]
3007
+ }],
2990
3008
  _footerLeft: [{
2991
3009
  type: Input,
2992
3010
  args: ["modal-footer-left"]
@@ -3958,6 +3976,7 @@ var TableToolbarComponent = class TableToolbarComponent {
3958
3976
  "ariaLabel",
3959
3977
  "ariaExpanded",
3960
3978
  "ariaPressed",
3979
+ "ariaDescribedBy",
3961
3980
  "modal-footer-left",
3962
3981
  "modal-footer-right"
3963
3982
  ]
@@ -4696,42 +4715,21 @@ i0.ɵɵngDeclareClassMetadata({
4696
4715
  }]
4697
4716
  }
4698
4717
  });
4699
- const PROGRESS_STEP_THRESHOLDS = [
4700
- {
4701
- at: 25,
4702
- variant: "amber"
4703
- },
4704
- {
4705
- at: 50,
4706
- variant: "blue"
4707
- },
4708
- {
4709
- at: 75,
4710
- variant: "lime"
4711
- },
4712
- {
4713
- at: 100,
4714
- variant: "green"
4715
- }
4716
- ];
4717
4718
  var ProgressBarComponent = class ProgressBarComponent {
4718
4719
  constructor() {
4719
4720
  this.value = input(0, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
4720
4721
  this.max = input(100, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
4721
4722
  this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
4722
- this.variant = input("blue", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
4723
- this.thresholds = input(null, ...ngDevMode ? [{ debugName: "thresholds" }] : /* istanbul ignore next */ []);
4724
- this.autoColor = input(false, ...ngDevMode ? [{ debugName: "autoColor" }] : /* istanbul ignore next */ []);
4723
+ this.variant = input(null, ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
4725
4724
  this.tooltip = input("", ...ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []);
4726
4725
  this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
4727
4726
  this.clampedValue = computed(() => Math.min(Math.max(this.value(), 0), this.max()), ...ngDevMode ? [{ debugName: "clampedValue" }] : /* istanbul ignore next */ []);
4728
4727
  this.percent = computed(() => this.max() > 0 ? Math.round(this.clampedValue() / this.max() * 100) : 0, ...ngDevMode ? [{ debugName: "percent" }] : /* istanbul ignore next */ []);
4729
4728
  this.effectiveVariant = computed(() => {
4730
- const list = this.thresholds() ?? (this.autoColor() ? PROGRESS_STEP_THRESHOLDS : null);
4731
- if (!list?.length || this.max() <= 0) return this.variant();
4732
- const exact = this.clampedValue() / this.max() * 100;
4733
- const hit = list.filter((t) => t.at <= exact).sort((a, b) => b.at - a.at)[0];
4734
- return hit ? hit.variant : this.variant();
4729
+ const fixed = this.variant();
4730
+ if (fixed) return fixed;
4731
+ const exact = this.max() > 0 ? this.clampedValue() / this.max() * 100 : 0;
4732
+ return exact <= 25 ? "red" : exact <= 50 ? "amber" : exact <= 75 ? "blue" : "green";
4735
4733
  }, ...ngDevMode ? [{ debugName: "effectiveVariant" }] : /* istanbul ignore next */ []);
4736
4734
  }
4737
4735
  static {
@@ -4780,20 +4778,6 @@ var ProgressBarComponent = class ProgressBarComponent {
4780
4778
  isRequired: false,
4781
4779
  transformFunction: null
4782
4780
  },
4783
- thresholds: {
4784
- classPropertyName: "thresholds",
4785
- publicName: "thresholds",
4786
- isSignal: true,
4787
- isRequired: false,
4788
- transformFunction: null
4789
- },
4790
- autoColor: {
4791
- classPropertyName: "autoColor",
4792
- publicName: "autoColor",
4793
- isSignal: true,
4794
- isRequired: false,
4795
- transformFunction: null
4796
- },
4797
4781
  tooltip: {
4798
4782
  classPropertyName: "tooltip",
4799
4783
  publicName: "tooltip",
@@ -4824,7 +4808,7 @@ var ProgressBarComponent = class ProgressBarComponent {
4824
4808
  </div>
4825
4809
  `,
4826
4810
  isInline: true,
4827
- styles: [":host{display:block}.pb{display:flex;align-items:center;gap:8px;min-width:100px}.pb-track{flex:1;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.pb-fill{height:100%;border-radius:3px;transition:width .3s}.pb-blue{background:#3b82f6}.pb-green{background:#16a34a}.pb-amber{background:#f59e0b}.pb-red{background:#ef4444}.pb-slate{background:#94a3b8}.pb-lime{background:#84cc16}.pb-label{font-size:.75rem;font-weight:500;color:#64748b;white-space:nowrap}\n"],
4811
+ styles: [":host{display:block}.pb{display:flex;align-items:center;gap:8px;min-width:100px}.pb-track{flex:1;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.pb-fill{height:100%;border-radius:3px;transition:width .3s}.pb-blue{background:#3b82f6}.pb-green{background:#16a34a}.pb-amber{background:#f59e0b}.pb-red{background:#ef4444}.pb-slate{background:#94a3b8}.pb-label{font-size:.75rem;font-weight:500;color:#64748b;white-space:nowrap}\n"],
4828
4812
  dependencies: [{
4829
4813
  kind: "directive",
4830
4814
  type: TooltipDirective,
@@ -4860,7 +4844,7 @@ i0.ɵɵngDeclareClassMetadata({
4860
4844
  @if (label()) { <span class="pb-label">{{ label() }}</span> }
4861
4845
  </div>
4862
4846
  `,
4863
- styles: [":host{display:block}.pb{display:flex;align-items:center;gap:8px;min-width:100px}.pb-track{flex:1;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.pb-fill{height:100%;border-radius:3px;transition:width .3s}.pb-blue{background:#3b82f6}.pb-green{background:#16a34a}.pb-amber{background:#f59e0b}.pb-red{background:#ef4444}.pb-slate{background:#94a3b8}.pb-lime{background:#84cc16}.pb-label{font-size:.75rem;font-weight:500;color:#64748b;white-space:nowrap}\n"]
4847
+ styles: [":host{display:block}.pb{display:flex;align-items:center;gap:8px;min-width:100px}.pb-track{flex:1;height:6px;background:#e2e8f0;border-radius:3px;overflow:hidden}.pb-fill{height:100%;border-radius:3px;transition:width .3s}.pb-blue{background:#3b82f6}.pb-green{background:#16a34a}.pb-amber{background:#f59e0b}.pb-red{background:#ef4444}.pb-slate{background:#94a3b8}.pb-label{font-size:.75rem;font-weight:500;color:#64748b;white-space:nowrap}\n"]
4864
4848
  }]
4865
4849
  }],
4866
4850
  propDecorators: {
@@ -4896,22 +4880,6 @@ i0.ɵɵngDeclareClassMetadata({
4896
4880
  required: false
4897
4881
  }]
4898
4882
  }],
4899
- thresholds: [{
4900
- type: i0.Input,
4901
- args: [{
4902
- isSignal: true,
4903
- alias: "thresholds",
4904
- required: false
4905
- }]
4906
- }],
4907
- autoColor: [{
4908
- type: i0.Input,
4909
- args: [{
4910
- isSignal: true,
4911
- alias: "autoColor",
4912
- required: false
4913
- }]
4914
- }],
4915
4883
  tooltip: [{
4916
4884
  type: i0.Input,
4917
4885
  args: [{
@@ -6202,6 +6170,7 @@ var ImportExportComponent = class ImportExportComponent {
6202
6170
  "ariaLabel",
6203
6171
  "ariaExpanded",
6204
6172
  "ariaPressed",
6173
+ "ariaDescribedBy",
6205
6174
  "modal-footer-left",
6206
6175
  "modal-footer-right"
6207
6176
  ]
@@ -6688,6 +6657,7 @@ var ConfirmOutletComponent = class ConfirmOutletComponent {
6688
6657
  "ariaLabel",
6689
6658
  "ariaExpanded",
6690
6659
  "ariaPressed",
6660
+ "ariaDescribedBy",
6691
6661
  "modal-footer-left",
6692
6662
  "modal-footer-right"
6693
6663
  ]
@@ -7032,6 +7002,7 @@ var ErrorStateComponent = class ErrorStateComponent {
7032
7002
  "ariaLabel",
7033
7003
  "ariaExpanded",
7034
7004
  "ariaPressed",
7005
+ "ariaDescribedBy",
7035
7006
  "modal-footer-left",
7036
7007
  "modal-footer-right"
7037
7008
  ]
@@ -7120,6 +7091,9 @@ var DataTableComponent = class DataTableComponent {
7120
7091
  _countLabel(count) {
7121
7092
  return count === 1 ? this.itemLabel() : this.itemLabelPlural() || pluralize(this.itemLabel());
7122
7093
  }
7094
+ _deleteTitle() {
7095
+ return `Delete ${(this.itemLabelPlural() || pluralize(this.itemLabel())).replace(/(^|\s)(\S)/g, (_m, sp, ch) => sp + ch.toUpperCase())}`;
7096
+ }
7123
7097
  _presentKeys(counts) {
7124
7098
  return Object.keys(counts).filter((k) => k !== "" && k !== "all" && (counts[k] ?? 0) > 0);
7125
7099
  }
@@ -7245,7 +7219,7 @@ var DataTableComponent = class DataTableComponent {
7245
7219
  const blockedCount = split.blocked.length;
7246
7220
  const skippedNote = blockedCount === 0 ? "" : blockedCount === 1 ? " 1 selected row can't be deleted and will be skipped." : ` ${blockedCount} selected rows can't be deleted and will be skipped.`;
7247
7221
  const deleteDefault = {
7248
- title: "Delete Selected",
7222
+ title: this._deleteTitle(),
7249
7223
  message: `Delete ${count} ${this._countLabel(count)}? This cannot be undone.${skippedNote}`,
7250
7224
  confirmLabel: "Delete",
7251
7225
  variant: "danger"
@@ -8730,7 +8704,7 @@ var DataTableComponent = class DataTableComponent {
8730
8704
  @let pCfg = col.progressFn ? col.progressFn(item) : null;
8731
8705
  @if (pCfg) {
8732
8706
  <ui-progress-bar [value]="pCfg.value" [max]="pCfg.max" [label]="pCfg.label ?? ''"
8733
- [variant]="pCfg.variant ?? 'blue'" [thresholds]="pCfg.thresholds ?? null" [autoColor]="pCfg.autoColor ?? false" [tooltip]="pCfg.tooltip ?? ''" />
8707
+ [variant]="pCfg.variant ?? null" [tooltip]="pCfg.tooltip ?? ''" />
8734
8708
  } @else { <span class="dt-none">—</span> }
8735
8709
  }
8736
8710
 
@@ -9186,8 +9160,6 @@ var DataTableComponent = class DataTableComponent {
9186
9160
  "max",
9187
9161
  "label",
9188
9162
  "variant",
9189
- "thresholds",
9190
- "autoColor",
9191
9163
  "tooltip",
9192
9164
  "ariaLabel"
9193
9165
  ]
@@ -9208,6 +9180,7 @@ var DataTableComponent = class DataTableComponent {
9208
9180
  "ariaLabel",
9209
9181
  "ariaExpanded",
9210
9182
  "ariaPressed",
9183
+ "ariaDescribedBy",
9211
9184
  "modal-footer-left",
9212
9185
  "modal-footer-right"
9213
9186
  ]
@@ -9640,7 +9613,7 @@ i0.ɵɵngDeclareClassMetadata({
9640
9613
  @let pCfg = col.progressFn ? col.progressFn(item) : null;
9641
9614
  @if (pCfg) {
9642
9615
  <ui-progress-bar [value]="pCfg.value" [max]="pCfg.max" [label]="pCfg.label ?? ''"
9643
- [variant]="pCfg.variant ?? 'blue'" [thresholds]="pCfg.thresholds ?? null" [autoColor]="pCfg.autoColor ?? false" [tooltip]="pCfg.tooltip ?? ''" />
9616
+ [variant]="pCfg.variant ?? null" [tooltip]="pCfg.tooltip ?? ''" />
9644
9617
  } @else { <span class="dt-none">—</span> }
9645
9618
  }
9646
9619
 
@@ -16436,6 +16409,7 @@ var SendEmailComponent = class SendEmailComponent {
16436
16409
  "ariaLabel",
16437
16410
  "ariaExpanded",
16438
16411
  "ariaPressed",
16412
+ "ariaDescribedBy",
16439
16413
  "modal-footer-left",
16440
16414
  "modal-footer-right"
16441
16415
  ]
@@ -17655,6 +17629,7 @@ var SendTextComponent = class SendTextComponent {
17655
17629
  "ariaLabel",
17656
17630
  "ariaExpanded",
17657
17631
  "ariaPressed",
17632
+ "ariaDescribedBy",
17658
17633
  "modal-footer-left",
17659
17634
  "modal-footer-right"
17660
17635
  ]
@@ -22687,6 +22662,7 @@ var QrCodeComponent = class QrCodeComponent {
22687
22662
  "ariaLabel",
22688
22663
  "ariaExpanded",
22689
22664
  "ariaPressed",
22665
+ "ariaDescribedBy",
22690
22666
  "modal-footer-left",
22691
22667
  "modal-footer-right"
22692
22668
  ]
@@ -22954,6 +22930,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
22954
22930
  "ariaLabel",
22955
22931
  "ariaExpanded",
22956
22932
  "ariaPressed",
22933
+ "ariaDescribedBy",
22957
22934
  "modal-footer-left",
22958
22935
  "modal-footer-right"
22959
22936
  ]
@@ -24854,6 +24831,7 @@ var DateRangePickerComponent = class DateRangePickerComponent {
24854
24831
  "ariaLabel",
24855
24832
  "ariaExpanded",
24856
24833
  "ariaPressed",
24834
+ "ariaDescribedBy",
24857
24835
  "modal-footer-left",
24858
24836
  "modal-footer-right"
24859
24837
  ]
@@ -27018,6 +26996,462 @@ i0.ɵɵngDeclareClassMetadata({
27018
26996
  }]
27019
26997
  }
27020
26998
  });
26999
+ var RadioMatrixComponent = class RadioMatrixComponent {
27000
+ get _name() {
27001
+ return this.name() || this._generatedName;
27002
+ }
27003
+ constructor() {
27004
+ this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
27005
+ this.rowHeader = input("", ...ngDevMode ? [{ debugName: "rowHeader" }] : /* istanbul ignore next */ []);
27006
+ this.rows = input([], ...ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []);
27007
+ this.columns = input([], ...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
27008
+ this.required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
27009
+ this.hint = input("", ...ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []);
27010
+ this.error = input("", ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
27011
+ this.showErrors = input(false, ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
27012
+ this.name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
27013
+ this._disabledInput = input(false, {
27014
+ ...ngDevMode ? { debugName: "_disabledInput" } : /* istanbul ignore next */ {},
27015
+ alias: "disabled"
27016
+ });
27017
+ this._cvaDisabled = signal(false, ...ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []);
27018
+ this.disabled = computed(() => this._disabledInput() || this._cvaDisabled(), ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
27019
+ this._generatedName = `rm-${Math.random().toString(36).slice(2, 8)}`;
27020
+ this._descId = `${this._generatedName}-desc`;
27021
+ this._value = signal({}, ...ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []);
27022
+ this._reveal = createFieldReveal(this.showErrors);
27023
+ this._issue = computed(() => this._check(this._value()), ...ngDevMode ? [{ debugName: "_issue" }] : /* istanbul ignore next */ []);
27024
+ this.invalid = computed(() => !!this.error() || !!this._issue(), ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
27025
+ this.errorMessage = computed(() => this._issue()?.message ?? "", ...ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []);
27026
+ this.invalidChange = output();
27027
+ this._activeError = computed(() => this.error() || (this._reveal.revealed() ? this.errorMessage() : ""), ...ngDevMode ? [{ debugName: "_activeError" }] : /* istanbul ignore next */ []);
27028
+ this._onValidatorChange = () => {};
27029
+ this._onChange = (_) => {};
27030
+ this._onTouched = () => {};
27031
+ effect(() => {
27032
+ this.invalidChange.emit(this.invalid());
27033
+ });
27034
+ }
27035
+ ngOnChanges() {
27036
+ this._onValidatorChange();
27037
+ }
27038
+ validate(control) {
27039
+ return issueToErrors(this._check(this._toRecord(control.value)));
27040
+ }
27041
+ registerOnValidatorChange(fn) {
27042
+ this._onValidatorChange = fn;
27043
+ }
27044
+ writeValue(val) {
27045
+ this._value.set(this._toRecord(val));
27046
+ }
27047
+ registerOnChange(fn) {
27048
+ this._onChange = fn;
27049
+ }
27050
+ registerOnTouched(fn) {
27051
+ this._onTouched = fn;
27052
+ }
27053
+ setDisabledState(d) {
27054
+ this._cvaDisabled.set(d);
27055
+ }
27056
+ onSelect(row, column) {
27057
+ const next = {
27058
+ ...this._value(),
27059
+ [row]: column
27060
+ };
27061
+ this._value.set(next);
27062
+ this._onChange(next);
27063
+ }
27064
+ _rowInvalid(row) {
27065
+ if (this.disabled() || row.disabled || !this._reveal.revealed()) return false;
27066
+ const v = this._value()[row.value] ?? "";
27067
+ return v ? !this.columns().some((c) => c.value === v) : this.required();
27068
+ }
27069
+ onFocusOut(event) {
27070
+ const next = event.relatedTarget;
27071
+ if (next && event.currentTarget.contains(next)) return;
27072
+ this._onTouched();
27073
+ this._reveal.touched.set(true);
27074
+ }
27075
+ _toRecord(val) {
27076
+ return val && typeof val === "object" ? { ...val } : {};
27077
+ }
27078
+ _check(value) {
27079
+ if (this.disabled()) return null;
27080
+ const cols = this.columns();
27081
+ const rows = this.rows().filter((r) => !r.disabled);
27082
+ if (cols.length > 0 && rows.some((r) => value[r.value] && !cols.some((c) => c.value === value[r.value]))) return {
27083
+ key: "option",
27084
+ message: "Select a valid option."
27085
+ };
27086
+ if (this.required() && rows.some((r) => !value[r.value])) {
27087
+ const label = this.label().trim();
27088
+ return {
27089
+ key: "required",
27090
+ message: label ? `${label}: choose an option in every row.` : "Choose an option in every row."
27091
+ };
27092
+ }
27093
+ return null;
27094
+ }
27095
+ static {
27096
+ this.ɵfac = i0.ɵɵngDeclareFactory({
27097
+ minVersion: "12.0.0",
27098
+ version: "22.2.2",
27099
+ ngImport: i0,
27100
+ type: RadioMatrixComponent,
27101
+ deps: [],
27102
+ target: i0.ɵɵFactoryTarget.Component
27103
+ });
27104
+ }
27105
+ static {
27106
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
27107
+ minVersion: "17.0.0",
27108
+ version: "22.2.2",
27109
+ type: RadioMatrixComponent,
27110
+ isStandalone: true,
27111
+ selector: "ui-radio-matrix",
27112
+ inputs: {
27113
+ label: {
27114
+ classPropertyName: "label",
27115
+ publicName: "label",
27116
+ isSignal: true,
27117
+ isRequired: false,
27118
+ transformFunction: null
27119
+ },
27120
+ rowHeader: {
27121
+ classPropertyName: "rowHeader",
27122
+ publicName: "rowHeader",
27123
+ isSignal: true,
27124
+ isRequired: false,
27125
+ transformFunction: null
27126
+ },
27127
+ rows: {
27128
+ classPropertyName: "rows",
27129
+ publicName: "rows",
27130
+ isSignal: true,
27131
+ isRequired: false,
27132
+ transformFunction: null
27133
+ },
27134
+ columns: {
27135
+ classPropertyName: "columns",
27136
+ publicName: "columns",
27137
+ isSignal: true,
27138
+ isRequired: false,
27139
+ transformFunction: null
27140
+ },
27141
+ required: {
27142
+ classPropertyName: "required",
27143
+ publicName: "required",
27144
+ isSignal: true,
27145
+ isRequired: false,
27146
+ transformFunction: null
27147
+ },
27148
+ hint: {
27149
+ classPropertyName: "hint",
27150
+ publicName: "hint",
27151
+ isSignal: true,
27152
+ isRequired: false,
27153
+ transformFunction: null
27154
+ },
27155
+ error: {
27156
+ classPropertyName: "error",
27157
+ publicName: "error",
27158
+ isSignal: true,
27159
+ isRequired: false,
27160
+ transformFunction: null
27161
+ },
27162
+ showErrors: {
27163
+ classPropertyName: "showErrors",
27164
+ publicName: "showErrors",
27165
+ isSignal: true,
27166
+ isRequired: false,
27167
+ transformFunction: null
27168
+ },
27169
+ name: {
27170
+ classPropertyName: "name",
27171
+ publicName: "name",
27172
+ isSignal: true,
27173
+ isRequired: false,
27174
+ transformFunction: null
27175
+ },
27176
+ _disabledInput: {
27177
+ classPropertyName: "_disabledInput",
27178
+ publicName: "disabled",
27179
+ isSignal: true,
27180
+ isRequired: false,
27181
+ transformFunction: null
27182
+ }
27183
+ },
27184
+ outputs: { invalidChange: "invalidChange" },
27185
+ providers: [
27186
+ {
27187
+ provide: NG_VALUE_ACCESSOR,
27188
+ useExisting: forwardRef(() => RadioMatrixComponent),
27189
+ multi: true
27190
+ },
27191
+ {
27192
+ provide: NG_VALIDATORS,
27193
+ useExisting: forwardRef(() => RadioMatrixComponent),
27194
+ multi: true
27195
+ },
27196
+ {
27197
+ provide: UiFieldValidity,
27198
+ useExisting: forwardRef(() => RadioMatrixComponent)
27199
+ }
27200
+ ],
27201
+ usesOnChanges: true,
27202
+ ngImport: i0,
27203
+ template: `
27204
+ <fieldset
27205
+ class="rm-field"
27206
+ [class.rm-error]="_activeError()"
27207
+ [class.rm-disabled]="disabled()"
27208
+ [disabled]="disabled()"
27209
+ [attr.aria-required]="required() ? 'true' : null"
27210
+ [attr.aria-invalid]="_activeError() ? 'true' : null"
27211
+ [attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
27212
+ (focusout)="onFocusOut($event)">
27213
+ @if (label()) {
27214
+ <legend class="rm-label">
27215
+ {{ label() }}
27216
+ @if (required()) { <span class="rm-required" aria-hidden="true">*</span> }
27217
+ </legend>
27218
+ }
27219
+ <div class="rm-scroll">
27220
+ <table class="rm-table">
27221
+ <thead>
27222
+ <tr>
27223
+ <th scope="col" class="rm-corner">{{ rowHeader() }}</th>
27224
+ @for (col of columns(); track col.value) {
27225
+ <th scope="col" class="rm-col">{{ col.label }}</th>
27226
+ }
27227
+ </tr>
27228
+ </thead>
27229
+ <tbody>
27230
+ @for (row of rows(); track row.value) {
27231
+ <tr class="rm-row" [class.rm-row-missing]="_rowInvalid(row)">
27232
+ <th scope="row" class="rm-row-label">{{ row.label }}</th>
27233
+ @for (col of columns(); track col.value) {
27234
+ <td class="rm-cell">
27235
+ <ui-radio
27236
+ [name]="_name + '-' + row.value"
27237
+ [value]="col.value"
27238
+ [ariaLabel]="row.label + ': ' + col.label"
27239
+ [checked]="_value()[row.value] === col.value"
27240
+ [disabled]="disabled() || !!row.disabled || !!col.disabled"
27241
+ [invalid]="_rowInvalid(row)"
27242
+ [describedBy]="(_activeError() || hint()) ? _descId : ''"
27243
+ (selected)="onSelect(row.value, $event)" />
27244
+ </td>
27245
+ }
27246
+ </tr>
27247
+ }
27248
+ </tbody>
27249
+ </table>
27250
+ </div>
27251
+ @if (_activeError()) {
27252
+ <p class="rm-desc rm-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
27253
+ } @else if (hint()) {
27254
+ <p class="rm-desc" [id]="_descId">{{ hint() }}</p>
27255
+ }
27256
+ </fieldset>
27257
+ `,
27258
+ isInline: true,
27259
+ styles: [":host{display:block}.rm-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rm-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rm-required{color:#ef4444;margin-left:2px}.rm-scroll{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px}.rm-table{width:100%;border-collapse:collapse;font-size:.875rem}.rm-table th,.rm-table td{padding:8px 12px;border-bottom:1px solid #f1f5f9;text-align:left}.rm-table tbody tr:last-child th,.rm-table tbody tr:last-child td{border-bottom:0}.rm-table thead th{position:sticky;top:0;background:#f8fafc;font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.rm-col,.rm-cell{text-align:center!important;width:1%;white-space:nowrap}.rm-cell ui-radio{display:inline-block}.rm-row-label{font-weight:500;color:#1e293b}.rm-row:hover{background:#f8fafc}.rm-row-missing .rm-row-label{color:#b91c1c}.rm-disabled .rm-scroll{opacity:.6}.rm-error .rm-scroll{border-color:#ef4444}.rm-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rm-desc-error{color:#ef4444}@media(max-width:480px){.rm-table th,.rm-table td{padding:6px 8px}.rm-table thead th{font-size:.6875rem}}\n"],
27260
+ dependencies: [{
27261
+ kind: "component",
27262
+ type: RadioComponent,
27263
+ selector: "ui-radio",
27264
+ inputs: [
27265
+ "label",
27266
+ "description",
27267
+ "ariaLabel",
27268
+ "value",
27269
+ "name",
27270
+ "checked",
27271
+ "invalid",
27272
+ "describedBy",
27273
+ "disabled"
27274
+ ],
27275
+ outputs: ["selected"]
27276
+ }],
27277
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
27278
+ });
27279
+ }
27280
+ };
27281
+ i0.ɵɵngDeclareClassMetadata({
27282
+ minVersion: "12.0.0",
27283
+ version: "22.2.2",
27284
+ ngImport: i0,
27285
+ type: RadioMatrixComponent,
27286
+ decorators: [{
27287
+ type: Component,
27288
+ args: [{
27289
+ selector: "ui-radio-matrix",
27290
+ standalone: true,
27291
+ imports: [RadioComponent],
27292
+ changeDetection: ChangeDetectionStrategy.OnPush,
27293
+ providers: [
27294
+ {
27295
+ provide: NG_VALUE_ACCESSOR,
27296
+ useExisting: forwardRef(() => RadioMatrixComponent),
27297
+ multi: true
27298
+ },
27299
+ {
27300
+ provide: NG_VALIDATORS,
27301
+ useExisting: forwardRef(() => RadioMatrixComponent),
27302
+ multi: true
27303
+ },
27304
+ {
27305
+ provide: UiFieldValidity,
27306
+ useExisting: forwardRef(() => RadioMatrixComponent)
27307
+ }
27308
+ ],
27309
+ template: `
27310
+ <fieldset
27311
+ class="rm-field"
27312
+ [class.rm-error]="_activeError()"
27313
+ [class.rm-disabled]="disabled()"
27314
+ [disabled]="disabled()"
27315
+ [attr.aria-required]="required() ? 'true' : null"
27316
+ [attr.aria-invalid]="_activeError() ? 'true' : null"
27317
+ [attr.aria-describedby]="(_activeError() || hint()) ? _descId : null"
27318
+ (focusout)="onFocusOut($event)">
27319
+ @if (label()) {
27320
+ <legend class="rm-label">
27321
+ {{ label() }}
27322
+ @if (required()) { <span class="rm-required" aria-hidden="true">*</span> }
27323
+ </legend>
27324
+ }
27325
+ <div class="rm-scroll">
27326
+ <table class="rm-table">
27327
+ <thead>
27328
+ <tr>
27329
+ <th scope="col" class="rm-corner">{{ rowHeader() }}</th>
27330
+ @for (col of columns(); track col.value) {
27331
+ <th scope="col" class="rm-col">{{ col.label }}</th>
27332
+ }
27333
+ </tr>
27334
+ </thead>
27335
+ <tbody>
27336
+ @for (row of rows(); track row.value) {
27337
+ <tr class="rm-row" [class.rm-row-missing]="_rowInvalid(row)">
27338
+ <th scope="row" class="rm-row-label">{{ row.label }}</th>
27339
+ @for (col of columns(); track col.value) {
27340
+ <td class="rm-cell">
27341
+ <ui-radio
27342
+ [name]="_name + '-' + row.value"
27343
+ [value]="col.value"
27344
+ [ariaLabel]="row.label + ': ' + col.label"
27345
+ [checked]="_value()[row.value] === col.value"
27346
+ [disabled]="disabled() || !!row.disabled || !!col.disabled"
27347
+ [invalid]="_rowInvalid(row)"
27348
+ [describedBy]="(_activeError() || hint()) ? _descId : ''"
27349
+ (selected)="onSelect(row.value, $event)" />
27350
+ </td>
27351
+ }
27352
+ </tr>
27353
+ }
27354
+ </tbody>
27355
+ </table>
27356
+ </div>
27357
+ @if (_activeError()) {
27358
+ <p class="rm-desc rm-desc-error" [id]="_descId" role="alert">{{ _activeError() }}</p>
27359
+ } @else if (hint()) {
27360
+ <p class="rm-desc" [id]="_descId">{{ hint() }}</p>
27361
+ }
27362
+ </fieldset>
27363
+ `,
27364
+ styles: [":host{display:block}.rm-field{display:flex;flex-direction:column;gap:6px;border:0;margin:0;padding:0;min-width:0}.rm-label{padding:0;margin-bottom:6px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.rm-required{color:#ef4444;margin-left:2px}.rm-scroll{overflow-x:auto;border:1px solid #e2e8f0;border-radius:8px}.rm-table{width:100%;border-collapse:collapse;font-size:.875rem}.rm-table th,.rm-table td{padding:8px 12px;border-bottom:1px solid #f1f5f9;text-align:left}.rm-table tbody tr:last-child th,.rm-table tbody tr:last-child td{border-bottom:0}.rm-table thead th{position:sticky;top:0;background:#f8fafc;font-size:.75rem;font-weight:600;color:#475569;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.rm-col,.rm-cell{text-align:center!important;width:1%;white-space:nowrap}.rm-cell ui-radio{display:inline-block}.rm-row-label{font-weight:500;color:#1e293b}.rm-row:hover{background:#f8fafc}.rm-row-missing .rm-row-label{color:#b91c1c}.rm-disabled .rm-scroll{opacity:.6}.rm-error .rm-scroll{border-color:#ef4444}.rm-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.rm-desc-error{color:#ef4444}@media(max-width:480px){.rm-table th,.rm-table td{padding:6px 8px}.rm-table thead th{font-size:.6875rem}}\n"]
27365
+ }]
27366
+ }],
27367
+ ctorParameters: () => [],
27368
+ propDecorators: {
27369
+ label: [{
27370
+ type: i0.Input,
27371
+ args: [{
27372
+ isSignal: true,
27373
+ alias: "label",
27374
+ required: false
27375
+ }]
27376
+ }],
27377
+ rowHeader: [{
27378
+ type: i0.Input,
27379
+ args: [{
27380
+ isSignal: true,
27381
+ alias: "rowHeader",
27382
+ required: false
27383
+ }]
27384
+ }],
27385
+ rows: [{
27386
+ type: i0.Input,
27387
+ args: [{
27388
+ isSignal: true,
27389
+ alias: "rows",
27390
+ required: false
27391
+ }]
27392
+ }],
27393
+ columns: [{
27394
+ type: i0.Input,
27395
+ args: [{
27396
+ isSignal: true,
27397
+ alias: "columns",
27398
+ required: false
27399
+ }]
27400
+ }],
27401
+ required: [{
27402
+ type: i0.Input,
27403
+ args: [{
27404
+ isSignal: true,
27405
+ alias: "required",
27406
+ required: false
27407
+ }]
27408
+ }],
27409
+ hint: [{
27410
+ type: i0.Input,
27411
+ args: [{
27412
+ isSignal: true,
27413
+ alias: "hint",
27414
+ required: false
27415
+ }]
27416
+ }],
27417
+ error: [{
27418
+ type: i0.Input,
27419
+ args: [{
27420
+ isSignal: true,
27421
+ alias: "error",
27422
+ required: false
27423
+ }]
27424
+ }],
27425
+ showErrors: [{
27426
+ type: i0.Input,
27427
+ args: [{
27428
+ isSignal: true,
27429
+ alias: "showErrors",
27430
+ required: false
27431
+ }]
27432
+ }],
27433
+ name: [{
27434
+ type: i0.Input,
27435
+ args: [{
27436
+ isSignal: true,
27437
+ alias: "name",
27438
+ required: false
27439
+ }]
27440
+ }],
27441
+ _disabledInput: [{
27442
+ type: i0.Input,
27443
+ args: [{
27444
+ isSignal: true,
27445
+ alias: "disabled",
27446
+ required: false
27447
+ }]
27448
+ }],
27449
+ invalidChange: [{
27450
+ type: i0.Output,
27451
+ args: ["invalidChange"]
27452
+ }]
27453
+ }
27454
+ });
27021
27455
  var DetailCardComponent = class DetailCardComponent {
27022
27456
  constructor() {
27023
27457
  this.title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
@@ -27194,6 +27628,7 @@ var DetailCardComponent = class DetailCardComponent {
27194
27628
  "ariaLabel",
27195
27629
  "ariaExpanded",
27196
27630
  "ariaPressed",
27631
+ "ariaDescribedBy",
27197
27632
  "modal-footer-left",
27198
27633
  "modal-footer-right"
27199
27634
  ]
@@ -27450,6 +27885,6 @@ i0.ɵɵngDeclareClassMetadata({
27450
27885
  }]
27451
27886
  }
27452
27887
  });
27453
- export { AlertComponent, AppShellComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BulkMessagePanelComponent, ButtonComponent, CheckboxComponent, ChipComponent, ChipGroupComponent, ColumnFilterComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_DOCUMENT_SUBJECT, DOCUMENT_PURPOSE_OPTIONS, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DocumentSendOptionsComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FileInputComponent, FormRowComponent, FormSectionComponent, HintComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, ListItemComponent, MAX_CC, ModalComponent, MoreMenuComponent, MultiSelectComponent, PROGRESS_STEP_THRESHOLDS, PaginationComponent, PanelInfoListComponent, PillTabsComponent, ProgressBarComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SelectComponent, SendMessagePanelComponent, SidePanelComponent, SkeletonComponent, TableToolbarComponent, TemplatePickerComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, ToastComponent, ToastService, ToggleBadgeComponent, TooltipDirective, US_STATES, UiFieldValidity, VideoPickerComponent, appShellGroupsStorageKey, autoVariant, builtInActionIcon, createFieldReveal, decodeFilterValues, encodeFilterValue, encodeFilterValues, errorContextInterceptor, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, isoKey, issueToErrors, maxLengthIssue, messagePreviewHtml, parseCcList, parseIso, parseTime, pluralize, requiredIssue, resolvePreset, suggestDocumentSubject };
27888
+ export { AlertComponent, AppShellComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BulkMessagePanelComponent, ButtonComponent, CheckboxComponent, ChipComponent, ChipGroupComponent, ColumnFilterComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_DOCUMENT_SUBJECT, DOCUMENT_PURPOSE_OPTIONS, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DocumentSendOptionsComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FileInputComponent, FormRowComponent, FormSectionComponent, HintComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, ListItemComponent, MAX_CC, ModalComponent, MoreMenuComponent, MultiSelectComponent, PaginationComponent, PanelInfoListComponent, PillTabsComponent, ProgressBarComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SelectComponent, SendMessagePanelComponent, SidePanelComponent, SkeletonComponent, TableToolbarComponent, TemplatePickerComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, ToastComponent, ToastService, ToggleBadgeComponent, TooltipDirective, US_STATES, UiFieldValidity, VideoPickerComponent, appShellGroupsStorageKey, autoVariant, builtInActionIcon, createFieldReveal, decodeFilterValues, encodeFilterValue, encodeFilterValues, errorContextInterceptor, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, isoKey, issueToErrors, maxLengthIssue, messagePreviewHtml, parseCcList, parseIso, parseTime, pluralize, requiredIssue, resolvePreset, suggestDocumentSubject };
27454
27889
 
27455
27890
  //# sourceMappingURL=forgeroute-ui.mjs.map