@akcelik/strct 5.14.0 → 5.16.0
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/akcelik-strct.mjs +438 -45
- package/fesm2022/akcelik-strct.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/_tokens.scss +31 -30
- package/types/akcelik-strct.d.ts +115 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, DOCUMENT, signal, computed, Injectable, input, isDevMode, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef, NgZone, booleanAttribute, afterNextRender, Directive, HostListener, TemplateRef, contentChildren, viewChild, effect, untracked, model, output, ApplicationRef, EnvironmentInjector, createComponent, PLATFORM_ID, forwardRef, DestroyRef,
|
|
2
|
+
import { inject, DOCUMENT, signal, computed, Injectable, input, isDevMode, ViewEncapsulation, ChangeDetectionStrategy, Component, ElementRef, NgZone, booleanAttribute, afterNextRender, Directive, HostListener, TemplateRef, contentChildren, viewChild, effect, untracked, model, output, contentChild, ApplicationRef, EnvironmentInjector, createComponent, PLATFORM_ID, forwardRef, DestroyRef, InjectionToken, ViewContainerRef, Injector, viewChildren, Renderer2, Pipe, afterRenderEffect } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import { DOCUMENT as DOCUMENT$1, NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
@@ -1135,7 +1135,7 @@ class StrctDropdown {
|
|
|
1135
1135
|
const target = event.target;
|
|
1136
1136
|
if (target?.closest('.strct-dd__itemaction'))
|
|
1137
1137
|
return; // the second action is not the item
|
|
1138
|
-
const item = target?.closest(
|
|
1138
|
+
const item = target?.closest(DD_ITEM);
|
|
1139
1139
|
if (item && item.getAttribute('aria-disabled') !== 'true')
|
|
1140
1140
|
this.close(true);
|
|
1141
1141
|
}
|
|
@@ -1183,14 +1183,14 @@ class StrctDropdown {
|
|
|
1183
1183
|
onItemActionKey(event, key) {
|
|
1184
1184
|
const target = event.target;
|
|
1185
1185
|
if (key === 'ArrowLeft') {
|
|
1186
|
-
const item = target.closest(
|
|
1186
|
+
const item = target.closest(DD_ITEM);
|
|
1187
1187
|
if (!target.classList.contains('strct-dd__itemaction') || !item)
|
|
1188
1188
|
return;
|
|
1189
1189
|
event.preventDefault();
|
|
1190
1190
|
item.focus();
|
|
1191
1191
|
return;
|
|
1192
1192
|
}
|
|
1193
|
-
const item = target.closest(
|
|
1193
|
+
const item = target.closest(DD_ITEM);
|
|
1194
1194
|
const action = item?.querySelector('.strct-dd__itemaction');
|
|
1195
1195
|
if (!item || item !== target || !action)
|
|
1196
1196
|
return;
|
|
@@ -1202,7 +1202,9 @@ class StrctDropdown {
|
|
|
1202
1202
|
}
|
|
1203
1203
|
enabledItems() {
|
|
1204
1204
|
return [
|
|
1205
|
-
...this.host.nativeElement.querySelectorAll('
|
|
1205
|
+
...this.host.nativeElement.querySelectorAll(`${DD_ITEM.split(', ')
|
|
1206
|
+
.map((sel) => `${sel}:not([aria-disabled="true"])`)
|
|
1207
|
+
.join(', ')}, strct-submenu .strct-submenu__trigger`),
|
|
1206
1208
|
];
|
|
1207
1209
|
}
|
|
1208
1210
|
/** What the arrow keys visit: enabled items, plus disabled ones that carry a
|
|
@@ -1210,7 +1212,7 @@ class StrctDropdown {
|
|
|
1210
1212
|
navItems() {
|
|
1211
1213
|
const host = this.host.nativeElement;
|
|
1212
1214
|
const rows = [
|
|
1213
|
-
...host.querySelectorAll(
|
|
1215
|
+
...host.querySelectorAll(DD_ITEM),
|
|
1214
1216
|
...host.querySelectorAll('strct-submenu .strct-submenu__trigger'),
|
|
1215
1217
|
].filter((el) => el.getAttribute('aria-disabled') !== 'true' ||
|
|
1216
1218
|
el.classList.contains('strct-dd__item--hinted'));
|
|
@@ -1414,6 +1416,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
1414
1416
|
host: { class: 'strct-dd__itemdesc' },
|
|
1415
1417
|
}]
|
|
1416
1418
|
}] });
|
|
1419
|
+
/**
|
|
1420
|
+
* The two forms a menu row can take. `a[strctDropdownItem]` is the one for a
|
|
1421
|
+
* row that goes somewhere: a real link (middle-click, ⌘-click, open in a new
|
|
1422
|
+
* tab, copy address) wearing the menu's semantics.
|
|
1423
|
+
*/
|
|
1424
|
+
const DD_ITEM = 'strct-dropdown-item, a[strctDropdownItem]';
|
|
1417
1425
|
class StrctDropdownItem {
|
|
1418
1426
|
/**
|
|
1419
1427
|
* Select-like usage: bind `selected` and the item becomes a
|
|
@@ -1475,7 +1483,7 @@ class StrctDropdownItem {
|
|
|
1475
1483
|
}, { capture: true });
|
|
1476
1484
|
}
|
|
1477
1485
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctDropdownItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1478
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctDropdownItem, isStandalone: true, selector: "strct-dropdown-item", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, critical: { classPropertyName: "critical", publicName: "critical", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "selected() === null ? 'menuitem' : 'menuitemradio'", "attr.aria-checked": "selected()", "attr.tabindex": "tabindex()", "attr.title": "hint() || null", "attr.aria-describedby": "hint() ? hintId : null", "class.strct-dd__item--hinted": "!!hint()", "class.strct-dd__item--critical": "critical()", "class.strct-dd__item--selected": "selected() === true", "attr.aria-disabled": "disabled() || null" }, classAttribute: "strct-dd__item" }, ngImport: i0, template: `@if (selected() !== null) {
|
|
1486
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctDropdownItem, isStandalone: true, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, critical: { classPropertyName: "critical", publicName: "critical", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "selected() === null ? 'menuitem' : 'menuitemradio'", "attr.aria-checked": "selected()", "attr.tabindex": "tabindex()", "attr.title": "hint() || null", "attr.aria-describedby": "hint() ? hintId : null", "class.strct-dd__item--hinted": "!!hint()", "class.strct-dd__item--critical": "critical()", "class.strct-dd__item--selected": "selected() === true", "attr.aria-disabled": "disabled() || null" }, classAttribute: "strct-dd__item" }, ngImport: i0, template: `@if (selected() !== null) {
|
|
1479
1487
|
<span class="strct-dd__check" aria-hidden="true">
|
|
1480
1488
|
@if (selected()) {
|
|
1481
1489
|
<strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
|
|
@@ -1500,7 +1508,7 @@ class StrctDropdownItem {
|
|
|
1500
1508
|
}
|
|
1501
1509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctDropdownItem, decorators: [{
|
|
1502
1510
|
type: Component,
|
|
1503
|
-
args: [{ selector: 'strct-dropdown-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon], template: `@if (selected() !== null) {
|
|
1511
|
+
args: [{ selector: 'strct-dropdown-item, a[strctDropdownItem]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon], template: `@if (selected() !== null) {
|
|
1504
1512
|
<span class="strct-dd__check" aria-hidden="true">
|
|
1505
1513
|
@if (selected()) {
|
|
1506
1514
|
<strct-icon strictName="check" [size]="12" [strokeWidth]="1.8" />
|
|
@@ -1876,7 +1884,7 @@ class StrctHeader {
|
|
|
1876
1884
|
}
|
|
1877
1885
|
</span>
|
|
1878
1886
|
}
|
|
1879
|
-
`, isInline: true, styles: [".strct-vnav__backdrop{position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);background:var(--backdrop);animation:strct-vnav-backdrop-in .2s ease}@media(min-width:769px){.strct-vnav__backdrop{display:none}}@keyframes strct-vnav-backdrop-in{0%{opacity:0}to{opacity:1}}.strct-header{display:flex;align-items:center;gap:var(--strct-header-gap, 14px);height:56px;padding:0 var(--strct-header-pad, 18px);background:var(--hdr);border-bottom:1px solid var(--b2);color:var(--hdr-fg)}.strct-header--accent{box-shadow:inset 0 -3px 0 var(--strct-header-accent, var(--acc))}.strct-header__actions{display:flex;align-items:center;gap:inherit;min-width:0}.strct-header__more{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer}.strct-header__more:hover{background:#ffffff1f}.strct-header__moreslot{display:flex;align-items:center;padding:6px 10px}.strct-header__morecmd{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 10px;border:0;border-radius:5px;background:transparent;color:var(--t1);font-size:13px;font-family:var(--font);text-align:start;cursor:pointer}.strct-header__morecmd:hover,.strct-header__morecmd:focus-visible{background:var(--bg-3);outline:none}@media(max-width:600px){.strct-header{gap:var(--strct-header-gap, 4px);padding:0 var(--strct-header-pad, 6px)}}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *){color:color-mix(in srgb,var(--hdr-fg) 72%,transparent)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):hover:not(:disabled){background:color-mix(in srgb,var(--hdr-fg) 12%,transparent);color:var(--hdr-fg)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):focus-visible{outline-color:color-mix(in srgb,var(--hdr-fg) 60%,transparent)}.strct-header__drawer-toggle{display:none;align-items:center;justify-content:center;padding:4px;border:0;border-radius:5px;background:transparent;color:color-mix(in srgb,var(--hdr-fg) 85%,transparent);cursor:pointer}.strct-header__drawer-toggle:hover{background:#ffffff1f;color:var(--hdr-fg)}@media(max-width:768px){.strct-header__drawer-toggle{display:inline-flex}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1887
|
+
`, isInline: true, styles: [".strct-vnav__backdrop{position:fixed;inset:0;z-index:calc(var(--z-nav) - 1);background:var(--backdrop);animation:strct-vnav-backdrop-in .2s ease}@media(min-width:769px){.strct-vnav__backdrop{display:none}}@keyframes strct-vnav-backdrop-in{0%{opacity:0}to{opacity:1}}.strct-header{display:flex;align-items:center;gap:var(--strct-header-gap, 14px);height:56px;padding:0 var(--strct-header-pad, 18px);background:var(--hdr);border-bottom:1px solid var(--b2);color:var(--hdr-fg)}.strct-header--accent{box-shadow:inset 0 -3px 0 var(--strct-header-accent, var(--acc))}.strct-header__actions{display:flex;align-items:center;gap:inherit;min-width:0}.strct-header__more{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;cursor:pointer}.strct-header__more:hover{background:#ffffff1f}.strct-header__moreslot{display:flex;align-items:center;padding:6px 10px}.strct-header__morecmd{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;padding:9px 10px;border:0;border-radius:5px;background:transparent;color:var(--t1);font-size:13px;font-family:var(--font);text-align:start;cursor:pointer}.strct-header__morecmd:hover,.strct-header__morecmd:focus-visible{background:var(--bg-3);outline:none}@media(max-width:600px){.strct-header{gap:var(--strct-header-gap, 4px);padding:0 var(--strct-header-pad, 6px)}}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *){color:color-mix(in srgb,var(--hdr-fg) 72%,transparent)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):hover:not(:disabled){background:color-mix(in srgb,var(--hdr-fg) 12%,transparent);color:var(--hdr-fg)}.strct-header .strct-btn--flat:not(.strct-modal__dialog *,.strct-drawer *,.strct-popover__panel *,.strct-dd__menu *,.strct-tour__card *):focus-visible{outline-color:color-mix(in srgb,var(--hdr-fg) 60%,transparent)}.strct-header__drawer-toggle{display:none;align-items:center;justify-content:center;padding:4px;border:0;border-radius:5px;background:transparent;color:color-mix(in srgb,var(--hdr-fg) 85%,transparent);cursor:pointer}.strct-header__drawer-toggle:hover{background:#ffffff1f;color:var(--hdr-fg)}@media(max-width:768px){.strct-header__drawer-toggle{display:inline-flex}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1880
1888
|
}
|
|
1881
1889
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctHeader, decorators: [{
|
|
1882
1890
|
type: Component,
|
|
@@ -3946,6 +3954,15 @@ class StrctCard {
|
|
|
3946
3954
|
loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3947
3955
|
/** Allow collapsing to just the header (a chevron appears in the header). */
|
|
3948
3956
|
collapsible = input(false, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3957
|
+
/**
|
|
3958
|
+
* Opt-in: a click anywhere on `strct-card-header` toggles the card, which
|
|
3959
|
+
* is where an operator clicks — the title, not the chevron. A click on an
|
|
3960
|
+
* interactive descendant (a button, a link, a form control) keeps its own,
|
|
3961
|
+
* and so does the chevron, which would otherwise toggle twice and leave the
|
|
3962
|
+
* card closed while the consumer's state said open. The chevron stays the
|
|
3963
|
+
* keyboard control: a header is not a button.
|
|
3964
|
+
*/
|
|
3965
|
+
headerToggles = input(false, { ...(ngDevMode ? { debugName: "headerToggles" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
3949
3966
|
/** Collapsed state (two-way; only meaningful with `collapsible`). */
|
|
3950
3967
|
collapsed = model(false, /* @ts-ignore */
|
|
3951
3968
|
...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
|
|
@@ -3953,7 +3970,7 @@ class StrctCard {
|
|
|
3953
3970
|
this.collapsed.update((v) => !v);
|
|
3954
3971
|
}
|
|
3955
3972
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3956
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: StrctCard, isStandalone: true, selector: "strct-card", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, dense: { classPropertyName: "dense", publicName: "dense", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "class.strct-card--accent": "status() === 'accent'", "class.strct-card--success": "status() === 'success'", "class.strct-card--warning": "status() === 'warning'", "class.strct-card--critical": "status() === 'critical'", "class.strct-card--interactive": "interactive()", "class.strct-card--selected": "selected()", "class.strct-card--dense": "dense()", "class.strct-card--loading": "loading()", "class.strct-card--fill": "fill()", "class.strct-card--collapsed": "collapsible() && collapsed()", "attr.aria-busy": "loading() ? \"true\" : null" }, classAttribute: "strct-card" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".strct-card{position:relative;display:block;background:var(--bg-1);border:1px solid var(--b2);border-radius:var(--radius-lg);box-shadow:var(--sh);overflow:hidden}.strct-card--fill{display:flex;flex-direction:column;height:100%}.strct-card--fill .strct-card__block{flex:1}.strct-card--fill .strct-card__footer{margin-block-start:auto}.strct-card--accent{border-inline-start:3px solid var(--acc)}.strct-card--success{border-inline-start:3px solid var(--success)}.strct-card--warning{border-inline-start:3px solid var(--warning)}.strct-card--critical{border-inline-start:3px solid var(--critical)}.strct-card--interactive{cursor:pointer;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.strct-card--interactive:hover{border-color:var(--acc50);transform:translateY(-1px);box-shadow:var(--shh)}.strct-card--interactive:focus-within{border-color:var(--acc)}.strct-card--selected{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),var(--sh)}.strct-card--dense{--strct-card-px: var(--space-3);--strct-card-py: var(--space-2);--strct-card-pb: var(--space-3)}.strct-card--loading:before{content:\"\";position:absolute;top:0;left:0;height:2px;width:40%;background:var(--acc);animation:strct-card-load 1.1s ease-in-out infinite;z-index:var(--z-base)}.strct-card--loading>strct-card-block,.strct-card--loading>strct-card-footer{opacity:.55;pointer-events:none}@keyframes strct-card-load{0%{transform:translate(-100%)}to{transform:translate(280%)}}.strct-card--collapsed>strct-card-block,.strct-card--collapsed>strct-card-footer{display:none}.strct-card--collapsed>strct-card-header{border-bottom:0}@media(prefers-reduced-motion:reduce){.strct-card--interactive{transition:none}.strct-card--interactive:hover{transform:none}.strct-card--loading:before{animation:none;width:100%;opacity:.4}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3973
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: StrctCard, isStandalone: true, selector: "strct-card", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, dense: { classPropertyName: "dense", publicName: "dense", isSignal: true, isRequired: false, transformFunction: null }, fill: { classPropertyName: "fill", publicName: "fill", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, headerToggles: { classPropertyName: "headerToggles", publicName: "headerToggles", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { properties: { "class.strct-card--accent": "status() === 'accent'", "class.strct-card--success": "status() === 'success'", "class.strct-card--warning": "status() === 'warning'", "class.strct-card--critical": "status() === 'critical'", "class.strct-card--interactive": "interactive()", "class.strct-card--selected": "selected()", "class.strct-card--dense": "dense()", "class.strct-card--loading": "loading()", "class.strct-card--fill": "fill()", "class.strct-card--collapsed": "collapsible() && collapsed()", "attr.aria-busy": "loading() ? \"true\" : null" }, classAttribute: "strct-card" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".strct-card{position:relative;display:block;background:var(--bg-1);border:1px solid var(--b2);border-radius:var(--radius-lg);box-shadow:var(--sh);overflow:hidden}.strct-card--fill{display:flex;flex-direction:column;height:100%}.strct-card--fill .strct-card__block{flex:1}.strct-card--fill .strct-card__footer{margin-block-start:auto}.strct-card--accent{border-inline-start:3px solid var(--acc)}.strct-card--success{border-inline-start:3px solid var(--success)}.strct-card--warning{border-inline-start:3px solid var(--warning)}.strct-card--critical{border-inline-start:3px solid var(--critical)}.strct-card--interactive{cursor:pointer;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.strct-card--interactive:hover{border-color:var(--acc50);transform:translateY(-1px);box-shadow:var(--shh)}.strct-card--interactive:focus-within{border-color:var(--acc)}.strct-card--selected{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),var(--sh)}.strct-card--dense{--strct-card-px: var(--space-3);--strct-card-py: var(--space-2);--strct-card-pb: var(--space-3)}.strct-card--loading:before{content:\"\";position:absolute;top:0;left:0;height:2px;width:40%;background:var(--acc);animation:strct-card-load 1.1s ease-in-out infinite;z-index:var(--z-base)}.strct-card--loading>strct-card-block,.strct-card--loading>strct-card-footer{opacity:.55;pointer-events:none}@keyframes strct-card-load{0%{transform:translate(-100%)}to{transform:translate(280%)}}.strct-card--collapsed>strct-card-block,.strct-card--collapsed>strct-card-footer{display:none}.strct-card--collapsed>strct-card-header{border-bottom:0}@media(prefers-reduced-motion:reduce){.strct-card--interactive{transition:none}.strct-card--interactive:hover{transform:none}.strct-card--loading:before{animation:none;width:100%;opacity:.4}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3957
3974
|
}
|
|
3958
3975
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctCard, decorators: [{
|
|
3959
3976
|
type: Component,
|
|
@@ -3971,7 +3988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
3971
3988
|
'[class.strct-card--collapsed]': 'collapsible() && collapsed()',
|
|
3972
3989
|
'[attr.aria-busy]': 'loading() ? "true" : null',
|
|
3973
3990
|
}, styles: [".strct-card{position:relative;display:block;background:var(--bg-1);border:1px solid var(--b2);border-radius:var(--radius-lg);box-shadow:var(--sh);overflow:hidden}.strct-card--fill{display:flex;flex-direction:column;height:100%}.strct-card--fill .strct-card__block{flex:1}.strct-card--fill .strct-card__footer{margin-block-start:auto}.strct-card--accent{border-inline-start:3px solid var(--acc)}.strct-card--success{border-inline-start:3px solid var(--success)}.strct-card--warning{border-inline-start:3px solid var(--warning)}.strct-card--critical{border-inline-start:3px solid var(--critical)}.strct-card--interactive{cursor:pointer;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.strct-card--interactive:hover{border-color:var(--acc50);transform:translateY(-1px);box-shadow:var(--shh)}.strct-card--interactive:focus-within{border-color:var(--acc)}.strct-card--selected{border-color:var(--acc);box-shadow:0 0 0 1px var(--acc),var(--sh)}.strct-card--dense{--strct-card-px: var(--space-3);--strct-card-py: var(--space-2);--strct-card-pb: var(--space-3)}.strct-card--loading:before{content:\"\";position:absolute;top:0;left:0;height:2px;width:40%;background:var(--acc);animation:strct-card-load 1.1s ease-in-out infinite;z-index:var(--z-base)}.strct-card--loading>strct-card-block,.strct-card--loading>strct-card-footer{opacity:.55;pointer-events:none}@keyframes strct-card-load{0%{transform:translate(-100%)}to{transform:translate(280%)}}.strct-card--collapsed>strct-card-block,.strct-card--collapsed>strct-card-footer{display:none}.strct-card--collapsed>strct-card-header{border-bottom:0}@media(prefers-reduced-motion:reduce){.strct-card--interactive{transition:none}.strct-card--interactive:hover{transform:none}.strct-card--loading:before{animation:none;width:100%;opacity:.4}}\n"] }]
|
|
3974
|
-
}], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dense: [{ type: i0.Input, args: [{ isSignal: true, alias: "dense", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }] } });
|
|
3991
|
+
}], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], dense: [{ type: i0.Input, args: [{ isSignal: true, alias: "dense", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], headerToggles: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerToggles", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }] } });
|
|
3975
3992
|
/** Header section of a {@link StrctCard}. */
|
|
3976
3993
|
class StrctCardHeader {
|
|
3977
3994
|
/** Optional leading icon (StrctIcon set). */
|
|
@@ -3998,8 +4015,29 @@ class StrctCardHeader {
|
|
|
3998
4015
|
expandLabel = input('Expand', /* @ts-ignore */
|
|
3999
4016
|
...(ngDevMode ? [{ debugName: "expandLabel" }] : /* istanbul ignore next */ []));
|
|
4000
4017
|
card = inject(StrctCard, { optional: true });
|
|
4018
|
+
/** Only a collapsible card that asked for it toggles from its header. */
|
|
4019
|
+
togglesOnClick() {
|
|
4020
|
+
return !!this.card?.collapsible() && !!this.card?.headerToggles();
|
|
4021
|
+
}
|
|
4022
|
+
/**
|
|
4023
|
+
* Anything with a click of its own keeps it — including our own chevron,
|
|
4024
|
+
* whose click would otherwise bubble here and toggle a second time, leaving
|
|
4025
|
+
* the card closed while the consumer's state said open.
|
|
4026
|
+
*/
|
|
4027
|
+
onHeaderClick(event) {
|
|
4028
|
+
if (!this.togglesOnClick())
|
|
4029
|
+
return;
|
|
4030
|
+
const target = event.target;
|
|
4031
|
+
if (target?.closest('button, a[href], input, select, textarea, label, summary, [role="button"], [role="link"], [role="checkbox"], [role="switch"], [contenteditable]')) {
|
|
4032
|
+
return;
|
|
4033
|
+
}
|
|
4034
|
+
// Selecting the heading's text is not a click on the header.
|
|
4035
|
+
if (typeof getSelection === 'function' && getSelection()?.toString())
|
|
4036
|
+
return;
|
|
4037
|
+
this.card?.toggle();
|
|
4038
|
+
}
|
|
4001
4039
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4002
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctCardHeader, isStandalone: true, selector: "strct-card-header", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.strct-card__header--overline": "appearance() === 'overline'", "class.strct-card__header--wrap": "wrap()" }, classAttribute: "strct-card__header" }, ngImport: i0, template: `
|
|
4040
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctCardHeader, isStandalone: true, selector: "strct-card-header", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onHeaderClick($event)" }, properties: { "class.strct-card__header--overline": "appearance() === 'overline'", "class.strct-card__header--wrap": "wrap()", "class.strct-card__header--toggles": "togglesOnClick()" }, classAttribute: "strct-card__header" }, ngImport: i0, template: `
|
|
4003
4041
|
<span class="strct-card__hmain">
|
|
4004
4042
|
<!-- Declared before the catch-all so the selector wins; CSS order keeps
|
|
4005
4043
|
it first. A drag grip leads the title this way. -->
|
|
@@ -4056,7 +4094,7 @@ class StrctCardHeader {
|
|
|
4056
4094
|
/>
|
|
4057
4095
|
</button>
|
|
4058
4096
|
}
|
|
4059
|
-
`, isInline: true, styles: [".strct-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--strct-card-py, var(--space-3)) var(--strct-card-px, var(--space-4));border-bottom:1px solid var(--b1);font-size:13px;font-weight:600;color:var(--t1)}.strct-card__hmain,.strct-card__hend{display:flex;align-items:center;gap:var(--space-2);min-width:0}.strct-card__hend:empty{display:none}.strct-card__htitle{min-width:0;margin:0;font:inherit;color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-card__header--wrap{align-items:flex-start}.strct-card__header--wrap .strct-card__htitle{overflow:visible;text-overflow:clip;white-space:normal}.strct-card__header--wrap .strct-card__hmain{flex-wrap:wrap}.strct-card__header--overline .strct-card__htitle{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--t2)}[strctCardHeaderNote]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:var(--text-sm);color:var(--t3)}.strct-card__hicon{color:var(--t2);flex-shrink:0}.strct-card__collapse{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin:-4px;margin-inline-start:0;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--t3);cursor:pointer;flex-shrink:0}.strct-card__collapse:hover{color:var(--t1);background:var(--bg-3)}.strct-card__collapse:focus-visible{outline:none;box-shadow:0 0 0 2px var(--acc50)}.strct-card__collapse strct-icon{transition:transform .15s ease}.strct-card__chev--collapsed{transform:rotate(-90deg)}@media(prefers-reduced-motion:reduce){.strct-card__collapse strct-icon{transition:none}}\n"], dependencies: [{ kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4097
|
+
`, isInline: true, styles: [".strct-card__header--toggles{cursor:pointer}.strct-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--strct-card-py, var(--space-3)) var(--strct-card-px, var(--space-4));border-bottom:1px solid var(--b1);font-size:13px;font-weight:600;color:var(--t1)}.strct-card__hmain,.strct-card__hend{display:flex;align-items:center;gap:var(--space-2);min-width:0}.strct-card__hend:empty{display:none}.strct-card__htitle{min-width:0;margin:0;font:inherit;color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-card__header--wrap{align-items:flex-start}.strct-card__header--wrap .strct-card__htitle{overflow:visible;text-overflow:clip;white-space:normal}.strct-card__header--wrap .strct-card__hmain{flex-wrap:wrap}.strct-card__header--overline .strct-card__htitle{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--t2)}[strctCardHeaderNote]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:var(--text-sm);color:var(--t3)}.strct-card__hicon{color:var(--t2);flex-shrink:0}.strct-card__collapse{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin:-4px;margin-inline-start:0;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--t3);cursor:pointer;flex-shrink:0}.strct-card__collapse:hover{color:var(--t1);background:var(--bg-3)}.strct-card__collapse:focus-visible{outline:none;box-shadow:0 0 0 2px var(--acc50)}.strct-card__collapse strct-icon{transition:transform .15s ease}.strct-card__chev--collapsed{transform:rotate(-90deg)}@media(prefers-reduced-motion:reduce){.strct-card__collapse strct-icon{transition:none}}\n"], dependencies: [{ kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4060
4098
|
}
|
|
4061
4099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctCardHeader, decorators: [{
|
|
4062
4100
|
type: Component,
|
|
@@ -4121,7 +4159,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
4121
4159
|
class: 'strct-card__header',
|
|
4122
4160
|
'[class.strct-card__header--overline]': "appearance() === 'overline'",
|
|
4123
4161
|
'[class.strct-card__header--wrap]': 'wrap()',
|
|
4124
|
-
|
|
4162
|
+
'[class.strct-card__header--toggles]': 'togglesOnClick()',
|
|
4163
|
+
'(click)': 'onHeaderClick($event)',
|
|
4164
|
+
}, styles: [".strct-card__header--toggles{cursor:pointer}.strct-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--strct-card-py, var(--space-3)) var(--strct-card-px, var(--space-4));border-bottom:1px solid var(--b1);font-size:13px;font-weight:600;color:var(--t1)}.strct-card__hmain,.strct-card__hend{display:flex;align-items:center;gap:var(--space-2);min-width:0}.strct-card__hend:empty{display:none}.strct-card__htitle{min-width:0;margin:0;font:inherit;color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-card__header--wrap{align-items:flex-start}.strct-card__header--wrap .strct-card__htitle{overflow:visible;text-overflow:clip;white-space:normal}.strct-card__header--wrap .strct-card__hmain{flex-wrap:wrap}.strct-card__header--overline .strct-card__htitle{font-size:var(--text-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--t2)}[strctCardHeaderNote]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:var(--text-sm);color:var(--t3)}.strct-card__hicon{color:var(--t2);flex-shrink:0}.strct-card__collapse{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin:-4px;margin-inline-start:0;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--t3);cursor:pointer;flex-shrink:0}.strct-card__collapse:hover{color:var(--t1);background:var(--bg-3)}.strct-card__collapse:focus-visible{outline:none;box-shadow:0 0 0 2px var(--acc50)}.strct-card__collapse strct-icon{transition:transform .15s ease}.strct-card__chev--collapsed{transform:rotate(-90deg)}@media(prefers-reduced-motion:reduce){.strct-card__collapse strct-icon{transition:none}}\n"] }]
|
|
4125
4165
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], collapseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseLabel", required: false }] }], expandLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLabel", required: false }] }] } });
|
|
4126
4166
|
/** Leads the card's heading — a drag grip, a status dot, an avatar. */
|
|
4127
4167
|
class StrctCardHeaderLeading {
|
|
@@ -4188,11 +4228,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
4188
4228
|
args: [{ selector: 'strct-accordion', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `<ng-content />`, host: { class: 'strct-accordion' }, styles: [".strct-accordion{display:flex;flex-direction:column;border:1px solid var(--b2);border-radius:8px;overflow:hidden;background:var(--bg-1)}\n"] }]
|
|
4189
4229
|
}] });
|
|
4190
4230
|
let accordionCounter = 0;
|
|
4231
|
+
/**
|
|
4232
|
+
* Badges, tags or a result in a panel's header, after the title:
|
|
4233
|
+
* `<strct-badge strctAccordionPanelMeta status="critical">Failed</strct-badge>`.
|
|
4234
|
+
* It is projected into the header but kept **outside** the button, so the
|
|
4235
|
+
* button is still called by its heading alone — the result is read after it,
|
|
4236
|
+
* as the button's description.
|
|
4237
|
+
*/
|
|
4238
|
+
class StrctAccordionPanelMeta {
|
|
4239
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctAccordionPanelMeta, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
4240
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: StrctAccordionPanelMeta, isStandalone: true, selector: "[strctAccordionPanelMeta]", host: { classAttribute: "strct-acc__metaitem" }, ngImport: i0 });
|
|
4241
|
+
}
|
|
4242
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctAccordionPanelMeta, decorators: [{
|
|
4243
|
+
type: Directive,
|
|
4244
|
+
args: [{
|
|
4245
|
+
selector: '[strctAccordionPanelMeta]',
|
|
4246
|
+
host: { class: 'strct-acc__metaitem' },
|
|
4247
|
+
}]
|
|
4248
|
+
}] });
|
|
4191
4249
|
/** Collapsible panel with a header. `expanded` is two-way bindable. */
|
|
4192
4250
|
class StrctAccordionPanel {
|
|
4193
4251
|
/** Panel heading. */
|
|
4194
4252
|
heading = input.required(/* @ts-ignore */
|
|
4195
4253
|
...(ngDevMode ? [{ debugName: "heading" }] : /* istanbul ignore next */ []));
|
|
4254
|
+
/**
|
|
4255
|
+
* A tone rail on the leading edge, as `strct-card [status]` has — the
|
|
4256
|
+
* result of the thing the panel reports, said in colour as well as words.
|
|
4257
|
+
*/
|
|
4258
|
+
status = input('neutral', /* @ts-ignore */
|
|
4259
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
4196
4260
|
/** Whether the panel is open (two-way). */
|
|
4197
4261
|
expanded = model(false, /* @ts-ignore */
|
|
4198
4262
|
...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
|
|
@@ -4203,49 +4267,71 @@ class StrctAccordionPanel {
|
|
|
4203
4267
|
*/
|
|
4204
4268
|
appearance = input('boxed', /* @ts-ignore */
|
|
4205
4269
|
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
4270
|
+
/** Whatever a consumer put beside the title, so the button can describe it. */
|
|
4271
|
+
meta = contentChild(StrctAccordionPanelMeta, /* @ts-ignore */
|
|
4272
|
+
...(ngDevMode ? [{ debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
4206
4273
|
bodyId = `strct-acc-${++accordionCounter}`;
|
|
4207
4274
|
headId = `${this.bodyId}-head`;
|
|
4275
|
+
metaId = `${this.bodyId}-meta`;
|
|
4208
4276
|
toggle() {
|
|
4209
4277
|
this.expanded.update((v) => !v);
|
|
4210
4278
|
}
|
|
4211
4279
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctAccordionPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4212
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctAccordionPanel, isStandalone: true, selector: "strct-accordion-panel", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.strct-acc--quiet": "appearance() === 'quiet'" }, classAttribute: "strct-acc" }, ngImport: i0, template: `
|
|
4213
|
-
<
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
|
|
4221
|
-
|
|
4222
|
-
|
|
4280
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctAccordionPanel, isStandalone: true, selector: "strct-accordion-panel", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: true, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.strct-acc--quiet": "appearance() === 'quiet'", "class.strct-acc--accent": "status() === 'accent'", "class.strct-acc--success": "status() === 'success'", "class.strct-acc--warning": "status() === 'warning'", "class.strct-acc--critical": "status() === 'critical'" }, classAttribute: "strct-acc" }, queries: [{ propertyName: "meta", first: true, predicate: StrctAccordionPanelMeta, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
4281
|
+
<div class="strct-acc__header">
|
|
4282
|
+
<button
|
|
4283
|
+
type="button"
|
|
4284
|
+
class="strct-acc__head"
|
|
4285
|
+
[id]="headId"
|
|
4286
|
+
[attr.aria-expanded]="expanded()"
|
|
4287
|
+
[attr.aria-controls]="bodyId"
|
|
4288
|
+
[attr.aria-describedby]="meta() ? metaId : null"
|
|
4289
|
+
(click)="toggle()"
|
|
4290
|
+
>
|
|
4291
|
+
<span class="strct-acc__chevron" [class.strct-acc__chevron--open]="expanded()">
|
|
4292
|
+
<strct-icon name="chevronRight" [size]="13" [strokeWidth]="1.7" />
|
|
4293
|
+
</span>
|
|
4294
|
+
<span class="strct-acc__title">{{ heading() }}</span>
|
|
4295
|
+
</button>
|
|
4296
|
+
<!-- Outside the button on purpose: a badge in the name would make the
|
|
4297
|
+
button "Cluster time — Failed", and a tag you can click cannot
|
|
4298
|
+
live inside another button at all. -->
|
|
4299
|
+
<span class="strct-acc__meta" [id]="metaId">
|
|
4300
|
+
<ng-content select="[strctAccordionPanelMeta]" />
|
|
4223
4301
|
</span>
|
|
4224
|
-
|
|
4225
|
-
</button>
|
|
4302
|
+
</div>
|
|
4226
4303
|
@if (expanded()) {
|
|
4227
4304
|
<div class="strct-acc__body" [id]="bodyId" role="region" [attr.aria-labelledby]="headId">
|
|
4228
4305
|
<ng-content />
|
|
4229
4306
|
</div>
|
|
4230
4307
|
}
|
|
4231
|
-
`, isInline: true, styles: [".strct-acc{display:block}.strct-acc+.strct-acc{border-top:1px solid var(--b2)}.strct-acc__head{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;border:0;background:transparent;cursor:pointer;font-family:var(--font);font-size:13px;font-weight:500;color:var(--t1);text-align:start}.strct-acc__head:hover{background:var(--bg-3)}.strct-acc__chevron{display:inline-flex;color:var(--t3);transition:transform .16s ease}.strct-acc__chevron--open{transform:rotate(90deg);color:var(--acc)}[dir=rtl] .strct-acc__chevron:not(.strct-acc__chevron--open){transform:rotate(180deg)}.strct-acc__title{flex:1}.strct-acc__body{padding:4px 14px 14px;padding-inline-start:32px;color:var(--t2);font-size:13px;border-top:1px solid var(--b1)}.strct-acc--quiet+.strct-acc--quiet{border-top:0}.strct-acc--quiet .strct-acc__head{width:auto;padding:2px 0;gap:6px;font-size:var(--text-sm);font-weight:400;color:var(--t2)}.strct-acc--quiet .strct-acc__head:hover{background:none;color:var(--t1);text-decoration:underline}.strct-acc--quiet .strct-acc__head:focus-visible{outline:2px solid var(--acc50);outline-offset:2px;border-radius:var(--radius-sm)}.strct-acc--quiet .strct-acc__title{flex:none}.strct-acc--quiet .strct-acc__body{padding:4px 0 8px;padding-inline-start:var(--space-3);border-top:0;font-size:var(--text-sm)}\n"], dependencies: [{ kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4308
|
+
`, isInline: true, styles: [".strct-acc{display:block}.strct-acc+.strct-acc{border-top:1px solid var(--b2)}.strct-acc__header{display:flex;align-items:center;gap:9px}.strct-acc__meta{display:flex;align-items:center;gap:6px;flex:none;padding-inline-end:14px}.strct-acc__meta:empty{display:none}.strct-acc--accent{border-inline-start:3px solid var(--acc)}.strct-acc--success{border-inline-start:3px solid var(--success)}.strct-acc--warning{border-inline-start:3px solid var(--warning)}.strct-acc--critical{border-inline-start:3px solid var(--critical)}.strct-acc__head{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;border:0;background:transparent;cursor:pointer;font-family:var(--font);font-size:13px;font-weight:500;color:var(--t1);text-align:start}.strct-acc__head:hover{background:var(--bg-3)}.strct-acc__chevron{display:inline-flex;color:var(--t3);transition:transform .16s ease}.strct-acc__chevron--open{transform:rotate(90deg);color:var(--acc)}[dir=rtl] .strct-acc__chevron:not(.strct-acc__chevron--open){transform:rotate(180deg)}.strct-acc__title{flex:1}.strct-acc__body{padding:4px 14px 14px;padding-inline-start:32px;color:var(--t2);font-size:13px;border-top:1px solid var(--b1)}.strct-acc--quiet+.strct-acc--quiet{border-top:0}.strct-acc--quiet .strct-acc__meta{padding-inline-end:0}.strct-acc--quiet .strct-acc__head{width:auto;padding:2px 0;gap:6px;font-size:var(--text-sm);font-weight:400;color:var(--t2)}.strct-acc--quiet .strct-acc__head:hover{background:none;color:var(--t1);text-decoration:underline}.strct-acc--quiet .strct-acc__head:focus-visible{outline:2px solid var(--acc50);outline-offset:2px;border-radius:var(--radius-sm)}.strct-acc--quiet .strct-acc__title{flex:none}.strct-acc--quiet .strct-acc__body{padding:4px 0 8px;padding-inline-start:var(--space-3);border-top:0;font-size:var(--text-sm)}\n"], dependencies: [{ kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4232
4309
|
}
|
|
4233
4310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctAccordionPanel, decorators: [{
|
|
4234
4311
|
type: Component,
|
|
4235
4312
|
args: [{ selector: 'strct-accordion-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [StrctIcon], template: `
|
|
4236
|
-
<
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4244
|
-
|
|
4245
|
-
|
|
4313
|
+
<div class="strct-acc__header">
|
|
4314
|
+
<button
|
|
4315
|
+
type="button"
|
|
4316
|
+
class="strct-acc__head"
|
|
4317
|
+
[id]="headId"
|
|
4318
|
+
[attr.aria-expanded]="expanded()"
|
|
4319
|
+
[attr.aria-controls]="bodyId"
|
|
4320
|
+
[attr.aria-describedby]="meta() ? metaId : null"
|
|
4321
|
+
(click)="toggle()"
|
|
4322
|
+
>
|
|
4323
|
+
<span class="strct-acc__chevron" [class.strct-acc__chevron--open]="expanded()">
|
|
4324
|
+
<strct-icon name="chevronRight" [size]="13" [strokeWidth]="1.7" />
|
|
4325
|
+
</span>
|
|
4326
|
+
<span class="strct-acc__title">{{ heading() }}</span>
|
|
4327
|
+
</button>
|
|
4328
|
+
<!-- Outside the button on purpose: a badge in the name would make the
|
|
4329
|
+
button "Cluster time — Failed", and a tag you can click cannot
|
|
4330
|
+
live inside another button at all. -->
|
|
4331
|
+
<span class="strct-acc__meta" [id]="metaId">
|
|
4332
|
+
<ng-content select="[strctAccordionPanelMeta]" />
|
|
4246
4333
|
</span>
|
|
4247
|
-
|
|
4248
|
-
</button>
|
|
4334
|
+
</div>
|
|
4249
4335
|
@if (expanded()) {
|
|
4250
4336
|
<div class="strct-acc__body" [id]="bodyId" role="region" [attr.aria-labelledby]="headId">
|
|
4251
4337
|
<ng-content />
|
|
@@ -4254,8 +4340,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
4254
4340
|
`, host: {
|
|
4255
4341
|
class: 'strct-acc',
|
|
4256
4342
|
'[class.strct-acc--quiet]': "appearance() === 'quiet'",
|
|
4257
|
-
|
|
4258
|
-
|
|
4343
|
+
'[class.strct-acc--accent]': "status() === 'accent'",
|
|
4344
|
+
'[class.strct-acc--success]': "status() === 'success'",
|
|
4345
|
+
'[class.strct-acc--warning]': "status() === 'warning'",
|
|
4346
|
+
'[class.strct-acc--critical]': "status() === 'critical'",
|
|
4347
|
+
}, styles: [".strct-acc{display:block}.strct-acc+.strct-acc{border-top:1px solid var(--b2)}.strct-acc__header{display:flex;align-items:center;gap:9px}.strct-acc__meta{display:flex;align-items:center;gap:6px;flex:none;padding-inline-end:14px}.strct-acc__meta:empty{display:none}.strct-acc--accent{border-inline-start:3px solid var(--acc)}.strct-acc--success{border-inline-start:3px solid var(--success)}.strct-acc--warning{border-inline-start:3px solid var(--warning)}.strct-acc--critical{border-inline-start:3px solid var(--critical)}.strct-acc__head{display:flex;align-items:center;gap:9px;width:100%;padding:11px 14px;border:0;background:transparent;cursor:pointer;font-family:var(--font);font-size:13px;font-weight:500;color:var(--t1);text-align:start}.strct-acc__head:hover{background:var(--bg-3)}.strct-acc__chevron{display:inline-flex;color:var(--t3);transition:transform .16s ease}.strct-acc__chevron--open{transform:rotate(90deg);color:var(--acc)}[dir=rtl] .strct-acc__chevron:not(.strct-acc__chevron--open){transform:rotate(180deg)}.strct-acc__title{flex:1}.strct-acc__body{padding:4px 14px 14px;padding-inline-start:32px;color:var(--t2);font-size:13px;border-top:1px solid var(--b1)}.strct-acc--quiet+.strct-acc--quiet{border-top:0}.strct-acc--quiet .strct-acc__meta{padding-inline-end:0}.strct-acc--quiet .strct-acc__head{width:auto;padding:2px 0;gap:6px;font-size:var(--text-sm);font-weight:400;color:var(--t2)}.strct-acc--quiet .strct-acc__head:hover{background:none;color:var(--t1);text-decoration:underline}.strct-acc--quiet .strct-acc__head:focus-visible{outline:2px solid var(--acc50);outline-offset:2px;border-radius:var(--radius-sm)}.strct-acc--quiet .strct-acc__title{flex:none}.strct-acc--quiet .strct-acc__body{padding:4px 0 8px;padding-inline-start:var(--space-3);border-top:0;font-size:var(--text-sm)}\n"] }]
|
|
4348
|
+
}], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: true }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], meta: [{ type: i0.ContentChild, args: [i0.forwardRef(() => StrctAccordionPanelMeta), { isSignal: true }] }] } });
|
|
4259
4349
|
|
|
4260
4350
|
let tabsCounter = 0;
|
|
4261
4351
|
/** A single tab. Place inside `<strct-tabs>`; `label` names its button. */
|
|
@@ -6762,7 +6852,9 @@ class StrctSubmenu {
|
|
|
6762
6852
|
panelItems() {
|
|
6763
6853
|
const panel = this.panel()?.nativeElement;
|
|
6764
6854
|
return panel
|
|
6765
|
-
? [
|
|
6855
|
+
? [
|
|
6856
|
+
...panel.querySelectorAll('strct-dropdown-item, a[strctDropdownItem]'),
|
|
6857
|
+
].filter((i) => i.getAttribute('aria-disabled') !== 'true' ||
|
|
6766
6858
|
i.classList.contains('strct-dd__item--hinted'))
|
|
6767
6859
|
: [];
|
|
6768
6860
|
}
|
|
@@ -23657,7 +23749,7 @@ class StrctSplitButton {
|
|
|
23657
23749
|
}
|
|
23658
23750
|
</strct-dropdown>
|
|
23659
23751
|
</div>
|
|
23660
|
-
`, isInline: true, styles: [".strct-sbt{display:inline-flex;align-items:stretch}.strct-sbt .strct-dd{display:inline-flex;align-self:stretch}.strct-sbt .strct-dd__trigger{display:inline-flex;align-items:stretch}.strct-sbt__chev{align-self:stretch;height:100%}.strct-sbt__main,.strct-sbt__chev{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--acc);background:transparent;color:var(--acc);font-family:var(--font);font-size:13px;font-weight:600;line-height:1;cursor:pointer;padding:var(--space-2) var(--space-4)}.strct-sbt__main{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md);border-inline-end:0}.strct-sbt__chev{padding:var(--space-2);border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md);border-inline-start:1px solid var(--acc50)}.strct-sbt--solid .strct-sbt__main,.strct-sbt--solid .strct-sbt__chev{background:var(--acc);color:var(--inv)}.strct-sbt--solid .strct-sbt__chev{border-inline-start-color:color-mix(in srgb,var(--inv) 30%,var(--acc))}.strct-sbt__main:hover:not(:disabled),.strct-sbt__chev:hover:not(:disabled){background:var(--acc18)}.strct-sbt--solid .strct-sbt__main:hover:not(:disabled),.strct-sbt--solid .strct-sbt__chev:hover:not(:disabled){filter:brightness(1.08);background:var(--acc)}.strct-sbt__main:disabled,.strct-sbt__chev:disabled{opacity:.5;cursor:default}.strct-sbt__main:focus-visible,.strct-sbt__chev:focus-visible{outline:2px solid var(--acc50);outline-offset:1px;position:relative;z-index:var(--z-base)}\n"], dependencies: [{ kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
23752
|
+
`, isInline: true, styles: [".strct-sbt{display:inline-flex;align-items:stretch}.strct-sbt .strct-dd{display:inline-flex;align-self:stretch}.strct-sbt .strct-dd__trigger{display:inline-flex;align-items:stretch}.strct-sbt__chev{align-self:stretch;height:100%}.strct-sbt__main,.strct-sbt__chev{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--acc);background:transparent;color:var(--acc);font-family:var(--font);font-size:13px;font-weight:600;line-height:1;cursor:pointer;padding:var(--space-2) var(--space-4)}.strct-sbt__main{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md);border-inline-end:0}.strct-sbt__chev{padding:var(--space-2);border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md);border-inline-start:1px solid var(--acc50)}.strct-sbt--solid .strct-sbt__main,.strct-sbt--solid .strct-sbt__chev{background:var(--acc);color:var(--inv)}.strct-sbt--solid .strct-sbt__chev{border-inline-start-color:color-mix(in srgb,var(--inv) 30%,var(--acc))}.strct-sbt__main:hover:not(:disabled),.strct-sbt__chev:hover:not(:disabled){background:var(--acc18)}.strct-sbt--solid .strct-sbt__main:hover:not(:disabled),.strct-sbt--solid .strct-sbt__chev:hover:not(:disabled){filter:brightness(1.08);background:var(--acc)}.strct-sbt__main:disabled,.strct-sbt__chev:disabled{opacity:.5;cursor:default}.strct-sbt__main:focus-visible,.strct-sbt__chev:focus-visible{outline:2px solid var(--acc50);outline-offset:1px;position:relative;z-index:var(--z-base)}\n"], dependencies: [{ kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
23661
23753
|
}
|
|
23662
23754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctSplitButton, decorators: [{
|
|
23663
23755
|
type: Component,
|
|
@@ -30083,6 +30175,307 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30083
30175
|
`, host: { class: 'strct-md' }, styles: [".strct-md{display:block;color:var(--t1);font-size:13px;line-height:1.55}.strct-md__p{margin:0 0 var(--space-2)}.strct-md__p:last-child{margin-bottom:0}.strct-md__h{margin:var(--space-3) 0 var(--space-2);font-size:14px;font-weight:600;color:var(--t1)}.strct-md__h:first-child{margin-top:0}.strct-md__list{margin:0 0 var(--space-2);padding-inline-start:20px}.strct-md__list li{margin-block:2px}.strct-md__quote{margin:0 0 var(--space-2);padding-inline-start:var(--space-3);border-inline-start:2px solid var(--b2);color:var(--t2)}.strct-md__rule{border:0;border-block-start:1px solid var(--b1);margin:var(--space-3) 0}.strct-md__codespan{font-family:var(--mono);font-size:.92em;background:var(--bg-2);border-radius:var(--radius-sm);padding:1px 4px}.strct-md__code{margin-block-end:var(--space-2)}.strct-md__link{color:var(--acc)}.strct-md__ext{margin-inline-start:2px;vertical-align:-1px}.strct-md__tablewrap{overflow-x:auto;margin-block-end:var(--space-2)}.strct-md__table{border-collapse:collapse;width:max-content;min-width:100%}.strct-md__table th,.strct-md__table td{border:1px solid var(--b1);padding:4px 8px;text-align:start}.strct-md__table th{background:var(--bg-2);font-weight:600}.strct-md__caret{display:inline-block;width:2px;height:1em;margin-inline-start:2px;vertical-align:-2px;background:var(--acc);animation:strct-md-caret 1s steps(2) infinite}@keyframes strct-md-caret{50%{opacity:0}}@media(prefers-reduced-motion:reduce){.strct-md__caret{animation:none}}\n"] }]
|
|
30084
30176
|
}], propDecorators: { source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }], tree: [{ type: i0.Input, args: [{ isSignal: true, alias: "tree", required: false }] }], streaming: [{ type: i0.Input, args: [{ isSignal: true, alias: "streaming", required: false }] }], headingOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingOffset", required: false }] }], linkPolicy: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPolicy", required: false }] }], tokens: [{ type: i0.Input, args: [{ isSignal: true, alias: "tokens", required: false }] }], navigate: [{ type: i0.Output, args: ["navigate"] }], tokenDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => StrctMarkdownToken), { isSignal: true }] }] } });
|
|
30085
30177
|
|
|
30178
|
+
/**
|
|
30179
|
+
* The product switcher every multi-product console grows: a chip beside the
|
|
30180
|
+
* logo saying where you are, opening the products you may use with a line of
|
|
30181
|
+
* health each, and the platform after a divider.
|
|
30182
|
+
*
|
|
30183
|
+
* <strct-product-switcher
|
|
30184
|
+
* [items]="products" [(current)]="productId" [footerItems]="[admin]"
|
|
30185
|
+
* (opened)="loadHealth()" (select)="go($event)" />
|
|
30186
|
+
*
|
|
30187
|
+
* A person offered one product sees a plain chip, not a menu of one.
|
|
30188
|
+
*/
|
|
30189
|
+
class StrctProductSwitcher {
|
|
30190
|
+
/** The products this person may switch to. */
|
|
30191
|
+
items = input([], /* @ts-ignore */
|
|
30192
|
+
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
30193
|
+
/** Entries after a divider — the shared platform, administration. */
|
|
30194
|
+
footerItems = input([], /* @ts-ignore */
|
|
30195
|
+
...(ngDevMode ? [{ debugName: "footerItems" }] : /* istanbul ignore next */ []));
|
|
30196
|
+
/** Which product you are in, two-way. */
|
|
30197
|
+
current = model(null, /* @ts-ignore */
|
|
30198
|
+
...(ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []));
|
|
30199
|
+
/**
|
|
30200
|
+
* What the chip is for, after the product's name:
|
|
30201
|
+
* "HyperStruct Backup — switch product".
|
|
30202
|
+
*/
|
|
30203
|
+
switchLabel = input('switch product', /* @ts-ignore */
|
|
30204
|
+
...(ngDevMode ? [{ debugName: "switchLabel" }] : /* istanbul ignore next */ []));
|
|
30205
|
+
/**
|
|
30206
|
+
* Below this width (px) the chip shows each item's `shortLabel` instead of
|
|
30207
|
+
* its label. The full name stays in the accessible name.
|
|
30208
|
+
*/
|
|
30209
|
+
shortLabelWidth = input(600, /* @ts-ignore */
|
|
30210
|
+
...(ngDevMode ? [{ debugName: "shortLabelWidth" }] : /* istanbul ignore next */ []));
|
|
30211
|
+
/** The menu has opened — read the health lines now, not before. */
|
|
30212
|
+
opened = output();
|
|
30213
|
+
/** A product was chosen (plain activation only, as the rail does). */
|
|
30214
|
+
select = output();
|
|
30215
|
+
menu = viewChild('menu', /* @ts-ignore */
|
|
30216
|
+
...(ngDevMode ? [{ debugName: "menu" }] : /* istanbul ignore next */ []));
|
|
30217
|
+
narrow = signal(false, /* @ts-ignore */
|
|
30218
|
+
...(ngDevMode ? [{ debugName: "narrow" }] : /* istanbul ignore next */ []));
|
|
30219
|
+
wasOpen = false;
|
|
30220
|
+
/** With one product and nowhere else to go, there is no menu to open. */
|
|
30221
|
+
hasMenu = computed(() => this.items().length + this.footerItems().length > 1, /* @ts-ignore */
|
|
30222
|
+
...(ngDevMode ? [{ debugName: "hasMenu" }] : /* istanbul ignore next */ []));
|
|
30223
|
+
currentItem = computed(() => [...this.items(), ...this.footerItems()].find((i) => i.id === this.current()) ??
|
|
30224
|
+
this.items()[0] ??
|
|
30225
|
+
null, /* @ts-ignore */
|
|
30226
|
+
...(ngDevMode ? [{ debugName: "currentItem" }] : /* istanbul ignore next */ []));
|
|
30227
|
+
chipText = computed(() => {
|
|
30228
|
+
const item = this.currentItem();
|
|
30229
|
+
if (!item)
|
|
30230
|
+
return '';
|
|
30231
|
+
const full = item.label ?? item.name;
|
|
30232
|
+
return this.narrow() ? (item.shortLabel ?? full) : full;
|
|
30233
|
+
}, /* @ts-ignore */
|
|
30234
|
+
...(ngDevMode ? [{ debugName: "chipText" }] : /* istanbul ignore next */ []));
|
|
30235
|
+
chipAriaLabel = computed(() => {
|
|
30236
|
+
const item = this.currentItem();
|
|
30237
|
+
if (!item)
|
|
30238
|
+
return this.switchLabel();
|
|
30239
|
+
return `${item.name} — ${this.switchLabel()}`;
|
|
30240
|
+
}, /* @ts-ignore */
|
|
30241
|
+
...(ngDevMode ? [{ debugName: "chipAriaLabel" }] : /* istanbul ignore next */ []));
|
|
30242
|
+
constructor() {
|
|
30243
|
+
// The short label is a width question, and a width question the component
|
|
30244
|
+
// has to answer in script: the text it draws changes, not only its size.
|
|
30245
|
+
effect((onCleanup) => {
|
|
30246
|
+
const px = this.shortLabelWidth();
|
|
30247
|
+
if (typeof matchMedia !== 'function')
|
|
30248
|
+
return;
|
|
30249
|
+
const query = matchMedia(`(max-width: ${px}px)`);
|
|
30250
|
+
const update = () => this.narrow.set(query.matches);
|
|
30251
|
+
update();
|
|
30252
|
+
query.addEventListener('change', update);
|
|
30253
|
+
onCleanup(() => query.removeEventListener('change', update));
|
|
30254
|
+
});
|
|
30255
|
+
// (opened) fires once per opening, so an app can fetch the health lines
|
|
30256
|
+
// then — the menu never waits for them.
|
|
30257
|
+
effect(() => {
|
|
30258
|
+
const open = this.menu()?.open() ?? false;
|
|
30259
|
+
if (open && !this.wasOpen)
|
|
30260
|
+
this.opened.emit();
|
|
30261
|
+
this.wasOpen = open;
|
|
30262
|
+
});
|
|
30263
|
+
}
|
|
30264
|
+
pick(item, event) {
|
|
30265
|
+
if (item.disabled)
|
|
30266
|
+
return;
|
|
30267
|
+
// A modified or non-primary click on a link is the browser's — a new tab,
|
|
30268
|
+
// a copied address — and must not switch the product here.
|
|
30269
|
+
if (event &&
|
|
30270
|
+
(item.routerLink != null || item.href) &&
|
|
30271
|
+
(event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) {
|
|
30272
|
+
return;
|
|
30273
|
+
}
|
|
30274
|
+
this.current.set(item.id);
|
|
30275
|
+
this.select.emit(item);
|
|
30276
|
+
}
|
|
30277
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctProductSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30278
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: StrctProductSwitcher, isStandalone: true, selector: "strct-product-switcher", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, footerItems: { classPropertyName: "footerItems", publicName: "footerItems", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, switchLabel: { classPropertyName: "switchLabel", publicName: "switchLabel", isSignal: true, isRequired: false, transformFunction: null }, shortLabelWidth: { classPropertyName: "shortLabelWidth", publicName: "shortLabelWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { current: "currentChange", opened: "opened", select: "select" }, host: { classAttribute: "strct-ps" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
30279
|
+
<!-- What a row holds, whichever element carries it. -->
|
|
30280
|
+
<ng-template #rowBody let-item>
|
|
30281
|
+
@if (item.icon) {
|
|
30282
|
+
<strct-icon strctDropdownItemIcon [tone]="item.tone ?? ''" [name]="item.icon" [size]="16" />
|
|
30283
|
+
}
|
|
30284
|
+
<span strctDropdownItemLabel>{{ item.name }}</span>
|
|
30285
|
+
@if (item.description) {
|
|
30286
|
+
<span strctDropdownItemDescription>
|
|
30287
|
+
@if (item.status) {
|
|
30288
|
+
<strct-status-dot [status]="item.status" />
|
|
30289
|
+
}
|
|
30290
|
+
{{ item.description }}
|
|
30291
|
+
</span>
|
|
30292
|
+
}
|
|
30293
|
+
</ng-template>
|
|
30294
|
+
|
|
30295
|
+
<!-- A row is a link where the product has an address, so it can be opened
|
|
30296
|
+
in a new tab — and a menuitemradio either way, checked on the one you
|
|
30297
|
+
are in. -->
|
|
30298
|
+
<ng-template #row let-item>
|
|
30299
|
+
@if (item.routerLink !== null && item.routerLink !== undefined && !item.disabled) {
|
|
30300
|
+
<a
|
|
30301
|
+
strctDropdownItem
|
|
30302
|
+
[routerLink]="item.routerLink"
|
|
30303
|
+
[selected]="item.id === current()"
|
|
30304
|
+
(click)="pick(item, $event)"
|
|
30305
|
+
>
|
|
30306
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30307
|
+
</a>
|
|
30308
|
+
} @else if (item.href && !item.disabled) {
|
|
30309
|
+
<a
|
|
30310
|
+
strctDropdownItem
|
|
30311
|
+
[href]="item.href"
|
|
30312
|
+
[selected]="item.id === current()"
|
|
30313
|
+
(click)="pick(item, $event)"
|
|
30314
|
+
>
|
|
30315
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30316
|
+
</a>
|
|
30317
|
+
} @else {
|
|
30318
|
+
<strct-dropdown-item
|
|
30319
|
+
[selected]="item.id === current()"
|
|
30320
|
+
[disabled]="!!item.disabled"
|
|
30321
|
+
(click)="pick(item)"
|
|
30322
|
+
>
|
|
30323
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30324
|
+
</strct-dropdown-item>
|
|
30325
|
+
}
|
|
30326
|
+
</ng-template>
|
|
30327
|
+
|
|
30328
|
+
@if (hasMenu()) {
|
|
30329
|
+
<strct-dropdown #menu align="start">
|
|
30330
|
+
<button
|
|
30331
|
+
type="button"
|
|
30332
|
+
class="strct-ps__chip"
|
|
30333
|
+
strctDropdownTrigger
|
|
30334
|
+
[attr.aria-label]="chipAriaLabel()"
|
|
30335
|
+
>
|
|
30336
|
+
<ng-container *ngTemplateOutlet="chipBody" />
|
|
30337
|
+
<strct-icon class="strct-ps__chevron" name="chevronDown" [size]="13" />
|
|
30338
|
+
</button>
|
|
30339
|
+
@for (item of items(); track item.id) {
|
|
30340
|
+
<ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
|
|
30341
|
+
}
|
|
30342
|
+
@if (footerItems().length) {
|
|
30343
|
+
<strct-dropdown-divider />
|
|
30344
|
+
@for (item of footerItems(); track item.id) {
|
|
30345
|
+
<ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
|
|
30346
|
+
}
|
|
30347
|
+
}
|
|
30348
|
+
</strct-dropdown>
|
|
30349
|
+
} @else {
|
|
30350
|
+
<!-- One product: a chip that says where you are, not a menu of one. -->
|
|
30351
|
+
<span class="strct-ps__chip strct-ps__chip--plain">
|
|
30352
|
+
<ng-container *ngTemplateOutlet="chipBody" />
|
|
30353
|
+
</span>
|
|
30354
|
+
}
|
|
30355
|
+
|
|
30356
|
+
<ng-template #chipBody>
|
|
30357
|
+
@if (currentItem(); as item) {
|
|
30358
|
+
@if (item.icon) {
|
|
30359
|
+
<strct-icon
|
|
30360
|
+
class="strct-ps__icon"
|
|
30361
|
+
[name]="item.icon"
|
|
30362
|
+
[size]="16"
|
|
30363
|
+
[style.color]="item.tone || null"
|
|
30364
|
+
/>
|
|
30365
|
+
}
|
|
30366
|
+
<span class="strct-ps__label">{{ chipText() }}</span>
|
|
30367
|
+
}
|
|
30368
|
+
</ng-template>
|
|
30369
|
+
`, isInline: true, styles: [".strct-ps{display:inline-flex;align-items:center;min-width:0}.strct-ps__chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 8px;border:1px solid var(--b2);border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.strct-ps__chip:hover{background:#ffffff14}.strct-ps__chip--plain{cursor:default;border-color:transparent}.strct-ps__chip--plain:hover{background:transparent}.strct-ps__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-ps__icon{flex:none}.strct-ps__chevron{flex:none;opacity:.7}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: StrctIcon, selector: "strct-icon", inputs: ["name", "strictName", "size", "strokeWidth", "badge", "ariaLabel", "count", "countMax", "countStatus", "countLabel"] }, { kind: "component", type: StrctStatusDot, selector: "strct-status-dot", inputs: ["status", "label", "size", "pulse", "variant"] }, { kind: "component", type: StrctDropdown, selector: "strct-dropdown", inputs: ["align", "popover", "popoverLabel", "focusable"] }, { kind: "directive", type: StrctDropdownTrigger, selector: "[strctDropdownTrigger]" }, { kind: "component", type: StrctDropdownItem, selector: "strct-dropdown-item, a[strctDropdownItem]", inputs: ["selected", "critical", "disabled", "hint"] }, { kind: "directive", type: StrctDropdownItemIcon, selector: "[strctDropdownItemIcon]", inputs: ["tone"] }, { kind: "directive", type: StrctDropdownItemLabel, selector: "[strctDropdownItemLabel]" }, { kind: "directive", type: StrctDropdownItemDescription, selector: "[strctDropdownItemDescription]" }, { kind: "component", type: StrctDropdownDivider, selector: "strct-dropdown-divider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
30370
|
+
}
|
|
30371
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: StrctProductSwitcher, decorators: [{
|
|
30372
|
+
type: Component,
|
|
30373
|
+
args: [{ selector: 'strct-product-switcher', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
30374
|
+
NgTemplateOutlet,
|
|
30375
|
+
RouterLink,
|
|
30376
|
+
StrctIcon,
|
|
30377
|
+
StrctStatusDot,
|
|
30378
|
+
StrctDropdown,
|
|
30379
|
+
StrctDropdownTrigger,
|
|
30380
|
+
StrctDropdownItem,
|
|
30381
|
+
StrctDropdownItemIcon,
|
|
30382
|
+
StrctDropdownItemLabel,
|
|
30383
|
+
StrctDropdownItemDescription,
|
|
30384
|
+
StrctDropdownDivider,
|
|
30385
|
+
], template: `
|
|
30386
|
+
<!-- What a row holds, whichever element carries it. -->
|
|
30387
|
+
<ng-template #rowBody let-item>
|
|
30388
|
+
@if (item.icon) {
|
|
30389
|
+
<strct-icon strctDropdownItemIcon [tone]="item.tone ?? ''" [name]="item.icon" [size]="16" />
|
|
30390
|
+
}
|
|
30391
|
+
<span strctDropdownItemLabel>{{ item.name }}</span>
|
|
30392
|
+
@if (item.description) {
|
|
30393
|
+
<span strctDropdownItemDescription>
|
|
30394
|
+
@if (item.status) {
|
|
30395
|
+
<strct-status-dot [status]="item.status" />
|
|
30396
|
+
}
|
|
30397
|
+
{{ item.description }}
|
|
30398
|
+
</span>
|
|
30399
|
+
}
|
|
30400
|
+
</ng-template>
|
|
30401
|
+
|
|
30402
|
+
<!-- A row is a link where the product has an address, so it can be opened
|
|
30403
|
+
in a new tab — and a menuitemradio either way, checked on the one you
|
|
30404
|
+
are in. -->
|
|
30405
|
+
<ng-template #row let-item>
|
|
30406
|
+
@if (item.routerLink !== null && item.routerLink !== undefined && !item.disabled) {
|
|
30407
|
+
<a
|
|
30408
|
+
strctDropdownItem
|
|
30409
|
+
[routerLink]="item.routerLink"
|
|
30410
|
+
[selected]="item.id === current()"
|
|
30411
|
+
(click)="pick(item, $event)"
|
|
30412
|
+
>
|
|
30413
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30414
|
+
</a>
|
|
30415
|
+
} @else if (item.href && !item.disabled) {
|
|
30416
|
+
<a
|
|
30417
|
+
strctDropdownItem
|
|
30418
|
+
[href]="item.href"
|
|
30419
|
+
[selected]="item.id === current()"
|
|
30420
|
+
(click)="pick(item, $event)"
|
|
30421
|
+
>
|
|
30422
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30423
|
+
</a>
|
|
30424
|
+
} @else {
|
|
30425
|
+
<strct-dropdown-item
|
|
30426
|
+
[selected]="item.id === current()"
|
|
30427
|
+
[disabled]="!!item.disabled"
|
|
30428
|
+
(click)="pick(item)"
|
|
30429
|
+
>
|
|
30430
|
+
<ng-container *ngTemplateOutlet="rowBody; context: { $implicit: item }" />
|
|
30431
|
+
</strct-dropdown-item>
|
|
30432
|
+
}
|
|
30433
|
+
</ng-template>
|
|
30434
|
+
|
|
30435
|
+
@if (hasMenu()) {
|
|
30436
|
+
<strct-dropdown #menu align="start">
|
|
30437
|
+
<button
|
|
30438
|
+
type="button"
|
|
30439
|
+
class="strct-ps__chip"
|
|
30440
|
+
strctDropdownTrigger
|
|
30441
|
+
[attr.aria-label]="chipAriaLabel()"
|
|
30442
|
+
>
|
|
30443
|
+
<ng-container *ngTemplateOutlet="chipBody" />
|
|
30444
|
+
<strct-icon class="strct-ps__chevron" name="chevronDown" [size]="13" />
|
|
30445
|
+
</button>
|
|
30446
|
+
@for (item of items(); track item.id) {
|
|
30447
|
+
<ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
|
|
30448
|
+
}
|
|
30449
|
+
@if (footerItems().length) {
|
|
30450
|
+
<strct-dropdown-divider />
|
|
30451
|
+
@for (item of footerItems(); track item.id) {
|
|
30452
|
+
<ng-container *ngTemplateOutlet="row; context: { $implicit: item }" />
|
|
30453
|
+
}
|
|
30454
|
+
}
|
|
30455
|
+
</strct-dropdown>
|
|
30456
|
+
} @else {
|
|
30457
|
+
<!-- One product: a chip that says where you are, not a menu of one. -->
|
|
30458
|
+
<span class="strct-ps__chip strct-ps__chip--plain">
|
|
30459
|
+
<ng-container *ngTemplateOutlet="chipBody" />
|
|
30460
|
+
</span>
|
|
30461
|
+
}
|
|
30462
|
+
|
|
30463
|
+
<ng-template #chipBody>
|
|
30464
|
+
@if (currentItem(); as item) {
|
|
30465
|
+
@if (item.icon) {
|
|
30466
|
+
<strct-icon
|
|
30467
|
+
class="strct-ps__icon"
|
|
30468
|
+
[name]="item.icon"
|
|
30469
|
+
[size]="16"
|
|
30470
|
+
[style.color]="item.tone || null"
|
|
30471
|
+
/>
|
|
30472
|
+
}
|
|
30473
|
+
<span class="strct-ps__label">{{ chipText() }}</span>
|
|
30474
|
+
}
|
|
30475
|
+
</ng-template>
|
|
30476
|
+
`, host: { class: 'strct-ps' }, styles: [".strct-ps{display:inline-flex;align-items:center;min-width:0}.strct-ps__chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:5px 8px;border:1px solid var(--b2);border-radius:var(--radius-sm);background:transparent;color:inherit;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.strct-ps__chip:hover{background:#ffffff14}.strct-ps__chip--plain{cursor:default;border-color:transparent}.strct-ps__chip--plain:hover{background:transparent}.strct-ps__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strct-ps__icon{flex:none}.strct-ps__chevron{flex:none;opacity:.7}\n"] }]
|
|
30477
|
+
}], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], footerItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerItems", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }, { type: i0.Output, args: ["currentChange"] }], switchLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "switchLabel", required: false }] }], shortLabelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortLabelWidth", required: false }] }], opened: [{ type: i0.Output, args: ["opened"] }], select: [{ type: i0.Output, args: ["select"] }], menu: [{ type: i0.ViewChild, args: ['menu', { isSignal: true }] }] } });
|
|
30478
|
+
|
|
30086
30479
|
/**
|
|
30087
30480
|
* Public API surface of the strct UI library.
|
|
30088
30481
|
*/
|
|
@@ -30092,5 +30485,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
|
|
|
30092
30485
|
* Generated bundle index. Do not edit.
|
|
30093
30486
|
*/
|
|
30094
30487
|
|
|
30095
|
-
export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_MD_LIMITS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAlert, StrctAlertActions, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatMessageActions, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDetailPaneActions, StrctDetailPaneMeta, StrctDetailPaneTitle, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownGroup, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownItemDescription, StrctDropdownItemIcon, StrctDropdownItemLabel, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFieldValue, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctGroupHeaderDef, StrctHeader, StrctHeaderAction, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMarkdown, StrctMarkdownToken, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowDockItem, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, parseInlines, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctClassifyHref, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctParseMarkdown, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
|
|
30488
|
+
export { FOCUSABLE_SELECTOR, STRCT_DP_DOW, STRCT_DP_DOW_FULL, STRCT_DP_MONTHS, STRCT_ICONS, STRCT_ICON_GROUPS, STRCT_ICON_NAMES, STRCT_MASKS, STRCT_MD_LIMITS, STRCT_NOTIFICATION_HISTORY_LIMIT, STRCT_PALETTES, STRCT_RAW_ICONS, STRCT_TIME_RANGE_PRESETS, STRCT_WIZARD_DEFAULTS, StrctAccordion, StrctAccordionPanel, StrctAccordionPanelMeta, StrctAlert, StrctAlertActions, StrctAnnouncer, StrctAvatar, StrctBadge, StrctBreadcrumb, StrctBreadcrumbItem, StrctButton, StrctButtonGroup, StrctBytesPipe, StrctCard, StrctCardBlock, StrctCardFooter, StrctCardHeader, StrctCardHeaderActions, StrctCardHeaderLeading, StrctCardHeaderMeta, StrctCardHeaderNote, StrctCascadeColumn, StrctCascadeHost, StrctCascadeSelect, StrctCellDef, StrctCellStatus, StrctChange, StrctChart, StrctChatAttachment, StrctChatComposer, StrctChatMessage, StrctChatMessageActions, StrctChatThread, StrctCheckbox, StrctChips, StrctCode, StrctCodeInline, StrctColorPicker, StrctCombobox, StrctCommandPalette, StrctConfirmOutlet, StrctConfirmService, StrctContextMenu, StrctContextMenuTrigger, StrctControlDescription, StrctCopy, StrctDatagrid, StrctDatagridActionBar, StrctDatagridActionBarCaption, StrctDatepicker, StrctDatetimePicker, StrctDesc, StrctDescriptionList, StrctDetailPaneActions, StrctDetailPaneMeta, StrctDetailPaneTitle, StrctDiff, StrctDivider, StrctDonut, StrctDrawer, StrctDrawerFooter, StrctDropdown, StrctDropdownDivider, StrctDropdownGroup, StrctDropdownItem, StrctDropdownItemAction, StrctDropdownItemDescription, StrctDropdownItemIcon, StrctDropdownItemLabel, StrctDropdownTrigger, StrctDurationPipe, StrctEmptyState, StrctField, StrctFieldGroup, StrctFieldHint, StrctFieldPrefix, StrctFieldSuffix, StrctFieldValue, StrctFile, StrctFilterBar, StrctFlow, StrctFlowNodeTemplate, StrctFooter, StrctGauge, StrctGroupHeaderDef, StrctHeader, StrctHeaderAction, StrctHeatmap, StrctHero, StrctHotkeysHelp, StrctHotkeysService, StrctIcon, StrctInlineEdit, StrctInput, StrctInputMask, StrctInputOtp, StrctKbd, StrctKnob, StrctLegend, StrctList, StrctListItem, StrctListItemDescription, StrctListItemLeading, StrctListItemMeta, StrctListItemTrailing, StrctLiveIndicator, StrctLogViewer, StrctLogin, StrctMarkdown, StrctMarkdownToken, StrctMediaFrame, StrctMenuPanel, StrctMenuService, StrctMenubar, StrctMetricTile, StrctModal, StrctModalContent, StrctNav, StrctNavItem, StrctNotificationCenter, StrctNumber, StrctOverlay, StrctPageHeader, StrctPageHeaderActions, StrctPageHeaderCrumbs, StrctPageHeaderTitleMeta, StrctPagination, StrctPassword, StrctPopover, StrctPopoverTrigger, StrctProductSwitcher, StrctProgress, StrctQr, StrctRadio, StrctRadioGroup, StrctRail, StrctRange, StrctRatePipe, StrctRating, StrctReorder, StrctReorderGroup, StrctReorderHandle, StrctReorderItem, StrctResizeHandle, StrctRowDetailDef, StrctSearchbox, StrctSectionHeader, StrctSectionHeaderActions, StrctSectionHeaderMeta, StrctSectionMenu, StrctSegmented, StrctSelect, StrctShell, StrctShellService, StrctSiPipe, StrctSignpost, StrctSignpostTrigger, StrctSkeleton, StrctSparkline, StrctSpeedDial, StrctSpinner, StrctSplitButton, StrctSplitter, StrctStack, StrctStackItem, StrctStatusDot, StrctStep, StrctStepAction, StrctSteps, StrctSubmenu, StrctTab, StrctTable, StrctTabs, StrctTag, StrctTagLeading, StrctThemeService, StrctThemeSwitcher, StrctTimeRangePicker, StrctTimeline, StrctTimelineItem, StrctToastOutlet, StrctToastService, StrctToggle, StrctToolbar, StrctToolbarCaption, StrctToolbarSpacer, StrctTooltip, StrctTour, StrctTransfer, StrctTree, StrctTreeNode, StrctTreeSelect, StrctVerticalNav, StrctWatermark, StrctWindow, StrctWindowDock, StrctWindowDockItem, StrctWindowService, StrctWizard, StrctWizardAside, __qrInternals, focusFirstIn, keepTabInside, lockBodyScroll, parseAnsi, parseInlines, provideStrctWizardDefaults, registerStrctIcon, restoreFocus, saveFocusedElement, strctCheckHostDisplay, strctCheckHostInputs, strctClassifyHref, strctComputeDiff, strctDpPad, strctFormatBytes, strctFormatDuration, strctFormatRate, strctFormatSi, strctParseMarkdown, strctQrMatrix, strctValidationIcon, strctValidationTone, unlockBodyScroll };
|
|
30096
30489
|
//# sourceMappingURL=akcelik-strct.mjs.map
|