@magmonium/one 0.2.27 → 0.2.29

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.
@@ -3167,6 +3167,13 @@ const NotificationStore = signalStore({ providedIn: 'root' }, withState(initialN
3167
3167
  * and docs/adr/0014.
3168
3168
  */
3169
3169
  const ROOT_NAV$1 = 'root';
3170
+ /**
3171
+ * The segment a Nav carries when it *is* its parent's own content — the route
3172
+ * that answers the parent's empty path. It names no place of its own, so the
3173
+ * nav renders it as its parent: never a menu row, never a trail entry, never
3174
+ * the panel's header (see `visibleNavId`).
3175
+ */
3176
+ const DEFAULT_NAV_SEGMENT = 'default';
3170
3177
  /** NavId segment joiner. Flattens both `/` and `|` — see ADR 0014. */
3171
3178
  const NAV_ID_SEP = '_';
3172
3179
  /** Address separator for a Murl. */
@@ -3246,7 +3253,10 @@ const navIdToRoutePath = (navId, navMap) => {
3246
3253
  .map((segment, i) => {
3247
3254
  const id = segmentsToNavId(segments.slice(0, i + 1));
3248
3255
  const nav = navMap[id];
3249
- const path = nav?.path ?? segment;
3256
+ // A `default` node answers its parent's own address, so it contributes
3257
+ // no segment of its own — `app → default → trending` is `/app/trending`,
3258
+ // the address the generated route table already answers at.
3259
+ const path = segment === DEFAULT_NAV_SEGMENT ? '' : (nav?.path ?? segment);
3250
3260
  return nav?.presentation === 'dynamic'
3251
3261
  ? `${path}/:${nav.param ?? 'id'}`
3252
3262
  : path;
@@ -3455,9 +3465,57 @@ const toTrailItem = (navId, navMap, anchor) => {
3455
3465
  address: renderAddress(navId, navMap, anchor),
3456
3466
  };
3457
3467
  };
3458
- const buildNavMenus = (navId, navMap, anchor) => (navMap[navId]?.children ?? [])
3459
- .filter((childId) => navMap[childId]?.title)
3460
- .map((childId) => toTrailItem(childId, navMap, anchor));
3468
+ /** A Nav that *is* its parent's own content rather than a place beside it. */
3469
+ const isDefaultNav = (navId) => navIdSegment(navId) === DEFAULT_NAV_SEGMENT;
3470
+ /**
3471
+ * The Nav the User is standing on as the nav shows it. A `default` node names
3472
+ * no place of its own — it is the route answering its parent's empty path — so
3473
+ * landing on `root_app_default` is standing on `root_app`, and the panel says
3474
+ * so rather than naming a segment that is on no menu.
3475
+ */
3476
+ const visibleNavId = (navId) => {
3477
+ let id = navId;
3478
+ while (id !== ROOT_NAV$1 && isDefaultNav(id))
3479
+ id = parentNavId(id) ?? ROOT_NAV$1;
3480
+ return id;
3481
+ };
3482
+ /**
3483
+ * The children a menu may draw. A Nav needs a title to be a row at all, and a
3484
+ * `default` node is not a row: it is its parent's own content, so it is
3485
+ * *transparent* — its own children take its place in the list, spliced where
3486
+ * it stood. `app → default → { trending, latest }` is one list of two rows
3487
+ * under app, which is the tree the User was drawing when they put a `default`
3488
+ * in the middle of it. Filtering the node out without adopting its children
3489
+ * left that app with no rows at all.
3490
+ */
3491
+ const menuChildIds = (navId, navMap) => (navMap[navId]?.children ?? []).flatMap((childId) => {
3492
+ if (isDefaultNav(childId))
3493
+ return menuChildIds(childId, navMap);
3494
+ return navMap[childId]?.title ? [childId] : [];
3495
+ });
3496
+ /**
3497
+ * Whose children the menu draws. A Nav with rows of its own draws them — that
3498
+ * is the descent. A leaf has none, and descending into nothing left the panel
3499
+ * on an empty state; it draws its *siblings* instead, so the menu stays the
3500
+ * list the User moved through and the row they are on is the one marked
3501
+ * active. Root is the floor: its own children are the last list there is.
3502
+ */
3503
+ const navMenuOwnerId = (navId, navMap) => {
3504
+ const visible = visibleNavId(navId);
3505
+ if (visible === ROOT_NAV$1 || menuChildIds(visible, navMap).length) {
3506
+ return visible;
3507
+ }
3508
+ // Url only. A Murl leaf is a panel — it answers with a widget of its own, and
3509
+ // a panel titled after its parent while showing its own content reads as the
3510
+ // wrong panel. The descent it belongs to is the one it opened from.
3511
+ if (navMap[visible]?.kind === 'murl')
3512
+ return visible;
3513
+ // And only where the parent has rows to draw: handing the header up to a
3514
+ // parent that lists nothing trades a titled empty panel for a mistitled one.
3515
+ const parent = visibleNavId(parentNavId(visible) ?? ROOT_NAV$1);
3516
+ return menuChildIds(parent, navMap).length ? parent : visible;
3517
+ };
3518
+ const buildNavMenus = (navId, navMap, anchor) => menuChildIds(navId, navMap).map((childId) => toTrailItem(childId, navMap, anchor));
3461
3519
  /**
3462
3520
  * Merges a widget's emitted trail over the derived one, matching by depth.
3463
3521
  * With a single keyspace there is nothing to translate — an emitted entry is
@@ -3475,24 +3533,29 @@ function deriveBreadcrumb(params) {
3475
3533
  const { navId, navMap, anchor, breadcrumb, navMenu } = params;
3476
3534
  if (!navId)
3477
3535
  return emptyResult();
3478
- const chain = navIdChain(navId);
3536
+ // The header and the trail belong to whichever Nav owns the menu below them:
3537
+ // on a leaf that is the parent, so the User reads the list they are in with
3538
+ // their own row marked, rather than a title over an empty panel.
3539
+ const ownerId = navMenuOwnerId(navId, navMap);
3540
+ const chain = navIdChain(ownerId);
3479
3541
  const derivedTrail = chain
3480
3542
  .slice(0, -1)
3543
+ .filter((id) => !isDefaultNav(id))
3481
3544
  .map((id) => toTrailItem(id, navMap, anchor));
3482
- const nav = navMap[navId];
3545
+ const nav = navMap[ownerId];
3483
3546
  const derivedHeader = {
3484
- id: navId,
3485
- label: nav?.title ?? (navId === ROOT_NAV$1 ? '' : navIdSegment(navId)),
3547
+ id: ownerId,
3548
+ label: nav?.title ?? (ownerId === ROOT_NAV$1 ? '' : navIdSegment(ownerId)),
3486
3549
  icon: nav?.icon,
3487
- nav: navId,
3488
- address: renderAddress(navId, navMap, anchor),
3550
+ nav: ownerId,
3551
+ address: renderAddress(ownerId, navMap, anchor),
3489
3552
  };
3490
3553
  const { trail, header } = breadcrumb
3491
3554
  ? mergeTrail(derivedTrail, breadcrumb, derivedHeader)
3492
3555
  : { trail: derivedTrail, header: derivedHeader };
3493
3556
  return {
3494
3557
  breadcrumb: { trail, header },
3495
- navMenus: navMenu ?? buildNavMenus(navId, navMap, anchor),
3558
+ navMenus: navMenu ?? buildNavMenus(ownerId, navMap, anchor),
3496
3559
  };
3497
3560
  }
3498
3561
 
@@ -6449,7 +6512,7 @@ class SectionFormItemComponent extends ConfigComponent {
6449
6512
  break;
6450
6513
  }
6451
6514
  case InputType.TOGGLE: {
6452
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-OB-u7l7C.mjs');
6515
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CsuV_RXV.mjs');
6453
6516
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
6454
6517
  break;
6455
6518
  }
@@ -6461,12 +6524,12 @@ class SectionFormItemComponent extends ConfigComponent {
6461
6524
  break;
6462
6525
  }
6463
6526
  case InputType.PASSWORD: {
6464
- const { PasswordInputComponent } = await import('./magmonium-one-password-C_iu89uG.mjs');
6527
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Cr3XxtEj.mjs');
6465
6528
  this.createDynamicComponent(seq, PasswordInputComponent);
6466
6529
  break;
6467
6530
  }
6468
6531
  case InputType.OTP: {
6469
- const { OtpInputComponent } = await import('./magmonium-one-otp-CGJwpx2O.mjs');
6532
+ const { OtpInputComponent } = await import('./magmonium-one-otp-DeUCHCNZ.mjs');
6470
6533
  this.createDynamicComponent(seq, OtpInputComponent);
6471
6534
  break;
6472
6535
  }
@@ -11603,6 +11666,15 @@ class SectionFilterComponent {
11603
11666
  variant: 'ghost',
11604
11667
  iconOnly: true,
11605
11668
  }), ...(ngDevMode ? [{ debugName: "toggleConfig" }] : /* istanbul ignore next */ []));
11669
+ // The clear mark beside the name. Its own config rather than the toggle's:
11670
+ // the toggle flips to `x` while its panel is open, and these two would then
11671
+ // be the same glyph twice with different jobs.
11672
+ clearConfig = computed(() => ({
11673
+ icon: 'x',
11674
+ one: true,
11675
+ variant: 'ghost',
11676
+ iconOnly: true,
11677
+ }), ...(ngDevMode ? [{ debugName: "clearConfig" }] : /* istanbul ignore next */ []));
11606
11678
  // A computed rather than a literal in the binding: an inline object is a
11607
11679
  // new reference every check, and `no-inline-config` refuses one anyway.
11608
11680
  chipConfig = computed(() => ({
@@ -11694,6 +11766,18 @@ class SectionFilterComponent {
11694
11766
  this.write(next ?? []);
11695
11767
  };
11696
11768
  clearRange = () => this.writeRange(undefined);
11769
+ /**
11770
+ * Drop everything this Filter holds. In a group that is the key deleted
11771
+ * outright; alone it is the model emptied, which emits `''` under the
11772
+ * variants whose key carries one value.
11773
+ */
11774
+ clearAll = () => {
11775
+ if (this.group) {
11776
+ this.group.clear(this.resolvedName());
11777
+ return;
11778
+ }
11779
+ this.write([]);
11780
+ };
11697
11781
  removeOption = (val) => {
11698
11782
  if (this.group) {
11699
11783
  this.group.remove(this.resolvedName(), val);
@@ -11763,6 +11847,18 @@ class SectionFilterComponent {
11763
11847
  } @else {
11764
11848
  <m-header [level]="3" [label]="label()" />
11765
11849
  }
11850
+ @if (hasSelection()) {
11851
+ <!-- One mark for the whole Filter, beside its name: a Filter is one
11852
+ answer to the reader on the other side, so taking it back is one
11853
+ click rather than a badge's × per value. -->
11854
+ <div class="section-filter__clear">
11855
+ <m-button
11856
+ [config]="clearConfig()"
11857
+ (clicked)="clearAll()"
11858
+ [attr.aria-label]="('remove' | translate) + ' ' + label()"
11859
+ />
11860
+ </div>
11861
+ }
11766
11862
  <div
11767
11863
  class="section-filter__dropdown"
11768
11864
  [mSelector]="selectorConfig()"
@@ -11774,7 +11870,7 @@ class SectionFilterComponent {
11774
11870
  </div>
11775
11871
  </div>
11776
11872
  </div>
11777
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}.section-filter__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));padding:var(--section-header-py, .75rem) var(--section-px, 1rem)}.section-filter__bar m-header{flex:1;min-width:0;font-size:1rem}.section-filter__bar .section-filter__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-filter__bar .section-filter__toggle.is-active{--m-button-color: var(--m-mm) !important}.section-filter__badges{display:flex;flex-wrap:wrap;gap:.375rem;flex:1;min-width:0;align-items:center}.section-filter__badges m-badge{--m-badge-size: .6rem;--m-badge-chip-padding: 0 .25em}.section-filter__badges m-badge m-button{--m-button-size: .6em;--m-button-color: var(--m-mm);opacity:.7}.section-filter__badges m-badge m-button:hover{opacity:1}.section-filter__dropdown{flex-shrink:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: BadgeComponent, selector: "m-badge", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11873
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}.section-filter__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));padding:var(--section-header-py, .75rem) var(--section-px, 1rem)}.section-filter__bar m-header{flex:1;min-width:0;font-size:1rem}.section-filter__bar .section-filter__clear{flex-shrink:0;--m-button-size: .85rem;--m-button-color: var(--m-mm);opacity:.7}.section-filter__bar .section-filter__clear:hover{opacity:1}.section-filter__bar .section-filter__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-filter__bar .section-filter__toggle.is-active{--m-button-color: var(--m-mm) !important}.section-filter__badges{display:flex;flex-wrap:wrap;gap:.375rem;flex:1;min-width:0;align-items:center}.section-filter__badges m-badge{--m-badge-size: .6rem;--m-badge-chip-padding: 0 .25em}.section-filter__badges m-badge m-button{--m-button-size: .6em;--m-button-color: var(--m-mm);opacity:.7}.section-filter__badges m-badge m-button:hover{opacity:1}.section-filter__dropdown{flex-shrink:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: BadgeComponent, selector: "m-badge", inputs: ["config"], outputs: ["configChange"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11778
11874
  }
11779
11875
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterComponent, decorators: [{
11780
11876
  type: Component,
@@ -11810,6 +11906,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
11810
11906
  } @else {
11811
11907
  <m-header [level]="3" [label]="label()" />
11812
11908
  }
11909
+ @if (hasSelection()) {
11910
+ <!-- One mark for the whole Filter, beside its name: a Filter is one
11911
+ answer to the reader on the other side, so taking it back is one
11912
+ click rather than a badge's × per value. -->
11913
+ <div class="section-filter__clear">
11914
+ <m-button
11915
+ [config]="clearConfig()"
11916
+ (clicked)="clearAll()"
11917
+ [attr.aria-label]="('remove' | translate) + ' ' + label()"
11918
+ />
11919
+ </div>
11920
+ }
11813
11921
  <div
11814
11922
  class="section-filter__dropdown"
11815
11923
  [mSelector]="selectorConfig()"
@@ -11831,7 +11939,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
11831
11939
  '[class.has-sidepanel]': 'sidepanel()',
11832
11940
  '[class.no-border]': 'noBorder()',
11833
11941
  '[class.in-group]': '!!group',
11834
- }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}.section-filter__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));padding:var(--section-header-py, .75rem) var(--section-px, 1rem)}.section-filter__bar m-header{flex:1;min-width:0;font-size:1rem}.section-filter__bar .section-filter__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-filter__bar .section-filter__toggle.is-active{--m-button-color: var(--m-mm) !important}.section-filter__badges{display:flex;flex-wrap:wrap;gap:.375rem;flex:1;min-width:0;align-items:center}.section-filter__badges m-badge{--m-badge-size: .6rem;--m-badge-chip-padding: 0 .25em}.section-filter__badges m-badge m-button{--m-button-size: .6em;--m-button-color: var(--m-mm);opacity:.7}.section-filter__badges m-badge m-button:hover{opacity:1}.section-filter__dropdown{flex-shrink:0}\n"] }]
11942
+ }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}.section-filter__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));padding:var(--section-header-py, .75rem) var(--section-px, 1rem)}.section-filter__bar m-header{flex:1;min-width:0;font-size:1rem}.section-filter__bar .section-filter__clear{flex-shrink:0;--m-button-size: .85rem;--m-button-color: var(--m-mm);opacity:.7}.section-filter__bar .section-filter__clear:hover{opacity:1}.section-filter__bar .section-filter__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-filter__bar .section-filter__toggle.is-active{--m-button-color: var(--m-mm) !important}.section-filter__badges{display:flex;flex-wrap:wrap;gap:.375rem;flex:1;min-width:0;align-items:center}.section-filter__badges m-badge{--m-badge-size: .6rem;--m-badge-chip-padding: 0 .25em}.section-filter__badges m-badge m-button{--m-button-size: .6em;--m-button-color: var(--m-mm);opacity:.7}.section-filter__badges m-badge m-button:hover{opacity:1}.section-filter__dropdown{flex-shrink:0}\n"] }]
11835
11943
  }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionsAsset: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionsAsset", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], dropdownRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SelectorDirective), { isSignal: true }] }] } });
11836
11944
 
11837
11945
  /**
@@ -11942,6 +12050,20 @@ class SectionFilterMenuComponent {
11942
12050
  fullWidth: true,
11943
12051
  }), ...(ngDevMode ? [{ debugName: "backConfig" }] : /* istanbul ignore next */ []));
11944
12052
  forwardIcon = computed(() => ({ name: 'chevron-right' }), ...(ngDevMode ? [{ debugName: "forwardIcon" }] : /* istanbul ignore next */ []));
12053
+ // The group's toggle wears this exact badge for how many Filters hold
12054
+ // something; a row wears it for how many options the one Filter holds.
12055
+ countBadgeConfig = computed(() => ({
12056
+ variant: 'primary',
12057
+ position: 'top-right',
12058
+ }), ...(ngDevMode ? [{ debugName: "countBadgeConfig" }] : /* istanbul ignore next */ []));
12059
+ // A computed rather than a literal in the binding: an inline object is a new
12060
+ // reference every check, and `no-inline-config` refuses one anyway.
12061
+ clearConfig = computed(() => ({
12062
+ icon: 'x',
12063
+ one: true,
12064
+ variant: 'ghost',
12065
+ iconOnly: true,
12066
+ }), ...(ngDevMode ? [{ debugName: "clearConfig" }] : /* istanbul ignore next */ []));
11945
12067
  rows = computed(() => this.members().map((member) => {
11946
12068
  const name = member.name();
11947
12069
  const held = this.ctx()?.valueOf(name) ?? [];
@@ -11949,6 +12071,7 @@ class SectionFilterMenuComponent {
11949
12071
  name,
11950
12072
  label: member.label(),
11951
12073
  detail: this.detailOf(member.variant(), held),
12074
+ count: this.countOf(member.variant(), held),
11952
12075
  selected: held.length > 0,
11953
12076
  };
11954
12077
  }), ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
@@ -11994,6 +12117,22 @@ class SectionFilterMenuComponent {
11994
12117
  });
11995
12118
  });
11996
12119
  }
12120
+ /**
12121
+ * Drill into a Filter's panel — unless the clear mark inside the row was what
12122
+ * was hit. Read off the event rather than stopped inside the mark's own
12123
+ * handler: a `(click)` there would make the wrapping span interactive, which
12124
+ * it is not — the Button inside it is what takes focus.
12125
+ */
12126
+ open = (name, event) => {
12127
+ const target = event.target;
12128
+ if (target?.closest('.section-filter-menu__clear'))
12129
+ return;
12130
+ this.activeName.set(name);
12131
+ };
12132
+ /** Drop everything the named Filter holds, without drilling into it. */
12133
+ clear = (name) => {
12134
+ this.ctx()?.clear(name);
12135
+ };
11997
12136
  pick = (option) => {
11998
12137
  const member = this.active();
11999
12138
  if (!member)
@@ -12007,18 +12146,22 @@ class SectionFilterMenuComponent {
12007
12146
  this.ctx()?.setRange(member.name(), next);
12008
12147
  };
12009
12148
  /**
12010
- * A range says what it holds and an option list says how many: two picked
12011
- * options are two of a set the row cannot show, while two bounds *are* the
12012
- * answer and fit.
12149
+ * A range says what it holds: two bounds *are* the answer and fit beside the
12150
+ * name. An option list says nothing here two picked options are two of a
12151
+ * set the row cannot show, so how many it holds goes to `countOf` and is
12152
+ * drawn as a badge rather than as text.
12013
12153
  */
12014
12154
  detailOf = (variant, held) => {
12015
- if (!held.length)
12155
+ if (!held.length || !filterHoldsRange(variant))
12016
12156
  return '';
12017
- if (filterHoldsRange(variant)) {
12018
- return held.length === 2 ? `${held[0]} – ${held[1]}` : '';
12019
- }
12020
- return String(held.length);
12157
+ return held.length === 2 ? `${held[0]} – ${held[1]}` : '';
12021
12158
  };
12159
+ /**
12160
+ * How many options the Filter holds, as the badge draws it — `99+` past the
12161
+ * cap, and empty for a `range`, whose two entries are one answer and are
12162
+ * spelled out by `detailOf` instead.
12163
+ */
12164
+ countOf = (variant, held) => filterHoldsRange(variant) ? '' : formatBadgeCount(held.length);
12022
12165
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12023
12166
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionFilterMenuComponent, isStandalone: true, selector: "m-section-filter-menu", inputs: { members: { classPropertyName: "members", publicName: "members", isSignal: true, isRequired: false, transformFunction: null }, ctx: { classPropertyName: "ctx", publicName: "ctx", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "section-filter-menu" }, viewQueries: [{ propertyName: "panelHost", first: true, predicate: ["panelHost"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
12024
12167
  @if (activeRow()) {
@@ -12036,13 +12179,32 @@ class SectionFilterMenuComponent {
12036
12179
  [class.is-selected]="row.selected"
12037
12180
  role="menuitem"
12038
12181
  tabindex="0"
12039
- (click)="activeName.set(row.name)"
12040
- (keydown.enter)="activeName.set(row.name)"
12041
- (keydown.space)="$event.preventDefault(); activeName.set(row.name)"
12182
+ (click)="open(row.name, $event)"
12183
+ (keydown.enter)="open(row.name, $event)"
12184
+ (keydown.space)="$event.preventDefault(); open(row.name, $event)"
12042
12185
  >
12043
- <span class="section-filter-menu__label">{{
12044
- row.label | translate
12045
- }}</span>
12186
+ <span class="section-filter-menu__name">
12187
+ <span class="section-filter-menu__label">{{
12188
+ row.label | translate
12189
+ }}</span>
12190
+ @if (row.count) {
12191
+ <m-badge [config]="countBadgeConfig()">{{ row.count }}</m-badge>
12192
+ }
12193
+ </span>
12194
+ @if (row.selected) {
12195
+ <!-- The same clear mark a Filter's own bar carries, kept in the
12196
+ squeezed drill-in: the bar is not rendered in that mode, and
12197
+ without this the only way back to nothing is to drill in and
12198
+ unpick each value. Swallows the click so dropping a Filter's
12199
+ answer does not also open it. -->
12200
+ <span class="section-filter-menu__clear">
12201
+ <m-button
12202
+ [config]="clearConfig()"
12203
+ (clicked)="clear(row.name)"
12204
+ [attr.aria-label]="('remove' | translate) + ' ' + (row.label | translate)"
12205
+ />
12206
+ </span>
12207
+ }
12046
12208
  @if (row.detail) {
12047
12209
  <span class="section-filter-menu__detail">{{ row.detail }}</span>
12048
12210
  }
@@ -12051,7 +12213,7 @@ class SectionFilterMenuComponent {
12051
12213
  }
12052
12214
  </ul>
12053
12215
  }
12054
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;background:var(--m-background);border:1px solid var(--m-mm);width:260px;max-height:20rem;overflow-y:auto}.section-filter-menu__rows{list-style:none;margin:0;padding:0}.section-filter-menu__row{display:flex;align-items:center;gap:.5em;padding:.6rem .9rem;cursor:pointer;font-size:.875rem;color:var(--m-text);transition:all .3s cubic-bezier(.16,1,.3,1);outline:none}.section-filter-menu__row:hover,.section-filter-menu__row:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__row.is-selected{color:var(--m-mm);font-weight:500}.section-filter-menu__row m-icon{--m-icon-size: .875em;margin-left:auto;display:flex}.section-filter-menu__label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.section-filter-menu__detail{font-size:.75rem;color:var(--m-text-secondary);flex-shrink:0}.section-filter-menu__back{display:flex;align-items:center;gap:.5em;width:100%;padding:.6rem .9rem;background:transparent;border:none;border-bottom:1px solid var(--m-backdrop-border);font:inherit;font-size:.875rem;color:var(--m-text);cursor:pointer;outline:none}.section-filter-menu__back:hover,.section-filter-menu__back:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__back m-icon{--m-icon-size: .875em;display:flex}.section-filter-menu__panel{display:block;--m-filter-panel-border: none;--m-filter-panel-bg: transparent;--m-filter-panel-animation: none;--m-filter-panel-max-height: none}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12216
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;background:var(--m-background);border:1px solid var(--m-mm);width:260px;max-height:20rem;overflow-y:auto}.section-filter-menu__rows{list-style:none;margin:0;padding:0}.section-filter-menu__row{display:flex;align-items:center;gap:.5em;padding:.6rem .9rem;cursor:pointer;font-size:.875rem;color:var(--m-text);transition:all .3s cubic-bezier(.16,1,.3,1);outline:none}.section-filter-menu__row:hover,.section-filter-menu__row:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__row.is-selected{color:var(--m-mm);font-weight:500}.section-filter-menu__row m-icon{--m-icon-size: .875em;margin-left:auto;display:flex}.section-filter-menu__name{position:relative;display:inline-flex;align-items:center;min-width:0;padding-right:.4rem}.section-filter-menu__name m-badge{pointer-events:none;--M-BADGE-color: var(--m-error);--m-badge-size: .6rem;--m-badge-height: .9rem;--m-badge-min-width: .9rem}.section-filter-menu__label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.section-filter-menu__clear{display:flex;flex-shrink:0;--m-button-size: .75rem;--m-button-color: var(--m-mm);opacity:.7}.section-filter-menu__clear:hover{opacity:1}.section-filter-menu__detail{font-size:.75rem;color:var(--m-text-secondary);flex-shrink:0}.section-filter-menu__back{display:flex;align-items:center;gap:.5em;width:100%;padding:.6rem .9rem;background:transparent;border:none;border-bottom:1px solid var(--m-backdrop-border);font:inherit;font-size:.875rem;color:var(--m-text);cursor:pointer;outline:none}.section-filter-menu__back:hover,.section-filter-menu__back:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__back m-icon{--m-icon-size: .875em;display:flex}.section-filter-menu__panel{display:block;--m-filter-panel-border: none;--m-filter-panel-bg: transparent;--m-filter-panel-animation: none;--m-filter-panel-max-height: none}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: BadgeComponent, selector: "m-badge", inputs: ["config"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12055
12217
  }
12056
12218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterMenuComponent, decorators: [{
12057
12219
  type: Component,
@@ -12071,13 +12233,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12071
12233
  [class.is-selected]="row.selected"
12072
12234
  role="menuitem"
12073
12235
  tabindex="0"
12074
- (click)="activeName.set(row.name)"
12075
- (keydown.enter)="activeName.set(row.name)"
12076
- (keydown.space)="$event.preventDefault(); activeName.set(row.name)"
12236
+ (click)="open(row.name, $event)"
12237
+ (keydown.enter)="open(row.name, $event)"
12238
+ (keydown.space)="$event.preventDefault(); open(row.name, $event)"
12077
12239
  >
12078
- <span class="section-filter-menu__label">{{
12079
- row.label | translate
12080
- }}</span>
12240
+ <span class="section-filter-menu__name">
12241
+ <span class="section-filter-menu__label">{{
12242
+ row.label | translate
12243
+ }}</span>
12244
+ @if (row.count) {
12245
+ <m-badge [config]="countBadgeConfig()">{{ row.count }}</m-badge>
12246
+ }
12247
+ </span>
12248
+ @if (row.selected) {
12249
+ <!-- The same clear mark a Filter's own bar carries, kept in the
12250
+ squeezed drill-in: the bar is not rendered in that mode, and
12251
+ without this the only way back to nothing is to drill in and
12252
+ unpick each value. Swallows the click so dropping a Filter's
12253
+ answer does not also open it. -->
12254
+ <span class="section-filter-menu__clear">
12255
+ <m-button
12256
+ [config]="clearConfig()"
12257
+ (clicked)="clear(row.name)"
12258
+ [attr.aria-label]="('remove' | translate) + ' ' + (row.label | translate)"
12259
+ />
12260
+ </span>
12261
+ }
12081
12262
  @if (row.detail) {
12082
12263
  <span class="section-filter-menu__detail">{{ row.detail }}</span>
12083
12264
  }
@@ -12086,7 +12267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12086
12267
  }
12087
12268
  </ul>
12088
12269
  }
12089
- `, imports: [IconComponent, ButtonComponent, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'section-filter-menu' }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;background:var(--m-background);border:1px solid var(--m-mm);width:260px;max-height:20rem;overflow-y:auto}.section-filter-menu__rows{list-style:none;margin:0;padding:0}.section-filter-menu__row{display:flex;align-items:center;gap:.5em;padding:.6rem .9rem;cursor:pointer;font-size:.875rem;color:var(--m-text);transition:all .3s cubic-bezier(.16,1,.3,1);outline:none}.section-filter-menu__row:hover,.section-filter-menu__row:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__row.is-selected{color:var(--m-mm);font-weight:500}.section-filter-menu__row m-icon{--m-icon-size: .875em;margin-left:auto;display:flex}.section-filter-menu__label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.section-filter-menu__detail{font-size:.75rem;color:var(--m-text-secondary);flex-shrink:0}.section-filter-menu__back{display:flex;align-items:center;gap:.5em;width:100%;padding:.6rem .9rem;background:transparent;border:none;border-bottom:1px solid var(--m-backdrop-border);font:inherit;font-size:.875rem;color:var(--m-text);cursor:pointer;outline:none}.section-filter-menu__back:hover,.section-filter-menu__back:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__back m-icon{--m-icon-size: .875em;display:flex}.section-filter-menu__panel{display:block;--m-filter-panel-border: none;--m-filter-panel-bg: transparent;--m-filter-panel-animation: none;--m-filter-panel-max-height: none}\n"] }]
12270
+ `, imports: [IconComponent, ButtonComponent, BadgeComponent, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'section-filter-menu' }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;background:var(--m-background);border:1px solid var(--m-mm);width:260px;max-height:20rem;overflow-y:auto}.section-filter-menu__rows{list-style:none;margin:0;padding:0}.section-filter-menu__row{display:flex;align-items:center;gap:.5em;padding:.6rem .9rem;cursor:pointer;font-size:.875rem;color:var(--m-text);transition:all .3s cubic-bezier(.16,1,.3,1);outline:none}.section-filter-menu__row:hover,.section-filter-menu__row:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__row.is-selected{color:var(--m-mm);font-weight:500}.section-filter-menu__row m-icon{--m-icon-size: .875em;margin-left:auto;display:flex}.section-filter-menu__name{position:relative;display:inline-flex;align-items:center;min-width:0;padding-right:.4rem}.section-filter-menu__name m-badge{pointer-events:none;--M-BADGE-color: var(--m-error);--m-badge-size: .6rem;--m-badge-height: .9rem;--m-badge-min-width: .9rem}.section-filter-menu__label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.section-filter-menu__clear{display:flex;flex-shrink:0;--m-button-size: .75rem;--m-button-color: var(--m-mm);opacity:.7}.section-filter-menu__clear:hover{opacity:1}.section-filter-menu__detail{font-size:.75rem;color:var(--m-text-secondary);flex-shrink:0}.section-filter-menu__back{display:flex;align-items:center;gap:.5em;width:100%;padding:.6rem .9rem;background:transparent;border:none;border-bottom:1px solid var(--m-backdrop-border);font:inherit;font-size:.875rem;color:var(--m-text);cursor:pointer;outline:none}.section-filter-menu__back:hover,.section-filter-menu__back:focus-visible{background-color:var(--m-backdrop-standard)}.section-filter-menu__back m-icon{--m-icon-size: .875em;display:flex}.section-filter-menu__panel{display:block;--m-filter-panel-border: none;--m-filter-panel-bg: transparent;--m-filter-panel-animation: none;--m-filter-panel-max-height: none}\n"] }]
12090
12271
  }], ctorParameters: () => [], propDecorators: { members: [{ type: i0.Input, args: [{ isSignal: true, alias: "members", required: false }] }], ctx: [{ type: i0.Input, args: [{ isSignal: true, alias: "ctx", required: false }] }], panelHost: [{ type: i0.ViewChild, args: ['panelHost', { ...{
12091
12272
  read: ViewContainerRef,
12092
12273
  }, isSignal: true }] }] } });
@@ -12236,6 +12417,9 @@ class SectionFilterGroupComponent {
12236
12417
  toggle: this.toggle,
12237
12418
  setRange: this.setRange,
12238
12419
  remove: (name, val) => this.write(name, this.valueOf(name).filter((v) => v !== val)),
12420
+ // An empty list is how `write` deletes a key, so clearing is the same act
12421
+ // for every variant — no range/option split to keep in step here.
12422
+ clear: (name) => this.write(name, []),
12239
12423
  };
12240
12424
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12241
12425
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionFilterGroupComponent, isStandalone: true, selector: "m-section-filter-group", inputs: { squeeze: { classPropertyName: "squeeze", publicName: "squeeze", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, paddingX: { classPropertyName: "paddingX", publicName: "paddingX", isSignal: true, isRequired: false, transformFunction: null }, paddingY: { classPropertyName: "paddingY", publicName: "paddingY", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", filterChange: "filterChange" }, host: { properties: { "class.is-squeezed": "squeezed()", "class.has-padding": "resolvedPadding()", "class.has-padding-x": "resolvedPaddingX()", "class.has-padding-y": "resolvedPaddingY()", "class.align-left": "resolvedAlign() === \"left\"", "class.align-center": "resolvedAlign() === \"center\"", "class.align-right": "resolvedAlign() === \"right\"", "class.no-border": "noBorder()", "class.is-design-mode": "isDesignMode", "style.--m-filter-group-max-width": "resolvedMaxWidth()" }, classAttribute: "m-section-filter-group" }, providers: [
@@ -19512,6 +19696,14 @@ class WrapperInputComponent extends ConfigComponent {
19512
19696
  // it is picked up here and handed down as that input.
19513
19697
  projectedTemplate = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "projectedTemplate" }] : /* istanbul ignore next */ []));
19514
19698
  cardTemplate = computed(() => this.template() ?? this.projectedTemplate(), ...(ngDevMode ? [{ debugName: "cardTemplate" }] : /* istanbul ignore next */ []));
19699
+ /**
19700
+ * Merged into `config()` rather than passed on: this wrapper hands its whole
19701
+ * config to a dynamically created input, so a value kept beside it would
19702
+ * never reach the field. For a host drawing one shared field asset in two
19703
+ * places that need to say different things — an unset one leaves whatever
19704
+ * the asset set.
19705
+ */
19706
+ placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
19515
19707
  aclResolver = input(undefined, ...(ngDevMode ? [{ debugName: "aclResolver" }] : /* istanbul ignore next */ []));
19516
19708
  formValues = input(undefined, ...(ngDevMode ? [{ debugName: "formValues" }] : /* istanbul ignore next */ []));
19517
19709
  act = output();
@@ -19618,6 +19810,12 @@ class WrapperInputComponent extends ConfigComponent {
19618
19810
  this.fieldType.emit(type);
19619
19811
  });
19620
19812
  }
19813
+ resolveComponentOverrides() {
19814
+ const placeholder = this.placeholder();
19815
+ // Skipped when unset rather than written as undefined: writing it would
19816
+ // blank whatever placeholder the asset underneath had.
19817
+ return (placeholder === undefined ? {} : { placeholder });
19818
+ }
19621
19819
  ngOnDestroy() {
19622
19820
  // Deliberately no componentRef.destroy(): Angular tears down anything
19623
19821
  // created through a ViewContainerRef along with the view holding that
@@ -19734,7 +19932,7 @@ class WrapperInputComponent extends ConfigComponent {
19734
19932
  break;
19735
19933
  }
19736
19934
  case InputType.TOGGLE: {
19737
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-OB-u7l7C.mjs');
19935
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CsuV_RXV.mjs');
19738
19936
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
19739
19937
  break;
19740
19938
  }
@@ -19746,12 +19944,12 @@ class WrapperInputComponent extends ConfigComponent {
19746
19944
  break;
19747
19945
  }
19748
19946
  case InputType.PASSWORD: {
19749
- const { PasswordInputComponent } = await import('./magmonium-one-password-C_iu89uG.mjs');
19947
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Cr3XxtEj.mjs');
19750
19948
  this.createDynamicComponent(seq, PasswordInputComponent);
19751
19949
  break;
19752
19950
  }
19753
19951
  case InputType.OTP: {
19754
- const { OtpInputComponent } = await import('./magmonium-one-otp-CGJwpx2O.mjs');
19952
+ const { OtpInputComponent } = await import('./magmonium-one-otp-DeUCHCNZ.mjs');
19755
19953
  this.createDynamicComponent(seq, OtpInputComponent);
19756
19954
  break;
19757
19955
  }
@@ -19837,7 +20035,7 @@ class WrapperInputComponent extends ConfigComponent {
19837
20035
  }
19838
20036
  };
19839
20037
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: WrapperInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19840
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: WrapperInputComponent, isStandalone: true, selector: "m-input-wrapper", inputs: { remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, aclResolver: { classPropertyName: "aclResolver", publicName: "aclResolver", isSignal: true, isRequired: false, transformFunction: null }, formValues: { classPropertyName: "formValues", publicName: "formValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", state: "stateChange", act: "act", fieldKey: "fieldKey", fieldType: "fieldType" }, host: { properties: { "style.display": "isVisible() ? null : \"none\"" } }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dynamicInput", first: true, predicate: ["dynamicInput"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
20038
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: WrapperInputComponent, isStandalone: true, selector: "m-input-wrapper", inputs: { remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, dir: { classPropertyName: "dir", publicName: "dir", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, aclResolver: { classPropertyName: "aclResolver", publicName: "aclResolver", isSignal: true, isRequired: false, transformFunction: null }, formValues: { classPropertyName: "formValues", publicName: "formValues", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", state: "stateChange", act: "act", fieldKey: "fieldKey", fieldType: "fieldType" }, host: { properties: { "style.display": "isVisible() ? null : \"none\"" } }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dynamicInput", first: true, predicate: ["dynamicInput"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
19841
20039
  @if (isVisible()) {
19842
20040
  <div
19843
20041
  class="m-input-wrapper"
@@ -19900,7 +20098,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
19900
20098
  </div>
19901
20099
  }
19902
20100
  `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.m-input-wrapper{display:flex;align-items:flex-end;gap:calc(var(--input-size, 1em) * .375);width:100%}.m-input-wrapper--has-label{padding-top:var(--m-input-wrapper-label-padding-top, .5em )}.m-input-wrapper--inline{align-items:center;padding-top:0;min-height:0}.m-input-wrapper--readonly .m-dynamic-input{opacity:.6;filter:grayscale(.5);pointer-events:none;cursor:not-allowed}.m-input-wrapper--readonly .m-dynamic-input,.m-input-wrapper--readonly .m-dynamic-input *{animation:none!important;transition:none!important;box-shadow:none!important}.m-input-wrapper .m-button{flex-shrink:0;--m-button-size: var(--input-size, 1em);--m-icon-size: calc(var(--input-size, 1em) * 1.1)}.m-dynamic-input{flex:1;min-width:0}\n"] }]
19903
- }], ctorParameters: () => [], propDecorators: { remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], aclResolver: [{ type: i0.Input, args: [{ isSignal: true, alias: "aclResolver", required: false }] }], formValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "formValues", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], fieldKey: [{ type: i0.Output, args: ["fieldKey"] }], fieldType: [{ type: i0.Output, args: ["fieldType"] }], dynamicInput: [{ type: i0.ViewChild, args: ['dynamicInput', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
20101
+ }], ctorParameters: () => [], propDecorators: { remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], dir: [{ type: i0.Input, args: [{ isSignal: true, alias: "dir", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], aclResolver: [{ type: i0.Input, args: [{ isSignal: true, alias: "aclResolver", required: false }] }], formValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "formValues", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], fieldKey: [{ type: i0.Output, args: ["fieldKey"] }], fieldType: [{ type: i0.Output, args: ["fieldType"] }], dynamicInput: [{ type: i0.ViewChild, args: ['dynamicInput', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
19904
20102
 
19905
20103
  const RADIO_COMPONENT = new InjectionToken('RADIO_COMPONENT', { factory: () => RadioInputComponent });
19906
20104
 
@@ -21508,7 +21706,7 @@ class FormGroupComponent extends ConfigComponent {
21508
21706
  }
21509
21707
  }
21510
21708
  </div>
21511
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.form-group{display:flex;flex-direction:column;gap:var(--m-form-group-gap, 1.5rem)}.form-group__header{display:flex;flex-direction:column;gap:4px;margin-bottom:.5rem}.form-group__subtitle{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;opacity:.5;color:var(--mm-color, #ffd700)}.form-group__title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em;opacity:.9}.form-group__content{display:flex;flex-wrap:wrap;gap:var(--m-form-group-content-gap, 1rem 1.25rem)}.form-group__content>*{flex:1 1 100%;min-width:0}.form-group__content>.col-1{flex:1 1 calc(1 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-2{flex:2 1 calc(2 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-3{flex:3 1 calc(.25*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-4{flex:4 1 calc(4 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-5{flex:5 1 calc(5 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-6{flex:6 1 calc(.5*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-7{flex:7 1 calc(7 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-8{flex:8 1 calc(8 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-9{flex:9 1 calc(.75*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-10{flex:10 1 calc(10 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-11{flex:11 1 calc(11 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-12{flex:12 1 calc(1*(100% + 1.25rem) - 1.25rem)}@media(max-width:480px){.form-group__content>*{flex-basis:100%}}:host(.m-form--compact) .form-group{gap:.5rem}:host(.m-form--compact) .form-group__content{display:block;gap:0}\n"], dependencies: [{ kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21709
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.form-group{display:flex;flex-direction:column;gap:var(--m-form-group-gap, 1.5rem)}.form-group__header{display:flex;flex-direction:column;gap:4px;margin-bottom:.5rem}.form-group__subtitle{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;opacity:.5;color:var(--mm-color, #ffd700)}.form-group__title{font-size:1.25rem;font-weight:700;letter-spacing:-.01em;opacity:.9}.form-group__content{display:flex;flex-wrap:wrap;gap:var(--m-form-group-content-gap, 1rem 1.25rem)}.form-group__content>*{flex:1 1 100%;min-width:0}.form-group__content>.col-1{flex:1 1 calc(1 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-2{flex:2 1 calc(2 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-3{flex:3 1 calc(.25*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-4{flex:4 1 calc(4 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-5{flex:5 1 calc(5 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-6{flex:6 1 calc(.5*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-7{flex:7 1 calc(7 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-8{flex:8 1 calc(8 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-9{flex:9 1 calc(.75*(100% + 1.25rem) - 1.25rem)}.form-group__content>.col-10{flex:10 1 calc(10 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-11{flex:11 1 calc(11 * (100% + 1.25rem) / 12 - 1.25rem)}.form-group__content>.col-12{flex:12 1 calc(1*(100% + 1.25rem) - 1.25rem)}@media(max-width:480px){.form-group__content>*{flex-basis:100%}}:host(.m-form--compact) .form-group{gap:.5rem}:host(.m-form--compact) .form-group__content{display:block;gap:0}\n"], dependencies: [{ kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "placeholder", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21512
21710
  }
21513
21711
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FormGroupComponent, decorators: [{
21514
21712
  type: Component,
@@ -25366,7 +25564,7 @@ class TableComponent extends ConfigComponent {
25366
25564
  </div>
25367
25565
  }
25368
25566
  </div>
25369
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: TableBodyComponent, selector: "m-table-body", inputs: ["rows", "visibleColumns", "fixedCount", "fixedOffset", "searchQuery", "currency", "rowClass", "emptyMessage", "rowTestId", "actionVisibilityRule", "actionDisableRule", "selectable", "selectedRows", "selectDisableExpression", "expressionContext"], outputs: ["rowSelect", "cellChanged", "rowMenuClick", "cellClick"] }, { kind: "component", type: PaginationComponent, selector: "m-pagination, m-one-pagination", inputs: ["config", "totalPages", "totalItems", "pageSize", "page"], outputs: ["configChange", "pageChange"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: TableFilterComponent, selector: "m-table-filter", inputs: ["filters", "data", "activeFilterIndices", "expressionContext"], outputs: ["filterClick"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
25567
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: TableBodyComponent, selector: "m-table-body", inputs: ["rows", "visibleColumns", "fixedCount", "fixedOffset", "searchQuery", "currency", "rowClass", "emptyMessage", "rowTestId", "actionVisibilityRule", "actionDisableRule", "selectable", "selectedRows", "selectDisableExpression", "expressionContext"], outputs: ["rowSelect", "cellChanged", "rowMenuClick", "cellClick"] }, { kind: "component", type: PaginationComponent, selector: "m-pagination, m-one-pagination", inputs: ["config", "totalPages", "totalItems", "pageSize", "page"], outputs: ["configChange", "pageChange"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "placeholder", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "component", type: TableFilterComponent, selector: "m-table-filter", inputs: ["filters", "data", "activeFilterIndices", "expressionContext"], outputs: ["filterClick"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
25370
25568
  }
25371
25569
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TableComponent, decorators: [{
25372
25570
  type: Component,
@@ -25513,7 +25711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
25513
25711
  </div>
25514
25712
  }
25515
25713
  </div>
25516
- `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"] }]
25714
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}\n"] }]
25517
25715
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], expressionContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "expressionContext", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], mobileComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileComponent", required: false }] }], rowClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowClass", required: false }] }], actionVisibilityRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionVisibilityRule", required: false }] }], actionDisableRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionDisableRule", required: false }] }], cellClicked: [{ type: i0.Output, args: ["cellClicked"] }], contextMenuClicked: [{ type: i0.Output, args: ["contextMenuClicked"] }], cellChanged: [{ type: i0.Output, args: ["cellChanged"] }], pageChanged: [{ type: i0.Output, args: ["pageChanged"] }], sortChanged: [{ type: i0.Output, args: ["sortChanged"] }], searchChanged: [{ type: i0.Output, args: ["searchChanged"] }], selectionChanged: [{ type: i0.Output, args: ["selectionChanged"] }], selectionActionClicked: [{ type: i0.Output, args: ["selectionActionClicked"] }], hiddenColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenColumns", required: false }] }], activeFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeFilter", required: false }] }] } });
25518
25716
 
25519
25717
  const rowHasChildren = (row) => !!row.hasNode || (row.child?.length ?? 0) > 0;
@@ -25623,6 +25821,97 @@ const cellTitle = (row, colIndex) => {
25623
25821
  }
25624
25822
  return undefined;
25625
25823
  };
25824
+ const matchesQuery = (text, query) => text.toLowerCase().includes(query.toLowerCase());
25825
+ /**
25826
+ * A label cut into the run that matched and the runs that did not, so the grid
25827
+ * can mark the match with elements instead of `innerHTML` — one of the strings
25828
+ * a tree renders is markup a User pasted, and interpolation is what makes
25829
+ * showing it safe. Every occurrence is marked, not only the first.
25830
+ */
25831
+ const splitOnMatch = (text, query) => {
25832
+ if (!query)
25833
+ return [{ text, isMatch: false }];
25834
+ const haystack = text.toLowerCase();
25835
+ const needle = query.toLowerCase();
25836
+ const segments = [];
25837
+ let from = 0;
25838
+ for (;;) {
25839
+ const at = haystack.indexOf(needle, from);
25840
+ if (at === -1)
25841
+ break;
25842
+ if (at > from)
25843
+ segments.push({ text: text.slice(from, at), isMatch: false });
25844
+ segments.push({ text: text.slice(at, at + needle.length), isMatch: true });
25845
+ from = at + needle.length;
25846
+ }
25847
+ if (segments.length === 0)
25848
+ return [{ text, isMatch: false }];
25849
+ if (from < text.length)
25850
+ segments.push({ text: text.slice(from), isMatch: false });
25851
+ return segments;
25852
+ };
25853
+ /** Maps every node of a kept-whole subtree, which mirrors its source 1:1. */
25854
+ const registerSubtree = (rows, source, display, sourcePaths) => {
25855
+ rows.forEach((row, index) => {
25856
+ const nextSource = [...source, index];
25857
+ const nextDisplay = [...display, index];
25858
+ sourcePaths.set(nextDisplay.join('.'), nextSource);
25859
+ registerSubtree(row.child ?? [], nextSource, nextDisplay, sourcePaths);
25860
+ });
25861
+ };
25862
+ const walk = (rows, query, labelIndex, source, display, sourcePaths) => {
25863
+ const kept = [];
25864
+ rows.forEach((row, index) => {
25865
+ const nextSource = [...source, index];
25866
+ // The display index is where this row would land, which is only its source
25867
+ // index while no earlier sibling has been dropped.
25868
+ const nextDisplay = [...display, kept.length];
25869
+ const children = row.child ?? [];
25870
+ // A node that matches on its own name comes through with its subtree
25871
+ // whole and its open state untouched: naming a folder is asking to see
25872
+ // inside it, and nothing beneath it is hidden because nothing beneath it
25873
+ // matched.
25874
+ if (matchesQuery(cellText(row.data, labelIndex), query)) {
25875
+ sourcePaths.set(nextDisplay.join('.'), nextSource);
25876
+ registerSubtree(children, nextSource, nextDisplay, sourcePaths);
25877
+ kept.push(row);
25878
+ return;
25879
+ }
25880
+ // Mapped into a scratch map first: a folder whose children all drop out
25881
+ // drops out itself, and the display indices its subtree was measured
25882
+ // against belong to whichever sibling takes its place.
25883
+ const childPaths = new Map();
25884
+ const keptChildren = walk(children, query, labelIndex, nextSource, nextDisplay, childPaths);
25885
+ if (keptChildren.length === 0)
25886
+ return;
25887
+ sourcePaths.set(nextDisplay.join('.'), nextSource);
25888
+ childPaths.forEach((value, key) => sourcePaths.set(key, value));
25889
+ // Opened because a match sits beneath it, and flagged so the grid draws no
25890
+ // chevron: a User who could collapse this row could hide the match the
25891
+ // query was typed for.
25892
+ kept.push({ ...row, isOpened: true, isForcedOpen: true, child: keptChildren });
25893
+ });
25894
+ return kept;
25895
+ };
25896
+ /**
25897
+ * The tree pruned to what a query matches, keeping its shape: a node survives
25898
+ * when its own name matches, when an ancestor's does, or when a descendant's
25899
+ * does — every other sibling and root goes. Matching is per segment, on the
25900
+ * label column only, so a node's own name is compared and never its path.
25901
+ *
25902
+ * Only loaded rows are searched. A node whose children have not been fetched
25903
+ * (`hasNode` with no `child`) cannot be looked into, which is what the grid's
25904
+ * `searchChanged` output is for.
25905
+ */
25906
+ const filterTreeGridRows = (rows, query, labelIndex = 0) => {
25907
+ if (!query)
25908
+ return { rows, sourcePaths: new Map() };
25909
+ const sourcePaths = new Map();
25910
+ return {
25911
+ rows: walk(rows, query, labelIndex, [], [], sourcePaths),
25912
+ sourcePaths,
25913
+ };
25914
+ };
25626
25915
 
25627
25916
  class TreeGridComponent extends ConfigComponent {
25628
25917
  subFolder = 'table';
@@ -25637,6 +25926,11 @@ class TreeGridComponent extends ConfigComponent {
25637
25926
  */
25638
25927
  keyIndex = input(0, ...(ngDevMode ? [{ debugName: "keyIndex" }] : /* istanbul ignore next */ []));
25639
25928
  selectedKey = model(undefined, ...(ngDevMode ? [{ debugName: "selectedKey" }] : /* istanbul ignore next */ []));
25929
+ /**
25930
+ * The query, owned here rather than bound: nothing sets a tree's search from
25931
+ * outside, and a `model()` would be API for a caller that does not exist.
25932
+ */
25933
+ searchQuery = signal('', ...(ngDevMode ? [{ debugName: "searchQuery" }] : /* istanbul ignore next */ []));
25640
25934
  rowToggled = output();
25641
25935
  /** Parent should resolve children and call setTreeGridChildren / patch data. */
25642
25936
  loadChildren = output();
@@ -25645,6 +25939,11 @@ class TreeGridComponent extends ConfigComponent {
25645
25939
  /** A `link` column's cell was activated. Selection is untouched — the click
25646
25940
  * never reaches the row. */
25647
25941
  cellClicked = output();
25942
+ /**
25943
+ * Every keystroke. The filter here only reaches loaded rows, so a caller
25944
+ * with lazily loaded children answers the query against its own source.
25945
+ */
25946
+ searchChanged = output();
25648
25947
  cellText = cellText;
25649
25948
  cellTitle = cellTitle;
25650
25949
  isLinkCell = isLinkCell;
@@ -25657,7 +25956,30 @@ class TreeGridComponent extends ConfigComponent {
25657
25956
  originalIndex: i,
25658
25957
  })), ...(ngDevMode ? [{ debugName: "visibleColumns" }] : /* istanbul ignore next */ []));
25659
25958
  effectiveFixedCount = computed(() => this.config()?.fixedColumns ?? 0, ...(ngDevMode ? [{ debugName: "effectiveFixedCount" }] : /* istanbul ignore next */ []));
25660
- displayRows = computed(() => flattenTreeGridRows(this.data()), ...(ngDevMode ? [{ debugName: "displayRows" }] : /* istanbul ignore next */ []));
25959
+ /** Which slot the query is compared against: the tree column's own label. */
25960
+ labelIndex = computed(() => this.visibleColumns()[0]?.originalIndex ?? 0, ...(ngDevMode ? [{ debugName: "labelIndex" }] : /* istanbul ignore next */ []));
25961
+ filtered = computed(() => filterTreeGridRows(this.data(), this.searchQuery().trim(), this.labelIndex()), ...(ngDevMode ? [{ debugName: "filtered" }] : /* istanbul ignore next */ []));
25962
+ displayRows = computed(() => flattenTreeGridRows(this.filtered().rows), ...(ngDevMode ? [{ debugName: "displayRows" }] : /* istanbul ignore next */ []));
25963
+ emptyMessage = computed(() => {
25964
+ const config = this.config();
25965
+ if (this.searchQuery().trim())
25966
+ return config?.searchEmptyMessage ?? config?.emptyMessage ?? '—';
25967
+ return config?.emptyMessage ?? '—';
25968
+ }, ...(ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []));
25969
+ labelSegments = (data, index) =>
25970
+ // The dash is split too, so an empty label reads the same filtered as not.
25971
+ splitOnMatch(cellText(data, index) || '—', this.searchQuery().trim());
25972
+ /**
25973
+ * A displayed path back to the path the caller's own data has. They differ
25974
+ * for as long as a query stands, and every event carries the source one —
25975
+ * a filtered index means nothing to a caller holding the whole tree.
25976
+ */
25977
+ sourcePath = (displayPath) => this.filtered().sourcePaths.get(displayPath.join('.')) ?? displayPath;
25978
+ onSearch = (value) => {
25979
+ const query = String(value ?? '');
25980
+ this.searchQuery.set(query);
25981
+ this.searchChanged.emit({ query });
25982
+ };
25661
25983
  fixedOffsetFn = computed(() => (visibleColIndex) => {
25662
25984
  const cols = this.visibleColumns();
25663
25985
  const fixedCount = this.effectiveFixedCount();
@@ -25690,7 +26012,8 @@ class TreeGridComponent extends ConfigComponent {
25690
26012
  return { options: val };
25691
26013
  return { options: col.menuOptions ?? [] };
25692
26014
  };
25693
- onToggle = (path) => {
26015
+ onToggle = (displayPath) => {
26016
+ const path = this.sourcePath(displayPath);
25694
26017
  const before = getTreeGridRow(this.data(), path);
25695
26018
  if (!before)
25696
26019
  return;
@@ -25709,39 +26032,60 @@ class TreeGridComponent extends ConfigComponent {
25709
26032
  this.loadChildren.emit({ path, row: after });
25710
26033
  }
25711
26034
  };
25712
- onRowClick = (row, path) => {
26035
+ onRowClick = (row, displayPath) => {
25713
26036
  const key = this.rowKey(row);
25714
26037
  this.selectedKey.set(key || undefined);
25715
- this.rowSelected.emit({ path, row, key });
26038
+ this.rowSelected.emit({ path: this.sourcePath(displayPath), row, key });
25716
26039
  };
25717
26040
  // Stops the click: a link cell answers for itself, and letting it bubble
25718
26041
  // would select the row on the way to opening whatever the link points at.
25719
- onCellClick = (row, path, col, event) => {
26042
+ onCellClick = (row, displayPath, col, event) => {
25720
26043
  event.stopPropagation();
25721
26044
  this.cellClicked.emit({
25722
- path,
26045
+ path: this.sourcePath(displayPath),
25723
26046
  row,
25724
26047
  columnKey: col.key,
25725
26048
  value: cellKey(row.data, col.originalIndex ?? 0),
25726
26049
  });
25727
26050
  };
25728
- onMenuAction = (row, path, item) => {
26051
+ onMenuAction = (row, displayPath, item) => {
25729
26052
  if (!item.id)
25730
26053
  return;
25731
- this.menuAction.emit({ row, path, actionId: item.id });
26054
+ this.menuAction.emit({ row, path: this.sourcePath(displayPath), actionId: item.id });
25732
26055
  };
25733
26056
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TreeGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
25734
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TreeGridComponent, isStandalone: true, selector: "m-tree-grid", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, indentRem: { classPropertyName: "indentRem", publicName: "indentRem", isSignal: true, isRequired: false, transformFunction: null }, keyIndex: { classPropertyName: "keyIndex", publicName: "keyIndex", isSignal: true, isRequired: false, transformFunction: null }, selectedKey: { classPropertyName: "selectedKey", publicName: "selectedKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", data: "dataChange", selectedKey: "selectedKeyChange", rowToggled: "rowToggled", loadChildren: "loadChildren", rowSelected: "rowSelected", menuAction: "menuAction", cellClicked: "cellClicked" }, host: { properties: { "style.--m-tree-grid-indent": "indentRem() + \"rem\"" } }, usesInheritance: true, ngImport: i0, template: `
26057
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: TreeGridComponent, isStandalone: true, selector: "m-tree-grid", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, indentRem: { classPropertyName: "indentRem", publicName: "indentRem", isSignal: true, isRequired: false, transformFunction: null }, keyIndex: { classPropertyName: "keyIndex", publicName: "keyIndex", isSignal: true, isRequired: false, transformFunction: null }, selectedKey: { classPropertyName: "selectedKey", publicName: "selectedKey", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", data: "dataChange", selectedKey: "selectedKeyChange", rowToggled: "rowToggled", loadChildren: "loadChildren", rowSelected: "rowSelected", menuAction: "menuAction", cellClicked: "cellClicked", searchChanged: "searchChanged" }, host: { properties: { "style.--m-tree-grid-indent": "indentRem() + \"rem\"" } }, usesInheritance: true, ngImport: i0, template: `
25735
26058
  <div [class]="'m-table m-tree-grid ' + variantClass()">
25736
26059
  @if (loading()) {
25737
26060
  <m-freeze />
25738
26061
  }
25739
26062
 
25740
- @if (config()?.title) {
26063
+ @if (config()?.title || config()?.searchable) {
25741
26064
  <div class="m-table__toolbar">
25742
- <div class="m-table__title">
25743
- <m-header [level]="3" [label]="config()?.title" />
25744
- </div>
26065
+ @if (config()?.title) {
26066
+ <div class="m-table__title">
26067
+ <m-header [level]="3" [label]="config()?.title" />
26068
+ </div>
26069
+ }
26070
+ @if (config()?.searchable) {
26071
+ <!-- asset: fields/tree_search.yml -->
26072
+ <!-- Escape clears alongside the field's own native clear: a
26073
+ filter hides rows, and a User who cannot find the way back
26074
+ reads it as the files having gone. -->
26075
+ <div
26076
+ class="m-table__search"
26077
+ [style.max-width.px]="config()?.searchMaxWidth || null"
26078
+ >
26079
+ <m-input-wrapper
26080
+ name="tree_search"
26081
+ [one]="true"
26082
+ [value]="searchQuery()"
26083
+ [placeholder]="config()?.searchPlaceholder"
26084
+ (valueChange)="onSearch($event)"
26085
+ (keydown.escape)="onSearch('')"
26086
+ />
26087
+ </div>
26088
+ }
25745
26089
  </div>
25746
26090
  }
25747
26091
 
@@ -25785,7 +26129,7 @@ class TreeGridComponent extends ConfigComponent {
25785
26129
  >
25786
26130
  <span class="m-tree-grid__indent"></span>
25787
26131
  <span class="m-tree-grid__toggle">
25788
- @if (flat.hasChildren) {
26132
+ @if (flat.hasChildren && !flat.row.isForcedOpen) {
25789
26133
  <!-- Chevron, not plus/minus: this is disclosure,
25790
26134
  and a plus in a grid whose context menu really
25791
26135
  does add rows reads as the wrong verb. -->
@@ -25821,10 +26165,23 @@ class TreeGridComponent extends ConfigComponent {
25821
26165
  null
25822
26166
  "
25823
26167
  >
25824
- {{
25825
- cellText(flat.row.data, col.originalIndex ?? ci) ||
25826
- '—'
25827
- }}
26168
+ <!-- Elements, never innerHTML: one of the labels a
26169
+ tree renders is markup a User pasted. Each run
26170
+ is its own element so Angular's whitespace
26171
+ trimming cannot slip a space into a filename. -->
26172
+ @for (
26173
+ seg of labelSegments(
26174
+ flat.row.data,
26175
+ col.originalIndex ?? ci
26176
+ );
26177
+ track $index
26178
+ ) {
26179
+ @if (seg.isMatch) {
26180
+ <mark class="m-tree-grid__match">{{ seg.text }}</mark>
26181
+ } @else {
26182
+ <span>{{ seg.text }}</span>
26183
+ }
26184
+ }
25828
26185
  </span>
25829
26186
  } @else {
25830
26187
  <span
@@ -25837,10 +26194,23 @@ class TreeGridComponent extends ConfigComponent {
25837
26194
  null
25838
26195
  "
25839
26196
  >
25840
- {{
25841
- cellText(flat.row.data, col.originalIndex ?? ci) ||
25842
- '—'
25843
- }}
26197
+ <!-- Elements, never innerHTML: one of the labels a
26198
+ tree renders is markup a User pasted. Each run
26199
+ is its own element so Angular's whitespace
26200
+ trimming cannot slip a space into a filename. -->
26201
+ @for (
26202
+ seg of labelSegments(
26203
+ flat.row.data,
26204
+ col.originalIndex ?? ci
26205
+ );
26206
+ track $index
26207
+ ) {
26208
+ @if (seg.isMatch) {
26209
+ <mark class="m-tree-grid__match">{{ seg.text }}</mark>
26210
+ } @else {
26211
+ <span>{{ seg.text }}</span>
26212
+ }
26213
+ }
25844
26214
  </span>
25845
26215
  }
25846
26216
  </div>
@@ -25942,7 +26312,7 @@ class TreeGridComponent extends ConfigComponent {
25942
26312
  class="m-table-body__empty"
25943
26313
  [attr.colspan]="visibleColumns().length || 1"
25944
26314
  >
25945
- {{ config()?.emptyMessage ?? '—' | translate }}
26315
+ {{ emptyMessage() | translate }}
25946
26316
  </td>
25947
26317
  </tr>
25948
26318
  }
@@ -25950,7 +26320,7 @@ class TreeGridComponent extends ConfigComponent {
25950
26320
  </table>
25951
26321
  </div>
25952
26322
  </div>
25953
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}.m-table-thead__th{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 95%,transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);padding:1.25rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--m-text-tertiary);border-bottom:2px solid var(--m-backdrop-border);white-space:nowrap;transition:all .2s ease}.m-table-thead__th:hover{color:var(--m-text);background:var(--m-background)}@media(min-width:769px){.m-table-thead__th--fixed{z-index:20;background:var(--m-background)}}@media(max-width:768px){.m-table-thead__th--fixed{position:static;z-index:auto}}.m-table-thead__th--fixed{border-right:none}@media(min-width:769px){.m-table-thead__th--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-thead__th--fixed-last{border-right:none}}.m-table-thead__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.m-table-thead__th--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-thead__th--select input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);border-radius:3px;display:block;margin:0 auto}.m-table-thead__cell{display:flex;align-items:center;gap:.5rem}.m-table-thead__sort-icon{color:var(--m-mm);opacity:.6;transition:opacity .2s ease}.m-table-thead__th:hover .m-table-thead__sort-icon{opacity:1}.m-table-thead__menu-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:auto;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:6px;opacity:0;transition:all .15ms ease}.m-table-thead__menu-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-thead__th:hover .m-table-thead__menu-btn{opacity:1}.m-table-body__row{transition:background-color .3s cubic-bezier(.4,0,.2,1);position:relative}.m-table-body__row:hover{background:color-mix(in srgb,var(--m-mm) 5%,transparent)}.m-table-body__row:hover .m-table-body__cell{background:inherit}.m-table-body__cell{padding:1rem 1.25rem;font-size:.875rem;color:var(--m-text);border-bottom:1px solid var(--m-backdrop-border);white-space:nowrap;vertical-align:middle;background:transparent;transition:background-color .3s ease}.m-table-body__cell[class*=--number],.m-table-body__cell[class*=--currency],.m-table-body__cell[class*=--percent]{font-family:Inter,Roboto Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media(min-width:769px){.m-table-body__cell--fixed{position:sticky;background:var(--m-background);z-index:5}}@media(max-width:768px){.m-table-body__cell--fixed{position:static;background:transparent;z-index:auto}}.m-table-body__cell--fixed{border-right:none;transition:background-color .3s ease}.m-table-body__row:hover .m-table-body__cell--fixed{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background));z-index:6}@media(min-width:769px){.m-table-body__cell--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-body__cell--fixed-last{border-right:none}}.m-table-body__cell--context-menu{padding-top:.35rem;padding-bottom:.35rem}.m-table-body__cell--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-body__cell--select input[type=checkbox],.m-table-body__cell--select input[type=radio]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);display:block;margin:0 auto}.m-table-body__input{border:none;border-bottom:2px solid var(--m-backdrop-border);background:transparent;font-size:.875rem;color:var(--m-text);padding:.25rem;outline:none;width:100%;transition:border-bottom-color .2s ease}.m-table-body__input:focus{border-bottom-color:var(--m-mm)}.m-table-body__action-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:8px;transition:all .2s ease}.m-table-body__action-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-body__empty{text-align:center;padding:4rem;color:var(--m-text-tertiary);font-size:1rem;font-weight:500;letter-spacing:.02em;font-style:italic;opacity:.7}.m-table-body__link{color:var(--m-mm);text-decoration:none;cursor:pointer;font-weight:600;transition:color .2s ease}.m-table-body__link:hover{text-decoration:underline;color:var(--m-mm-lite)}.m-table-body__value{padding:.25rem .5rem;border-radius:6px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.m-table-body__value--positive{color:var(--m-success);background:var(--m-backdrop-success)}.m-table-body__value--negative{color:var(--m-error);background:var(--m-backdrop-error)}.m-table-body__dash{color:var(--m-text-tertiary);font-weight:400;font-style:italic;opacity:.8}.m-tree-grid{--m-tree-grid-icon: .75rem}.m-tree-grid .m-table-thead__th,.m-tree-grid .m-table-body__cell{padding:.375rem .5rem}.m-tree-grid .m-table-thead__th{font-size:.6875rem;letter-spacing:.06em;border-bottom-width:1px}.m-tree-grid__tree-cell{display:flex;align-items:center;gap:0;min-width:0}.m-tree-grid__indent{flex:0 0 auto;width:calc(var(--m-tree-grid-depth, 0) * var(--m-tree-grid-indent, var(--m-tree-grid-icon)))}.m-tree-grid__toggle{flex:0 0 auto;width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);display:inline-flex;align-items:center;justify-content:center}.m-tree-grid__toggle m-button{--m-button-size: .333rem}.m-tree-grid__toggle-spacer{width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);flex:0 0 auto}.m-tree-grid__lead-icon{flex:0 0 auto;display:inline-flex;align-items:center;margin-left:.125rem;opacity:.75}.m-tree-grid__lead-icon m-icon{--m-icon-size: .75rem}.m-tree-grid__label{min-width:0;margin-left:.25rem;overflow:hidden;text-overflow:ellipsis;font-size:.875em;line-height:1.25}.m-tree-grid .m-table-body__row{cursor:pointer}.m-tree-grid .m-table-body__row--selected{background:color-mix(in srgb,var(--m-mm) 12%,transparent)}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ContextMenuComponent, selector: "m-context-menu, m-one-context-menu", inputs: ["toggle", "remote", "exclude", "visibilityRule", "disableRule", "extraData", "inverted"], outputs: ["toggleChange", "action"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
26323
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}.m-table-thead__th{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 95%,transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);padding:1.25rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--m-text-tertiary);border-bottom:2px solid var(--m-backdrop-border);white-space:nowrap;transition:all .2s ease}.m-table-thead__th:hover{color:var(--m-text);background:var(--m-background)}@media(min-width:769px){.m-table-thead__th--fixed{z-index:20;background:var(--m-background)}}@media(max-width:768px){.m-table-thead__th--fixed{position:static;z-index:auto}}.m-table-thead__th--fixed{border-right:none}@media(min-width:769px){.m-table-thead__th--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-thead__th--fixed-last{border-right:none}}.m-table-thead__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.m-table-thead__th--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-thead__th--select input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);border-radius:3px;display:block;margin:0 auto}.m-table-thead__cell{display:flex;align-items:center;gap:.5rem}.m-table-thead__sort-icon{color:var(--m-mm);opacity:.6;transition:opacity .2s ease}.m-table-thead__th:hover .m-table-thead__sort-icon{opacity:1}.m-table-thead__menu-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:auto;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:6px;opacity:0;transition:all .15ms ease}.m-table-thead__menu-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-thead__th:hover .m-table-thead__menu-btn{opacity:1}.m-table-body__row{transition:background-color .3s cubic-bezier(.4,0,.2,1);position:relative}.m-table-body__row:hover{background:color-mix(in srgb,var(--m-mm) 5%,transparent)}.m-table-body__row:hover .m-table-body__cell{background:inherit}.m-table-body__cell{padding:1rem 1.25rem;font-size:.875rem;color:var(--m-text);border-bottom:1px solid var(--m-backdrop-border);white-space:nowrap;vertical-align:middle;background:transparent;transition:background-color .3s ease}.m-table-body__cell[class*=--number],.m-table-body__cell[class*=--currency],.m-table-body__cell[class*=--percent]{font-family:Inter,Roboto Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media(min-width:769px){.m-table-body__cell--fixed{position:sticky;background:var(--m-background);z-index:5}}@media(max-width:768px){.m-table-body__cell--fixed{position:static;background:transparent;z-index:auto}}.m-table-body__cell--fixed{border-right:none;transition:background-color .3s ease}.m-table-body__row:hover .m-table-body__cell--fixed{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background));z-index:6}@media(min-width:769px){.m-table-body__cell--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-body__cell--fixed-last{border-right:none}}.m-table-body__cell--context-menu{padding-top:.35rem;padding-bottom:.35rem}.m-table-body__cell--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-body__cell--select input[type=checkbox],.m-table-body__cell--select input[type=radio]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);display:block;margin:0 auto}.m-table-body__input{border:none;border-bottom:2px solid var(--m-backdrop-border);background:transparent;font-size:.875rem;color:var(--m-text);padding:.25rem;outline:none;width:100%;transition:border-bottom-color .2s ease}.m-table-body__input:focus{border-bottom-color:var(--m-mm)}.m-table-body__action-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:8px;transition:all .2s ease}.m-table-body__action-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-body__empty{text-align:center;padding:4rem;color:var(--m-text-tertiary);font-size:1rem;font-weight:500;letter-spacing:.02em;font-style:italic;opacity:.7}.m-table-body__link{color:var(--m-mm);text-decoration:none;cursor:pointer;font-weight:600;transition:color .2s ease}.m-table-body__link:hover{text-decoration:underline;color:var(--m-mm-lite)}.m-table-body__value{padding:.25rem .5rem;border-radius:6px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.m-table-body__value--positive{color:var(--m-success);background:var(--m-backdrop-success)}.m-table-body__value--negative{color:var(--m-error);background:var(--m-backdrop-error)}.m-table-body__dash{color:var(--m-text-tertiary);font-weight:400;font-style:italic;opacity:.8}.m-tree-grid{--m-tree-grid-icon: .75rem}.m-tree-grid .m-table-thead__th,.m-tree-grid .m-table-body__cell{padding:.375rem .5rem}.m-tree-grid .m-table-thead__th{font-size:.6875rem;letter-spacing:.06em;border-bottom-width:1px}.m-tree-grid__tree-cell{display:flex;align-items:center;gap:0;min-width:0}.m-tree-grid__indent{flex:0 0 auto;width:calc(var(--m-tree-grid-depth, 0) * var(--m-tree-grid-indent, var(--m-tree-grid-icon)))}.m-tree-grid__toggle{flex:0 0 auto;width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);display:inline-flex;align-items:center;justify-content:center}.m-tree-grid__toggle m-button{--m-button-size: .333rem}.m-tree-grid__toggle-spacer{width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);flex:0 0 auto}.m-tree-grid__lead-icon{flex:0 0 auto;display:inline-flex;align-items:center;margin-left:.125rem;opacity:.75}.m-tree-grid__lead-icon m-icon{--m-icon-size: .75rem}.m-tree-grid__label{min-width:0;margin-left:.25rem;overflow:hidden;text-overflow:ellipsis;font-size:.875em;line-height:1.25}.m-tree-grid .m-table-body__row{cursor:pointer}.m-tree-grid .m-table-body__row--selected{background:color-mix(in srgb,var(--m-mm) 12%,transparent)}.m-tree-grid .m-table__toolbar{padding:.5rem;background:var(--m-background)}.m-tree-grid .m-table__search{flex:1 1 auto;width:100%}.m-tree-grid .m-table__search m-input-wrapper,.m-tree-grid .m-table__search .m-input-wrapper{width:100%}.m-tree-grid__match{background:var(--m-highlight);padding:0;color:inherit;border-radius:2px}\n"], dependencies: [{ kind: "component", type: TableHeaderComponent, selector: "m-table-header", inputs: ["visibleColumns", "fixedCount", "fixedOffset", "sortState", "selectable", "allSelected", "someSelected"], outputs: ["sortClick", "selectAll"] }, { kind: "component", type: FreezeComponent, selector: "m-freeze", inputs: ["config"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ContextMenuComponent, selector: "m-context-menu, m-one-context-menu", inputs: ["toggle", "remote", "exclude", "visibilityRule", "disableRule", "extraData", "inverted"], outputs: ["toggleChange", "action"] }, { kind: "component", type: WrapperInputComponent, selector: "m-input-wrapper", inputs: ["remote", "value", "readonly", "state", "focused", "form", "options", "dir", "element", "data", "template", "placeholder", "aclResolver", "formValues"], outputs: ["valueChange", "stateChange", "act", "fieldKey", "fieldType"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
25954
26324
  }
25955
26325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TreeGridComponent, decorators: [{
25956
26326
  type: Component,
@@ -25962,6 +26332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
25962
26332
  HeaderComponent$1,
25963
26333
  IconComponent,
25964
26334
  ContextMenuComponent,
26335
+ WrapperInputComponent,
25965
26336
  ], host: {
25966
26337
  '[style.--m-tree-grid-indent]': 'indentRem() + "rem"',
25967
26338
  }, template: `
@@ -25970,11 +26341,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
25970
26341
  <m-freeze />
25971
26342
  }
25972
26343
 
25973
- @if (config()?.title) {
26344
+ @if (config()?.title || config()?.searchable) {
25974
26345
  <div class="m-table__toolbar">
25975
- <div class="m-table__title">
25976
- <m-header [level]="3" [label]="config()?.title" />
25977
- </div>
26346
+ @if (config()?.title) {
26347
+ <div class="m-table__title">
26348
+ <m-header [level]="3" [label]="config()?.title" />
26349
+ </div>
26350
+ }
26351
+ @if (config()?.searchable) {
26352
+ <!-- asset: fields/tree_search.yml -->
26353
+ <!-- Escape clears alongside the field's own native clear: a
26354
+ filter hides rows, and a User who cannot find the way back
26355
+ reads it as the files having gone. -->
26356
+ <div
26357
+ class="m-table__search"
26358
+ [style.max-width.px]="config()?.searchMaxWidth || null"
26359
+ >
26360
+ <m-input-wrapper
26361
+ name="tree_search"
26362
+ [one]="true"
26363
+ [value]="searchQuery()"
26364
+ [placeholder]="config()?.searchPlaceholder"
26365
+ (valueChange)="onSearch($event)"
26366
+ (keydown.escape)="onSearch('')"
26367
+ />
26368
+ </div>
26369
+ }
25978
26370
  </div>
25979
26371
  }
25980
26372
 
@@ -26018,7 +26410,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26018
26410
  >
26019
26411
  <span class="m-tree-grid__indent"></span>
26020
26412
  <span class="m-tree-grid__toggle">
26021
- @if (flat.hasChildren) {
26413
+ @if (flat.hasChildren && !flat.row.isForcedOpen) {
26022
26414
  <!-- Chevron, not plus/minus: this is disclosure,
26023
26415
  and a plus in a grid whose context menu really
26024
26416
  does add rows reads as the wrong verb. -->
@@ -26054,10 +26446,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26054
26446
  null
26055
26447
  "
26056
26448
  >
26057
- {{
26058
- cellText(flat.row.data, col.originalIndex ?? ci) ||
26059
- '—'
26060
- }}
26449
+ <!-- Elements, never innerHTML: one of the labels a
26450
+ tree renders is markup a User pasted. Each run
26451
+ is its own element so Angular's whitespace
26452
+ trimming cannot slip a space into a filename. -->
26453
+ @for (
26454
+ seg of labelSegments(
26455
+ flat.row.data,
26456
+ col.originalIndex ?? ci
26457
+ );
26458
+ track $index
26459
+ ) {
26460
+ @if (seg.isMatch) {
26461
+ <mark class="m-tree-grid__match">{{ seg.text }}</mark>
26462
+ } @else {
26463
+ <span>{{ seg.text }}</span>
26464
+ }
26465
+ }
26061
26466
  </span>
26062
26467
  } @else {
26063
26468
  <span
@@ -26070,10 +26475,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26070
26475
  null
26071
26476
  "
26072
26477
  >
26073
- {{
26074
- cellText(flat.row.data, col.originalIndex ?? ci) ||
26075
- '—'
26076
- }}
26478
+ <!-- Elements, never innerHTML: one of the labels a
26479
+ tree renders is markup a User pasted. Each run
26480
+ is its own element so Angular's whitespace
26481
+ trimming cannot slip a space into a filename. -->
26482
+ @for (
26483
+ seg of labelSegments(
26484
+ flat.row.data,
26485
+ col.originalIndex ?? ci
26486
+ );
26487
+ track $index
26488
+ ) {
26489
+ @if (seg.isMatch) {
26490
+ <mark class="m-tree-grid__match">{{ seg.text }}</mark>
26491
+ } @else {
26492
+ <span>{{ seg.text }}</span>
26493
+ }
26494
+ }
26077
26495
  </span>
26078
26496
  }
26079
26497
  </div>
@@ -26175,7 +26593,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26175
26593
  class="m-table-body__empty"
26176
26594
  [attr.colspan]="visibleColumns().length || 1"
26177
26595
  >
26178
- {{ config()?.emptyMessage ?? '—' | translate }}
26596
+ {{ emptyMessage() | translate }}
26179
26597
  </td>
26180
26598
  </tr>
26181
26599
  }
@@ -26183,8 +26601,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
26183
26601
  </table>
26184
26602
  </div>
26185
26603
  </div>
26186
- `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}.m-table-thead__th{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 95%,transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);padding:1.25rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--m-text-tertiary);border-bottom:2px solid var(--m-backdrop-border);white-space:nowrap;transition:all .2s ease}.m-table-thead__th:hover{color:var(--m-text);background:var(--m-background)}@media(min-width:769px){.m-table-thead__th--fixed{z-index:20;background:var(--m-background)}}@media(max-width:768px){.m-table-thead__th--fixed{position:static;z-index:auto}}.m-table-thead__th--fixed{border-right:none}@media(min-width:769px){.m-table-thead__th--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-thead__th--fixed-last{border-right:none}}.m-table-thead__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.m-table-thead__th--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-thead__th--select input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);border-radius:3px;display:block;margin:0 auto}.m-table-thead__cell{display:flex;align-items:center;gap:.5rem}.m-table-thead__sort-icon{color:var(--m-mm);opacity:.6;transition:opacity .2s ease}.m-table-thead__th:hover .m-table-thead__sort-icon{opacity:1}.m-table-thead__menu-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:auto;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:6px;opacity:0;transition:all .15ms ease}.m-table-thead__menu-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-thead__th:hover .m-table-thead__menu-btn{opacity:1}.m-table-body__row{transition:background-color .3s cubic-bezier(.4,0,.2,1);position:relative}.m-table-body__row:hover{background:color-mix(in srgb,var(--m-mm) 5%,transparent)}.m-table-body__row:hover .m-table-body__cell{background:inherit}.m-table-body__cell{padding:1rem 1.25rem;font-size:.875rem;color:var(--m-text);border-bottom:1px solid var(--m-backdrop-border);white-space:nowrap;vertical-align:middle;background:transparent;transition:background-color .3s ease}.m-table-body__cell[class*=--number],.m-table-body__cell[class*=--currency],.m-table-body__cell[class*=--percent]{font-family:Inter,Roboto Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media(min-width:769px){.m-table-body__cell--fixed{position:sticky;background:var(--m-background);z-index:5}}@media(max-width:768px){.m-table-body__cell--fixed{position:static;background:transparent;z-index:auto}}.m-table-body__cell--fixed{border-right:none;transition:background-color .3s ease}.m-table-body__row:hover .m-table-body__cell--fixed{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background));z-index:6}@media(min-width:769px){.m-table-body__cell--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-body__cell--fixed-last{border-right:none}}.m-table-body__cell--context-menu{padding-top:.35rem;padding-bottom:.35rem}.m-table-body__cell--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-body__cell--select input[type=checkbox],.m-table-body__cell--select input[type=radio]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);display:block;margin:0 auto}.m-table-body__input{border:none;border-bottom:2px solid var(--m-backdrop-border);background:transparent;font-size:.875rem;color:var(--m-text);padding:.25rem;outline:none;width:100%;transition:border-bottom-color .2s ease}.m-table-body__input:focus{border-bottom-color:var(--m-mm)}.m-table-body__action-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:8px;transition:all .2s ease}.m-table-body__action-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-body__empty{text-align:center;padding:4rem;color:var(--m-text-tertiary);font-size:1rem;font-weight:500;letter-spacing:.02em;font-style:italic;opacity:.7}.m-table-body__link{color:var(--m-mm);text-decoration:none;cursor:pointer;font-weight:600;transition:color .2s ease}.m-table-body__link:hover{text-decoration:underline;color:var(--m-mm-lite)}.m-table-body__value{padding:.25rem .5rem;border-radius:6px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.m-table-body__value--positive{color:var(--m-success);background:var(--m-backdrop-success)}.m-table-body__value--negative{color:var(--m-error);background:var(--m-backdrop-error)}.m-table-body__dash{color:var(--m-text-tertiary);font-weight:400;font-style:italic;opacity:.8}.m-tree-grid{--m-tree-grid-icon: .75rem}.m-tree-grid .m-table-thead__th,.m-tree-grid .m-table-body__cell{padding:.375rem .5rem}.m-tree-grid .m-table-thead__th{font-size:.6875rem;letter-spacing:.06em;border-bottom-width:1px}.m-tree-grid__tree-cell{display:flex;align-items:center;gap:0;min-width:0}.m-tree-grid__indent{flex:0 0 auto;width:calc(var(--m-tree-grid-depth, 0) * var(--m-tree-grid-indent, var(--m-tree-grid-icon)))}.m-tree-grid__toggle{flex:0 0 auto;width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);display:inline-flex;align-items:center;justify-content:center}.m-tree-grid__toggle m-button{--m-button-size: .333rem}.m-tree-grid__toggle-spacer{width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);flex:0 0 auto}.m-tree-grid__lead-icon{flex:0 0 auto;display:inline-flex;align-items:center;margin-left:.125rem;opacity:.75}.m-tree-grid__lead-icon m-icon{--m-icon-size: .75rem}.m-tree-grid__label{min-width:0;margin-left:.25rem;overflow:hidden;text-overflow:ellipsis;font-size:.875em;line-height:1.25}.m-tree-grid .m-table-body__row{cursor:pointer}.m-tree-grid .m-table-body__row--selected{background:color-mix(in srgb,var(--m-mm) 12%,transparent)}\n"] }]
26187
- }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }, { type: i0.Output, args: ["dataChange"] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], indentRem: [{ type: i0.Input, args: [{ isSignal: true, alias: "indentRem", required: false }] }], keyIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyIndex", required: false }] }], selectedKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKey", required: false }] }, { type: i0.Output, args: ["selectedKeyChange"] }], rowToggled: [{ type: i0.Output, args: ["rowToggled"] }], loadChildren: [{ type: i0.Output, args: ["loadChildren"] }], rowSelected: [{ type: i0.Output, args: ["rowSelected"] }], menuAction: [{ type: i0.Output, args: ["menuAction"] }], cellClicked: [{ type: i0.Output, args: ["cellClicked"] }] } });
26604
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-table{display:flex;flex-direction:column;border:1px solid var(--m-backdrop-border);border-radius:12px;overflow:clip;background:#ffffffe6;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);position:relative;transition:background-color .3s ease}.m-table--flat{border:none;box-shadow:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}.m-table__toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--m-table-toolbar-padding-x, 1.25rem);border-bottom:1px solid var(--m-backdrop-border);gap:1.5rem;background:color-mix(in srgb,var(--m-background) 45%,transparent)}.m-table--flat .m-table__toolbar{background:transparent;padding-left:0;padding-right:0}.m-table__title{margin:0;font-size:1.25rem;font-weight:800;color:var(--m-text);letter-spacing:-.02em;flex:1}.m-table__search{flex:0 1 auto;display:flex;align-items:center}.m-table__search .m-input-wrapper{width:100%}.m-table__mobile-view{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;flex:1;overflow:auto}.m-table__empty-mobile{padding:3rem 1.5rem;text-align:center;color:var(--m-text-tertiary);font-size:.9375rem;font-weight:500;font-style:italic;opacity:.8;background:color-mix(in srgb,var(--m-background) 20%,transparent);border-radius:12px;border:1px dashed var(--m-backdrop-border)}.m-table__wrapper{overflow:auto;flex:1}.m-table__wrapper::-webkit-scrollbar{width:6px;height:6px}.m-table__wrapper::-webkit-scrollbar-track{background:transparent}.m-table__wrapper::-webkit-scrollbar-thumb{background:var(--m-backdrop-border);border-radius:10px}.m-table__wrapper::-webkit-scrollbar-thumb:hover{background:var(--m-text-tertiary)}.m-table__table{width:100%;min-width:100%;border-collapse:separate;border-spacing:0}mark.m-table__highlight{background:var(--m-highlight);color:#000;border-radius:2px;padding:0 2px;font-weight:700;box-shadow:0 1px 4px #0003}mark.m-table__highlight .m-one-pagination{margin-left:auto;--m-button-size: 2.25rem;--m-pagination-gap: .375rem}.m-table-pagination{display:flex;align-items:center;gap:1.5rem;padding:1.25rem var(--m-table-pagination-padding-x, 1.25rem);border-top:1px solid var(--m-backdrop-border);font-size:.8125rem;flex-wrap:wrap;background:color-mix(in srgb,var(--m-background) 40%,transparent)}.m-table--flat .m-table-pagination{background:transparent;padding-left:0;padding-right:0}.m-table-pagination__size{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;color:var(--m-text-secondary);font-weight:500}.m-table-pagination__select{border:1px solid var(--m-backdrop-border);border-radius:8px;background:var(--m-backdrop-surface);color:var(--m-text);padding:.375rem .625rem;font-size:.8125rem;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);outline:none}.m-table-pagination__select:hover{background:var(--m-backdrop-glass);border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 10%,transparent)}.m-table-pagination__select:focus{border-color:var(--m-mm);box-shadow:0 0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent)}.m-table-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:1rem 1.25rem;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border-bottom:1px solid var(--m-backdrop-border);box-shadow:inset 0 2px 4px #00000005;overflow-x:auto;scrollbar-width:none}.m-table-filter::-webkit-scrollbar{display:none}.m-table--flat .m-table-filter{background:transparent;padding-left:0;padding-right:0;border-bottom:none}.m-table-filter__item{display:flex;align-items:center;gap:10px;padding:.4375rem 1rem;border-radius:12px;background:var(--m-background);border:1px solid var(--m-backdrop-border);color:var(--m-text-secondary);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;-webkit-user-select:none;user-select:none;outline:none;font-weight:500}.m-table-filter__item:hover{border-color:var(--m-mm);color:var(--m-mm);background:var(--m-background);transform:translateY(-1px);box-shadow:0 4px 12px #0000000d}.m-table-filter__item--active{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--active:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px)}.m-table-filter__item--active .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--primary{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);font-weight:600;box-shadow:0 8px 16px color-mix(in srgb,var(--m-mm) 25%,transparent)}.m-table-filter__item--primary:hover{background:var(--m-mm);border-color:var(--m-mm);color:var(--m-inverse-text);transform:translateY(-1px);box-shadow:0 10px 20px color-mix(in srgb,var(--m-mm) 30%,transparent)}.m-table-filter__item--primary .m-table-filter__badge{background:#fff3;color:var(--m-inverse-text);border-color:#ffffff1a}.m-table-filter__item--danger{border-color:var(--m-error);color:var(--m-error)}.m-table-filter__item--danger:hover{border-color:var(--m-error);color:var(--m-error);background:var(--m-backdrop-error);transform:translateY(-1px);box-shadow:0 4px 12px color-mix(in srgb,var(--m-error) 12%,transparent)}.m-table-filter__item--danger .m-table-filter__badge{background:var(--m-backdrop-error);color:var(--m-error);border-color:color-mix(in srgb,var(--m-error) 20%,transparent)}.m-table-filter__label{font-size:.8125rem;font-weight:600;letter-spacing:.01em}.m-table-filter__badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:100px;background:var(--m-backdrop-surface);color:var(--m-text-secondary);font-size:.6875rem;font-weight:700;border:1px solid var(--m-backdrop-border);transition:all .2s ease}.m-table-thead__th{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 95%,transparent);-webkit-backdrop-filter:blur(28px);backdrop-filter:blur(28px);padding:1.25rem;text-align:left;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--m-text-tertiary);border-bottom:2px solid var(--m-backdrop-border);white-space:nowrap;transition:all .2s ease}.m-table-thead__th:hover{color:var(--m-text);background:var(--m-background)}@media(min-width:769px){.m-table-thead__th--fixed{z-index:20;background:var(--m-background)}}@media(max-width:768px){.m-table-thead__th--fixed{position:static;z-index:auto}}.m-table-thead__th--fixed{border-right:none}@media(min-width:769px){.m-table-thead__th--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-thead__th--fixed-last{border-right:none}}.m-table-thead__th--sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.m-table-thead__th--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-thead__th--select input[type=checkbox]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);border-radius:3px;display:block;margin:0 auto}.m-table-thead__cell{display:flex;align-items:center;gap:.5rem}.m-table-thead__sort-icon{color:var(--m-mm);opacity:.6;transition:opacity .2s ease}.m-table-thead__th:hover .m-table-thead__sort-icon{opacity:1}.m-table-thead__menu-btn{display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:auto;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:6px;opacity:0;transition:all .15ms ease}.m-table-thead__menu-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-thead__th:hover .m-table-thead__menu-btn{opacity:1}.m-table-body__row{transition:background-color .3s cubic-bezier(.4,0,.2,1);position:relative}.m-table-body__row:hover{background:color-mix(in srgb,var(--m-mm) 5%,transparent)}.m-table-body__row:hover .m-table-body__cell{background:inherit}.m-table-body__cell{padding:1rem 1.25rem;font-size:.875rem;color:var(--m-text);border-bottom:1px solid var(--m-backdrop-border);white-space:nowrap;vertical-align:middle;background:transparent;transition:background-color .3s ease}.m-table-body__cell[class*=--number],.m-table-body__cell[class*=--currency],.m-table-body__cell[class*=--percent]{font-family:Inter,Roboto Mono,monospace;font-variant-numeric:tabular-nums;letter-spacing:-.01em}@media(min-width:769px){.m-table-body__cell--fixed{position:sticky;background:var(--m-background);z-index:5}}@media(max-width:768px){.m-table-body__cell--fixed{position:static;background:transparent;z-index:auto}}.m-table-body__cell--fixed{border-right:none;transition:background-color .3s ease}.m-table-body__row:hover .m-table-body__cell--fixed{background:color-mix(in srgb,var(--m-mm) 5%,var(--m-background));z-index:6}@media(min-width:769px){.m-table-body__cell--fixed-last{border-right:1px solid var(--m-backdrop-border)}}@media(max-width:768px){.m-table-body__cell--fixed-last{border-right:none}}.m-table-body__cell--context-menu{padding-top:.35rem;padding-bottom:.35rem}.m-table-body__cell--select{width:48px;min-width:48px;max-width:48px;padding:0 1rem;text-align:center}.m-table-body__cell--select input[type=checkbox],.m-table-body__cell--select input[type=radio]{width:1rem;height:1rem;cursor:pointer;accent-color:var(--m-mm);display:block;margin:0 auto}.m-table-body__input{border:none;border-bottom:2px solid var(--m-backdrop-border);background:transparent;font-size:.875rem;color:var(--m-text);padding:.25rem;outline:none;width:100%;transition:border-bottom-color .2s ease}.m-table-body__input:focus{border-bottom-color:var(--m-mm)}.m-table-body__action-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:none;background:transparent;cursor:pointer;color:var(--m-text-tertiary);border-radius:8px;transition:all .2s ease}.m-table-body__action-btn:hover{background:var(--m-backdrop-surface);color:var(--m-text)}.m-table-body__empty{text-align:center;padding:4rem;color:var(--m-text-tertiary);font-size:1rem;font-weight:500;letter-spacing:.02em;font-style:italic;opacity:.7}.m-table-body__link{color:var(--m-mm);text-decoration:none;cursor:pointer;font-weight:600;transition:color .2s ease}.m-table-body__link:hover{text-decoration:underline;color:var(--m-mm-lite)}.m-table-body__value{padding:.25rem .5rem;border-radius:6px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.m-table-body__value--positive{color:var(--m-success);background:var(--m-backdrop-success)}.m-table-body__value--negative{color:var(--m-error);background:var(--m-backdrop-error)}.m-table-body__dash{color:var(--m-text-tertiary);font-weight:400;font-style:italic;opacity:.8}.m-tree-grid{--m-tree-grid-icon: .75rem}.m-tree-grid .m-table-thead__th,.m-tree-grid .m-table-body__cell{padding:.375rem .5rem}.m-tree-grid .m-table-thead__th{font-size:.6875rem;letter-spacing:.06em;border-bottom-width:1px}.m-tree-grid__tree-cell{display:flex;align-items:center;gap:0;min-width:0}.m-tree-grid__indent{flex:0 0 auto;width:calc(var(--m-tree-grid-depth, 0) * var(--m-tree-grid-indent, var(--m-tree-grid-icon)))}.m-tree-grid__toggle{flex:0 0 auto;width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);display:inline-flex;align-items:center;justify-content:center}.m-tree-grid__toggle m-button{--m-button-size: .333rem}.m-tree-grid__toggle-spacer{width:var(--m-tree-grid-icon);height:var(--m-tree-grid-icon);flex:0 0 auto}.m-tree-grid__lead-icon{flex:0 0 auto;display:inline-flex;align-items:center;margin-left:.125rem;opacity:.75}.m-tree-grid__lead-icon m-icon{--m-icon-size: .75rem}.m-tree-grid__label{min-width:0;margin-left:.25rem;overflow:hidden;text-overflow:ellipsis;font-size:.875em;line-height:1.25}.m-tree-grid .m-table-body__row{cursor:pointer}.m-tree-grid .m-table-body__row--selected{background:color-mix(in srgb,var(--m-mm) 12%,transparent)}.m-tree-grid .m-table__toolbar{padding:.5rem;background:var(--m-background)}.m-tree-grid .m-table__search{flex:1 1 auto;width:100%}.m-tree-grid .m-table__search m-input-wrapper,.m-tree-grid .m-table__search .m-input-wrapper{width:100%}.m-tree-grid__match{background:var(--m-highlight);padding:0;color:inherit;border-radius:2px}\n"] }]
26605
+ }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }, { type: i0.Output, args: ["dataChange"] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], indentRem: [{ type: i0.Input, args: [{ isSignal: true, alias: "indentRem", required: false }] }], keyIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyIndex", required: false }] }], selectedKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKey", required: false }] }, { type: i0.Output, args: ["selectedKeyChange"] }], rowToggled: [{ type: i0.Output, args: ["rowToggled"] }], loadChildren: [{ type: i0.Output, args: ["loadChildren"] }], rowSelected: [{ type: i0.Output, args: ["rowSelected"] }], menuAction: [{ type: i0.Output, args: ["menuAction"] }], cellClicked: [{ type: i0.Output, args: ["cellClicked"] }], searchChanged: [{ type: i0.Output, args: ["searchChanged"] }] } });
26188
26606
 
26189
26607
  const CHART_WIDTH = 300;
26190
26608
  const CHART_HEIGHT = 100;
@@ -33750,5 +34168,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
33750
34168
  * Generated bundle index. Do not edit.
33751
34169
  */
33752
34170
 
33753
- export { DEFAULT_SIZE as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_FILTER_RANGE_MODE as Z, DEFAULT_FILTER_VARIANT as _, BaseTextInputComponent as a, NAV_MAIN_BUTTONS as a$, DashboardCardComponent as a0, DateInputComponent as a1, DatePickerComponent as a2, DeviceService as a3, DomService as a4, Domain as a5, DotGridComponent as a6, DragListDirective as a7, DragListItemDirective as a8, DraggableDirective as a9, InterceptorObservables as aA, JumbotronComponent as aB, KeyValueComponent as aC, LAYOUT_ASSET_FOLDER as aD, LOGIN_COMPONENT as aE, LOGIN_STORE as aF, LanguageComponent as aG, LogoComponent as aH, MAG_SOCKET_EVENT as aI, MHeroColorDirective as aJ, MHeroComponent as aK, MODAL_REF as aL, MODAL_STORE_REF as aM, MRefDirective as aN, MStepComponent as aO, MURL_PARAM as aP, MURL_SEP as aQ, ManifestEnrichmentService as aR, MenuComponent as aS, ModalDirective as aT, ModalRef as aU, ModalStore as aV, MoneyPipe as aW, MultiRangeInputComponent as aX, MurlUrlSerializer as aY, NAV_DEFAULT_MURL as aZ, NAV_ID_SEP as a_, DropdownInputComponent as aa, FILTER_GROUP_CONTEXT as ab, FILTER_RANGE_MODES as ac, FILTER_VARIANTS as ad, FLEX_VARIANTS as ae, FOLDER_PICK_LISTENER as af, FORM_ASSET_FOLDER as ag, FileService as ah, FileUploadDirective as ai, FileUploadInputComponent as aj, FlexComponent as ak, FlexItemComponent as al, FormGroupComponent as am, FrameComponent as an, FreezeService as ao, GRID_BREAKPOINTS as ap, GetNavService as aq, HeaderComponent$1 as ar, HighlightDirective as as, HttpService as at, ICON_SOURCE as au, IS_SIDE_PANEL as av, IconComponent as aw, ImgComponent as ax, InputType as ay, InstrumentScoreComponent as az, TextOutputComponent as b, SectionButtonGroupComponent as b$, NAV_SEGMENT_RE as b0, NAV_STORE_REF as b1, NAV_WC_COMPONENTS as b2, NAV_WIDGET_MAP as b3, NavComponent as b4, NavDetailsComponent as b5, NavHeaderComponent as b6, NavMenuComponent as b7, NavStore as b8, NavTrailComponent as b9, ROOT_NAV$1 as bA, RadioGroupComponent as bB, RadioInputComponent as bC, RangeInputComponent as bD, RatingInputComponent as bE, ReactiveElementComponent as bF, RemoteComponent as bG, RemoteLoaderService as bH, ResizeElementComponent as bI, RouteContainer as bJ, RowComponent as bK, SEARCH_QUERY as bL, SEARCH_RESULTS_EVENT as bM, SECTION_ACCORDION_GROUP as bN, SECTION_FORM_CONTEXT as bO, SHARED_ICONS as bP, SIZE_CONTEXT as bQ, ScoreComponent as bR, ScrollComponent as bS, ScrollService as bT, SearchPanelComponent as bU, SearchStore as bV, SearchUserPanelComponent as bW, SectionAccordionDirective as bX, SectionAccordionGroupDirective as bY, SectionBackComponent as bZ, SectionBadgesComponent as b_, NothingComponent as ba, NotificationElementComponent as bb, NotificationGroupComponent as bc, NotificationPopupComponent as bd, NotificationService as be, NotificationStore as bf, NotificationType as bg, NotificationWidgetComponent as bh, ONE_ASSET_BASE_URL as bi, OPTIONS_SOURCE as bj, OVERLAY_WIDGETS as bk, OneApp as bl, OptionsSourceDirective as bm, OverlayBodyComponent as bn, OverlayRef as bo, OverlayService as bp, PLATFORM_BUTTON_NAV_IDS as bq, PLATFORM_EXTENSIBLE_NAV_IDS as br, PLATFORM_NAV_MAP as bs, PLATFORM_ROOT_CHILDREN as bt, PaginationComponent as bu, PanelComponent as bv, PercentagePipe as bw, PlaygroundComponent as bx, PositionDirective as by, PwaInstallComponent as bz, ButtonComponent as c, UniverseComponent as c$, SectionCardComponent as c0, SectionCarouselComponent as c1, SectionComponent as c2, SectionFilterComponent as c3, SectionFilterGroupComponent as c4, SectionFilterMenuComponent as c5, SectionFilterPanelComponent as c6, SectionFilterRangePanelComponent as c7, SectionFooterComponent as c8, SectionFormComponent as c9, SummaryComponent as cA, SvgGeneratorComponent as cB, SvgGeneratorService as cC, SvgService as cD, TOTAL_COLUMNS as cE, TRANSLATION_SOURCE as cF, TableComponent as cG, TechnicalMeterComponent as cH, TextInputComponent as cI, TextareaInputComponent as cJ, ThemeComponent as cK, ThemeDataService as cL, ThemeService as cM, ThemeStore as cN, TimeAgoPipe as cO, TimelineComponent as cP, ToggleButtonComponent as cQ, ToggleInputComponent as cR, ToggleRadioInputComponent as cS, ToolTipDirective as cT, TooltipComponent as cU, TranslateService as cV, TreeGridComponent as cW, URL_SEP as cX, USER_STORE_REF as cY, USER_TAB_MAP as cZ, UlComponent as c_, SectionFormItemComponent as ca, SectionHeaderComponent as cb, SectionHeroComponent as cc, SectionPaginationComponent as cd, SectionSearchComponent as ce, SectionStepperComponent as cf, SectionTabsComponent as cg, SectionToggleComponent as ch, SectionToggleItemDirective as ci, SelectableCardInputComponent as cj, SelectorDirective as ck, SettingsSearchBarComponent as cl, SettingsSearchService as cm, ShapeComponent as cn, SharedStoreRegistry as co, SidePanelDirective as cp, Size as cq, SocketStore as cr, SortComponent as cs, StatComponent as ct, StepComponent as cu, StepperComponent as cv, StepsComponent as cw, StorageService as cx, StrokeLinecap as cy, StrokeLinejoin as cz, APP_CONTEXT_REF as d, initMagmoniumApp as d$, UserApiService as d0, UserAvatarComponent as d1, UserComponent as d2, UserNavComponent as d3, UserSettingsComponent as d4, UserStore as d5, WC_ROUTE_CHANGED_EVENT as d6, WC_SEARCH_GROUPS as d7, WIN_USER_TAB_HOOK as d8, WIN_USER_TAB_KEY as d9, evaluateBool as dA, filterHoldsList as dB, filterHoldsOneBound as dC, filterHoldsOptions as dD, filterHoldsRange as dE, filterList as dF, filterOne as dG, filterPanelOf as dH, filterPanelWidth as dI, filterRange as dJ, filterValueList as dK, filterValues as dL, flattenTreeGridRows as dM, formatBadgeCount as dN, fullName as dO, generateClipPath as dP, generateTransform as dQ, getClassList as dR, getProperty as dS, getScrollParent as dT, getTierFromPreviewPath as dU, getTreeGridRow as dV, getUniqueId as dW, getValue as dX, hasErrorComputed as dY, hexToRgb as dZ, hslToRgb$1 as d_, WatermarkComponent as da, WcRouterStore as db, WrapperInputComponent as dc, anchorNavId as dd, applyColorsToElement as de, bootstrapMagApp as df, bootstrapPwaInstall as dg, buildWcBaseUrl as dh, calculateLuminance as di, calculateRanks as dj, cellText as dk, checkFilterCondition as dl, childNavId as dm, classListSignal as dn, coerceSize as dp, cornerEdge as dq, cornerSide as dr, createMap as ds, createPlatformNavMap as dt, deriveAvatarGradient as du, deriveContrastColor as dv, deriveOppositeColor as dw, derivePropertyName as dx, emailValidation as dy, evaluate as dz, ASSET_BASE_URL as e, publicGuard as e$, initialNotificationState as e0, initialState$2 as e1, initials as e2, injectAuthenticate as e3, injectInstallApp as e4, injectParentSize as e5, injectScrollSticky as e6, isButtonName as e7, isCancelledComputed as e8, isExtensiblePlatformNavId as e9, navIdChain as eA, navIdFor as eB, navIdSegment as eC, navIdToRoutePath as eD, navIdToSegments as eE, navToId as eF, parentNavId as eG, parseAddress as eH, parseColor as eI, parsePatternNames as eJ, patternValidation as eK, patternsValidation as eL, platformNavWidgets as eM, privateGuard as eN, processImageToSvg as eO, provideAppContext as eP, provideMagAppConfig as eQ, provideMagWcConfig as eR, provideMagWcRoutes as eS, provideModalComponents as eT, provideMurlUrlSerializer as eU, provideNavWidgets as eV, provideOverlayWidgets as eW, providePlatformNavWidgets as eX, provideSearch as eY, provideSizeContext as eZ, provideUserTabs as e_, isJson as ea, isLoadingComputed as eb, isLocalhost as ec, isPlatformNavId as ed, isSize as ee, isTierPreview as ef, isUrlLocalhost as eg, isValidNavId as eh, isValidNavSegment as ei, isWebComponent as ej, linkToId as ek, linkToNav as el, loadingActions as em, mInterceptor as en, manualValidation as eo, matchFieldValidation as ep, maxLengthValidation as eq, maxValidation as er, mergePlatformNav as es, mergeUnique as et, mergeUniqueBy as eu, mergeUniqueWith as ev, minAgeValidation as ew, minLengthValidation as ex, minValidation as ey, miniMarkToHtml as ez, AccordionBodyDirective as f, readFieldPatterns as f0, renderAddress as f1, requiredValidation as f2, resolveConfigAsset as f3, resolveIconSize as f4, resolvePallet as f5, resolvePatternRules as f6, resolveSize as f7, rgbToHex as f8, rgbToHsl as f9, rowHasChildren as fa, samePatterns as fb, segmentsToNavId as fc, setProperty as fd, setTreeGridChildren as fe, settingsWidgets as ff, shouldShowBadge as fg, splitNavId as fh, stringToColor as fi, toAttrBool as fj, toAttrNumber as fk, toCssLength as fl, toHostNavId as fm, toLength$1 as fn, toLocalNavId as fo, toggleTreeGridRow as fp, unfetchedPlatformNav as fq, urlValidation as fr, AccordionComponent as g, AccordionGroupComponent as h, ActionComponent as i, AnimatedGraphsComponent as j, AppCardComponent as k, AppRelationType as l, AppTileComponent as m, AssetStore as n, AssetUrlPipe as o, Assets as p, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
33754
- //# sourceMappingURL=magmonium-one-magmonium-one-BudsrBEI.mjs.map
34171
+ export { DEFAULT_NAV_SEGMENT as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_FILTER_RANGE_MODE as Z, DEFAULT_FILTER_VARIANT as _, BaseTextInputComponent as a, NAV_ID_SEP as a$, DEFAULT_SIZE as a0, DashboardCardComponent as a1, DateInputComponent as a2, DatePickerComponent as a3, DeviceService as a4, DomService as a5, Domain as a6, DotGridComponent as a7, DragListDirective as a8, DragListItemDirective as a9, InstrumentScoreComponent as aA, InterceptorObservables as aB, JumbotronComponent as aC, KeyValueComponent as aD, LAYOUT_ASSET_FOLDER as aE, LOGIN_COMPONENT as aF, LOGIN_STORE as aG, LanguageComponent as aH, LogoComponent as aI, MAG_SOCKET_EVENT as aJ, MHeroColorDirective as aK, MHeroComponent as aL, MODAL_REF as aM, MODAL_STORE_REF as aN, MRefDirective as aO, MStepComponent as aP, MURL_PARAM as aQ, MURL_SEP as aR, ManifestEnrichmentService as aS, MenuComponent as aT, ModalDirective as aU, ModalRef as aV, ModalStore as aW, MoneyPipe as aX, MultiRangeInputComponent as aY, MurlUrlSerializer as aZ, NAV_DEFAULT_MURL as a_, DraggableDirective as aa, DropdownInputComponent as ab, FILTER_GROUP_CONTEXT as ac, FILTER_RANGE_MODES as ad, FILTER_VARIANTS as ae, FLEX_VARIANTS as af, FOLDER_PICK_LISTENER as ag, FORM_ASSET_FOLDER as ah, FileService as ai, FileUploadDirective as aj, FileUploadInputComponent as ak, FlexComponent as al, FlexItemComponent as am, FormGroupComponent as an, FrameComponent as ao, FreezeService as ap, GRID_BREAKPOINTS as aq, GetNavService as ar, HeaderComponent$1 as as, HighlightDirective as at, HttpService as au, ICON_SOURCE as av, IS_SIDE_PANEL as aw, IconComponent as ax, ImgComponent as ay, InputType as az, TextOutputComponent as b, SectionBadgesComponent as b$, NAV_MAIN_BUTTONS as b0, NAV_SEGMENT_RE as b1, NAV_STORE_REF as b2, NAV_WC_COMPONENTS as b3, NAV_WIDGET_MAP as b4, NavComponent as b5, NavDetailsComponent as b6, NavHeaderComponent as b7, NavMenuComponent as b8, NavStore as b9, PwaInstallComponent as bA, ROOT_NAV$1 as bB, RadioGroupComponent as bC, RadioInputComponent as bD, RangeInputComponent as bE, RatingInputComponent as bF, ReactiveElementComponent as bG, RemoteComponent as bH, RemoteLoaderService as bI, ResizeElementComponent as bJ, RouteContainer as bK, RowComponent as bL, SEARCH_QUERY as bM, SEARCH_RESULTS_EVENT as bN, SECTION_ACCORDION_GROUP as bO, SECTION_FORM_CONTEXT as bP, SHARED_ICONS as bQ, SIZE_CONTEXT as bR, ScoreComponent as bS, ScrollComponent as bT, ScrollService as bU, SearchPanelComponent as bV, SearchStore as bW, SearchUserPanelComponent as bX, SectionAccordionDirective as bY, SectionAccordionGroupDirective as bZ, SectionBackComponent as b_, NavTrailComponent as ba, NothingComponent as bb, NotificationElementComponent as bc, NotificationGroupComponent as bd, NotificationPopupComponent as be, NotificationService as bf, NotificationStore as bg, NotificationType as bh, NotificationWidgetComponent as bi, ONE_ASSET_BASE_URL as bj, OPTIONS_SOURCE as bk, OVERLAY_WIDGETS as bl, OneApp as bm, OptionsSourceDirective as bn, OverlayBodyComponent as bo, OverlayRef as bp, OverlayService as bq, PLATFORM_BUTTON_NAV_IDS as br, PLATFORM_EXTENSIBLE_NAV_IDS as bs, PLATFORM_NAV_MAP as bt, PLATFORM_ROOT_CHILDREN as bu, PaginationComponent as bv, PanelComponent as bw, PercentagePipe as bx, PlaygroundComponent as by, PositionDirective as bz, ButtonComponent as c, UlComponent as c$, SectionButtonGroupComponent as c0, SectionCardComponent as c1, SectionCarouselComponent as c2, SectionComponent as c3, SectionFilterComponent as c4, SectionFilterGroupComponent as c5, SectionFilterMenuComponent as c6, SectionFilterPanelComponent as c7, SectionFilterRangePanelComponent as c8, SectionFooterComponent as c9, StrokeLinejoin as cA, SummaryComponent as cB, SvgGeneratorComponent as cC, SvgGeneratorService as cD, SvgService as cE, TOTAL_COLUMNS as cF, TRANSLATION_SOURCE as cG, TableComponent as cH, TechnicalMeterComponent as cI, TextInputComponent as cJ, TextareaInputComponent as cK, ThemeComponent as cL, ThemeDataService as cM, ThemeService as cN, ThemeStore as cO, TimeAgoPipe as cP, TimelineComponent as cQ, ToggleButtonComponent as cR, ToggleInputComponent as cS, ToggleRadioInputComponent as cT, ToolTipDirective as cU, TooltipComponent as cV, TranslateService as cW, TreeGridComponent as cX, URL_SEP as cY, USER_STORE_REF as cZ, USER_TAB_MAP as c_, SectionFormComponent as ca, SectionFormItemComponent as cb, SectionHeaderComponent as cc, SectionHeroComponent as cd, SectionPaginationComponent as ce, SectionSearchComponent as cf, SectionStepperComponent as cg, SectionTabsComponent as ch, SectionToggleComponent as ci, SectionToggleItemDirective as cj, SelectableCardInputComponent as ck, SelectorDirective as cl, SettingsSearchBarComponent as cm, SettingsSearchService as cn, ShapeComponent as co, SharedStoreRegistry as cp, SidePanelDirective as cq, Size as cr, SocketStore as cs, SortComponent as ct, StatComponent as cu, StepComponent as cv, StepperComponent as cw, StepsComponent as cx, StorageService as cy, StrokeLinecap as cz, APP_CONTEXT_REF as d, hexToRgb as d$, UniverseComponent as d0, UserApiService as d1, UserAvatarComponent as d2, UserComponent as d3, UserNavComponent as d4, UserSettingsComponent as d5, UserStore as d6, WC_ROUTE_CHANGED_EVENT as d7, WC_SEARCH_GROUPS as d8, WIN_USER_TAB_HOOK as d9, evaluate as dA, evaluateBool as dB, filterHoldsList as dC, filterHoldsOneBound as dD, filterHoldsOptions as dE, filterHoldsRange as dF, filterList as dG, filterOne as dH, filterPanelOf as dI, filterPanelWidth as dJ, filterRange as dK, filterTreeGridRows as dL, filterValueList as dM, filterValues as dN, flattenTreeGridRows as dO, formatBadgeCount as dP, fullName as dQ, generateClipPath as dR, generateTransform as dS, getClassList as dT, getProperty as dU, getScrollParent as dV, getTierFromPreviewPath as dW, getTreeGridRow as dX, getUniqueId as dY, getValue as dZ, hasErrorComputed as d_, WIN_USER_TAB_KEY as da, WatermarkComponent as db, WcRouterStore as dc, WrapperInputComponent as dd, anchorNavId as de, applyColorsToElement as df, bootstrapMagApp as dg, bootstrapPwaInstall as dh, buildWcBaseUrl as di, calculateLuminance as dj, calculateRanks as dk, cellText as dl, checkFilterCondition as dm, childNavId as dn, classListSignal as dp, coerceSize as dq, cornerEdge as dr, cornerSide as ds, createMap as dt, createPlatformNavMap as du, deriveAvatarGradient as dv, deriveContrastColor as dw, deriveOppositeColor as dx, derivePropertyName as dy, emailValidation as dz, ASSET_BASE_URL as e, provideSizeContext as e$, hslToRgb$1 as e0, initMagmoniumApp as e1, initialNotificationState as e2, initialState$2 as e3, initials as e4, injectAuthenticate as e5, injectInstallApp as e6, injectParentSize as e7, injectScrollSticky as e8, isButtonName as e9, minValidation as eA, miniMarkToHtml as eB, navIdChain as eC, navIdFor as eD, navIdSegment as eE, navIdToRoutePath as eF, navIdToSegments as eG, navToId as eH, parentNavId as eI, parseAddress as eJ, parseColor as eK, parsePatternNames as eL, patternValidation as eM, patternsValidation as eN, platformNavWidgets as eO, privateGuard as eP, processImageToSvg as eQ, provideAppContext as eR, provideMagAppConfig as eS, provideMagWcConfig as eT, provideMagWcRoutes as eU, provideModalComponents as eV, provideMurlUrlSerializer as eW, provideNavWidgets as eX, provideOverlayWidgets as eY, providePlatformNavWidgets as eZ, provideSearch as e_, isCancelledComputed as ea, isExtensiblePlatformNavId as eb, isJson as ec, isLoadingComputed as ed, isLocalhost as ee, isPlatformNavId as ef, isSize as eg, isTierPreview as eh, isUrlLocalhost as ei, isValidNavId as ej, isValidNavSegment as ek, isWebComponent as el, linkToId as em, linkToNav as en, loadingActions as eo, mInterceptor as ep, manualValidation as eq, matchFieldValidation as er, maxLengthValidation as es, maxValidation as et, mergePlatformNav as eu, mergeUnique as ev, mergeUniqueBy as ew, mergeUniqueWith as ex, minAgeValidation as ey, minLengthValidation as ez, AccordionBodyDirective as f, provideUserTabs as f0, publicGuard as f1, readFieldPatterns as f2, renderAddress as f3, requiredValidation as f4, resolveConfigAsset as f5, resolveIconSize as f6, resolvePallet as f7, resolvePatternRules as f8, resolveSize as f9, rgbToHex as fa, rgbToHsl as fb, rowHasChildren as fc, samePatterns as fd, segmentsToNavId as fe, setProperty as ff, setTreeGridChildren as fg, settingsWidgets as fh, shouldShowBadge as fi, splitNavId as fj, splitOnMatch as fk, stringToColor as fl, toAttrBool as fm, toAttrNumber as fn, toCssLength as fo, toHostNavId as fp, toLength$1 as fq, toLocalNavId as fr, toggleTreeGridRow as fs, unfetchedPlatformNav as ft, urlValidation as fu, AccordionComponent as g, AccordionGroupComponent as h, ActionComponent as i, AnimatedGraphsComponent as j, AppCardComponent as k, AppRelationType as l, AppTileComponent as m, AssetStore as n, AssetUrlPipe as o, Assets as p, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
34172
+ //# sourceMappingURL=magmonium-one-magmonium-one-lhU_xBZf.mjs.map