@magmonium/one 0.2.16 → 0.2.17

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.
@@ -6435,7 +6435,7 @@ class SectionFormItemComponent extends ConfigComponent {
6435
6435
  break;
6436
6436
  }
6437
6437
  case InputType.TOGGLE: {
6438
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-C-FB-Gcs.mjs');
6438
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-SgQklgxO.mjs');
6439
6439
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
6440
6440
  break;
6441
6441
  }
@@ -6447,12 +6447,12 @@ class SectionFormItemComponent extends ConfigComponent {
6447
6447
  break;
6448
6448
  }
6449
6449
  case InputType.PASSWORD: {
6450
- const { PasswordInputComponent } = await import('./magmonium-one-password-CvTU1Qx-.mjs');
6450
+ const { PasswordInputComponent } = await import('./magmonium-one-password-DT79TrP9.mjs');
6451
6451
  this.createDynamicComponent(seq, PasswordInputComponent);
6452
6452
  break;
6453
6453
  }
6454
6454
  case InputType.OTP: {
6455
- const { OtpInputComponent } = await import('./magmonium-one-otp-BZAX_j5g.mjs');
6455
+ const { OtpInputComponent } = await import('./magmonium-one-otp-fpC1c9gw.mjs');
6456
6456
  this.createDynamicComponent(seq, OtpInputComponent);
6457
6457
  break;
6458
6458
  }
@@ -10272,17 +10272,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10272
10272
  `, imports: [IconComponent, TranslatePipe], 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)}}.section-filter-panel{list-style:none;margin:0;padding:0;min-width:10rem;max-height:15rem;overflow-y:auto;background:var(--m-background);border:1px solid var(--m-mm);border-radius:0;animation:filter-panel-in .2s ease-out}.section-filter-panel__option{display:flex;align-items:center;gap:.5em;padding:calc(.6rem * var(--filter-size, 1)) calc(.9rem * var(--filter-size, 1));cursor:pointer;font-size:calc(.875rem * var(--filter-size, 1));color:var(--m-text);transition:all .3s cubic-bezier(.16,1,.3,1);outline:none}.section-filter-panel__option:hover:not(.is-disabled){background-color:var(--m-backdrop-standard)}.section-filter-panel__option:focus-visible:not(.is-disabled){background-color:var(--m-backdrop-standard)}.section-filter-panel__option.is-selected{color:var(--m-mm);font-weight:500}.section-filter-panel__option.is-disabled{opacity:.4;cursor:not-allowed}.section-filter-panel__check-wrap{width:1em;flex-shrink:0;display:flex;align-items:center;color:var(--m-mm)}@keyframes filter-panel-in{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}\n"] }]
10273
10273
  }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], action: [{ type: i0.Output, args: ["action"] }] } });
10274
10274
 
10275
+ const FILTER_GROUP_CONTEXT = new InjectionToken('FILTER_GROUP_CONTEXT');
10276
+
10275
10277
  class SectionFilterComponent {
10276
10278
  label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
10279
+ /**
10280
+ * The key this Filter's slice carries in a FilterGroup's `{name, value}[]`.
10281
+ * Falls back to `label`, which is a TranslationAsset key rather than an
10282
+ * identity — good enough alone, wrong to rely on in a group (ADR 0025).
10283
+ */
10284
+ name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
10277
10285
  options = input([], ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
10278
10286
  optionsAsset = input(...(ngDevMode ? [undefined, { debugName: "optionsAsset" }] : /* istanbul ignore next */ []));
10279
10287
  multiple = input(true, ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
10280
10288
  value = model([], ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
10281
10289
  filterChange = output();
10282
10290
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
10291
+ /**
10292
+ * Present only inside a FilterGroup. With one, the group owns the selection
10293
+ * and this Filter reads its slice down and emits nothing of its own — one
10294
+ * click, one emit (ADR 0025). Without one, the `value` model below is the
10295
+ * source of truth and nothing about this component has changed.
10296
+ */
10297
+ group = inject(FILTER_GROUP_CONTEXT, { optional: true });
10283
10298
  sectionContext = inject(SECTION_CONTEXT, { optional: true });
10284
10299
  sidepanel = computed(() => this.sectionContext?.sidepanel() ?? false, ...(ngDevMode ? [{ debugName: "sidepanel" }] : /* istanbul ignore next */ []));
10285
- noBorder = computed(() => this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
10300
+ // A group draws one border for its whole row, so a Filter inside one draws
10301
+ // none of its own.
10302
+ noBorder = computed(() => !!this.group || this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
10303
+ resolvedName = computed(() => this.name() || this.label(), ...(ngDevMode ? [{ debugName: "resolvedName" }] : /* istanbul ignore next */ []));
10304
+ /** The group's slice when there is one, this Filter's own model otherwise. */
10305
+ selected = computed(() => this.group ? this.group.valueOf(this.resolvedName()) : this.value(), ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
10286
10306
  toggleConfig = computed(() => ({
10287
10307
  icon: this.isOpen() ? 'x' : 'adjust',
10288
10308
  one: true,
@@ -10291,8 +10311,6 @@ class SectionFilterComponent {
10291
10311
  }), ...(ngDevMode ? [{ debugName: "toggleConfig" }] : /* istanbul ignore next */ []));
10292
10312
  dropdownRef = viewChild(SelectorDirective, ...(ngDevMode ? [{ debugName: "dropdownRef" }] : /* istanbul ignore next */ []));
10293
10313
  assetStore = inject(AssetStore);
10294
- translateService = inject(TranslateService);
10295
- filterLabel = computed(() => this.translateService.translate('filter-name', { name: this.label() }), ...(ngDevMode ? [{ debugName: "filterLabel" }] : /* istanbul ignore next */ []));
10296
10314
  assetOptionsResource = rxResource({
10297
10315
  params: () => this.optionsAsset(),
10298
10316
  stream: ({ params }) => {
@@ -10319,14 +10337,14 @@ class SectionFilterComponent {
10319
10337
  disabled: o.disabled,
10320
10338
  }));
10321
10339
  }, ...(ngDevMode ? [{ debugName: "resolvedOptions" }] : /* istanbul ignore next */ []));
10322
- hasSelection = computed(() => this.value().length > 0, ...(ngDevMode ? [{ debugName: "hasSelection" }] : /* istanbul ignore next */ []));
10323
- selectedOptions = computed(() => this.resolvedOptions().filter((o) => this.value().includes(o.value)), ...(ngDevMode ? [{ debugName: "selectedOptions" }] : /* istanbul ignore next */ []));
10340
+ hasSelection = computed(() => this.selected().length > 0, ...(ngDevMode ? [{ debugName: "hasSelection" }] : /* istanbul ignore next */ []));
10341
+ selectedOptions = computed(() => this.resolvedOptions().filter((o) => this.selected().includes(o.value)), ...(ngDevMode ? [{ debugName: "selectedOptions" }] : /* istanbul ignore next */ []));
10324
10342
  selectorConfig = computed(() => ({
10325
10343
  component: SectionFilterPanelComponent,
10326
10344
  base: 'm-section-filter',
10327
10345
  bindings: [
10328
10346
  inputBinding('options', this.resolvedOptions),
10329
- inputBinding('selected', this.value),
10347
+ inputBinding('selected', this.selected),
10330
10348
  inputBinding('multiple', this.multiple),
10331
10349
  outputBinding('action', (opt) => this.selectOption(opt)),
10332
10350
  ],
@@ -10334,6 +10352,12 @@ class SectionFilterComponent {
10334
10352
  selectOption = (opt) => {
10335
10353
  if (opt.disabled)
10336
10354
  return;
10355
+ if (this.group) {
10356
+ this.group.toggle(this.resolvedName(), opt, this.multiple());
10357
+ if (!this.multiple())
10358
+ this.dropdownRef()?.close();
10359
+ return;
10360
+ }
10337
10361
  if (this.multiple()) {
10338
10362
  const current = this.value();
10339
10363
  const next = current.includes(opt.value)
@@ -10351,12 +10375,33 @@ class SectionFilterComponent {
10351
10375
  }
10352
10376
  };
10353
10377
  removeOption = (val) => {
10378
+ if (this.group) {
10379
+ this.group.remove(this.resolvedName(), val);
10380
+ return;
10381
+ }
10354
10382
  const next = this.value().filter((v) => v !== val);
10355
10383
  this.value.set(next);
10356
10384
  this.filterChange.emit(next);
10357
10385
  };
10386
+ constructor() {
10387
+ const group = this.group;
10388
+ if (!group)
10389
+ return;
10390
+ // Registered rather than found by a content query: a Col may sit between
10391
+ // this Filter and its group, and squeezed the group renders no bar at all
10392
+ // — the menu it draws instead is built from these registrations, which is
10393
+ // why the row is hidden rather than skipped (ADR 0025).
10394
+ const member = {
10395
+ name: this.resolvedName,
10396
+ label: this.label,
10397
+ options: this.resolvedOptions,
10398
+ multiple: this.multiple,
10399
+ };
10400
+ group.register(member);
10401
+ inject(DestroyRef).onDestroy(() => group.unregister(member));
10402
+ }
10358
10403
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10359
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionFilterComponent, isStandalone: true, selector: "m-section-filter", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionsAsset: { classPropertyName: "optionsAsset", publicName: "optionsAsset", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", 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.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()" } }, viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: SelectorDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
10404
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionFilterComponent, isStandalone: true, selector: "m-section-filter", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionsAsset: { classPropertyName: "optionsAsset", publicName: "optionsAsset", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", 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.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()", "class.in-group": "!!group" } }, viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: SelectorDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
10360
10405
  <div class="section-filter__bar">
10361
10406
  @if (hasSelection()) {
10362
10407
  <div class="section-filter__badges">
@@ -10372,7 +10417,7 @@ class SectionFilterComponent {
10372
10417
  }
10373
10418
  </div>
10374
10419
  } @else {
10375
- <m-header [level]="3" [label]="filterLabel()" />
10420
+ <m-header [level]="3" [label]="label()" />
10376
10421
  }
10377
10422
  <div
10378
10423
  class="section-filter__dropdown"
@@ -10405,7 +10450,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10405
10450
  }
10406
10451
  </div>
10407
10452
  } @else {
10408
- <m-header [level]="3" [label]="filterLabel()" />
10453
+ <m-header [level]="3" [label]="label()" />
10409
10454
  }
10410
10455
  <div
10411
10456
  class="section-filter__dropdown"
@@ -10427,8 +10472,239 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
10427
10472
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
10428
10473
  '[class.has-sidepanel]': 'sidepanel()',
10429
10474
  '[class.no-border]': 'noBorder()',
10475
+ '[class.in-group]': '!!group',
10430
10476
  }, 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}.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"] }]
10431
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], optionsAsset: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionsAsset", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", 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 }] }] } });
10477
+ }], 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 }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", 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 }] }] } });
10478
+
10479
+ /**
10480
+ * A Row-like container that owns the selection for every Filter beneath it and
10481
+ * emits one aggregate whenever any of them changes (ADR 0025). Admits Cols, so
10482
+ * a Filter may sit any depth down — DI, not a content query, is what finds it.
10483
+ *
10484
+ * Squeezed, it collapses to one icon whose menu drills into each Filter in
10485
+ * turn. The children are still projected in that mode, only hidden: a Filter
10486
+ * that never instantiates never registers, and the menu is built from
10487
+ * registrations.
10488
+ */
10489
+ class SectionFilterGroupComponent {
10490
+ squeeze = input(undefined, ...(ngDevMode ? [{ debugName: "squeeze" }] : /* istanbul ignore next */ []));
10491
+ padding = input(undefined, ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
10492
+ paddingX = input(undefined, ...(ngDevMode ? [{ debugName: "paddingX" }] : /* istanbul ignore next */ []));
10493
+ paddingY = input(undefined, ...(ngDevMode ? [{ debugName: "paddingY" }] : /* istanbul ignore next */ []));
10494
+ maxWidth = input(...(ngDevMode ? [undefined, { debugName: "maxWidth" }] : /* istanbul ignore next */ []));
10495
+ align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
10496
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
10497
+ /**
10498
+ * The whole group's selection, one entry per Filter that has ever been
10499
+ * touched. A list rather than an object keyed by name — the keys would come
10500
+ * from whichever Filters are dropped in (ADR 0025).
10501
+ */
10502
+ value = model([], ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
10503
+ filterChange = output();
10504
+ isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
10505
+ members = signal([], ...(ngDevMode ? [{ debugName: "members" }] : /* istanbul ignore next */ []));
10506
+ isDesignMode = !!inject(IS_DESIGN_MODE, {
10507
+ optional: true,
10508
+ });
10509
+ translateService = inject(TranslateService);
10510
+ sectionContext = inject(SECTION_CONTEXT, { optional: true });
10511
+ selectorDir = viewChild(SelectorDirective, ...(ngDevMode ? [{ debugName: "selectorDir" }] : /* istanbul ignore next */ []));
10512
+ squeezed = computed(() => this.squeeze() ?? this.config()?.squeeze ?? false, ...(ngDevMode ? [{ debugName: "squeezed" }] : /* istanbul ignore next */ []));
10513
+ resolvedPadding = computed(() => this.padding() ?? this.config()?.padding ?? false, ...(ngDevMode ? [{ debugName: "resolvedPadding" }] : /* istanbul ignore next */ []));
10514
+ resolvedPaddingX = computed(() => this.paddingX() ?? this.config()?.paddingX ?? false, ...(ngDevMode ? [{ debugName: "resolvedPaddingX" }] : /* istanbul ignore next */ []));
10515
+ resolvedPaddingY = computed(() => this.paddingY() ?? this.config()?.paddingY ?? false, ...(ngDevMode ? [{ debugName: "resolvedPaddingY" }] : /* istanbul ignore next */ []));
10516
+ resolvedAlign = computed(() => this.align() ?? this.config()?.align ?? 'left', ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
10517
+ resolvedMaxWidth = computed(() => this.maxWidth() ?? this.config()?.maxWidth, ...(ngDevMode ? [{ debugName: "resolvedMaxWidth" }] : /* istanbul ignore next */ []));
10518
+ noBorder = computed(() => this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
10519
+ /**
10520
+ * Filters holding any selection — not the sum of selected values. A Filter's
10521
+ * own count is already on its menu row, so a sum would be the same
10522
+ * information twice (ADR 0025).
10523
+ */
10524
+ activeCount = computed(() => this.value().filter((entry) => entry.value.length > 0).length, ...(ngDevMode ? [{ debugName: "activeCount" }] : /* istanbul ignore next */ []));
10525
+ toggleConfig = computed(() => ({
10526
+ icon: this.isOpen() ? 'x' : 'adjust',
10527
+ one: true,
10528
+ variant: 'ghost',
10529
+ iconOnly: true,
10530
+ }), ...(ngDevMode ? [{ debugName: "toggleConfig" }] : /* istanbul ignore next */ []));
10531
+ countBadgeConfig = computed(() => ({
10532
+ variant: 'primary',
10533
+ position: 'top-right',
10534
+ }), ...(ngDevMode ? [{ debugName: "countBadgeConfig" }] : /* istanbul ignore next */ []));
10535
+ /**
10536
+ * One MenuItem per registered Filter, its own options nested underneath.
10537
+ * MenuComponent drills into `options` with a back button rather than
10538
+ * expanding in place, which is what makes a group of many Filters legible in
10539
+ * one icon's worth of space.
10540
+ */
10541
+ menuOptions = computed(() => {
10542
+ const rows = this.members().map((member) => {
10543
+ const name = member.name();
10544
+ const selected = this.valueOf(name);
10545
+ const label = selected.length
10546
+ ? this.translateService.translate(member.label(), {
10547
+ // Pre-resolved, so the menu's own `| translate` passes it through:
10548
+ // a key with no entry comes back as itself.
10549
+ count: String(selected.length),
10550
+ }) + ` (${selected.length})`
10551
+ : member.label();
10552
+ return {
10553
+ id: name,
10554
+ label,
10555
+ selected: selected.length > 0,
10556
+ options: [
10557
+ member.options().map((opt) => ({
10558
+ id: `${name}:${opt.value}`,
10559
+ label: opt.label,
10560
+ value: opt.value,
10561
+ disabled: opt.disabled,
10562
+ selected: selected.includes(opt.value),
10563
+ })),
10564
+ ],
10565
+ };
10566
+ });
10567
+ return rows.length ? [rows] : [];
10568
+ }, ...(ngDevMode ? [{ debugName: "menuOptions" }] : /* istanbul ignore next */ []));
10569
+ selectorConfig = computed(() => ({
10570
+ component: ContextMenuBoxComponent,
10571
+ base: 'm-section-filter-group',
10572
+ width: '260px',
10573
+ bindings: [
10574
+ inputBinding('options', this.menuOptions),
10575
+ // Bound directly rather than through ContextMenuComponent, which closes
10576
+ // its selector on every action — right for a menu of commands, wrong for
10577
+ // one of checkboxes (ADR 0025).
10578
+ outputBinding('action', (item) => this.onMenuAction(item)),
10579
+ ],
10580
+ }), ...(ngDevMode ? [{ debugName: "selectorConfig" }] : /* istanbul ignore next */ []));
10581
+ onMenuAction = (item) => {
10582
+ const separator = item.id.indexOf(':');
10583
+ if (separator < 0)
10584
+ return;
10585
+ const name = item.id.slice(0, separator);
10586
+ const member = this.members().find((m) => m.name() === name);
10587
+ if (!member)
10588
+ return;
10589
+ const option = member
10590
+ .options()
10591
+ .find((opt) => opt.value === item.id.slice(separator + 1));
10592
+ if (!option)
10593
+ return;
10594
+ this.toggle(name, option, member.multiple());
10595
+ };
10596
+ valueOf = (name) => this.value().find((entry) => entry.name === name)?.value ?? [];
10597
+ write = (name, next) => {
10598
+ const current = this.value();
10599
+ const index = current.findIndex((entry) => entry.name === name);
10600
+ const updated = index < 0
10601
+ ? [...current, { name, value: next }]
10602
+ : current.map((entry, i) => (i === index ? { name, value: next } : entry));
10603
+ this.value.set(updated);
10604
+ this.filterChange.emit(updated);
10605
+ };
10606
+ toggle = (name, option, multiple) => {
10607
+ if (option.disabled)
10608
+ return;
10609
+ const current = this.valueOf(name);
10610
+ if (multiple) {
10611
+ this.write(name, current.includes(option.value)
10612
+ ? current.filter((v) => v !== option.value)
10613
+ : [...current, option.value]);
10614
+ return;
10615
+ }
10616
+ this.write(name, current.includes(option.value) ? [] : [option.value]);
10617
+ // Single-select has nothing more to say once it has said it. Multi-select
10618
+ // stays open, which is the reason this menu is not a ContextMenuComponent.
10619
+ if (!this.squeezed())
10620
+ return;
10621
+ this.selectorDir()?.close();
10622
+ };
10623
+ context = {
10624
+ squeeze: this.squeezed,
10625
+ register: (member) => this.members.update((list) => list.includes(member) ? list : [...list, member]),
10626
+ unregister: (member) => this.members.update((list) => list.filter((m) => m !== member)),
10627
+ valueOf: this.valueOf,
10628
+ toggle: this.toggle,
10629
+ remove: (name, val) => this.write(name, this.valueOf(name).filter((v) => v !== val)),
10630
+ };
10631
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10632
+ 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: [
10633
+ {
10634
+ provide: FILTER_GROUP_CONTEXT,
10635
+ useFactory: () => inject(SectionFilterGroupComponent).context,
10636
+ },
10637
+ ], viewQueries: [{ propertyName: "selectorDir", first: true, predicate: SelectorDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
10638
+ @if (squeezed()) {
10639
+ <div
10640
+ class="section-filter-group__squeeze"
10641
+ [mSelector]="selectorConfig()"
10642
+ (opened)="isOpen.set(true)"
10643
+ (closed)="isOpen.set(false)"
10644
+ >
10645
+ <div
10646
+ class="section-filter-group__toggle"
10647
+ [class.is-active]="isOpen()"
10648
+ >
10649
+ <m-button [config]="toggleConfig()" />
10650
+ @if (activeCount(); as count) {
10651
+ <m-badge [config]="countBadgeConfig()">{{ count }}</m-badge>
10652
+ }
10653
+ </div>
10654
+ </div>
10655
+ }
10656
+ <div class="section-filter-group__row">
10657
+ <ng-content />
10658
+ </div>
10659
+ `, 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%;box-sizing:border-box;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}:host(.has-padding){padding:var(--m-filter-group-p, var(--section-px, 1rem))}:host(.has-padding-x){padding-inline:var(--m-filter-group-px, var(--section-px, 1rem))}:host(.has-padding-y){padding-block:var(--m-filter-group-py, var(--section-pt, 1rem))}:host(.align-left) .section-filter-group__row{justify-content:flex-start}:host(.align-center) .section-filter-group__row{justify-content:center}:host(.align-right) .section-filter-group__row{justify-content:flex-end}:host(.is-squeezed){display:inline-flex;width:auto;border-bottom:none}:host(.is-squeezed) .section-filter-group__row{display:none}:host(.is-design-mode) .section-filter-group__row{min-width:4em;min-height:4em}.section-filter-group__row{display:flex;flex-wrap:wrap;align-items:stretch;width:100%;max-width:var(--m-filter-group-max-width, none)}.section-filter-group__row m-section-filter{flex:1;min-width:0}.section-filter-group__squeeze{display:inline-flex}.section-filter-group__toggle{position:relative;display:inline-flex;flex-shrink:0;--m-button-size: 1rem}.section-filter-group__toggle.is-active{--m-button-color: var(--m-mm)}.section-filter-group__toggle m-badge{pointer-events:none}\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: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10660
+ }
10661
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionFilterGroupComponent, decorators: [{
10662
+ type: Component,
10663
+ args: [{ selector: 'm-section-filter-group', template: `
10664
+ @if (squeezed()) {
10665
+ <div
10666
+ class="section-filter-group__squeeze"
10667
+ [mSelector]="selectorConfig()"
10668
+ (opened)="isOpen.set(true)"
10669
+ (closed)="isOpen.set(false)"
10670
+ >
10671
+ <div
10672
+ class="section-filter-group__toggle"
10673
+ [class.is-active]="isOpen()"
10674
+ >
10675
+ <m-button [config]="toggleConfig()" />
10676
+ @if (activeCount(); as count) {
10677
+ <m-badge [config]="countBadgeConfig()">{{ count }}</m-badge>
10678
+ }
10679
+ </div>
10680
+ </div>
10681
+ }
10682
+ <div class="section-filter-group__row">
10683
+ <ng-content />
10684
+ </div>
10685
+ `, imports: [
10686
+ ButtonComponent,
10687
+ BadgeComponent,
10688
+ SelectorDirective,
10689
+ ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
10690
+ class: 'm-section-filter-group',
10691
+ '[class.is-squeezed]': 'squeezed()',
10692
+ '[class.has-padding]': 'resolvedPadding()',
10693
+ '[class.has-padding-x]': 'resolvedPaddingX()',
10694
+ '[class.has-padding-y]': 'resolvedPaddingY()',
10695
+ '[class.align-left]': 'resolvedAlign() === "left"',
10696
+ '[class.align-center]': 'resolvedAlign() === "center"',
10697
+ '[class.align-right]': 'resolvedAlign() === "right"',
10698
+ '[class.no-border]': 'noBorder()',
10699
+ '[class.is-design-mode]': 'isDesignMode',
10700
+ '[style.--m-filter-group-max-width]': 'resolvedMaxWidth()',
10701
+ }, providers: [
10702
+ {
10703
+ provide: FILTER_GROUP_CONTEXT,
10704
+ useFactory: () => inject(SectionFilterGroupComponent).context,
10705
+ },
10706
+ ], 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%;box-sizing:border-box;border-bottom:1px solid var(--m-section-filter-border, var(--m-backdrop-border))}:host(.no-border){border-bottom:none}:host(.has-padding){padding:var(--m-filter-group-p, var(--section-px, 1rem))}:host(.has-padding-x){padding-inline:var(--m-filter-group-px, var(--section-px, 1rem))}:host(.has-padding-y){padding-block:var(--m-filter-group-py, var(--section-pt, 1rem))}:host(.align-left) .section-filter-group__row{justify-content:flex-start}:host(.align-center) .section-filter-group__row{justify-content:center}:host(.align-right) .section-filter-group__row{justify-content:flex-end}:host(.is-squeezed){display:inline-flex;width:auto;border-bottom:none}:host(.is-squeezed) .section-filter-group__row{display:none}:host(.is-design-mode) .section-filter-group__row{min-width:4em;min-height:4em}.section-filter-group__row{display:flex;flex-wrap:wrap;align-items:stretch;width:100%;max-width:var(--m-filter-group-max-width, none)}.section-filter-group__row m-section-filter{flex:1;min-width:0}.section-filter-group__squeeze{display:inline-flex}.section-filter-group__toggle{position:relative;display:inline-flex;flex-shrink:0;--m-button-size: 1rem}.section-filter-group__toggle.is-active{--m-button-color: var(--m-mm)}.section-filter-group__toggle m-badge{pointer-events:none}\n"] }]
10707
+ }], propDecorators: { squeeze: [{ type: i0.Input, args: [{ isSignal: true, alias: "squeeze", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], paddingX: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingX", required: false }] }], paddingY: [{ type: i0.Input, args: [{ isSignal: true, alias: "paddingY", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], selectorDir: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SelectorDirective), { isSignal: true }] }] } });
10432
10708
 
10433
10709
  const BREAKPOINTS$1 = [
10434
10710
  'xs',
@@ -12275,6 +12551,7 @@ class SectionComponent extends ConfigComponent {
12275
12551
  back = contentChild(SectionBackComponent, ...(ngDevMode ? [{ debugName: "back" }] : /* istanbul ignore next */ []));
12276
12552
  search = contentChild(SectionSearchComponent, ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
12277
12553
  filter = contentChild(SectionFilterComponent, ...(ngDevMode ? [{ debugName: "filter" }] : /* istanbul ignore next */ []));
12554
+ filterGroup = contentChild(SectionFilterGroupComponent, ...(ngDevMode ? [{ debugName: "filterGroup" }] : /* istanbul ignore next */ []));
12278
12555
  stepper = contentChild(SectionStepperComponent, ...(ngDevMode ? [{ debugName: "stepper" }] : /* istanbul ignore next */ []));
12279
12556
  hero = contentChild(SectionHeroComponent, ...(ngDevMode ? [{ debugName: "hero" }] : /* istanbul ignore next */ []));
12280
12557
  jumbotron = contentChild(JumbotronComponent, ...(ngDevMode ? [{ debugName: "jumbotron" }] : /* istanbul ignore next */ []));
@@ -12362,7 +12639,7 @@ class SectionComponent extends ConfigComponent {
12362
12639
  };
12363
12640
  },
12364
12641
  },
12365
- ], queries: [{ propertyName: "header", first: true, predicate: SectionHeaderComponent, descendants: true, isSignal: true }, { propertyName: "badges", first: true, predicate: SectionBadgesComponent, descendants: true, isSignal: true }, { propertyName: "toggle", first: true, predicate: SectionToggleComponent, descendants: true, isSignal: true }, { propertyName: "action", first: true, predicate: ActionComponent, descendants: true, isSignal: true }, { propertyName: "back", first: true, predicate: SectionBackComponent, descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: SectionSearchComponent, descendants: true, isSignal: true }, { propertyName: "filter", first: true, predicate: SectionFilterComponent, descendants: true, isSignal: true }, { propertyName: "stepper", first: true, predicate: SectionStepperComponent, descendants: true, isSignal: true }, { propertyName: "hero", first: true, predicate: SectionHeroComponent, descendants: true, isSignal: true }, { propertyName: "jumbotron", first: true, predicate: JumbotronComponent, descendants: true, isSignal: true }, { propertyName: "carousel", first: true, predicate: CarouselComponent, descendants: true, isSignal: true }, { propertyName: "footer", first: true, predicate: SectionFooterComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
12642
+ ], queries: [{ propertyName: "header", first: true, predicate: SectionHeaderComponent, descendants: true, isSignal: true }, { propertyName: "badges", first: true, predicate: SectionBadgesComponent, descendants: true, isSignal: true }, { propertyName: "toggle", first: true, predicate: SectionToggleComponent, descendants: true, isSignal: true }, { propertyName: "action", first: true, predicate: ActionComponent, descendants: true, isSignal: true }, { propertyName: "back", first: true, predicate: SectionBackComponent, descendants: true, isSignal: true }, { propertyName: "search", first: true, predicate: SectionSearchComponent, descendants: true, isSignal: true }, { propertyName: "filter", first: true, predicate: SectionFilterComponent, descendants: true, isSignal: true }, { propertyName: "filterGroup", first: true, predicate: SectionFilterGroupComponent, descendants: true, isSignal: true }, { propertyName: "stepper", first: true, predicate: SectionStepperComponent, descendants: true, isSignal: true }, { propertyName: "hero", first: true, predicate: SectionHeroComponent, descendants: true, isSignal: true }, { propertyName: "jumbotron", first: true, predicate: JumbotronComponent, descendants: true, isSignal: true }, { propertyName: "carousel", first: true, predicate: CarouselComponent, descendants: true, isSignal: true }, { propertyName: "footer", first: true, predicate: SectionFooterComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
12366
12643
  @if (header()) {
12367
12644
  <ng-content select="m-section-header" />
12368
12645
  }
@@ -12401,6 +12678,9 @@ class SectionComponent extends ConfigComponent {
12401
12678
  @if (filter()) {
12402
12679
  <ng-content select="m-section-filter" />
12403
12680
  }
12681
+ @if (filterGroup()) {
12682
+ <ng-content select="m-section-filter-group" />
12683
+ }
12404
12684
 
12405
12685
  @if (carousel()) {
12406
12686
  <ng-content select="m-carousel, m-one-carousel" />
@@ -12456,6 +12736,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12456
12736
  @if (filter()) {
12457
12737
  <ng-content select="m-section-filter" />
12458
12738
  }
12739
+ @if (filterGroup()) {
12740
+ <ng-content select="m-section-filter-group" />
12741
+ }
12459
12742
 
12460
12743
  @if (carousel()) {
12461
12744
  <ng-content select="m-carousel, m-one-carousel" />
@@ -12505,7 +12788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12505
12788
  },
12506
12789
  },
12507
12790
  ], 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%;min-height:5em;container-type:inline-size;container-name:mag-grid;--_section-px: 1rem;--_section-pt: 1.5rem;--_section-pb: 0rem;--_section-header-py: 1rem}:host(.has-max-height){height:var(--m-section-max-height);overflow:auto}:host(.is-with-border){border:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}:host(.is-sandwich-border){border-block:var(--m-section-border, 1px solid var(--m-backdrop-border));box-sizing:border-box}.m-section__collapsible{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);opacity:1}.m-section__collapsible.is-collapsed{grid-template-rows:0fr;opacity:0;pointer-events:none}.m-section__collapsible-content{min-height:0;overflow:hidden}.m-section__body{display:flex;flex-wrap:wrap;align-content:flex-start;align-items:stretch;max-width:var(--m-section-max-width);margin-inline:auto}:host(.align-left) .m-section__body{margin-inline-start:0;margin-inline-end:auto}:host(.align-right) .m-section__body{margin-inline-start:auto;margin-inline-end:0;justify-content:flex-end}:host(.align-center) .m-section__body{margin-inline:auto;justify-content:center}:host(.is-full-height){height:100vh;min-height:100vh;overflow:auto}:host(.is-full-height) .m-section__body{flex:1;height:100%}\n"] }]
12508
- }], ctorParameters: () => [], propDecorators: { header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeaderComponent), { isSignal: true }] }], badges: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBadgesComponent), { isSignal: true }] }], toggle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionToggleComponent), { isSignal: true }] }], action: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ActionComponent), { isSignal: true }] }], back: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBackComponent), { isSignal: true }] }], search: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionSearchComponent), { isSignal: true }] }], filter: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFilterComponent), { isSignal: true }] }], stepper: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionStepperComponent), { isSignal: true }] }], hero: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeroComponent), { isSignal: true }] }], jumbotron: [{ type: i0.ContentChild, args: [i0.forwardRef(() => JumbotronComponent), { isSignal: true }] }], carousel: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CarouselComponent), { isSignal: true }] }], footer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFooterComponent), { isSignal: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], heightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "heightMode", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inView: [{ type: i0.Output, args: ["inView"] }] } });
12791
+ }], ctorParameters: () => [], propDecorators: { header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeaderComponent), { isSignal: true }] }], badges: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBadgesComponent), { isSignal: true }] }], toggle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionToggleComponent), { isSignal: true }] }], action: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ActionComponent), { isSignal: true }] }], back: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionBackComponent), { isSignal: true }] }], search: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionSearchComponent), { isSignal: true }] }], filter: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFilterComponent), { isSignal: true }] }], filterGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFilterGroupComponent), { isSignal: true }] }], stepper: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionStepperComponent), { isSignal: true }] }], hero: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionHeroComponent), { isSignal: true }] }], jumbotron: [{ type: i0.ContentChild, args: [i0.forwardRef(() => JumbotronComponent), { isSignal: true }] }], carousel: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CarouselComponent), { isSignal: true }] }], footer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SectionFooterComponent), { isSignal: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], heightMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "heightMode", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inView: [{ type: i0.Output, args: ["inView"] }] } });
12509
12792
 
12510
12793
  class UserApiService {
12511
12794
  http = inject(HttpService);
@@ -17933,7 +18216,7 @@ class WrapperInputComponent extends ConfigComponent {
17933
18216
  break;
17934
18217
  }
17935
18218
  case InputType.TOGGLE: {
17936
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-C-FB-Gcs.mjs');
18219
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-SgQklgxO.mjs');
17937
18220
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
17938
18221
  break;
17939
18222
  }
@@ -17945,12 +18228,12 @@ class WrapperInputComponent extends ConfigComponent {
17945
18228
  break;
17946
18229
  }
17947
18230
  case InputType.PASSWORD: {
17948
- const { PasswordInputComponent } = await import('./magmonium-one-password-CvTU1Qx-.mjs');
18231
+ const { PasswordInputComponent } = await import('./magmonium-one-password-DT79TrP9.mjs');
17949
18232
  this.createDynamicComponent(seq, PasswordInputComponent);
17950
18233
  break;
17951
18234
  }
17952
18235
  case InputType.OTP: {
17953
- const { OtpInputComponent } = await import('./magmonium-one-otp-BZAX_j5g.mjs');
18236
+ const { OtpInputComponent } = await import('./magmonium-one-otp-fpC1c9gw.mjs');
17954
18237
  this.createDynamicComponent(seq, OtpInputComponent);
17955
18238
  break;
17956
18239
  }
@@ -32296,5 +32579,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
32296
32579
  * Generated bundle index. Do not edit.
32297
32580
  */
32298
32581
 
32299
- export { DateInputComponent 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_SIZE as Z, DashboardCardComponent as _, BaseTextInputComponent as a, NavComponent as a$, DatePickerComponent as a0, DeviceService as a1, DomService as a2, Domain as a3, DotGridComponent as a4, DragListDirective as a5, DragListItemDirective as a6, DraggableDirective as a7, DropdownInputComponent as a8, FLEX_VARIANTS as a9, LOGIN_STORE as aA, LanguageComponent as aB, LogoComponent as aC, MAG_SOCKET_EVENT as aD, MHeroColorDirective as aE, MHeroComponent as aF, MODAL_REF as aG, MODAL_STORE_REF as aH, MRefDirective as aI, MStepComponent as aJ, MURL_PARAM as aK, MURL_SEP as aL, ManifestEnrichmentService as aM, MenuComponent as aN, ModalDirective as aO, ModalRef as aP, ModalStore as aQ, MoneyPipe as aR, MultiRangeInputComponent as aS, MurlUrlSerializer as aT, NAV_DEFAULT_MURL as aU, NAV_ID_SEP as aV, NAV_MAIN_BUTTONS as aW, NAV_SEGMENT_RE as aX, NAV_STORE_REF as aY, NAV_WC_COMPONENTS as aZ, NAV_WIDGET_MAP as a_, FOLDER_PICK_LISTENER as aa, FORM_ASSET_FOLDER as ab, FileService as ac, FileUploadDirective as ad, FileUploadInputComponent as ae, FlexComponent as af, FlexItemComponent as ag, FormGroupComponent as ah, FrameComponent as ai, FreezeService as aj, GRID_BREAKPOINTS as ak, GetNavService as al, HeaderComponent$1 as am, HighlightDirective as an, HttpService as ao, ICON_SOURCE as ap, IS_SIDE_PANEL as aq, IconComponent as ar, ImgComponent as as, InputType as at, InstrumentScoreComponent as au, InterceptorObservables as av, JumbotronComponent as aw, KeyValueComponent as ax, LAYOUT_ASSET_FOLDER as ay, LOGIN_COMPONENT as az, TextOutputComponent as b, SectionFooterComponent as b$, NavDetailsComponent as b0, NavHeaderComponent as b1, NavMenuComponent as b2, NavStore as b3, NavTrailComponent as b4, NothingComponent as b5, NotificationElementComponent as b6, NotificationGroupComponent as b7, NotificationPopupComponent as b8, NotificationService as b9, ReactiveElementComponent as bA, RemoteComponent as bB, RemoteLoaderService as bC, ResizeElementComponent as bD, RouteContainer as bE, RowComponent as bF, SEARCH_QUERY as bG, SEARCH_RESULTS_EVENT as bH, SECTION_ACCORDION_GROUP as bI, SECTION_FORM_CONTEXT as bJ, SHARED_ICONS as bK, SIZE_CONTEXT as bL, ScoreComponent as bM, ScrollComponent as bN, ScrollService as bO, SearchPanelComponent as bP, SearchStore as bQ, SearchUserPanelComponent as bR, SectionAccordionDirective as bS, SectionAccordionGroupDirective as bT, SectionBackComponent as bU, SectionBadgesComponent as bV, SectionButtonGroupComponent as bW, SectionCardComponent as bX, SectionCarouselComponent as bY, SectionComponent as bZ, SectionFilterComponent as b_, NotificationStore as ba, NotificationType as bb, NotificationWidgetComponent as bc, ONE_ASSET_BASE_URL as bd, OPTIONS_SOURCE as be, OVERLAY_WIDGETS as bf, OneApp as bg, OptionsSourceDirective as bh, OverlayBodyComponent as bi, OverlayRef as bj, OverlayService as bk, PLATFORM_BUTTON_NAV_IDS as bl, PLATFORM_EXTENSIBLE_NAV_IDS as bm, PLATFORM_NAV_MAP as bn, PLATFORM_ROOT_CHILDREN as bo, PaginationComponent as bp, PanelComponent as bq, PercentagePipe as br, PlaygroundComponent as bs, PositionDirective as bt, PwaInstallComponent as bu, ROOT_NAV$1 as bv, RadioGroupComponent as bw, RadioInputComponent as bx, RangeInputComponent as by, RatingInputComponent as bz, ButtonComponent as c, WIN_USER_TAB_KEY as c$, SectionFormComponent as c0, SectionFormItemComponent as c1, SectionHeaderComponent as c2, SectionHeroComponent as c3, SectionSearchComponent as c4, SectionStepperComponent as c5, SectionTabsComponent as c6, SectionToggleComponent as c7, SectionToggleItemDirective as c8, SelectableCardInputComponent as c9, ThemeComponent as cA, ThemeDataService as cB, ThemeService as cC, ThemeStore as cD, TimeAgoPipe as cE, TimelineComponent as cF, ToggleButtonComponent as cG, ToggleInputComponent as cH, ToggleRadioInputComponent as cI, ToolTipDirective as cJ, TooltipComponent as cK, TranslateService as cL, TreeGridComponent as cM, URL_SEP as cN, USER_STORE_REF as cO, USER_TAB_MAP as cP, UlComponent as cQ, UniverseComponent as cR, UserApiService as cS, UserAvatarComponent as cT, UserComponent as cU, UserNavComponent as cV, UserSettingsComponent as cW, UserStore as cX, WC_ROUTE_CHANGED_EVENT as cY, WC_SEARCH_GROUPS as cZ, WIN_USER_TAB_HOOK as c_, SelectorDirective as ca, SettingsSearchBarComponent as cb, SettingsSearchService as cc, ShapeComponent as cd, SharedStoreRegistry as ce, SidePanelDirective as cf, Size as cg, SocketStore as ch, SortComponent as ci, StatComponent as cj, StepComponent as ck, StepperComponent as cl, StepsComponent as cm, StorageService as cn, StrokeLinecap as co, StrokeLinejoin as cp, SummaryComponent as cq, SvgGeneratorComponent as cr, SvgGeneratorService as cs, SvgService as ct, TOTAL_COLUMNS as cu, TRANSLATION_SOURCE as cv, TableComponent as cw, TechnicalMeterComponent as cx, TextInputComponent as cy, TextareaInputComponent as cz, APP_CONTEXT_REF as d, linkToId as d$, WatermarkComponent as d0, WcRouterStore as d1, WrapperInputComponent as d2, anchorNavId as d3, applyColorsToElement as d4, bootstrapMagApp as d5, bootstrapPwaInstall as d6, buildWcBaseUrl as d7, calculateLuminance as d8, calculateRanks as d9, getTreeGridRow as dA, getUniqueId as dB, getValue as dC, hasErrorComputed as dD, hexToRgb as dE, hslToRgb$1 as dF, initMagmoniumApp as dG, initialNotificationState as dH, initialState$2 as dI, initials as dJ, injectAuthenticate as dK, injectInstallApp as dL, injectParentSize as dM, injectScrollSticky as dN, isButtonName as dO, isCancelledComputed as dP, isExtensiblePlatformNavId as dQ, isJson as dR, isLoadingComputed as dS, isLocalhost as dT, isPlatformNavId as dU, isSize as dV, isTierPreview as dW, isUrlLocalhost as dX, isValidNavId as dY, isValidNavSegment as dZ, isWebComponent as d_, cellText as da, checkFilterCondition as db, childNavId as dc, classListSignal as dd, coerceSize as de, cornerEdge as df, cornerSide as dg, createMap as dh, createPlatformNavMap as di, deriveAvatarGradient as dj, deriveContrastColor as dk, deriveOppositeColor as dl, derivePropertyName as dm, emailValidation as dn, evaluate as dp, evaluateBool as dq, flattenTreeGridRows as dr, formatBadgeCount as ds, fullName as dt, generateClipPath as du, generateTransform as dv, getClassList as dw, getProperty as dx, getScrollParent as dy, getTierFromPreviewPath as dz, ASSET_BASE_URL as e, toAttrNumber as e$, linkToNav as e0, loadingActions as e1, mInterceptor as e2, manualValidation as e3, matchFieldValidation as e4, maxLengthValidation as e5, maxValidation as e6, mergePlatformNav as e7, mergeUnique as e8, mergeUniqueBy as e9, provideNavWidgets as eA, provideOverlayWidgets as eB, providePlatformNavWidgets as eC, provideSearch as eD, provideSizeContext as eE, provideUserTabs as eF, publicGuard as eG, readFieldPatterns as eH, renderAddress as eI, requiredValidation as eJ, resolveConfigAsset as eK, resolveIconSize as eL, resolvePallet as eM, resolvePatternRules as eN, resolveSize as eO, rgbToHex as eP, rgbToHsl as eQ, rowHasChildren as eR, samePatterns as eS, segmentsToNavId as eT, setProperty as eU, setTreeGridChildren as eV, settingsWidgets as eW, shouldShowBadge as eX, splitNavId as eY, stringToColor as eZ, toAttrBool as e_, mergeUniqueWith as ea, minAgeValidation as eb, minLengthValidation as ec, minValidation as ed, miniMarkToHtml as ee, navIdChain as ef, navIdFor as eg, navIdSegment as eh, navIdToRoutePath as ei, navIdToSegments as ej, navToId as ek, parentNavId as el, parseAddress as em, parseColor as en, parsePatternNames as eo, patternValidation as ep, patternsValidation as eq, platformNavWidgets as er, privateGuard as es, processImageToSvg as et, provideAppContext as eu, provideMagAppConfig as ev, provideMagWcConfig as ew, provideMagWcRoutes as ex, provideModalComponents as ey, provideMurlUrlSerializer as ez, AccordionBodyDirective as f, toCssLength as f0, toHostNavId as f1, toLength$1 as f2, toLocalNavId as f3, toggleTreeGridRow as f4, unfetchedPlatformNav as f5, urlValidation as f6, 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 };
32300
- //# sourceMappingURL=magmonium-one-magmonium-one-CD8ioDZO.mjs.map
32582
+ export { DateInputComponent 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_SIZE as Z, DashboardCardComponent as _, BaseTextInputComponent as a, NAV_WIDGET_MAP as a$, DatePickerComponent as a0, DeviceService as a1, DomService as a2, Domain as a3, DotGridComponent as a4, DragListDirective as a5, DragListItemDirective as a6, DraggableDirective as a7, DropdownInputComponent as a8, FILTER_GROUP_CONTEXT as a9, LOGIN_COMPONENT as aA, LOGIN_STORE as aB, LanguageComponent as aC, LogoComponent as aD, MAG_SOCKET_EVENT as aE, MHeroColorDirective as aF, MHeroComponent as aG, MODAL_REF as aH, MODAL_STORE_REF as aI, MRefDirective as aJ, MStepComponent as aK, MURL_PARAM as aL, MURL_SEP as aM, ManifestEnrichmentService as aN, MenuComponent as aO, ModalDirective as aP, ModalRef as aQ, ModalStore as aR, MoneyPipe as aS, MultiRangeInputComponent as aT, MurlUrlSerializer as aU, NAV_DEFAULT_MURL as aV, NAV_ID_SEP as aW, NAV_MAIN_BUTTONS as aX, NAV_SEGMENT_RE as aY, NAV_STORE_REF as aZ, NAV_WC_COMPONENTS as a_, FLEX_VARIANTS as aa, FOLDER_PICK_LISTENER as ab, FORM_ASSET_FOLDER as ac, FileService as ad, FileUploadDirective as ae, FileUploadInputComponent as af, FlexComponent as ag, FlexItemComponent as ah, FormGroupComponent as ai, FrameComponent as aj, FreezeService as ak, GRID_BREAKPOINTS as al, GetNavService as am, HeaderComponent$1 as an, HighlightDirective as ao, HttpService as ap, ICON_SOURCE as aq, IS_SIDE_PANEL as ar, IconComponent as as, ImgComponent as at, InputType as au, InstrumentScoreComponent as av, InterceptorObservables as aw, JumbotronComponent as ax, KeyValueComponent as ay, LAYOUT_ASSET_FOLDER as az, TextOutputComponent as b, SectionFilterComponent as b$, NavComponent as b0, NavDetailsComponent as b1, NavHeaderComponent as b2, NavMenuComponent as b3, NavStore as b4, NavTrailComponent as b5, NothingComponent as b6, NotificationElementComponent as b7, NotificationGroupComponent as b8, NotificationPopupComponent as b9, RatingInputComponent as bA, ReactiveElementComponent as bB, RemoteComponent as bC, RemoteLoaderService as bD, ResizeElementComponent as bE, RouteContainer as bF, RowComponent as bG, SEARCH_QUERY as bH, SEARCH_RESULTS_EVENT as bI, SECTION_ACCORDION_GROUP as bJ, SECTION_FORM_CONTEXT as bK, SHARED_ICONS as bL, SIZE_CONTEXT as bM, ScoreComponent as bN, ScrollComponent as bO, ScrollService as bP, SearchPanelComponent as bQ, SearchStore as bR, SearchUserPanelComponent as bS, SectionAccordionDirective as bT, SectionAccordionGroupDirective as bU, SectionBackComponent as bV, SectionBadgesComponent as bW, SectionButtonGroupComponent as bX, SectionCardComponent as bY, SectionCarouselComponent as bZ, SectionComponent as b_, NotificationService as ba, NotificationStore as bb, NotificationType as bc, NotificationWidgetComponent as bd, ONE_ASSET_BASE_URL as be, OPTIONS_SOURCE as bf, OVERLAY_WIDGETS as bg, OneApp as bh, OptionsSourceDirective as bi, OverlayBodyComponent as bj, OverlayRef as bk, OverlayService as bl, PLATFORM_BUTTON_NAV_IDS as bm, PLATFORM_EXTENSIBLE_NAV_IDS as bn, PLATFORM_NAV_MAP as bo, PLATFORM_ROOT_CHILDREN as bp, PaginationComponent as bq, PanelComponent as br, PercentagePipe as bs, PlaygroundComponent as bt, PositionDirective as bu, PwaInstallComponent as bv, ROOT_NAV$1 as bw, RadioGroupComponent as bx, RadioInputComponent as by, RangeInputComponent as bz, ButtonComponent as c, WC_SEARCH_GROUPS as c$, SectionFilterGroupComponent as c0, SectionFooterComponent as c1, SectionFormComponent as c2, SectionFormItemComponent as c3, SectionHeaderComponent as c4, SectionHeroComponent as c5, SectionSearchComponent as c6, SectionStepperComponent as c7, SectionTabsComponent as c8, SectionToggleComponent as c9, TextInputComponent as cA, TextareaInputComponent as cB, ThemeComponent as cC, ThemeDataService as cD, ThemeService as cE, ThemeStore as cF, TimeAgoPipe as cG, TimelineComponent as cH, ToggleButtonComponent as cI, ToggleInputComponent as cJ, ToggleRadioInputComponent as cK, ToolTipDirective as cL, TooltipComponent as cM, TranslateService as cN, TreeGridComponent as cO, URL_SEP as cP, USER_STORE_REF as cQ, USER_TAB_MAP as cR, UlComponent as cS, UniverseComponent as cT, UserApiService as cU, UserAvatarComponent as cV, UserComponent as cW, UserNavComponent as cX, UserSettingsComponent as cY, UserStore as cZ, WC_ROUTE_CHANGED_EVENT as c_, SectionToggleItemDirective as ca, SelectableCardInputComponent as cb, SelectorDirective as cc, SettingsSearchBarComponent as cd, SettingsSearchService as ce, ShapeComponent as cf, SharedStoreRegistry as cg, SidePanelDirective as ch, Size as ci, SocketStore as cj, SortComponent as ck, StatComponent as cl, StepComponent as cm, StepperComponent as cn, StepsComponent as co, StorageService as cp, StrokeLinecap as cq, StrokeLinejoin as cr, SummaryComponent as cs, SvgGeneratorComponent as ct, SvgGeneratorService as cu, SvgService as cv, TOTAL_COLUMNS as cw, TRANSLATION_SOURCE as cx, TableComponent as cy, TechnicalMeterComponent as cz, APP_CONTEXT_REF as d, isValidNavSegment as d$, WIN_USER_TAB_HOOK as d0, WIN_USER_TAB_KEY as d1, WatermarkComponent as d2, WcRouterStore as d3, WrapperInputComponent as d4, anchorNavId as d5, applyColorsToElement as d6, bootstrapMagApp as d7, bootstrapPwaInstall as d8, buildWcBaseUrl as d9, getScrollParent as dA, getTierFromPreviewPath as dB, getTreeGridRow as dC, getUniqueId as dD, getValue as dE, hasErrorComputed as dF, hexToRgb as dG, hslToRgb$1 as dH, initMagmoniumApp as dI, initialNotificationState as dJ, initialState$2 as dK, initials as dL, injectAuthenticate as dM, injectInstallApp as dN, injectParentSize as dO, injectScrollSticky as dP, isButtonName as dQ, isCancelledComputed as dR, isExtensiblePlatformNavId as dS, isJson as dT, isLoadingComputed as dU, isLocalhost as dV, isPlatformNavId as dW, isSize as dX, isTierPreview as dY, isUrlLocalhost as dZ, isValidNavId as d_, calculateLuminance as da, calculateRanks as db, cellText as dc, checkFilterCondition as dd, childNavId as de, classListSignal as df, coerceSize as dg, cornerEdge as dh, cornerSide as di, createMap as dj, createPlatformNavMap as dk, deriveAvatarGradient as dl, deriveContrastColor as dm, deriveOppositeColor as dn, derivePropertyName as dp, emailValidation as dq, evaluate as dr, evaluateBool as ds, flattenTreeGridRows as dt, formatBadgeCount as du, fullName as dv, generateClipPath as dw, generateTransform as dx, getClassList as dy, getProperty as dz, ASSET_BASE_URL as e, stringToColor as e$, isWebComponent as e0, linkToId as e1, linkToNav as e2, loadingActions as e3, mInterceptor as e4, manualValidation as e5, matchFieldValidation as e6, maxLengthValidation as e7, maxValidation as e8, mergePlatformNav as e9, provideModalComponents as eA, provideMurlUrlSerializer as eB, provideNavWidgets as eC, provideOverlayWidgets as eD, providePlatformNavWidgets as eE, provideSearch as eF, provideSizeContext as eG, provideUserTabs as eH, publicGuard as eI, readFieldPatterns as eJ, renderAddress as eK, requiredValidation as eL, resolveConfigAsset as eM, resolveIconSize as eN, resolvePallet as eO, resolvePatternRules as eP, resolveSize as eQ, rgbToHex as eR, rgbToHsl as eS, rowHasChildren as eT, samePatterns as eU, segmentsToNavId as eV, setProperty as eW, setTreeGridChildren as eX, settingsWidgets as eY, shouldShowBadge as eZ, splitNavId as e_, mergeUnique as ea, mergeUniqueBy as eb, mergeUniqueWith as ec, minAgeValidation as ed, minLengthValidation as ee, minValidation as ef, miniMarkToHtml as eg, navIdChain as eh, navIdFor as ei, navIdSegment as ej, navIdToRoutePath as ek, navIdToSegments as el, navToId as em, parentNavId as en, parseAddress as eo, parseColor as ep, parsePatternNames as eq, patternValidation as er, patternsValidation as es, platformNavWidgets as et, privateGuard as eu, processImageToSvg as ev, provideAppContext as ew, provideMagAppConfig as ex, provideMagWcConfig as ey, provideMagWcRoutes as ez, AccordionBodyDirective as f, toAttrBool as f0, toAttrNumber as f1, toCssLength as f2, toHostNavId as f3, toLength$1 as f4, toLocalNavId as f5, toggleTreeGridRow as f6, unfetchedPlatformNav as f7, urlValidation as f8, 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 };
32583
+ //# sourceMappingURL=magmonium-one-magmonium-one-D17PHUaP.mjs.map