@magmonium/one 0.2.41 → 0.2.43
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.
- package/fesm2022/{magmonium-one-magmonium-one-9zQVQ0IY.mjs → magmonium-one-magmonium-one-C5whWXef.mjs} +284 -87
- package/fesm2022/magmonium-one-magmonium-one-C5whWXef.mjs.map +1 -0
- package/fesm2022/{magmonium-one-otp-BWGevRL7.mjs → magmonium-one-otp-COwJYVW6.mjs} +2 -2
- package/fesm2022/{magmonium-one-otp-BWGevRL7.mjs.map → magmonium-one-otp-COwJYVW6.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-CniB1rrR.mjs → magmonium-one-password-DUUhSEnp.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-CniB1rrR.mjs.map → magmonium-one-password-DUUhSEnp.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-toggle-XdWXZ3w3.mjs → magmonium-one-toggle-CFYMEJcZ.mjs} +2 -2
- package/fesm2022/{magmonium-one-toggle-XdWXZ3w3.mjs.map → magmonium-one-toggle-CFYMEJcZ.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +157 -19
- package/fesm2022/magmonium-one-magmonium-one-9zQVQ0IY.mjs.map +0 -1
|
@@ -37,7 +37,7 @@ var Assets;
|
|
|
37
37
|
Assets["CSS"] = "css";
|
|
38
38
|
})(Assets || (Assets = {}));
|
|
39
39
|
|
|
40
|
-
// Single source for the
|
|
40
|
+
// Single source for the layout primitives' asset subFolder — each
|
|
41
41
|
// primitive's ConfigComponent.subFolder reads from here, and the m-one-ui
|
|
42
42
|
// Design editor's codegen reads the same const when emitting ControlAssets,
|
|
43
43
|
// so the two never drift apart (see libs/one ADR 0004).
|
|
@@ -53,6 +53,7 @@ const LAYOUT_ASSET_FOLDER = {
|
|
|
53
53
|
section_hero: 'section_heroes',
|
|
54
54
|
section_carousel: 'section_carousels',
|
|
55
55
|
text_output: 'text_outputs',
|
|
56
|
+
list: 'lists',
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
// Single source for the asset subFolders a form and its Fields resolve by —
|
|
@@ -6830,7 +6831,7 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6830
6831
|
break;
|
|
6831
6832
|
}
|
|
6832
6833
|
case InputType.TOGGLE: {
|
|
6833
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
6834
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CFYMEJcZ.mjs');
|
|
6834
6835
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
6835
6836
|
break;
|
|
6836
6837
|
}
|
|
@@ -6842,12 +6843,12 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6842
6843
|
break;
|
|
6843
6844
|
}
|
|
6844
6845
|
case InputType.PASSWORD: {
|
|
6845
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
6846
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-DUUhSEnp.mjs');
|
|
6846
6847
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
6847
6848
|
break;
|
|
6848
6849
|
}
|
|
6849
6850
|
case InputType.OTP: {
|
|
6850
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
6851
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-COwJYVW6.mjs');
|
|
6851
6852
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
6852
6853
|
break;
|
|
6853
6854
|
}
|
|
@@ -8668,7 +8669,10 @@ class SectionHeaderComponent {
|
|
|
8668
8669
|
disableRule = input(...(ngDevMode ? [undefined, { debugName: "disableRule" }] : /* istanbul ignore next */ []));
|
|
8669
8670
|
extraData = input(...(ngDevMode ? [undefined, { debugName: "extraData" }] : /* istanbul ignore next */ []));
|
|
8670
8671
|
align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
|
|
8671
|
-
|
|
8672
|
+
// The header's own `align` alone. A Section's `align` places boxes — its
|
|
8673
|
+
// body box, and the header's content box below — and a header whose text
|
|
8674
|
+
// followed it could not be left-aligned inside a centred Section at all.
|
|
8675
|
+
alignment = computed(() => this.align() ?? 'left', ...(ngDevMode ? [{ debugName: "alignment" }] : /* istanbul ignore next */ []));
|
|
8672
8676
|
showBack = input(false, ...(ngDevMode ? [{ debugName: "showBack" }] : /* istanbul ignore next */ []));
|
|
8673
8677
|
actionButton = input(...(ngDevMode ? [undefined, { debugName: "actionButton" }] : /* istanbul ignore next */ []));
|
|
8674
8678
|
// The action Button's accessible name — it renders icon-only, so without a
|
|
@@ -8690,6 +8694,15 @@ class SectionHeaderComponent {
|
|
|
8690
8694
|
sectionContext = inject(SECTION_CONTEXT, { optional: true });
|
|
8691
8695
|
sidepanel = computed(() => this.sectionContext?.sidepanel() ?? false, ...(ngDevMode ? [{ debugName: "sidepanel" }] : /* istanbul ignore next */ []));
|
|
8692
8696
|
noBorder = computed(() => this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
|
|
8697
|
+
// Falls back to the Section's `maxWidth`: the header sits above the body and
|
|
8698
|
+
// the two are one column, so constraining the body alone left the heading
|
|
8699
|
+
// hanging off the edge of the content it titles. The border stays on the
|
|
8700
|
+
// host and keeps spanning the Section — only this inner box narrows.
|
|
8701
|
+
resolvedMaxWidth = computed(() => this.maxWidth() ?? this.sectionContext?.maxWidth?.(), ...(ngDevMode ? [{ debugName: "resolvedMaxWidth" }] : /* istanbul ignore next */ []));
|
|
8702
|
+
// Where that box sits once it is narrower than the row. The Section's
|
|
8703
|
+
// `align` — the same value that places `.m-section__body` — so header and
|
|
8704
|
+
// body stay in one column.
|
|
8705
|
+
boxAlign = computed(() => this.sectionContext?.align?.() ?? 'left', ...(ngDevMode ? [{ debugName: "boxAlign" }] : /* istanbul ignore next */ []));
|
|
8693
8706
|
isSticky = computed(() => this.sticky() && this.scrollSticky(), ...(ngDevMode ? [{ debugName: "isSticky" }] : /* istanbul ignore next */ []));
|
|
8694
8707
|
hasMenu = computed(() => !!this.menu() || !!this.menuName(), ...(ngDevMode ? [{ debugName: "hasMenu" }] : /* istanbul ignore next */ []));
|
|
8695
8708
|
actionConfig = computed(() => {
|
|
@@ -8728,7 +8741,7 @@ class SectionHeaderComponent {
|
|
|
8728
8741
|
this.accordion()?.toggle();
|
|
8729
8742
|
}
|
|
8730
8743
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8731
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionHeaderComponent, isStandalone: true, selector: "m-section-header", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, subLabel: { classPropertyName: "subLabel", publicName: "subLabel", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: false, transformFunction: null }, menuName: { classPropertyName: "menuName", publicName: "menuName", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, actionButton: { classPropertyName: "actionButton", publicName: "actionButton", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", action: "action", back: "back" }, host: { properties: { "class.is-sticky-enabled": "sticky()", "class.is-sticky": "isSticky()", "class.has-menu": "hasMenu()", "class.align-left": "alignment() === \"left\"", "class.align-center": "alignment() === \"center\"", "class.align-right": "alignment() === \"right\"", "class.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()", "class.spacing": "spacing()" }, classAttribute: "m-section-header" }, ngImport: i0, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n <ng-content select=\"[sub]\" />\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n@if (spacing()) {\n <div class=\"section-header__container\" [style.max-width]=\"maxWidth()\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n </div>\n} @else {\n <ng-container [ngTemplateOutlet]=\"body\" />\n}\n", 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:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;margin:0 auto}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;padding:1rem 1.5rem}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: 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: 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8744
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionHeaderComponent, isStandalone: true, selector: "m-section-header", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, subLabel: { classPropertyName: "subLabel", publicName: "subLabel", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: false, transformFunction: null }, menuName: { classPropertyName: "menuName", publicName: "menuName", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, actionButton: { classPropertyName: "actionButton", publicName: "actionButton", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", action: "action", back: "back" }, host: { properties: { "class.is-sticky-enabled": "sticky()", "class.is-sticky": "isSticky()", "class.has-menu": "hasMenu()", "class.align-left": "alignment() === \"left\"", "class.align-center": "alignment() === \"center\"", "class.align-right": "alignment() === \"right\"", "class.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()", "class.spacing": "spacing()", "class.box-center": "boxAlign() === \"center\"", "class.box-right": "boxAlign() === \"right\"", "style.--m-section-header-max-width": "resolvedMaxWidth()" }, classAttribute: "m-section-header" }, ngImport: i0, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n", 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:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: 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: 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8732
8745
|
}
|
|
8733
8746
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
8734
8747
|
type: Component,
|
|
@@ -8749,7 +8762,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8749
8762
|
'[class.has-sidepanel]': 'sidepanel()',
|
|
8750
8763
|
'[class.no-border]': 'noBorder()',
|
|
8751
8764
|
'[class.spacing]': 'spacing()',
|
|
8752
|
-
|
|
8765
|
+
'[class.box-center]': 'boxAlign() === "center"',
|
|
8766
|
+
'[class.box-right]': 'boxAlign() === "right"',
|
|
8767
|
+
'[style.--m-section-header-max-width]': 'resolvedMaxWidth()',
|
|
8768
|
+
}, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\n", 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:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"] }]
|
|
8753
8769
|
}], propDecorators: { sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], subLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "subLabel", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }], params: [{ type: i0.Input, args: [{ isSignal: true, alias: "params", required: false }] }], reverse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverse", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], menu: [{ type: i0.Input, args: [{ isSignal: true, alias: "menu", required: false }] }], menuName: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuName", required: false }] }], visibilityRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibilityRule", required: false }] }], disableRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRule", required: false }] }], extraData: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraData", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], showBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBack", required: false }] }], actionButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionButton", required: false }] }], actionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionLabel", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], action: [{ type: i0.Output, args: ["action"] }], back: [{ type: i0.Output, args: ["back"] }] } });
|
|
8754
8770
|
|
|
8755
8771
|
const BACK_BTN = {
|
|
@@ -12284,6 +12300,35 @@ function filterList(selection, name) {
|
|
|
12284
12300
|
function filterOne(selection, name) {
|
|
12285
12301
|
return toList(selection?.[name])[0];
|
|
12286
12302
|
}
|
|
12303
|
+
/**
|
|
12304
|
+
* One key read as the single number a Filter feeding a numeric target carries,
|
|
12305
|
+
* or `undefined` when the Filter holds nothing. What `filterOne` is for a
|
|
12306
|
+
* `string` target: a Filter's options are matched by `value` strings all the
|
|
12307
|
+
* way down (ADR 0026), so the text a group's map holds has to become a number
|
|
12308
|
+
* somewhere, and here is the one place it can be checked rather than asserted.
|
|
12309
|
+
*
|
|
12310
|
+
* Anything that is not a finite number reads as `undefined` — an empty string,
|
|
12311
|
+
* a label left behind by a variant flipped after a selection was made, `NaN`.
|
|
12312
|
+
* `Number('')` answering `0` is the convenient lie a numeric target must never
|
|
12313
|
+
* be handed: absent and zero are different answers to a query.
|
|
12314
|
+
*/
|
|
12315
|
+
function filterNumber(selection, name) {
|
|
12316
|
+
return toNumber(toList(selection?.[name])[0]);
|
|
12317
|
+
}
|
|
12318
|
+
/**
|
|
12319
|
+
* One key read as the number list a `many` numeric target holds. What
|
|
12320
|
+
* `filterList` is for a `string[]` target, narrowed the way `filterNumber`
|
|
12321
|
+
* narrows `filterOne`.
|
|
12322
|
+
*
|
|
12323
|
+
* An entry that is not a finite number drops out rather than landing as `NaN`:
|
|
12324
|
+
* a list is what a query sends as repeated parameters, and a `NaN` among them
|
|
12325
|
+
* is a parameter no backend can read. An absent key still reads as empty.
|
|
12326
|
+
*/
|
|
12327
|
+
function filterNumberList(selection, name) {
|
|
12328
|
+
return toList(selection?.[name])
|
|
12329
|
+
.map(toNumber)
|
|
12330
|
+
.filter((entry) => entry !== undefined);
|
|
12331
|
+
}
|
|
12287
12332
|
/**
|
|
12288
12333
|
* One Filter's own emit read as a list, whichever shape it was authored to
|
|
12289
12334
|
* carry — a standalone `multiple` Filter emits its list and a single-select one
|
|
@@ -12339,6 +12384,12 @@ const toList = (value) => {
|
|
|
12339
12384
|
return [];
|
|
12340
12385
|
return (Array.isArray(value) ? value : [value]).map(String);
|
|
12341
12386
|
};
|
|
12387
|
+
const toNumber = (value) => {
|
|
12388
|
+
if (value === undefined || value.trim() === '')
|
|
12389
|
+
return undefined;
|
|
12390
|
+
const parsed = Number(value);
|
|
12391
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
12392
|
+
};
|
|
12342
12393
|
|
|
12343
12394
|
/**
|
|
12344
12395
|
* What a squeezed FilterGroup opens: one row per Filter beneath it, drilling
|
|
@@ -15039,6 +15090,7 @@ class SectionComponent extends ConfigComponent {
|
|
|
15039
15090
|
sidepanel: self.resolvedSidepanel,
|
|
15040
15091
|
variant: self.resolvedVariant,
|
|
15041
15092
|
align: self.resolvedAlign,
|
|
15093
|
+
maxWidth: self.resolvedMaxWidth,
|
|
15042
15094
|
accordion: self.accordion,
|
|
15043
15095
|
};
|
|
15044
15096
|
},
|
|
@@ -15199,6 +15251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
15199
15251
|
sidepanel: self.resolvedSidepanel,
|
|
15200
15252
|
variant: self.resolvedVariant,
|
|
15201
15253
|
align: self.resolvedAlign,
|
|
15254
|
+
maxWidth: self.resolvedMaxWidth,
|
|
15202
15255
|
accordion: self.accordion,
|
|
15203
15256
|
};
|
|
15204
15257
|
},
|
|
@@ -18775,7 +18828,8 @@ class DropdownBoxComponent {
|
|
|
18775
18828
|
(keydown.enter)="selectOption(option)"
|
|
18776
18829
|
tabindex="0"
|
|
18777
18830
|
>
|
|
18778
|
-
|
|
18831
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18832
|
+
@if (multiple() && !option.disabled) {
|
|
18779
18833
|
<input
|
|
18780
18834
|
type="checkbox"
|
|
18781
18835
|
class="dropdown-box__checkbox"
|
|
@@ -18815,7 +18869,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
18815
18869
|
(keydown.enter)="selectOption(option)"
|
|
18816
18870
|
tabindex="0"
|
|
18817
18871
|
>
|
|
18818
|
-
|
|
18872
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18873
|
+
@if (multiple() && !option.disabled) {
|
|
18819
18874
|
<input
|
|
18820
18875
|
type="checkbox"
|
|
18821
18876
|
class="dropdown-box__checkbox"
|
|
@@ -20348,7 +20403,7 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20348
20403
|
break;
|
|
20349
20404
|
}
|
|
20350
20405
|
case InputType.TOGGLE: {
|
|
20351
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
20406
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CFYMEJcZ.mjs');
|
|
20352
20407
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
20353
20408
|
break;
|
|
20354
20409
|
}
|
|
@@ -20360,12 +20415,12 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20360
20415
|
break;
|
|
20361
20416
|
}
|
|
20362
20417
|
case InputType.PASSWORD: {
|
|
20363
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
20418
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-DUUhSEnp.mjs');
|
|
20364
20419
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
20365
20420
|
break;
|
|
20366
20421
|
}
|
|
20367
20422
|
case InputType.OTP: {
|
|
20368
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
20423
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-COwJYVW6.mjs');
|
|
20369
20424
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
20370
20425
|
break;
|
|
20371
20426
|
}
|
|
@@ -21019,7 +21074,7 @@ var toggleRadio = /*#__PURE__*/Object.freeze({
|
|
|
21019
21074
|
// Stand-ins for a card list that has no options yet — DesignMode only. They
|
|
21020
21075
|
// carry no label: nothing is mapped to them yet, and a name shown here would
|
|
21021
21076
|
// read as a choice the Field offers. Bare boxes say the shape and no more.
|
|
21022
|
-
const DESIGN_STUB_IDS$
|
|
21077
|
+
const DESIGN_STUB_IDS$2 = ['stub-1', 'stub-2', 'stub-3'];
|
|
21023
21078
|
class SelectableCardInputComponent extends BaseInputComponent {
|
|
21024
21079
|
element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
|
|
21025
21080
|
data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
@@ -21054,7 +21109,7 @@ class SelectableCardInputComponent extends BaseInputComponent {
|
|
|
21054
21109
|
return data;
|
|
21055
21110
|
const options = this.cardOptions();
|
|
21056
21111
|
if (!options.length && this.isDesignMode) {
|
|
21057
|
-
return DESIGN_STUB_IDS$
|
|
21112
|
+
return DESIGN_STUB_IDS$2.map((id) => ({ id }));
|
|
21058
21113
|
}
|
|
21059
21114
|
return options.map((option) => ({
|
|
21060
21115
|
id: option.value,
|
|
@@ -21653,81 +21708,215 @@ var fileUploadInput = /*#__PURE__*/Object.freeze({
|
|
|
21653
21708
|
FileUploadInputComponent: FileUploadInputComponent
|
|
21654
21709
|
});
|
|
21655
21710
|
|
|
21656
|
-
|
|
21657
|
-
|
|
21658
|
-
|
|
21659
|
-
|
|
21660
|
-
|
|
21661
|
-
|
|
21662
|
-
|
|
21663
|
-
|
|
21711
|
+
/**
|
|
21712
|
+
* The list element's own classes: what it is, and which way its rows run.
|
|
21713
|
+
* The marker is drawn by the component rather than by `list-style`, so an
|
|
21714
|
+
* ordered list keeps its counter inside a flex container.
|
|
21715
|
+
*/
|
|
21716
|
+
function getClassList$2(variant, orientation, config) {
|
|
21717
|
+
const classList = [
|
|
21718
|
+
'm-list__list',
|
|
21719
|
+
`m-list__list--${variant}`,
|
|
21720
|
+
`m-list__list--${orientation}`,
|
|
21721
|
+
];
|
|
21722
|
+
if (config?.align)
|
|
21723
|
+
classList.push(`align-${config.align}`);
|
|
21664
21724
|
return classList.join(' ');
|
|
21665
21725
|
}
|
|
21666
21726
|
|
|
21667
|
-
|
|
21727
|
+
// Stand-ins for a List whose collection is not bound yet — DesignMode only,
|
|
21728
|
+
// the reason a SectionCarousel draws its own: an empty list has no height, and
|
|
21729
|
+
// a Control with no rect cannot be selected or moved on a Canvas.
|
|
21730
|
+
const DESIGN_STUB_IDS$1 = ['stub-1', 'stub-2', 'stub-3'];
|
|
21731
|
+
// `toLength` only appends `em` to real numbers — a numeric string comes back
|
|
21732
|
+
// bare, yielding `gap: 2`. Design-editor text fields and YAML both hand over
|
|
21733
|
+
// strings, so narrow before converting (the FlexContainer's rule, ADR 0008:
|
|
21734
|
+
// a gap is spacing, never a Size).
|
|
21735
|
+
const resolveGap = (value) => {
|
|
21736
|
+
if (value === undefined || value === null || value === '')
|
|
21737
|
+
return undefined;
|
|
21738
|
+
if (typeof value !== 'string')
|
|
21739
|
+
return toLength$1(value);
|
|
21740
|
+
const trimmed = value.trim();
|
|
21741
|
+
return toLength$1(Number.isNaN(Number(trimmed)) ? value : Number(trimmed));
|
|
21742
|
+
};
|
|
21743
|
+
const toItem = (item, index) => typeof item === 'string' ? { id: `${index}`, label: item } : item;
|
|
21744
|
+
/**
|
|
21745
|
+
* An ordered or unordered list of rows, with the body of a row written inline
|
|
21746
|
+
* as a template, mounted per row as a component, or left as the row's own
|
|
21747
|
+
* label — the three ways a List is filled, over a collection that is either
|
|
21748
|
+
* authored in its asset or bound from a Screen.
|
|
21749
|
+
*
|
|
21750
|
+
* Its marker is drawn here rather than by `list-style`: the rows sit in a flex
|
|
21751
|
+
* container so `gap` and `orientation` mean anything at all, and a flex item
|
|
21752
|
+
* has no marker box. Which also makes `startIcon` a plain replacement for it.
|
|
21753
|
+
*/
|
|
21754
|
+
class ListComponent extends ConfigComponent {
|
|
21755
|
+
subFolder = LAYOUT_ASSET_FOLDER.list;
|
|
21756
|
+
// The rows, mapped. Empty is the ordinary state before a binding resolves —
|
|
21757
|
+
// every read starts `undefined` — so nothing here treats it as an error.
|
|
21758
|
+
data = input(undefined, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
21759
|
+
// A row rendered by a mounted component: a row is instantiated per item, so
|
|
21760
|
+
// the markup has nowhere to write its selector.
|
|
21761
|
+
element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
|
|
21762
|
+
// A row body written inline instead. `ng-content` has no reach here — it
|
|
21763
|
+
// projects once, so inside the `@for` it would land in one row and leave the
|
|
21764
|
+
// rest empty.
|
|
21765
|
+
template = input(...(ngDevMode ? [undefined, { debugName: "template" }] : /* istanbul ignore next */ []));
|
|
21766
|
+
// Every setting a List carries, as an input beside the `config` it also
|
|
21767
|
+
// reads — the SectionCarousel pattern, and for its reason: a Control drawn
|
|
21768
|
+
// on a Canvas emits its scalars onto the tag, and an input is the only thing
|
|
21769
|
+
// a tag can land one on (ADR 0010, no-inline-config-template).
|
|
21770
|
+
variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
21771
|
+
orientation = input(undefined, ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
21772
|
+
gap = input(undefined, ...(ngDevMode ? [{ debugName: "gap" }] : /* istanbul ignore next */ []));
|
|
21773
|
+
startIcon = input(undefined, ...(ngDevMode ? [{ debugName: "startIcon" }] : /* istanbul ignore next */ []));
|
|
21668
21774
|
items = input(undefined, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
21669
|
-
|
|
21670
|
-
|
|
21671
|
-
|
|
21672
|
-
|
|
21673
|
-
|
|
21674
|
-
|
|
21675
|
-
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
21681
|
-
|
|
21682
|
-
|
|
21683
|
-
|
|
21684
|
-
|
|
21685
|
-
|
|
21686
|
-
|
|
21687
|
-
|
|
21688
|
-
|
|
21689
|
-
|
|
21690
|
-
|
|
21691
|
-
|
|
21692
|
-
|
|
21693
|
-
|
|
21694
|
-
|
|
21695
|
-
|
|
21696
|
-
|
|
21775
|
+
noTranslate = input(undefined, ...(ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []));
|
|
21776
|
+
resolvedVariant = computed(() => this.variant() ?? this.config()?.variant ?? 'unordered', ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
|
|
21777
|
+
isOrdered = computed(() => this.resolvedVariant() === 'ordered', ...(ngDevMode ? [{ debugName: "isOrdered" }] : /* istanbul ignore next */ []));
|
|
21778
|
+
resolvedOrientation = computed(() => this.orientation() ?? this.config()?.orientation ?? 'vertical', ...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
|
|
21779
|
+
resolvedStartIcon = computed(() => this.startIcon() ?? this.config()?.startIcon, ...(ngDevMode ? [{ debugName: "resolvedStartIcon" }] : /* istanbul ignore next */ []));
|
|
21780
|
+
resolvedGap = computed(() => resolveGap(this.gap() ?? this.config()?.gap), ...(ngDevMode ? [{ debugName: "resolvedGap" }] : /* istanbul ignore next */ []));
|
|
21781
|
+
/**
|
|
21782
|
+
* What sits before a row, or nothing at all. A `menu` carries its glyphs
|
|
21783
|
+
* inside the row body, so it takes no marker unless one is named outright.
|
|
21784
|
+
*/
|
|
21785
|
+
marker = computed(() => {
|
|
21786
|
+
if (this.resolvedStartIcon())
|
|
21787
|
+
return 'icon';
|
|
21788
|
+
const variant = this.resolvedVariant();
|
|
21789
|
+
if (variant === 'menu')
|
|
21790
|
+
return undefined;
|
|
21791
|
+
return variant === 'ordered' ? 'counter' : 'bullet';
|
|
21792
|
+
}, ...(ngDevMode ? [{ debugName: "marker" }] : /* istanbul ignore next */ []));
|
|
21793
|
+
// A bound `data` wins over the authored `items`, and both win over the
|
|
21794
|
+
// design stubs: what a caller passes at runtime is the more deliberate.
|
|
21795
|
+
rows = computed(() => {
|
|
21796
|
+
const bound = this.data();
|
|
21797
|
+
if (bound?.length)
|
|
21798
|
+
return bound;
|
|
21799
|
+
const authored = this.items() ?? this.config()?.items;
|
|
21800
|
+
if (authored?.length)
|
|
21801
|
+
return authored.map(toItem);
|
|
21802
|
+
if (bound || authored)
|
|
21803
|
+
return [];
|
|
21804
|
+
return this.isDesignMode
|
|
21805
|
+
? DESIGN_STUB_IDS$1.map((id, i) => ({ id, label: `Item ${i + 1}` }))
|
|
21806
|
+
: [];
|
|
21807
|
+
}, ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
21808
|
+
classNames = computed(() => getClassList$2(this.resolvedVariant(), this.resolvedOrientation(), this.config()), ...(ngDevMode ? [{ debugName: "classNames" }] : /* istanbul ignore next */ []));
|
|
21809
|
+
rowInputs = (item) => ({
|
|
21810
|
+
...(item.inputs ?? {}),
|
|
21811
|
+
});
|
|
21812
|
+
projectedTemplate = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "projectedTemplate" }] : /* istanbul ignore next */ []));
|
|
21813
|
+
rowTemplate = computed(() => this.template() ?? this.projectedTemplate(), ...(ngDevMode ? [{ debugName: "rowTemplate" }] : /* istanbul ignore next */ []));
|
|
21814
|
+
rowContext = (item, index, first, last) => ({
|
|
21815
|
+
$implicit: item,
|
|
21816
|
+
item,
|
|
21817
|
+
row: item.row,
|
|
21818
|
+
index,
|
|
21819
|
+
first,
|
|
21820
|
+
last,
|
|
21821
|
+
});
|
|
21822
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21823
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ListComponent, isStandalone: true, selector: "m-list, m-one-list", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, startIcon: { classPropertyName: "startIcon", publicName: "startIcon", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--m-list-gap": "resolvedGap()" }, classAttribute: "m-list" }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
21824
|
+
<ng-template #rowList>
|
|
21825
|
+
@for (item of rows(); track item.id; let i = $index) {
|
|
21826
|
+
<li class="m-list__item">
|
|
21827
|
+
@if (marker(); as kind) {
|
|
21828
|
+
<span class="m-list__marker" aria-hidden="true">
|
|
21829
|
+
@if (kind === 'icon') {
|
|
21830
|
+
<m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
|
|
21831
|
+
} @else if (kind === 'counter') {
|
|
21832
|
+
{{ i + 1 }}.
|
|
21833
|
+
} @else {
|
|
21834
|
+
•
|
|
21835
|
+
}
|
|
21836
|
+
</span>
|
|
21837
|
+
}
|
|
21838
|
+
<span class="m-list__body">
|
|
21839
|
+
@if (element(); as row) {
|
|
21840
|
+
<ng-container
|
|
21841
|
+
*ngComponentOutlet="row; inputs: rowInputs(item)"
|
|
21842
|
+
/>
|
|
21843
|
+
} @else if (rowTemplate(); as tpl) {
|
|
21844
|
+
<ng-container
|
|
21845
|
+
*ngTemplateOutlet="
|
|
21846
|
+
tpl;
|
|
21847
|
+
context: rowContext(item, i, $first, $last)
|
|
21848
|
+
"
|
|
21849
|
+
/>
|
|
21850
|
+
} @else if (item.label; as label) {
|
|
21851
|
+
{{ noTranslate() ? label : (label | translate) }}
|
|
21852
|
+
}
|
|
21853
|
+
</span>
|
|
21854
|
+
</li>
|
|
21855
|
+
}
|
|
21856
|
+
</ng-template>
|
|
21857
|
+
|
|
21858
|
+
@if (isOrdered()) {
|
|
21859
|
+
<ol [class]="classNames()">
|
|
21860
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21861
|
+
</ol>
|
|
21862
|
+
} @else {
|
|
21863
|
+
<ul [class]="classNames()">
|
|
21864
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21697
21865
|
</ul>
|
|
21698
21866
|
}
|
|
21699
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21867
|
+
`, 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%}.m-list__list{display:flex;gap:var(--m-list-gap, 0);margin:0;padding:0;list-style:none}.m-list__list--vertical{flex-direction:column}.m-list__list--horizontal{flex-direction:row;flex-wrap:wrap}.m-list__list.align-center{align-items:center}.m-list__list.align-right{align-items:flex-end}.m-list__item{display:flex;align-items:flex-start;gap:.5em;min-width:0}.m-list__marker{flex:0 0 auto;display:flex;align-items:center;color:var(--m-text-tertiary);line-height:inherit}.m-list__body{flex:1 1 auto;min-width:0}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21700
21868
|
}
|
|
21701
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type:
|
|
21869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, decorators: [{
|
|
21702
21870
|
type: Component,
|
|
21703
|
-
args: [{
|
|
21704
|
-
|
|
21705
|
-
|
|
21706
|
-
|
|
21707
|
-
|
|
21708
|
-
|
|
21709
|
-
|
|
21710
|
-
|
|
21711
|
-
|
|
21712
|
-
|
|
21713
|
-
|
|
21714
|
-
|
|
21715
|
-
|
|
21716
|
-
|
|
21717
|
-
|
|
21718
|
-
|
|
21719
|
-
|
|
21720
|
-
|
|
21721
|
-
|
|
21722
|
-
|
|
21723
|
-
|
|
21724
|
-
|
|
21871
|
+
args: [{ selector: 'm-list, m-one-list', imports: [NgComponentOutlet, NgTemplateOutlet, IconComponent, TranslatePipe], template: `
|
|
21872
|
+
<ng-template #rowList>
|
|
21873
|
+
@for (item of rows(); track item.id; let i = $index) {
|
|
21874
|
+
<li class="m-list__item">
|
|
21875
|
+
@if (marker(); as kind) {
|
|
21876
|
+
<span class="m-list__marker" aria-hidden="true">
|
|
21877
|
+
@if (kind === 'icon') {
|
|
21878
|
+
<m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
|
|
21879
|
+
} @else if (kind === 'counter') {
|
|
21880
|
+
{{ i + 1 }}.
|
|
21881
|
+
} @else {
|
|
21882
|
+
•
|
|
21883
|
+
}
|
|
21884
|
+
</span>
|
|
21885
|
+
}
|
|
21886
|
+
<span class="m-list__body">
|
|
21887
|
+
@if (element(); as row) {
|
|
21888
|
+
<ng-container
|
|
21889
|
+
*ngComponentOutlet="row; inputs: rowInputs(item)"
|
|
21890
|
+
/>
|
|
21891
|
+
} @else if (rowTemplate(); as tpl) {
|
|
21892
|
+
<ng-container
|
|
21893
|
+
*ngTemplateOutlet="
|
|
21894
|
+
tpl;
|
|
21895
|
+
context: rowContext(item, i, $first, $last)
|
|
21896
|
+
"
|
|
21897
|
+
/>
|
|
21898
|
+
} @else if (item.label; as label) {
|
|
21899
|
+
{{ noTranslate() ? label : (label | translate) }}
|
|
21900
|
+
}
|
|
21901
|
+
</span>
|
|
21902
|
+
</li>
|
|
21903
|
+
}
|
|
21904
|
+
</ng-template>
|
|
21905
|
+
|
|
21906
|
+
@if (isOrdered()) {
|
|
21907
|
+
<ol [class]="classNames()">
|
|
21908
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21909
|
+
</ol>
|
|
21910
|
+
} @else {
|
|
21911
|
+
<ul [class]="classNames()">
|
|
21912
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21725
21913
|
</ul>
|
|
21726
21914
|
}
|
|
21727
|
-
`,
|
|
21728
|
-
|
|
21729
|
-
|
|
21730
|
-
|
|
21915
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21916
|
+
class: 'm-list',
|
|
21917
|
+
'[style.--m-list-gap]': 'resolvedGap()',
|
|
21918
|
+
}, 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-list__list{display:flex;gap:var(--m-list-gap, 0);margin:0;padding:0;list-style:none}.m-list__list--vertical{flex-direction:column}.m-list__list--horizontal{flex-direction:row;flex-wrap:wrap}.m-list__list.align-center{align-items:center}.m-list__list.align-right{align-items:flex-end}.m-list__item{display:flex;align-items:flex-start;gap:.5em;min-width:0}.m-list__marker{flex:0 0 auto;display:flex;align-items:center;color:var(--m-text-tertiary);line-height:inherit}.m-list__body{flex:1 1 auto;min-width:0}\n"] }]
|
|
21919
|
+
}], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], startIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "startIcon", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
|
|
21731
21920
|
|
|
21732
21921
|
const TOTAL_COLUMNS = 12;
|
|
21733
21922
|
|
|
@@ -29030,9 +29219,17 @@ class NavMenuComponent {
|
|
|
29030
29219
|
return rawList;
|
|
29031
29220
|
return rawList.filter((item) => item.label?.toLowerCase().includes(q));
|
|
29032
29221
|
}, ...(ngDevMode ? [{ debugName: "navList" }] : /* istanbul ignore next */ []));
|
|
29222
|
+
// A List draws rows it was handed as ListItems; a NavRef reaches the row
|
|
29223
|
+
// body through `row`, which is what the template reads through `let-item`.
|
|
29224
|
+
rows = computed(() => (this.navList() ?? []).map((item, index) => ({
|
|
29225
|
+
// Index-suffixed: every row of one dynamic Nav shares its NavId, so the
|
|
29226
|
+
// NavRef alone is not a key.
|
|
29227
|
+
id: `${item.nav ?? item.href ?? item.label}-${index}`,
|
|
29228
|
+
row: item,
|
|
29229
|
+
})), ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
29033
29230
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29034
29231
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NavMenuComponent, isStandalone: true, selector: "m-nav-menu", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, filterBySearch: { classPropertyName: "filterBySearch", publicName: "filterBySearch", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
29035
|
-
<ng-template #menuTemplate let-item
|
|
29232
|
+
<ng-template #menuTemplate let-item="row">
|
|
29036
29233
|
<div class="nav-menu__item">
|
|
29037
29234
|
@if (item.nav; as nav) {
|
|
29038
29235
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29067,14 +29264,14 @@ class NavMenuComponent {
|
|
|
29067
29264
|
</div>
|
|
29068
29265
|
</ng-template>
|
|
29069
29266
|
<div class="nav-menu">
|
|
29070
|
-
<m-
|
|
29267
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29071
29268
|
</div>
|
|
29072
|
-
`, 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: MRefDirective, selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "component", type:
|
|
29269
|
+
`, 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: MRefDirective, selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "component", type: ListComponent, selector: "m-list, m-one-list", inputs: ["data", "element", "template", "variant", "orientation", "gap", "startIcon", "items", "noTranslate"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
29073
29270
|
}
|
|
29074
29271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, decorators: [{
|
|
29075
29272
|
type: Component,
|
|
29076
29273
|
args: [{ selector: 'm-nav-menu', template: `
|
|
29077
|
-
<ng-template #menuTemplate let-item
|
|
29274
|
+
<ng-template #menuTemplate let-item="row">
|
|
29078
29275
|
<div class="nav-menu__item">
|
|
29079
29276
|
@if (item.nav; as nav) {
|
|
29080
29277
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29109,9 +29306,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
29109
29306
|
</div>
|
|
29110
29307
|
</ng-template>
|
|
29111
29308
|
<div class="nav-menu">
|
|
29112
|
-
<m-
|
|
29309
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29113
29310
|
</div>
|
|
29114
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconComponent, MRefDirective, TranslatePipe,
|
|
29311
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconComponent, MRefDirective, TranslatePipe, ListComponent], 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"] }]
|
|
29115
29312
|
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], filterBySearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBySearch", required: false }] }] } });
|
|
29116
29313
|
|
|
29117
29314
|
class SettingsSearchBarComponent {
|
|
@@ -34598,5 +34795,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
34598
34795
|
* Generated bundle index. Do not edit.
|
|
34599
34796
|
*/
|
|
34600
34797
|
|
|
34601
|
-
export { DEFAULT_NAV_PARAM 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,
|
|
34602
|
-
//# sourceMappingURL=magmonium-one-magmonium-one-
|
|
34798
|
+
export { DEFAULT_NAV_PARAM 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, MurlUrlSerializer as a$, DEFAULT_NAV_SEGMENT as a0, DEFAULT_SIZE as a1, DashboardCardComponent as a2, DateInputComponent as a3, DatePickerComponent as a4, DeviceService as a5, DomService as a6, Domain as a7, DotGridComponent as a8, DragListDirective as a9, InputType as aA, InstrumentScoreComponent as aB, InterceptorObservables as aC, JumbotronComponent as aD, KeyValueComponent as aE, LAYOUT_ASSET_FOLDER as aF, LOGIN_COMPONENT as aG, LOGIN_STORE as aH, LanguageComponent as aI, ListComponent as aJ, LogoComponent as aK, MAG_SOCKET_EVENT as aL, MHeroColorDirective as aM, MHeroComponent as aN, MODAL_REF as aO, MODAL_STORE_REF as aP, MRefDirective as aQ, MStepComponent as aR, MURL_PARAM as aS, MURL_SEP as aT, ManifestEnrichmentService as aU, MenuComponent as aV, ModalDirective as aW, ModalRef as aX, ModalStore as aY, MoneyPipe as aZ, MultiRangeInputComponent as a_, DragListItemDirective as aa, DraggableDirective as ab, DropdownInputComponent as ac, FILTER_GROUP_CONTEXT as ad, FILTER_RANGE_MODES as ae, FILTER_VARIANTS as af, FLEX_VARIANTS as ag, FOLDER_PICK_LISTENER as ah, FORM_ASSET_FOLDER as ai, FileService as aj, FileUploadDirective as ak, FileUploadInputComponent as al, FlexComponent as am, FlexItemComponent as an, FormGroupComponent as ao, FrameComponent as ap, FreezeService as aq, GRID_BREAKPOINTS as ar, GetNavService as as, HeaderComponent$1 as at, HighlightDirective as au, HttpService as av, ICON_SOURCE as aw, IS_SIDE_PANEL as ax, IconComponent as ay, ImgComponent as az, TextOutputComponent as b, SectionAccordionGroupDirective as b$, NAV_DEFAULT_MURL as b0, NAV_ID_SEP as b1, NAV_MAIN_BUTTONS as b2, NAV_SEGMENT_RE as b3, NAV_STORE_REF as b4, NAV_WC_COMPONENTS as b5, NAV_WIDGET_MAP as b6, NavComponent as b7, NavDetailsComponent as b8, NavHeaderComponent as b9, PlaygroundComponent as bA, PositionDirective as bB, PwaInstallComponent as bC, ROOT_NAV$1 as bD, RadioGroupComponent as bE, RadioInputComponent as bF, RangeInputComponent as bG, RatingInputComponent as bH, ReactiveElementComponent as bI, RemoteComponent as bJ, RemoteLoaderService as bK, ResizeElementComponent as bL, RouteContainer as bM, RowComponent as bN, SEARCH_QUERY as bO, SEARCH_RESULTS_EVENT as bP, SECTION_ACCORDION_GROUP as bQ, SECTION_FORM_CONTEXT as bR, SHARED_ICONS as bS, SIZE_CONTEXT as bT, ScoreComponent as bU, ScrollComponent as bV, ScrollService as bW, SearchPanelComponent as bX, SearchStore as bY, SearchUserPanelComponent as bZ, SectionAccordionDirective as b_, NavMenuComponent as ba, NavStore as bb, NavTrailComponent as bc, NothingComponent as bd, NotificationElementComponent as be, NotificationGroupComponent as bf, NotificationPopupComponent as bg, NotificationService as bh, NotificationStore as bi, NotificationType as bj, NotificationWidgetComponent as bk, ONE_ASSET_BASE_URL as bl, OPTIONS_SOURCE as bm, OVERLAY_WIDGETS as bn, OneApp as bo, OptionsSourceDirective as bp, OverlayBodyComponent as bq, OverlayRef as br, OverlayService as bs, PLATFORM_BUTTON_NAV_IDS as bt, PLATFORM_EXTENSIBLE_NAV_IDS as bu, PLATFORM_NAV_MAP as bv, PLATFORM_ROOT_CHILDREN as bw, PaginationComponent as bx, PanelComponent as by, PercentagePipe as bz, ButtonComponent as c, USER_STORE_REF as c$, SectionBackComponent as c0, SectionBadgesComponent as c1, SectionButtonGroupComponent as c2, SectionCardComponent as c3, SectionCarouselComponent as c4, SectionComponent as c5, SectionFilterComponent as c6, SectionFilterGroupComponent as c7, SectionFilterMenuComponent as c8, SectionFilterPanelComponent as c9, StorageService as cA, StrokeLinecap as cB, StrokeLinejoin as cC, SummaryComponent as cD, SvgGeneratorComponent as cE, SvgGeneratorService as cF, SvgService as cG, TOTAL_COLUMNS as cH, TRANSLATION_SOURCE as cI, TableComponent as cJ, TechnicalMeterComponent as cK, TextInputComponent as cL, TextareaInputComponent as cM, ThemeComponent as cN, ThemeDataService as cO, ThemeService as cP, ThemeStore as cQ, TimeAgoPipe as cR, TimelineComponent as cS, ToggleButtonComponent as cT, ToggleInputComponent as cU, ToggleRadioInputComponent as cV, ToolTipDirective as cW, TooltipComponent as cX, TranslateService as cY, TreeGridComponent as cZ, URL_SEP as c_, SectionFilterRangePanelComponent as ca, SectionFooterComponent as cb, SectionFormComponent as cc, SectionFormItemComponent as cd, SectionHeaderComponent as ce, SectionHeroComponent as cf, SectionPaginationComponent as cg, SectionSearchComponent as ch, SectionStepperComponent as ci, SectionTabsComponent as cj, SectionToggleComponent as ck, SectionToggleItemDirective as cl, SelectableCardInputComponent as cm, SelectorDirective as cn, SettingsSearchBarComponent as co, SettingsSearchService as cp, ShapeComponent as cq, SharedStoreRegistry as cr, SidePanelDirective as cs, Size as ct, SocketStore as cu, SortComponent as cv, StatComponent as cw, StepComponent as cx, StepperComponent as cy, StepsComponent as cz, APP_CONTEXT_REF as d, getTreeGridRow as d$, USER_TAB_MAP as d0, UniverseComponent as d1, UserApiService as d2, UserAvatarComponent as d3, UserComponent as d4, UserNavComponent as d5, UserSettingsComponent as d6, UserStore as d7, WC_ROUTE_CHANGED_EVENT as d8, WC_SEARCH_GROUPS as d9, derivePropertyName as dA, emailValidation as dB, evaluate as dC, evaluateBool as dD, filterHoldsList as dE, filterHoldsOneBound as dF, filterHoldsOptions as dG, filterHoldsRange as dH, filterList as dI, filterNumber as dJ, filterNumberList as dK, filterOne as dL, filterPanelOf as dM, filterPanelWidth as dN, filterRange as dO, filterTreeGridRows as dP, filterValueList as dQ, filterValues as dR, flattenTreeGridRows as dS, formatBadgeCount as dT, fullName as dU, generateClipPath as dV, generateTransform as dW, getClassList as dX, getProperty as dY, getScrollParent as dZ, getTierFromPreviewPath as d_, WIN_USER_TAB_HOOK as da, WIN_USER_TAB_KEY as db, WatermarkComponent as dc, WcRouterStore as dd, WrapperInputComponent as de, anchorNavId as df, applyColorsToElement as dg, assetOptions as dh, bootstrapMagApp as di, bootstrapPwaInstall as dj, buildWcBaseUrl as dk, calculateLuminance as dl, calculateRanks as dm, cellText as dn, checkFilterCondition as dp, childNavId as dq, classListSignal as dr, coerceSize as ds, cornerEdge as dt, cornerSide as du, createMap as dv, createPlatformNavMap as dw, deriveAvatarGradient as dx, deriveContrastColor as dy, deriveOppositeColor as dz, ASSET_BASE_URL as e, provideMagWcConfig as e$, getUniqueId as e0, getValue as e1, hasErrorComputed as e2, hexToRgb as e3, hslToRgb$1 as e4, initMagmoniumApp as e5, initialNotificationState as e6, initialState$2 as e7, initials as e8, injectAuthenticate as e9, mergePlatformNav as eA, mergeUnique as eB, mergeUniqueBy as eC, mergeUniqueWith as eD, minAgeValidation as eE, minLengthValidation as eF, minValidation as eG, miniMarkToHtml as eH, navIdChain as eI, navIdFor as eJ, navIdSegment as eK, navIdToRoutePath as eL, navIdToSegments as eM, navParamOf as eN, navToId as eO, normalizeAssetOptions as eP, parentNavId as eQ, parseAddress as eR, parseColor as eS, parsePatternNames as eT, patternValidation as eU, patternsValidation as eV, platformNavWidgets as eW, privateGuard as eX, processImageToSvg as eY, provideAppContext as eZ, provideMagAppConfig as e_, injectInstallApp as ea, injectParentSize as eb, injectScrollSticky as ec, isButtonName as ed, isCancelledComputed as ee, isExtensiblePlatformNavId as ef, isJson as eg, isLoadingComputed as eh, isLocalhost as ei, isNavMenuConfig as ej, isNavRowsConfig as ek, isPlatformNavId as el, isSize as em, isTierPreview as en, isUrlLocalhost as eo, isValidNavId as ep, isValidNavSegment as eq, isWebComponent as er, linkToId as es, linkToNav as et, loadingActions as eu, mInterceptor as ev, manualValidation as ew, matchFieldValidation as ex, maxLengthValidation as ey, maxValidation as ez, AccordionBodyDirective as f, provideMagWcRoutes as f0, provideModalComponents as f1, provideMurlUrlSerializer as f2, provideNavWidgets as f3, provideOverlayWidgets as f4, providePlatformNavWidgets as f5, provideSearch as f6, provideSizeContext as f7, provideUserTabs as f8, publicGuard as f9, toggleTreeGridRow as fA, unfetchedPlatformNav as fB, urlValidation as fC, readFieldPatterns as fa, renderAddress as fb, requiredValidation as fc, resolveConfigAsset as fd, resolveIconSize as fe, resolvePallet as ff, resolvePatternRules as fg, resolveSize as fh, rgbToHex as fi, rgbToHsl as fj, rowHasChildren as fk, samePatterns as fl, segmentsToNavId as fm, setProperty as fn, setTreeGridChildren as fo, settingsWidgets as fp, shouldShowBadge as fq, splitNavId as fr, splitOnMatch as fs, stringToColor as ft, toAttrBool as fu, toAttrNumber as fv, toCssLength as fw, toHostNavId as fx, toLength$1 as fy, toLocalNavId as fz, 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 };
|
|
34799
|
+
//# sourceMappingURL=magmonium-one-magmonium-one-C5whWXef.mjs.map
|