@magmonium/one 0.2.42 → 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-BgYTkFCr.mjs → magmonium-one-magmonium-one-C5whWXef.mjs} +266 -86
- package/fesm2022/magmonium-one-magmonium-one-C5whWXef.mjs.map +1 -0
- package/fesm2022/{magmonium-one-otp-C8ULRXCd.mjs → magmonium-one-otp-COwJYVW6.mjs} +2 -2
- package/fesm2022/{magmonium-one-otp-C8ULRXCd.mjs.map → magmonium-one-otp-COwJYVW6.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BS7es5LT.mjs → magmonium-one-password-DUUhSEnp.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-BS7es5LT.mjs.map → magmonium-one-password-DUUhSEnp.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-toggle-D1LdmheC.mjs → magmonium-one-toggle-CFYMEJcZ.mjs} +2 -2
- package/fesm2022/{magmonium-one-toggle-D1LdmheC.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 +155 -19
- package/fesm2022/magmonium-one-magmonium-one-BgYTkFCr.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
|
}
|
|
@@ -8740,7 +8741,7 @@ class SectionHeaderComponent {
|
|
|
8740
8741
|
this.accordion()?.toggle();
|
|
8741
8742
|
}
|
|
8742
8743
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8743
|
-
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 <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<!-- 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 });
|
|
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 });
|
|
8744
8745
|
}
|
|
8745
8746
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
8746
8747
|
type: Component,
|
|
@@ -8764,7 +8765,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8764
8765
|
'[class.box-center]': 'boxAlign() === "center"',
|
|
8765
8766
|
'[class.box-right]': 'boxAlign() === "right"',
|
|
8766
8767
|
'[style.--m-section-header-max-width]': 'resolvedMaxWidth()',
|
|
8767
|
-
}, 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
|
|
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"] }]
|
|
8768
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"] }] } });
|
|
8769
8770
|
|
|
8770
8771
|
const BACK_BTN = {
|
|
@@ -12299,6 +12300,35 @@ function filterList(selection, name) {
|
|
|
12299
12300
|
function filterOne(selection, name) {
|
|
12300
12301
|
return toList(selection?.[name])[0];
|
|
12301
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
|
+
}
|
|
12302
12332
|
/**
|
|
12303
12333
|
* One Filter's own emit read as a list, whichever shape it was authored to
|
|
12304
12334
|
* carry — a standalone `multiple` Filter emits its list and a single-select one
|
|
@@ -12354,6 +12384,12 @@ const toList = (value) => {
|
|
|
12354
12384
|
return [];
|
|
12355
12385
|
return (Array.isArray(value) ? value : [value]).map(String);
|
|
12356
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
|
+
};
|
|
12357
12393
|
|
|
12358
12394
|
/**
|
|
12359
12395
|
* What a squeezed FilterGroup opens: one row per Filter beneath it, drilling
|
|
@@ -18792,7 +18828,8 @@ class DropdownBoxComponent {
|
|
|
18792
18828
|
(keydown.enter)="selectOption(option)"
|
|
18793
18829
|
tabindex="0"
|
|
18794
18830
|
>
|
|
18795
|
-
|
|
18831
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18832
|
+
@if (multiple() && !option.disabled) {
|
|
18796
18833
|
<input
|
|
18797
18834
|
type="checkbox"
|
|
18798
18835
|
class="dropdown-box__checkbox"
|
|
@@ -18832,7 +18869,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
18832
18869
|
(keydown.enter)="selectOption(option)"
|
|
18833
18870
|
tabindex="0"
|
|
18834
18871
|
>
|
|
18835
|
-
|
|
18872
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18873
|
+
@if (multiple() && !option.disabled) {
|
|
18836
18874
|
<input
|
|
18837
18875
|
type="checkbox"
|
|
18838
18876
|
class="dropdown-box__checkbox"
|
|
@@ -20365,7 +20403,7 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20365
20403
|
break;
|
|
20366
20404
|
}
|
|
20367
20405
|
case InputType.TOGGLE: {
|
|
20368
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
20406
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CFYMEJcZ.mjs');
|
|
20369
20407
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
20370
20408
|
break;
|
|
20371
20409
|
}
|
|
@@ -20377,12 +20415,12 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20377
20415
|
break;
|
|
20378
20416
|
}
|
|
20379
20417
|
case InputType.PASSWORD: {
|
|
20380
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
20418
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-DUUhSEnp.mjs');
|
|
20381
20419
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
20382
20420
|
break;
|
|
20383
20421
|
}
|
|
20384
20422
|
case InputType.OTP: {
|
|
20385
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
20423
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-COwJYVW6.mjs');
|
|
20386
20424
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
20387
20425
|
break;
|
|
20388
20426
|
}
|
|
@@ -21036,7 +21074,7 @@ var toggleRadio = /*#__PURE__*/Object.freeze({
|
|
|
21036
21074
|
// Stand-ins for a card list that has no options yet — DesignMode only. They
|
|
21037
21075
|
// carry no label: nothing is mapped to them yet, and a name shown here would
|
|
21038
21076
|
// read as a choice the Field offers. Bare boxes say the shape and no more.
|
|
21039
|
-
const DESIGN_STUB_IDS$
|
|
21077
|
+
const DESIGN_STUB_IDS$2 = ['stub-1', 'stub-2', 'stub-3'];
|
|
21040
21078
|
class SelectableCardInputComponent extends BaseInputComponent {
|
|
21041
21079
|
element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
|
|
21042
21080
|
data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
@@ -21071,7 +21109,7 @@ class SelectableCardInputComponent extends BaseInputComponent {
|
|
|
21071
21109
|
return data;
|
|
21072
21110
|
const options = this.cardOptions();
|
|
21073
21111
|
if (!options.length && this.isDesignMode) {
|
|
21074
|
-
return DESIGN_STUB_IDS$
|
|
21112
|
+
return DESIGN_STUB_IDS$2.map((id) => ({ id }));
|
|
21075
21113
|
}
|
|
21076
21114
|
return options.map((option) => ({
|
|
21077
21115
|
id: option.value,
|
|
@@ -21670,81 +21708,215 @@ var fileUploadInput = /*#__PURE__*/Object.freeze({
|
|
|
21670
21708
|
FileUploadInputComponent: FileUploadInputComponent
|
|
21671
21709
|
});
|
|
21672
21710
|
|
|
21673
|
-
|
|
21674
|
-
|
|
21675
|
-
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
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}`);
|
|
21681
21724
|
return classList.join(' ');
|
|
21682
21725
|
}
|
|
21683
21726
|
|
|
21684
|
-
|
|
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 */ []));
|
|
21685
21774
|
items = input(undefined, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
21686
|
-
|
|
21687
|
-
|
|
21688
|
-
|
|
21689
|
-
|
|
21690
|
-
|
|
21691
|
-
|
|
21692
|
-
|
|
21693
|
-
|
|
21694
|
-
|
|
21695
|
-
|
|
21696
|
-
|
|
21697
|
-
|
|
21698
|
-
|
|
21699
|
-
|
|
21700
|
-
|
|
21701
|
-
|
|
21702
|
-
|
|
21703
|
-
|
|
21704
|
-
|
|
21705
|
-
|
|
21706
|
-
|
|
21707
|
-
|
|
21708
|
-
|
|
21709
|
-
|
|
21710
|
-
|
|
21711
|
-
|
|
21712
|
-
|
|
21713
|
-
|
|
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" />
|
|
21714
21865
|
</ul>
|
|
21715
21866
|
}
|
|
21716
|
-
`, 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 });
|
|
21717
21868
|
}
|
|
21718
|
-
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: [{
|
|
21719
21870
|
type: Component,
|
|
21720
|
-
args: [{
|
|
21721
|
-
|
|
21722
|
-
|
|
21723
|
-
|
|
21724
|
-
|
|
21725
|
-
|
|
21726
|
-
|
|
21727
|
-
|
|
21728
|
-
|
|
21729
|
-
|
|
21730
|
-
|
|
21731
|
-
|
|
21732
|
-
|
|
21733
|
-
|
|
21734
|
-
|
|
21735
|
-
|
|
21736
|
-
|
|
21737
|
-
|
|
21738
|
-
|
|
21739
|
-
|
|
21740
|
-
|
|
21741
|
-
|
|
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" />
|
|
21742
21913
|
</ul>
|
|
21743
21914
|
}
|
|
21744
|
-
`,
|
|
21745
|
-
|
|
21746
|
-
|
|
21747
|
-
|
|
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 }] }] } });
|
|
21748
21920
|
|
|
21749
21921
|
const TOTAL_COLUMNS = 12;
|
|
21750
21922
|
|
|
@@ -29047,9 +29219,17 @@ class NavMenuComponent {
|
|
|
29047
29219
|
return rawList;
|
|
29048
29220
|
return rawList.filter((item) => item.label?.toLowerCase().includes(q));
|
|
29049
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 */ []));
|
|
29050
29230
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29051
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: `
|
|
29052
|
-
<ng-template #menuTemplate let-item
|
|
29232
|
+
<ng-template #menuTemplate let-item="row">
|
|
29053
29233
|
<div class="nav-menu__item">
|
|
29054
29234
|
@if (item.nav; as nav) {
|
|
29055
29235
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29084,14 +29264,14 @@ class NavMenuComponent {
|
|
|
29084
29264
|
</div>
|
|
29085
29265
|
</ng-template>
|
|
29086
29266
|
<div class="nav-menu">
|
|
29087
|
-
<m-
|
|
29267
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29088
29268
|
</div>
|
|
29089
|
-
`, 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 });
|
|
29090
29270
|
}
|
|
29091
29271
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, decorators: [{
|
|
29092
29272
|
type: Component,
|
|
29093
29273
|
args: [{ selector: 'm-nav-menu', template: `
|
|
29094
|
-
<ng-template #menuTemplate let-item
|
|
29274
|
+
<ng-template #menuTemplate let-item="row">
|
|
29095
29275
|
<div class="nav-menu__item">
|
|
29096
29276
|
@if (item.nav; as nav) {
|
|
29097
29277
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29126,9 +29306,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
29126
29306
|
</div>
|
|
29127
29307
|
</ng-template>
|
|
29128
29308
|
<div class="nav-menu">
|
|
29129
|
-
<m-
|
|
29309
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29130
29310
|
</div>
|
|
29131
|
-
`, 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"] }]
|
|
29132
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 }] }] } });
|
|
29133
29313
|
|
|
29134
29314
|
class SettingsSearchBarComponent {
|
|
@@ -34615,5 +34795,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
34615
34795
|
* Generated bundle index. Do not edit.
|
|
34616
34796
|
*/
|
|
34617
34797
|
|
|
34618
|
-
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,
|
|
34619
|
-
//# 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
|