@forgeroute/ui 0.4.52 → 0.4.53

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.
@@ -5461,7 +5461,7 @@ var TextInputComponent = class TextInputComponent {
5461
5461
  </div>
5462
5462
  `,
5463
5463
  isInline: true,
5464
- styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(pointer:coarse),(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#64748b;opacity:1}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
5464
+ styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(pointer:coarse),(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#64748b;opacity:1}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
5465
5465
  dependencies: [{
5466
5466
  kind: "component",
5467
5467
  type: PasswordRequirementsComponent,
@@ -5562,7 +5562,7 @@ i0.ɵɵngDeclareClassMetadata({
5562
5562
  }
5563
5563
  </div>
5564
5564
  `,
5565
- styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(pointer:coarse),(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#64748b;opacity:1}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
5565
+ styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(pointer:coarse),(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#64748b;opacity:1}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
5566
5566
  }]
5567
5567
  }],
5568
5568
  ctorParameters: () => [],
@@ -20868,18 +20868,21 @@ var TextareaInputComponent = class TextareaInputComponent {
20868
20868
  template: `
20869
20869
  <div class="ta-field" [class.ta-error]="_activeError()" [class.ta-disabled]="disabled()">
20870
20870
  @if (label()) {
20871
- @if (hintAsDescription()) {
20872
- <div class="ta-head">
20873
- <label class="ta-label" [for]="_inputId">{{ label() }}@if (required()) { <span class="ta-required" aria-hidden="true">*</span> }</label>
20874
- @if (hint()) { <span class="ta-hint-inline" [id]="_inputId + '-hint'">({{ hint() }})</span> }
20875
- </div>
20876
- } @else {
20877
- <label class="ta-label" [for]="_inputId">
20878
- {{ label() }}
20879
- @if (required()) { <span class="ta-required" aria-hidden="true">*</span> }
20880
- @if (hint()) { <span class="ta-hint-inline">({{ hint() }})</span> }
20881
- </label>
20882
- }
20871
+ <div class="ta-label-row">
20872
+ @if (hintAsDescription()) {
20873
+ <div class="ta-head">
20874
+ <label class="ta-label" [for]="_inputId">{{ label() }}@if (required()) { <span class="ta-required" aria-hidden="true">*</span> }</label>
20875
+ @if (hint()) { <span class="ta-hint-inline" [id]="_inputId + '-hint'">({{ hint() }})</span> }
20876
+ </div>
20877
+ } @else {
20878
+ <label class="ta-label" [for]="_inputId">
20879
+ {{ label() }}
20880
+ @if (required()) { <span class="ta-required" aria-hidden="true">*</span> }
20881
+ @if (hint()) { <span class="ta-hint-inline">({{ hint() }})</span> }
20882
+ </label>
20883
+ }
20884
+ <ng-content select="[uiLabelEnd]" />
20885
+ </div>
20883
20886
  }
20884
20887
  <textarea
20885
20888
  class="ta-input"
@@ -20907,7 +20910,7 @@ var TextareaInputComponent = class TextareaInputComponent {
20907
20910
  </div>
20908
20911
  `,
20909
20912
  isInline: true,
20910
- styles: [":host{display:block}.ta-field{display:flex;flex-direction:column;gap:6px}.ta-head{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;row-gap:2px}.ta-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ta-required{color:#dc2626;margin-left:2px}.ta-hint-inline{font-size:.75rem;color:#64748b;font-weight:400;margin-left:4px}.ta-head .ta-hint-inline{margin-left:0;line-height:1}.ta-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;resize:vertical;transition:border-color .15s,box-shadow .15s}.ta-input::placeholder{color:#64748b;opacity:1}.ta-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ta-input:read-only{background:#f8fafc;cursor:default}.ta-input.ta-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}@media(min-width:481px)and (pointer:fine){.ta-input.ta-mono{font-size:.8125rem}}.ta-error .ta-input{border-color:#ef4444}.ta-error .ta-input:focus{box-shadow:0 0 0 3px #ef44441f}.ta-disabled .ta-input{opacity:.5;cursor:not-allowed}.ta-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ta-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ta-input{font-size:1rem}}\n"],
20913
+ styles: [":host{display:block}.ta-field{display:flex;flex-direction:column;gap:6px}.ta-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.ta-head{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;row-gap:2px}.ta-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ta-required{color:#dc2626;margin-left:2px}.ta-hint-inline{font-size:.75rem;color:#64748b;font-weight:400;margin-left:4px}.ta-head .ta-hint-inline{margin-left:0;line-height:1}.ta-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;resize:vertical;transition:border-color .15s,box-shadow .15s}.ta-input::placeholder{color:#64748b;opacity:1}.ta-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ta-input:read-only{background:#f8fafc;cursor:default}.ta-input.ta-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}@media(min-width:481px)and (pointer:fine){.ta-input.ta-mono{font-size:.8125rem}}.ta-error .ta-input{border-color:#ef4444}.ta-error .ta-input:focus{box-shadow:0 0 0 3px #ef44441f}.ta-disabled .ta-input{opacity:.5;cursor:not-allowed}.ta-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ta-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ta-input{font-size:1rem}}\n"],
20911
20914
  changeDetection: i0.ChangeDetectionStrategy.OnPush
20912
20915
  });
20913
20916
  }
@@ -20942,18 +20945,21 @@ i0.ɵɵngDeclareClassMetadata({
20942
20945
  template: `
20943
20946
  <div class="ta-field" [class.ta-error]="_activeError()" [class.ta-disabled]="disabled()">
20944
20947
  @if (label()) {
20945
- @if (hintAsDescription()) {
20946
- <div class="ta-head">
20947
- <label class="ta-label" [for]="_inputId">{{ label() }}@if (required()) { <span class="ta-required" aria-hidden="true">*</span> }</label>
20948
- @if (hint()) { <span class="ta-hint-inline" [id]="_inputId + '-hint'">({{ hint() }})</span> }
20949
- </div>
20950
- } @else {
20951
- <label class="ta-label" [for]="_inputId">
20952
- {{ label() }}
20953
- @if (required()) { <span class="ta-required" aria-hidden="true">*</span> }
20954
- @if (hint()) { <span class="ta-hint-inline">({{ hint() }})</span> }
20955
- </label>
20956
- }
20948
+ <div class="ta-label-row">
20949
+ @if (hintAsDescription()) {
20950
+ <div class="ta-head">
20951
+ <label class="ta-label" [for]="_inputId">{{ label() }}@if (required()) { <span class="ta-required" aria-hidden="true">*</span> }</label>
20952
+ @if (hint()) { <span class="ta-hint-inline" [id]="_inputId + '-hint'">({{ hint() }})</span> }
20953
+ </div>
20954
+ } @else {
20955
+ <label class="ta-label" [for]="_inputId">
20956
+ {{ label() }}
20957
+ @if (required()) { <span class="ta-required" aria-hidden="true">*</span> }
20958
+ @if (hint()) { <span class="ta-hint-inline">({{ hint() }})</span> }
20959
+ </label>
20960
+ }
20961
+ <ng-content select="[uiLabelEnd]" />
20962
+ </div>
20957
20963
  }
20958
20964
  <textarea
20959
20965
  class="ta-input"
@@ -20980,7 +20986,7 @@ i0.ɵɵngDeclareClassMetadata({
20980
20986
  }
20981
20987
  </div>
20982
20988
  `,
20983
- styles: [":host{display:block}.ta-field{display:flex;flex-direction:column;gap:6px}.ta-head{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;row-gap:2px}.ta-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ta-required{color:#dc2626;margin-left:2px}.ta-hint-inline{font-size:.75rem;color:#64748b;font-weight:400;margin-left:4px}.ta-head .ta-hint-inline{margin-left:0;line-height:1}.ta-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;resize:vertical;transition:border-color .15s,box-shadow .15s}.ta-input::placeholder{color:#64748b;opacity:1}.ta-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ta-input:read-only{background:#f8fafc;cursor:default}.ta-input.ta-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}@media(min-width:481px)and (pointer:fine){.ta-input.ta-mono{font-size:.8125rem}}.ta-error .ta-input{border-color:#ef4444}.ta-error .ta-input:focus{box-shadow:0 0 0 3px #ef44441f}.ta-disabled .ta-input{opacity:.5;cursor:not-allowed}.ta-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ta-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ta-input{font-size:1rem}}\n"]
20989
+ styles: [":host{display:block}.ta-field{display:flex;flex-direction:column;gap:6px}.ta-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.ta-head{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px;row-gap:2px}.ta-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ta-required{color:#dc2626;margin-left:2px}.ta-hint-inline{font-size:.75rem;color:#64748b;font-weight:400;margin-left:4px}.ta-head .ta-hint-inline{margin-left:0;line-height:1}.ta-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;outline:none;resize:vertical;transition:border-color .15s,box-shadow .15s}.ta-input::placeholder{color:#64748b;opacity:1}.ta-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ta-input:read-only{background:#f8fafc;cursor:default}.ta-input.ta-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace}@media(min-width:481px)and (pointer:fine){.ta-input.ta-mono{font-size:.8125rem}}.ta-error .ta-input{border-color:#ef4444}.ta-error .ta-input:focus{box-shadow:0 0 0 3px #ef44441f}.ta-disabled .ta-input{opacity:.5;cursor:not-allowed}.ta-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ta-desc-error{color:#dc2626}@media(pointer:coarse),(max-width:480px){.ta-input{font-size:1rem}}\n"]
20984
20990
  }]
20985
20991
  }],
20986
20992
  ctorParameters: () => [],
@@ -24892,8 +24898,9 @@ var MultiSelectComponent = class MultiSelectComponent {
24892
24898
  this._selectedSet = computed(() => new Set(this.selected()), ...ngDevMode ? [{ debugName: "_selectedSet" }] : /* istanbul ignore next */ []);
24893
24899
  this._selectedOptions = computed(() => this.options().filter((o) => this._selectedSet().has(o.value)), ...ngDevMode ? [{ debugName: "_selectedOptions" }] : /* istanbul ignore next */ []);
24894
24900
  this._filteredOptions = computed(() => {
24895
- const q = this._query().trim().toLowerCase();
24896
- return q ? this.options().filter((o) => o.label.toLowerCase().includes(q)) : this.options();
24901
+ const fold = (v) => v.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase();
24902
+ const q = fold(this._query().trim());
24903
+ return q ? this.options().filter((o) => fold(o.label).includes(q)) : this.options();
24897
24904
  }, ...ngDevMode ? [{ debugName: "_filteredOptions" }] : /* istanbul ignore next */ []);
24898
24905
  this._onChange = (_) => {};
24899
24906
  this._onTouched = () => {};
@@ -25063,9 +25070,9 @@ var MultiSelectComponent = class MultiSelectComponent {
25063
25070
  class="ms-trigger"
25064
25071
  [class.ms-open]="_open()"
25065
25072
  [disabled]="disabled()"
25066
- aria-haspopup="listbox"
25073
+ aria-haspopup="true"
25067
25074
  [attr.aria-expanded]="_open()"
25068
- [attr.aria-controls]="_open() ? _id + '-list' : null"
25075
+ [attr.aria-controls]="_open() ? _id + '-options' : null"
25069
25076
  [attr.aria-labelledby]="label() ? _id + '-label' : null"
25070
25077
  [attr.aria-describedby]="error() ? _id + '-error' : (hint() ? _id + '-hint' : null)"
25071
25078
  [attr.aria-invalid]="error() ? 'true' : null"
@@ -25089,14 +25096,14 @@ var MultiSelectComponent = class MultiSelectComponent {
25089
25096
  (input)="_query.set($any($event.target).value)" />
25090
25097
  </div>
25091
25098
  }
25092
- <div class="ms-options" role="listbox" aria-multiselectable="true" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25099
+ <div class="ms-options" role="group" [id]="_id + '-options'" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25093
25100
  @for (opt of _filteredOptions(); track opt.value) {
25094
- <div class="ms-option" role="option" [attr.aria-selected]="_selectedSet().has(opt.value)" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25101
+ <div class="ms-option" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25095
25102
  <ui-checkbox
25096
25103
  [label]="opt.label"
25097
25104
  [checked]="_selectedSet().has(opt.value)"
25105
+ [description]="opt.description ?? ''"
25098
25106
  (checkedChange)="toggleValue(opt.value)" />
25099
- @if (opt.description) { <p class="ms-option-desc">{{ opt.description }}</p> }
25100
25107
  </div>
25101
25108
  } @empty {
25102
25109
  <div class="ms-empty">No options found</div>
@@ -25114,7 +25121,7 @@ var MultiSelectComponent = class MultiSelectComponent {
25114
25121
  </div>
25115
25122
  `,
25116
25123
  isInline: true,
25117
- styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-option-desc{margin:2px 0 0 26px;font-size:.75rem;line-height:1.4;color:#64748b}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"],
25124
+ styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"],
25118
25125
  dependencies: [{
25119
25126
  kind: "component",
25120
25127
  type: ChipComponent,
@@ -25201,9 +25208,9 @@ i0.ɵɵngDeclareClassMetadata({
25201
25208
  class="ms-trigger"
25202
25209
  [class.ms-open]="_open()"
25203
25210
  [disabled]="disabled()"
25204
- aria-haspopup="listbox"
25211
+ aria-haspopup="true"
25205
25212
  [attr.aria-expanded]="_open()"
25206
- [attr.aria-controls]="_open() ? _id + '-list' : null"
25213
+ [attr.aria-controls]="_open() ? _id + '-options' : null"
25207
25214
  [attr.aria-labelledby]="label() ? _id + '-label' : null"
25208
25215
  [attr.aria-describedby]="error() ? _id + '-error' : (hint() ? _id + '-hint' : null)"
25209
25216
  [attr.aria-invalid]="error() ? 'true' : null"
@@ -25227,14 +25234,14 @@ i0.ɵɵngDeclareClassMetadata({
25227
25234
  (input)="_query.set($any($event.target).value)" />
25228
25235
  </div>
25229
25236
  }
25230
- <div class="ms-options" role="listbox" aria-multiselectable="true" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25237
+ <div class="ms-options" role="group" [id]="_id + '-options'" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25231
25238
  @for (opt of _filteredOptions(); track opt.value) {
25232
- <div class="ms-option" role="option" [attr.aria-selected]="_selectedSet().has(opt.value)" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25239
+ <div class="ms-option" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25233
25240
  <ui-checkbox
25234
25241
  [label]="opt.label"
25235
25242
  [checked]="_selectedSet().has(opt.value)"
25243
+ [description]="opt.description ?? ''"
25236
25244
  (checkedChange)="toggleValue(opt.value)" />
25237
- @if (opt.description) { <p class="ms-option-desc">{{ opt.description }}</p> }
25238
25245
  </div>
25239
25246
  } @empty {
25240
25247
  <div class="ms-empty">No options found</div>
@@ -25251,7 +25258,7 @@ i0.ɵɵngDeclareClassMetadata({
25251
25258
  }
25252
25259
  </div>
25253
25260
  `,
25254
- styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-option-desc{margin:2px 0 0 26px;font-size:.75rem;line-height:1.4;color:#64748b}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"]
25261
+ styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"]
25255
25262
  }]
25256
25263
  }],
25257
25264
  propDecorators: {
@@ -26111,7 +26118,7 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26111
26118
  this._matches().forEach((v, index) => {
26112
26119
  if (v.group && v.group !== last) rows.push({
26113
26120
  kind: "group",
26114
- key: "g:" + v.group,
26121
+ key: "g:" + rows.length + ":" + v.group,
26115
26122
  text: v.group
26116
26123
  });
26117
26124
  last = v.group;
@@ -26125,15 +26132,17 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26125
26132
  });
26126
26133
  return rows;
26127
26134
  }, ...ngDevMode ? [{ debugName: "_rows" }] : /* istanbul ignore next */ []);
26128
- this._activeId = computed(() => this._matches().length ? `${this._id}-o${this._active()}` : null, ...ngDevMode ? [{ debugName: "_activeId" }] : /* istanbul ignore next */ []);
26135
+ this._activeIndex = computed(() => Math.min(this._active(), Math.max(0, this._matches().length - 1)), ...ngDevMode ? [{ debugName: "_activeIndex" }] : /* istanbul ignore next */ []);
26136
+ this._activeId = computed(() => this._matches().length ? `${this._id}-o${this._activeIndex()}` : null, ...ngDevMode ? [{ debugName: "_activeId" }] : /* istanbul ignore next */ []);
26129
26137
  this._status = computed(() => {
26130
26138
  const n = this._matches().length;
26131
26139
  return n === 0 ? "No variables found" : n === 1 ? "1 variable" : `${n} variables`;
26132
26140
  }, ...ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []);
26133
26141
  this.onAnyScroll = (event) => {
26134
- if (!(event.target instanceof Node && this.host.nativeElement.contains(event.target))) this.close(false);
26142
+ if (!(event.target instanceof Node && this.host.nativeElement.contains(event.target))) this.follow();
26135
26143
  };
26136
- inject(DestroyRef).onDestroy(() => window.removeEventListener("scroll", this.onAnyScroll, true));
26144
+ this.onViewport = () => this.follow();
26145
+ inject(DestroyRef).onDestroy(() => this.unlisten());
26137
26146
  }
26138
26147
  static fold(s) {
26139
26148
  return s.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase();
@@ -26153,6 +26162,8 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26153
26162
  this.place();
26154
26163
  this._open.set(true);
26155
26164
  window.addEventListener("scroll", this.onAnyScroll, true);
26165
+ window.visualViewport?.addEventListener("resize", this.onViewport);
26166
+ window.visualViewport?.addEventListener("scroll", this.onViewport);
26156
26167
  afterNextRender(() => this.host.nativeElement.querySelector(".ttp-search")?.focus(), { injector: this.injector });
26157
26168
  }
26158
26169
  place() {
@@ -26168,6 +26179,9 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26168
26179
  this._top.set(up ? null : r.bottom + gap);
26169
26180
  this._bottom.set(up ? vh - r.top + gap : null);
26170
26181
  }
26182
+ onPanelMouseDown(event) {
26183
+ if (!(event.target instanceof HTMLInputElement)) event.preventDefault();
26184
+ }
26171
26185
  onQuery(value) {
26172
26186
  this._query.set(value);
26173
26187
  this._active.set(0);
@@ -26177,7 +26191,7 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26177
26191
  const n = this._matches().length;
26178
26192
  if (event.key === "ArrowDown" || event.key === "ArrowUp") {
26179
26193
  event.preventDefault();
26180
- if (n) this._active.set((this._active() + (event.key === "ArrowDown" ? 1 : -1) + n) % n);
26194
+ if (n) this._active.set((this._activeIndex() + (event.key === "ArrowDown" ? 1 : -1) + n) % n);
26181
26195
  this.scrollActive();
26182
26196
  } else if (event.key === "Home" || event.key === "End") {
26183
26197
  if (n) {
@@ -26187,9 +26201,9 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26187
26201
  }
26188
26202
  } else if (event.key === "Enter") {
26189
26203
  event.preventDefault();
26190
- const v = this._matches()[this._active()];
26204
+ const v = this._matches()[this._activeIndex()];
26191
26205
  if (v) this.pick(v);
26192
- } else if (event.key === "Tab") this.close(false);
26206
+ } else if (event.key === "Tab") this.close(true);
26193
26207
  }
26194
26208
  pick(variable) {
26195
26209
  this.picked.emit(variable.value);
@@ -26203,7 +26217,7 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26203
26217
  close(refocus) {
26204
26218
  this._open.set(false);
26205
26219
  this._query.set("");
26206
- window.removeEventListener("scroll", this.onAnyScroll, true);
26220
+ this.unlisten();
26207
26221
  if (refocus) this.host.nativeElement.querySelector(".ttp-trigger")?.focus();
26208
26222
  }
26209
26223
  scrollActive() {
@@ -26213,7 +26227,18 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26213
26227
  if (this._open() && !this.host.nativeElement.contains(event.target)) this.close(false);
26214
26228
  }
26215
26229
  onResize() {
26216
- if (this._open()) this.close(false);
26230
+ this.follow();
26231
+ }
26232
+ unlisten() {
26233
+ window.removeEventListener("scroll", this.onAnyScroll, true);
26234
+ window.visualViewport?.removeEventListener("resize", this.onViewport);
26235
+ window.visualViewport?.removeEventListener("scroll", this.onViewport);
26236
+ }
26237
+ follow() {
26238
+ if (!this._open()) return;
26239
+ const r = this.host.nativeElement.querySelector(".ttp-trigger").getBoundingClientRect();
26240
+ if (r.bottom < 0 || r.top > window.innerHeight || r.right < 0 || r.left > window.innerWidth) this.close(false);
26241
+ else this.place();
26217
26242
  }
26218
26243
  static {
26219
26244
  this.ɵfac = i0.ɵɵngDeclareFactory({
@@ -26278,7 +26303,7 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26278
26303
 
26279
26304
  @if (_open()) {
26280
26305
  <div class="ttp-panel" [style.top.px]="_top()" [style.bottom.px]="_bottom()" [style.left.px]="_left()" [style.width.px]="_width()"
26281
- [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)">
26306
+ [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)" (mousedown)="onPanelMouseDown($event)">
26282
26307
  <div class="ttp-search-wrap">
26283
26308
  <input #search class="ttp-search" type="text" role="combobox" autocomplete="off" aria-autocomplete="list" aria-expanded="true"
26284
26309
  [attr.aria-controls]="_id + '-list'" [attr.aria-activedescendant]="_activeId()" [attr.aria-label]="searchPlaceholder()"
@@ -26288,10 +26313,10 @@ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26288
26313
  <div class="ttp-list" role="listbox" [id]="_id + '-list'" [attr.aria-label]="label()">
26289
26314
  @for (row of _rows(); track row.key) {
26290
26315
  @if (row.kind === 'group') {
26291
- <div class="ttp-group" role="presentation">{{ row.text }}</div>
26316
+ <div class="ttp-group" role="presentation" [id]="_id + '-g' + $index">{{ row.text }}</div>
26292
26317
  } @else {
26293
- <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_active() === row.index"
26294
- [attr.aria-selected]="_active() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26318
+ <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_activeIndex() === row.index"
26319
+ [attr.aria-selected]="_activeIndex() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26295
26320
  {{ row.text }}
26296
26321
  </div>
26297
26322
  }
@@ -26330,7 +26355,7 @@ i0.ɵɵngDeclareClassMetadata({
26330
26355
 
26331
26356
  @if (_open()) {
26332
26357
  <div class="ttp-panel" [style.top.px]="_top()" [style.bottom.px]="_bottom()" [style.left.px]="_left()" [style.width.px]="_width()"
26333
- [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)">
26358
+ [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)" (mousedown)="onPanelMouseDown($event)">
26334
26359
  <div class="ttp-search-wrap">
26335
26360
  <input #search class="ttp-search" type="text" role="combobox" autocomplete="off" aria-autocomplete="list" aria-expanded="true"
26336
26361
  [attr.aria-controls]="_id + '-list'" [attr.aria-activedescendant]="_activeId()" [attr.aria-label]="searchPlaceholder()"
@@ -26340,10 +26365,10 @@ i0.ɵɵngDeclareClassMetadata({
26340
26365
  <div class="ttp-list" role="listbox" [id]="_id + '-list'" [attr.aria-label]="label()">
26341
26366
  @for (row of _rows(); track row.key) {
26342
26367
  @if (row.kind === 'group') {
26343
- <div class="ttp-group" role="presentation">{{ row.text }}</div>
26368
+ <div class="ttp-group" role="presentation" [id]="_id + '-g' + $index">{{ row.text }}</div>
26344
26369
  } @else {
26345
- <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_active() === row.index"
26346
- [attr.aria-selected]="_active() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26370
+ <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_activeIndex() === row.index"
26371
+ [attr.aria-selected]="_activeIndex() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26347
26372
  {{ row.text }}
26348
26373
  </div>
26349
26374
  }
@@ -44130,11 +44155,12 @@ var SetupWizardComponent = class SetupWizardComponent {
44130
44155
  }, ...ngDevMode ? [{ debugName: "intro" }] : /* istanbul ignore next */ []);
44131
44156
  this.isDone = computed(() => this.current().key === SETUP_DONE_KEY, ...ngDevMode ? [{ debugName: "isDone" }] : /* istanbul ignore next */ []);
44132
44157
  this.completedCount = computed(() => this.allSteps().filter((s) => this.completed().has(s.key) || this.skipped().has(s.key)).length, ...ngDevMode ? [{ debugName: "completedCount" }] : /* istanbul ignore next */ []);
44133
- this.stepperSteps = computed(() => this.allSteps().map((s) => ({
44158
+ this.stepperSteps = computed(() => this.allSteps().map((s, i) => ({
44134
44159
  key: s.key,
44135
44160
  label: s.label,
44136
44161
  complete: this.completed().has(s.key),
44137
- disabled: this.busy()
44162
+ disabled: this.busy(),
44163
+ selectable: i < this.index()
44138
44164
  })), ...ngDevMode ? [{ debugName: "stepperSteps" }] : /* istanbul ignore next */ []);
44139
44165
  this.summarySections = computed(() => [{ items: this.steps().map((s) => ({
44140
44166
  label: s.label,
@@ -44180,6 +44206,9 @@ var SetupWizardComponent = class SetupWizardComponent {
44180
44206
  templateFor(key) {
44181
44207
  return this.stepTemplates().find((d) => d.key() === key)?.template ?? null;
44182
44208
  }
44209
+ goToPast(key) {
44210
+ if (this.allSteps().findIndex((s) => s.key === key) < this.index()) this.goTo(key);
44211
+ }
44183
44212
  goTo(key) {
44184
44213
  if (!this.busy() && this.allSteps().some((s) => s.key === key)) this.enter(key);
44185
44214
  }
@@ -44314,6 +44343,7 @@ var SetupWizardComponent = class SetupWizardComponent {
44314
44343
  return imp?.resultTitle ? imp.resultTitle(n) : `${n} ${(imp?.config.entityNamePlural ?? "records").toLowerCase()} imported successfully.`;
44315
44344
  }
44316
44345
  continueFromImport() {
44346
+ if (this.importBlocked()) return;
44317
44347
  this.advanceFrom(this.current().key);
44318
44348
  }
44319
44349
  loadStatuses(list) {
@@ -44523,7 +44553,7 @@ var SetupWizardComponent = class SetupWizardComponent {
44523
44553
  <span class="sw-brand-text" data-testid="setup-wizard-brand">{{ t().brand }}</span>
44524
44554
  </div>
44525
44555
  <ui-stepper class="sw-step-nav" [ariaLabel]="t().stepperLabel" orientation="vertical" size="sm" compact="md"
44526
- [steps]="stepperSteps()" [current]="currentKey()" [clickable]="true" [linear]="false" (stepClick)="goTo($event)" />
44556
+ [steps]="stepperSteps()" [current]="currentKey()" [clickable]="true" [linear]="false" (stepClick)="goToPast($event)" />
44527
44557
  </div>
44528
44558
  <div class="sw-sidebar-bottom">
44529
44559
  <ui-progress-bar [value]="completedCount()" [max]="allSteps().length" ariaLabel="Setup progress" />
@@ -45007,7 +45037,7 @@ i0.ɵɵngDeclareClassMetadata({
45007
45037
  <span class="sw-brand-text" data-testid="setup-wizard-brand">{{ t().brand }}</span>
45008
45038
  </div>
45009
45039
  <ui-stepper class="sw-step-nav" [ariaLabel]="t().stepperLabel" orientation="vertical" size="sm" compact="md"
45010
- [steps]="stepperSteps()" [current]="currentKey()" [clickable]="true" [linear]="false" (stepClick)="goTo($event)" />
45040
+ [steps]="stepperSteps()" [current]="currentKey()" [clickable]="true" [linear]="false" (stepClick)="goToPast($event)" />
45011
45041
  </div>
45012
45042
  <div class="sw-sidebar-bottom">
45013
45043
  <ui-progress-bar [value]="completedCount()" [max]="allSteps().length" ariaLabel="Setup progress" />