@magmonium/one 0.2.42 → 0.2.44
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-CMlCmB14.mjs} +294 -95
- package/fesm2022/magmonium-one-magmonium-one-CMlCmB14.mjs.map +1 -0
- package/fesm2022/{magmonium-one-otp-C8ULRXCd.mjs → magmonium-one-otp-BFeL75pI.mjs} +2 -2
- package/fesm2022/{magmonium-one-otp-C8ULRXCd.mjs.map → magmonium-one-otp-BFeL75pI.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BS7es5LT.mjs → magmonium-one-password-BkILMyZy.mjs} +2 -2
- package/fesm2022/{magmonium-one-password-BS7es5LT.mjs.map → magmonium-one-password-BkILMyZy.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-toggle-D1LdmheC.mjs → magmonium-one-toggle-CBL0kOQK.mjs} +2 -2
- package/fesm2022/{magmonium-one-toggle-D1LdmheC.mjs.map → magmonium-one-toggle-CBL0kOQK.mjs.map} +1 -1
- package/fesm2022/magmonium-one.mjs +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +172 -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 —
|
|
@@ -3979,6 +3980,7 @@ const initialState$3 = {
|
|
|
3979
3980
|
appLink: undefined,
|
|
3980
3981
|
appNavId: undefined,
|
|
3981
3982
|
navOpenedByUser: false,
|
|
3983
|
+
menuNavId: undefined,
|
|
3982
3984
|
keepPanelOnPathChange: false,
|
|
3983
3985
|
panelPushed: false,
|
|
3984
3986
|
navScrolledDown: false,
|
|
@@ -4033,7 +4035,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4033
4035
|
* chrome opened onto the page's own menu instead of onto itself.
|
|
4034
4036
|
*/
|
|
4035
4037
|
const anchorRouteNavId = computed(() => visibleNavId(store.routeNavId() ?? ROOT_NAV$1), ...(ngDevMode ? [{ debugName: "anchorRouteNavId" }] : /* istanbul ignore next */ []));
|
|
4036
|
-
const id = computed(() => navIdFor(anchorRouteNavId(), store.murl()), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
4038
|
+
const id = computed(() => store.menuNavId() ?? navIdFor(anchorRouteNavId(), store.murl()), ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
4037
4039
|
/**
|
|
4038
4040
|
* The keys a panel is looked up under, nearest first: the anchored one, and
|
|
4039
4041
|
* — while a Murl is open — the root-anchored one behind it. A Murl is a
|
|
@@ -4248,6 +4250,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4248
4250
|
*/
|
|
4249
4251
|
const goToNav = (navId, params, options) => {
|
|
4250
4252
|
const wasOpen = untracked(() => store.hasMurl());
|
|
4253
|
+
patchState(store, { menuNavId: undefined });
|
|
4251
4254
|
const address = addressFor(navId, params);
|
|
4252
4255
|
const willOpen = untracked(() => splitNavId(navId, store.navMap()).murl.length > 0);
|
|
4253
4256
|
if (willOpen && !wasOpen) {
|
|
@@ -4263,7 +4266,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4263
4266
|
};
|
|
4264
4267
|
/** Closes the panel, popping our own entry when we are the one who pushed it. */
|
|
4265
4268
|
const closePanel = () => {
|
|
4266
|
-
patchState(store, { navOpenedByUser: false });
|
|
4269
|
+
patchState(store, { navOpenedByUser: false, menuNavId: undefined });
|
|
4267
4270
|
if (!untracked(() => store.hasMurl()))
|
|
4268
4271
|
return;
|
|
4269
4272
|
if (untracked(() => store.panelPushed())) {
|
|
@@ -4299,6 +4302,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4299
4302
|
routeNavId,
|
|
4300
4303
|
routeParams,
|
|
4301
4304
|
murl,
|
|
4305
|
+
menuNavId: undefined,
|
|
4302
4306
|
// Address changes clear the icon-opened flag (ADR 0013), except
|
|
4303
4307
|
// an explicit `keepPanel` goToNav (AppLogo while open).
|
|
4304
4308
|
navOpenedByUser: pathChanged && !keepPanel ? false : store.navOpenedByUser(),
|
|
@@ -4355,7 +4359,7 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4355
4359
|
}));
|
|
4356
4360
|
};
|
|
4357
4361
|
/**
|
|
4358
|
-
* In-panel "up".
|
|
4362
|
+
* In-panel "up". Murl steps replace the Address, so
|
|
4359
4363
|
* the browser back button still closes the whole panel. Leaving Murl
|
|
4360
4364
|
* space (or stepping while icon-opened) keeps the panel open so the menu
|
|
4361
4365
|
* follows the trail instead of closing (same exception as AppLogo).
|
|
@@ -4387,15 +4391,13 @@ const NavStore = signalStore({ providedIn: 'root' }, withState(initialState$3),
|
|
|
4387
4391
|
});
|
|
4388
4392
|
return;
|
|
4389
4393
|
}
|
|
4390
|
-
//
|
|
4391
|
-
|
|
4394
|
+
// Start above the menu actually shown: a leaf may already be showing
|
|
4395
|
+
// its ancestor's rows. Browsing that menu leaves the page in place.
|
|
4396
|
+
const owner = untracked(() => store.breadcrumb().header?.id);
|
|
4397
|
+
const parent = owner ? parentNavId(owner) : undefined;
|
|
4392
4398
|
if (!parent)
|
|
4393
4399
|
return;
|
|
4394
|
-
patchState(store, {
|
|
4395
|
-
navOpenedByUser: true,
|
|
4396
|
-
keepPanelOnPathChange: true,
|
|
4397
|
-
});
|
|
4398
|
-
router.navigateByUrl(addressFor(parent), { replaceUrl: true });
|
|
4400
|
+
patchState(store, { menuNavId: visibleNavId(parent) });
|
|
4399
4401
|
};
|
|
4400
4402
|
const loadNav = rxMethod(pipe(filter((req) => !!req.navId), tap(() => untracked(() => patchState(store, { navLoading: true }))), switchMap$1(({ navId, appNavId }) => getNavService
|
|
4401
4403
|
.getNav(navId, untracked(() => store.navMap()), {
|
|
@@ -6830,7 +6832,7 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6830
6832
|
break;
|
|
6831
6833
|
}
|
|
6832
6834
|
case InputType.TOGGLE: {
|
|
6833
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
6835
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CBL0kOQK.mjs');
|
|
6834
6836
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
6835
6837
|
break;
|
|
6836
6838
|
}
|
|
@@ -6842,12 +6844,12 @@ class SectionFormItemComponent extends ConfigComponent {
|
|
|
6842
6844
|
break;
|
|
6843
6845
|
}
|
|
6844
6846
|
case InputType.PASSWORD: {
|
|
6845
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
6847
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-BkILMyZy.mjs');
|
|
6846
6848
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
6847
6849
|
break;
|
|
6848
6850
|
}
|
|
6849
6851
|
case InputType.OTP: {
|
|
6850
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
6852
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-BFeL75pI.mjs');
|
|
6851
6853
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
6852
6854
|
break;
|
|
6853
6855
|
}
|
|
@@ -8740,7 +8742,7 @@ class SectionHeaderComponent {
|
|
|
8740
8742
|
this.accordion()?.toggle();
|
|
8741
8743
|
}
|
|
8742
8744
|
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 });
|
|
8745
|
+
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
8746
|
}
|
|
8745
8747
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
8746
8748
|
type: Component,
|
|
@@ -8764,7 +8766,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8764
8766
|
'[class.box-center]': 'boxAlign() === "center"',
|
|
8765
8767
|
'[class.box-right]': 'boxAlign() === "right"',
|
|
8766
8768
|
'[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
|
|
8769
|
+
}, 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
8770
|
}], 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
8771
|
|
|
8770
8772
|
const BACK_BTN = {
|
|
@@ -12299,6 +12301,35 @@ function filterList(selection, name) {
|
|
|
12299
12301
|
function filterOne(selection, name) {
|
|
12300
12302
|
return toList(selection?.[name])[0];
|
|
12301
12303
|
}
|
|
12304
|
+
/**
|
|
12305
|
+
* One key read as the single number a Filter feeding a numeric target carries,
|
|
12306
|
+
* or `undefined` when the Filter holds nothing. What `filterOne` is for a
|
|
12307
|
+
* `string` target: a Filter's options are matched by `value` strings all the
|
|
12308
|
+
* way down (ADR 0026), so the text a group's map holds has to become a number
|
|
12309
|
+
* somewhere, and here is the one place it can be checked rather than asserted.
|
|
12310
|
+
*
|
|
12311
|
+
* Anything that is not a finite number reads as `undefined` — an empty string,
|
|
12312
|
+
* a label left behind by a variant flipped after a selection was made, `NaN`.
|
|
12313
|
+
* `Number('')` answering `0` is the convenient lie a numeric target must never
|
|
12314
|
+
* be handed: absent and zero are different answers to a query.
|
|
12315
|
+
*/
|
|
12316
|
+
function filterNumber(selection, name) {
|
|
12317
|
+
return toNumber(toList(selection?.[name])[0]);
|
|
12318
|
+
}
|
|
12319
|
+
/**
|
|
12320
|
+
* One key read as the number list a `many` numeric target holds. What
|
|
12321
|
+
* `filterList` is for a `string[]` target, narrowed the way `filterNumber`
|
|
12322
|
+
* narrows `filterOne`.
|
|
12323
|
+
*
|
|
12324
|
+
* An entry that is not a finite number drops out rather than landing as `NaN`:
|
|
12325
|
+
* a list is what a query sends as repeated parameters, and a `NaN` among them
|
|
12326
|
+
* is a parameter no backend can read. An absent key still reads as empty.
|
|
12327
|
+
*/
|
|
12328
|
+
function filterNumberList(selection, name) {
|
|
12329
|
+
return toList(selection?.[name])
|
|
12330
|
+
.map(toNumber)
|
|
12331
|
+
.filter((entry) => entry !== undefined);
|
|
12332
|
+
}
|
|
12302
12333
|
/**
|
|
12303
12334
|
* One Filter's own emit read as a list, whichever shape it was authored to
|
|
12304
12335
|
* carry — a standalone `multiple` Filter emits its list and a single-select one
|
|
@@ -12354,6 +12385,12 @@ const toList = (value) => {
|
|
|
12354
12385
|
return [];
|
|
12355
12386
|
return (Array.isArray(value) ? value : [value]).map(String);
|
|
12356
12387
|
};
|
|
12388
|
+
const toNumber = (value) => {
|
|
12389
|
+
if (value === undefined || value.trim() === '')
|
|
12390
|
+
return undefined;
|
|
12391
|
+
const parsed = Number(value);
|
|
12392
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
12393
|
+
};
|
|
12357
12394
|
|
|
12358
12395
|
/**
|
|
12359
12396
|
* What a squeezed FilterGroup opens: one row per Filter beneath it, drilling
|
|
@@ -18792,7 +18829,8 @@ class DropdownBoxComponent {
|
|
|
18792
18829
|
(keydown.enter)="selectOption(option)"
|
|
18793
18830
|
tabindex="0"
|
|
18794
18831
|
>
|
|
18795
|
-
|
|
18832
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18833
|
+
@if (multiple() && !option.disabled) {
|
|
18796
18834
|
<input
|
|
18797
18835
|
type="checkbox"
|
|
18798
18836
|
class="dropdown-box__checkbox"
|
|
@@ -18832,7 +18870,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
18832
18870
|
(keydown.enter)="selectOption(option)"
|
|
18833
18871
|
tabindex="0"
|
|
18834
18872
|
>
|
|
18835
|
-
|
|
18873
|
+
<!-- A group header is a row, never a choice: no box to tick. -->
|
|
18874
|
+
@if (multiple() && !option.disabled) {
|
|
18836
18875
|
<input
|
|
18837
18876
|
type="checkbox"
|
|
18838
18877
|
class="dropdown-box__checkbox"
|
|
@@ -20365,7 +20404,7 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20365
20404
|
break;
|
|
20366
20405
|
}
|
|
20367
20406
|
case InputType.TOGGLE: {
|
|
20368
|
-
const { ToggleInputComponent } = await import('./magmonium-one-toggle-
|
|
20407
|
+
const { ToggleInputComponent } = await import('./magmonium-one-toggle-CBL0kOQK.mjs');
|
|
20369
20408
|
this.createDynamicComponent(seq, ToggleInputComponent, [], true);
|
|
20370
20409
|
break;
|
|
20371
20410
|
}
|
|
@@ -20377,12 +20416,12 @@ class WrapperInputComponent extends ConfigComponent {
|
|
|
20377
20416
|
break;
|
|
20378
20417
|
}
|
|
20379
20418
|
case InputType.PASSWORD: {
|
|
20380
|
-
const { PasswordInputComponent } = await import('./magmonium-one-password-
|
|
20419
|
+
const { PasswordInputComponent } = await import('./magmonium-one-password-BkILMyZy.mjs');
|
|
20381
20420
|
this.createDynamicComponent(seq, PasswordInputComponent);
|
|
20382
20421
|
break;
|
|
20383
20422
|
}
|
|
20384
20423
|
case InputType.OTP: {
|
|
20385
|
-
const { OtpInputComponent } = await import('./magmonium-one-otp-
|
|
20424
|
+
const { OtpInputComponent } = await import('./magmonium-one-otp-BFeL75pI.mjs');
|
|
20386
20425
|
this.createDynamicComponent(seq, OtpInputComponent);
|
|
20387
20426
|
break;
|
|
20388
20427
|
}
|
|
@@ -21670,81 +21709,233 @@ var fileUploadInput = /*#__PURE__*/Object.freeze({
|
|
|
21670
21709
|
FileUploadInputComponent: FileUploadInputComponent
|
|
21671
21710
|
});
|
|
21672
21711
|
|
|
21673
|
-
|
|
21674
|
-
|
|
21675
|
-
|
|
21676
|
-
|
|
21677
|
-
|
|
21678
|
-
|
|
21679
|
-
|
|
21680
|
-
|
|
21712
|
+
/**
|
|
21713
|
+
* The list element's own classes: what it is, and which way its rows run.
|
|
21714
|
+
* The marker is drawn by the component rather than by `list-style`, so an
|
|
21715
|
+
* ordered list keeps its counter inside a flex container.
|
|
21716
|
+
*/
|
|
21717
|
+
function getClassList$2(variant, orientation, config) {
|
|
21718
|
+
const classList = [
|
|
21719
|
+
'm-list__list',
|
|
21720
|
+
`m-list__list--${variant}`,
|
|
21721
|
+
`m-list__list--${orientation}`,
|
|
21722
|
+
];
|
|
21723
|
+
if (config?.align)
|
|
21724
|
+
classList.push(`align-${config.align}`);
|
|
21681
21725
|
return classList.join(' ');
|
|
21682
21726
|
}
|
|
21683
21727
|
|
|
21684
|
-
|
|
21728
|
+
// The stand-in row a List draws on a Canvas — DesignMode only, and exactly
|
|
21729
|
+
// one however long the collection behind it will be. Every row of a List is
|
|
21730
|
+
// the same body drawn again, so a second stub shows nothing a first did not
|
|
21731
|
+
// and costs the author the vertical space they are laying out in (m-one-ui
|
|
21732
|
+
// CONTEXT.md ListControl).
|
|
21733
|
+
//
|
|
21734
|
+
// Drawn only once there is a body to draw. A List with no row template and no
|
|
21735
|
+
// row component is one the author has not filled yet, and it renders as the
|
|
21736
|
+
// empty box its own min-height gives it rather than as rows of invented text
|
|
21737
|
+
// — the state a RepeatControl is in before its source is picked.
|
|
21738
|
+
const DESIGN_STUB = { id: 'stub-1', label: 'Item 1' };
|
|
21739
|
+
// `toLength` only appends `em` to real numbers — a numeric string comes back
|
|
21740
|
+
// bare, yielding `gap: 2`. Design-editor text fields and YAML both hand over
|
|
21741
|
+
// strings, so narrow before converting (the FlexContainer's rule, ADR 0008:
|
|
21742
|
+
// a gap is spacing, never a Size).
|
|
21743
|
+
const resolveGap = (value) => {
|
|
21744
|
+
if (value === undefined || value === null || value === '')
|
|
21745
|
+
return undefined;
|
|
21746
|
+
if (typeof value !== 'string')
|
|
21747
|
+
return toLength$1(value);
|
|
21748
|
+
const trimmed = value.trim();
|
|
21749
|
+
return toLength$1(Number.isNaN(Number(trimmed)) ? value : Number(trimmed));
|
|
21750
|
+
};
|
|
21751
|
+
const toItem = (item, index) => typeof item === 'string' ? { id: `${index}`, label: item } : item;
|
|
21752
|
+
/**
|
|
21753
|
+
* An ordered or unordered list of rows, with the body of a row written inline
|
|
21754
|
+
* as a template, mounted per row as a component, or left as the row's own
|
|
21755
|
+
* label — the three ways a List is filled, over a collection that is either
|
|
21756
|
+
* authored in its asset or bound from a Screen.
|
|
21757
|
+
*
|
|
21758
|
+
* Its marker is drawn here rather than by `list-style`: the rows sit in a flex
|
|
21759
|
+
* container so `gap` and `orientation` mean anything at all, and a flex item
|
|
21760
|
+
* has no marker box. Which also makes `startIcon` a plain replacement for it.
|
|
21761
|
+
*/
|
|
21762
|
+
class ListComponent extends ConfigComponent {
|
|
21763
|
+
subFolder = LAYOUT_ASSET_FOLDER.list;
|
|
21764
|
+
// The rows, mapped. Empty is the ordinary state before a binding resolves —
|
|
21765
|
+
// every read starts `undefined` — so nothing here treats it as an error.
|
|
21766
|
+
data = input(undefined, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
|
|
21767
|
+
// A row rendered by a mounted component: a row is instantiated per item, so
|
|
21768
|
+
// the markup has nowhere to write its selector.
|
|
21769
|
+
element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
|
|
21770
|
+
// A row body written inline instead. `ng-content` has no reach here — it
|
|
21771
|
+
// projects once, so inside the `@for` it would land in one row and leave the
|
|
21772
|
+
// rest empty.
|
|
21773
|
+
template = input(...(ngDevMode ? [undefined, { debugName: "template" }] : /* istanbul ignore next */ []));
|
|
21774
|
+
// Every setting a List carries, as an input beside the `config` it also
|
|
21775
|
+
// reads — the SectionCarousel pattern, and for its reason: a Control drawn
|
|
21776
|
+
// on a Canvas emits its scalars onto the tag, and an input is the only thing
|
|
21777
|
+
// a tag can land one on (ADR 0010, no-inline-config-template).
|
|
21778
|
+
variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
21779
|
+
orientation = input(undefined, ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
|
|
21780
|
+
gap = input(undefined, ...(ngDevMode ? [{ debugName: "gap" }] : /* istanbul ignore next */ []));
|
|
21781
|
+
startIcon = input(undefined, ...(ngDevMode ? [{ debugName: "startIcon" }] : /* istanbul ignore next */ []));
|
|
21685
21782
|
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
|
-
|
|
21783
|
+
noTranslate = input(undefined, ...(ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []));
|
|
21784
|
+
resolvedVariant = computed(() => this.variant() ?? this.config()?.variant ?? 'unordered', ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
|
|
21785
|
+
isOrdered = computed(() => this.resolvedVariant() === 'ordered', ...(ngDevMode ? [{ debugName: "isOrdered" }] : /* istanbul ignore next */ []));
|
|
21786
|
+
resolvedOrientation = computed(() => this.orientation() ?? this.config()?.orientation ?? 'vertical', ...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
|
|
21787
|
+
resolvedStartIcon = computed(() => this.startIcon() ?? this.config()?.startIcon, ...(ngDevMode ? [{ debugName: "resolvedStartIcon" }] : /* istanbul ignore next */ []));
|
|
21788
|
+
resolvedGap = computed(() => resolveGap(this.gap() ?? this.config()?.gap), ...(ngDevMode ? [{ debugName: "resolvedGap" }] : /* istanbul ignore next */ []));
|
|
21789
|
+
/**
|
|
21790
|
+
* What sits before a row, or nothing at all. A `menu` carries its glyphs
|
|
21791
|
+
* inside the row body, so it takes no marker unless one is named outright.
|
|
21792
|
+
*/
|
|
21793
|
+
marker = computed(() => {
|
|
21794
|
+
if (this.resolvedStartIcon())
|
|
21795
|
+
return 'icon';
|
|
21796
|
+
const variant = this.resolvedVariant();
|
|
21797
|
+
if (variant === 'menu')
|
|
21798
|
+
return undefined;
|
|
21799
|
+
return variant === 'ordered' ? 'counter' : 'bullet';
|
|
21800
|
+
}, ...(ngDevMode ? [{ debugName: "marker" }] : /* istanbul ignore next */ []));
|
|
21801
|
+
// A bound `data` wins over the authored `items`, and both win over the
|
|
21802
|
+
// design stub: what a caller passes at runtime is the more deliberate.
|
|
21803
|
+
rows = computed(() => {
|
|
21804
|
+
const bound = this.data();
|
|
21805
|
+
if (bound?.length)
|
|
21806
|
+
return bound;
|
|
21807
|
+
const authored = this.items() ?? this.config()?.items;
|
|
21808
|
+
if (authored?.length)
|
|
21809
|
+
return authored.map(toItem);
|
|
21810
|
+
if (bound || authored)
|
|
21811
|
+
return [];
|
|
21812
|
+
// A body is what makes a stub worth drawing: without one the row would be
|
|
21813
|
+
// invented text standing in for nothing, where an empty box says exactly
|
|
21814
|
+
// what is true — this List has not been filled in yet.
|
|
21815
|
+
return this.isDesignMode && this.hasRowBody() ? [DESIGN_STUB] : [];
|
|
21816
|
+
}, ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
21817
|
+
/** Whether a row has anything to render beyond its own `label`. */
|
|
21818
|
+
hasRowBody = computed(() => !!this.element() || !!this.rowTemplate(), ...(ngDevMode ? [{ debugName: "hasRowBody" }] : /* istanbul ignore next */ []));
|
|
21819
|
+
classNames = computed(() => getClassList$2(this.resolvedVariant(), this.resolvedOrientation(), this.config()), ...(ngDevMode ? [{ debugName: "classNames" }] : /* istanbul ignore next */ []));
|
|
21820
|
+
rowInputs = (item) => ({
|
|
21821
|
+
...(item.inputs ?? {}),
|
|
21822
|
+
});
|
|
21823
|
+
projectedTemplate = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "projectedTemplate" }] : /* istanbul ignore next */ []));
|
|
21824
|
+
rowTemplate = computed(() => this.template() ?? this.projectedTemplate(), ...(ngDevMode ? [{ debugName: "rowTemplate" }] : /* istanbul ignore next */ []));
|
|
21825
|
+
/**
|
|
21826
|
+
* What an inline row body reads. `row` falls back to the item itself, so a
|
|
21827
|
+
* row authored in the asset reaches the template the way a mapped one does:
|
|
21828
|
+
* an authored `ListItem` carries no `row` of its own, and a body reading
|
|
21829
|
+
* `undefined` would make the static source unusable to anything but a bare
|
|
21830
|
+
* label (m-one-ui CONTEXT.md ListControl).
|
|
21831
|
+
*/
|
|
21832
|
+
rowContext = (item, index, first, last) => ({
|
|
21833
|
+
$implicit: item,
|
|
21834
|
+
item,
|
|
21835
|
+
row: item.row ?? item,
|
|
21836
|
+
index,
|
|
21837
|
+
first,
|
|
21838
|
+
last,
|
|
21839
|
+
});
|
|
21840
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21841
|
+
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: { "class.is-design-mode": "isDesignMode", "style.--m-list-gap": "resolvedGap()" }, classAttribute: "m-list" }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
21842
|
+
<ng-template #rowList>
|
|
21843
|
+
@for (item of rows(); track item.id; let i = $index) {
|
|
21844
|
+
<li class="m-list__item">
|
|
21845
|
+
@if (marker(); as kind) {
|
|
21846
|
+
<span class="m-list__marker" aria-hidden="true">
|
|
21847
|
+
@if (kind === 'icon') {
|
|
21848
|
+
<m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
|
|
21849
|
+
} @else if (kind === 'counter') {
|
|
21850
|
+
{{ i + 1 }}.
|
|
21851
|
+
} @else {
|
|
21852
|
+
•
|
|
21853
|
+
}
|
|
21854
|
+
</span>
|
|
21855
|
+
}
|
|
21856
|
+
<span class="m-list__body">
|
|
21857
|
+
@if (element(); as row) {
|
|
21858
|
+
<ng-container
|
|
21859
|
+
*ngComponentOutlet="row; inputs: rowInputs(item)"
|
|
21860
|
+
/>
|
|
21861
|
+
} @else if (rowTemplate(); as tpl) {
|
|
21862
|
+
<ng-container
|
|
21863
|
+
*ngTemplateOutlet="
|
|
21864
|
+
tpl;
|
|
21865
|
+
context: rowContext(item, i, $first, $last)
|
|
21866
|
+
"
|
|
21867
|
+
/>
|
|
21868
|
+
} @else if (item.label; as label) {
|
|
21869
|
+
{{ noTranslate() ? label : (label | translate) }}
|
|
21870
|
+
}
|
|
21871
|
+
</span>
|
|
21872
|
+
</li>
|
|
21873
|
+
}
|
|
21874
|
+
</ng-template>
|
|
21875
|
+
|
|
21876
|
+
@if (isOrdered()) {
|
|
21877
|
+
<ol [class]="classNames()">
|
|
21878
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21879
|
+
</ol>
|
|
21880
|
+
} @else {
|
|
21881
|
+
<ul [class]="classNames()">
|
|
21882
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21714
21883
|
</ul>
|
|
21715
21884
|
}
|
|
21716
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21885
|
+
`, 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%}:host(.is-design-mode){min-height:4em}.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
21886
|
}
|
|
21718
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type:
|
|
21887
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, decorators: [{
|
|
21719
21888
|
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
|
-
|
|
21889
|
+
args: [{ selector: 'm-list, m-one-list', imports: [NgComponentOutlet, NgTemplateOutlet, IconComponent, TranslatePipe], template: `
|
|
21890
|
+
<ng-template #rowList>
|
|
21891
|
+
@for (item of rows(); track item.id; let i = $index) {
|
|
21892
|
+
<li class="m-list__item">
|
|
21893
|
+
@if (marker(); as kind) {
|
|
21894
|
+
<span class="m-list__marker" aria-hidden="true">
|
|
21895
|
+
@if (kind === 'icon') {
|
|
21896
|
+
<m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
|
|
21897
|
+
} @else if (kind === 'counter') {
|
|
21898
|
+
{{ i + 1 }}.
|
|
21899
|
+
} @else {
|
|
21900
|
+
•
|
|
21901
|
+
}
|
|
21902
|
+
</span>
|
|
21903
|
+
}
|
|
21904
|
+
<span class="m-list__body">
|
|
21905
|
+
@if (element(); as row) {
|
|
21906
|
+
<ng-container
|
|
21907
|
+
*ngComponentOutlet="row; inputs: rowInputs(item)"
|
|
21908
|
+
/>
|
|
21909
|
+
} @else if (rowTemplate(); as tpl) {
|
|
21910
|
+
<ng-container
|
|
21911
|
+
*ngTemplateOutlet="
|
|
21912
|
+
tpl;
|
|
21913
|
+
context: rowContext(item, i, $first, $last)
|
|
21914
|
+
"
|
|
21915
|
+
/>
|
|
21916
|
+
} @else if (item.label; as label) {
|
|
21917
|
+
{{ noTranslate() ? label : (label | translate) }}
|
|
21918
|
+
}
|
|
21919
|
+
</span>
|
|
21920
|
+
</li>
|
|
21921
|
+
}
|
|
21922
|
+
</ng-template>
|
|
21923
|
+
|
|
21924
|
+
@if (isOrdered()) {
|
|
21925
|
+
<ol [class]="classNames()">
|
|
21926
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21927
|
+
</ol>
|
|
21928
|
+
} @else {
|
|
21929
|
+
<ul [class]="classNames()">
|
|
21930
|
+
<ng-container *ngTemplateOutlet="rowList" />
|
|
21742
21931
|
</ul>
|
|
21743
21932
|
}
|
|
21744
|
-
`,
|
|
21745
|
-
|
|
21746
|
-
|
|
21747
|
-
|
|
21933
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21934
|
+
class: 'm-list',
|
|
21935
|
+
'[class.is-design-mode]': 'isDesignMode',
|
|
21936
|
+
'[style.--m-list-gap]': 'resolvedGap()',
|
|
21937
|
+
}, 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%}:host(.is-design-mode){min-height:4em}.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"] }]
|
|
21938
|
+
}], 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
21939
|
|
|
21749
21940
|
const TOTAL_COLUMNS = 12;
|
|
21750
21941
|
|
|
@@ -28982,7 +29173,7 @@ class NavHeaderComponent {
|
|
|
28982
29173
|
_searchStore = inject(SearchStore);
|
|
28983
29174
|
_isUser = computed(() => this._navStore.id() === `${ROOT_NAV$1}_user`, ...(ngDevMode ? [{ debugName: "_isUser" }] : /* istanbul ignore next */ []));
|
|
28984
29175
|
_isSearch = computed(() => this._navStore.id() === `${ROOT_NAV$1}_search`, ...(ngDevMode ? [{ debugName: "_isSearch" }] : /* istanbul ignore next */ []));
|
|
28985
|
-
_hasParent = computed(() => this._navStore.
|
|
29176
|
+
_hasParent = computed(() => this._navStore.breadcrumb().header?.id !== ROOT_NAV$1, ...(ngDevMode ? [{ debugName: "_hasParent" }] : /* istanbul ignore next */ []));
|
|
28986
29177
|
_trail = computed(() => {
|
|
28987
29178
|
const trail = this._navStore.breadcrumb().trail;
|
|
28988
29179
|
return trail && trail.length > 0 ? trail : null;
|
|
@@ -29047,9 +29238,17 @@ class NavMenuComponent {
|
|
|
29047
29238
|
return rawList;
|
|
29048
29239
|
return rawList.filter((item) => item.label?.toLowerCase().includes(q));
|
|
29049
29240
|
}, ...(ngDevMode ? [{ debugName: "navList" }] : /* istanbul ignore next */ []));
|
|
29241
|
+
// A List draws rows it was handed as ListItems; a NavRef reaches the row
|
|
29242
|
+
// body through `row`, which is what the template reads through `let-item`.
|
|
29243
|
+
rows = computed(() => (this.navList() ?? []).map((item, index) => ({
|
|
29244
|
+
// Index-suffixed: every row of one dynamic Nav shares its NavId, so the
|
|
29245
|
+
// NavRef alone is not a key.
|
|
29246
|
+
id: `${item.nav ?? item.href ?? item.label}-${index}`,
|
|
29247
|
+
row: item,
|
|
29248
|
+
})), ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
29050
29249
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29051
29250
|
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
|
|
29251
|
+
<ng-template #menuTemplate let-item="row">
|
|
29053
29252
|
<div class="nav-menu__item">
|
|
29054
29253
|
@if (item.nav; as nav) {
|
|
29055
29254
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29084,14 +29283,14 @@ class NavMenuComponent {
|
|
|
29084
29283
|
</div>
|
|
29085
29284
|
</ng-template>
|
|
29086
29285
|
<div class="nav-menu">
|
|
29087
|
-
<m-
|
|
29286
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29088
29287
|
</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:
|
|
29288
|
+
`, 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
29289
|
}
|
|
29091
29290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, decorators: [{
|
|
29092
29291
|
type: Component,
|
|
29093
29292
|
args: [{ selector: 'm-nav-menu', template: `
|
|
29094
|
-
<ng-template #menuTemplate let-item
|
|
29293
|
+
<ng-template #menuTemplate let-item="row">
|
|
29095
29294
|
<div class="nav-menu__item">
|
|
29096
29295
|
@if (item.nav; as nav) {
|
|
29097
29296
|
<!-- Icon and label share one NavRef so either click reaches the same place. -->
|
|
@@ -29126,9 +29325,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
29126
29325
|
</div>
|
|
29127
29326
|
</ng-template>
|
|
29128
29327
|
<div class="nav-menu">
|
|
29129
|
-
<m-
|
|
29328
|
+
<m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
|
|
29130
29329
|
</div>
|
|
29131
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconComponent, MRefDirective, TranslatePipe,
|
|
29330
|
+
`, 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
29331
|
}], 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
29332
|
|
|
29134
29333
|
class SettingsSearchBarComponent {
|
|
@@ -34615,5 +34814,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
34615
34814
|
* Generated bundle index. Do not edit.
|
|
34616
34815
|
*/
|
|
34617
34816
|
|
|
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-
|
|
34817
|
+
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 };
|
|
34818
|
+
//# sourceMappingURL=magmonium-one-magmonium-one-CMlCmB14.mjs.map
|