@sentropic/design-system-angular 0.36.59 → 0.36.61
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/dist/AppShell.d.ts +41 -1
- package/dist/AppShell.d.ts.map +1 -1
- package/dist/AppShell.js +288 -8
- package/dist/AppShell.js.map +1 -1
- package/dist/MenuPopover.d.ts +69 -4
- package/dist/MenuPopover.d.ts.map +1 -1
- package/dist/MenuPopover.js +207 -13
- package/dist/MenuPopover.js.map +1 -1
- package/dist/PanelSection.d.ts +69 -0
- package/dist/PanelSection.d.ts.map +1 -0
- package/dist/PanelSection.js +191 -0
- package/dist/PanelSection.js.map +1 -0
- package/dist/PanelStack.d.ts +270 -0
- package/dist/PanelStack.d.ts.map +1 -0
- package/dist/PanelStack.js +584 -0
- package/dist/PanelStack.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +229 -8
- package/package.json +1 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from "@angular/core";
|
|
2
|
+
import type { AfterContentInit, AfterViewInit, OnChanges, OnDestroy, OnInit, SimpleChanges } from "@angular/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export type PanelStackShape = "split-primary" | "sticky-item";
|
|
5
|
+
/**
|
|
6
|
+
* Bound ratified by the chat consumer lane: beyond 4 sections, stacking
|
|
7
|
+
* collapsible regions in a pane capped at 640px makes scrolling unmanageable
|
|
8
|
+
* and the single-owner rule becomes untenable. Enforced as a dev-time
|
|
9
|
+
* `console.warn` in `register()` (this package's established convention —
|
|
10
|
+
* see NavActionStack/WaterfallChart — is to warn and degrade, never throw or
|
|
11
|
+
* silently truncate); exported here so the bound is also visible through
|
|
12
|
+
* types/docs to a consumer reading `PanelStackProps`. Mirrors
|
|
13
|
+
* `PanelStack.svelte`'s constant of the same name/value 1:1.
|
|
14
|
+
*/
|
|
15
|
+
export declare const PANEL_STACK_MAX_SECTIONS = 4;
|
|
16
|
+
export type PanelStackProps = {
|
|
17
|
+
/** "sticky-item" (default): one section expanded at a time, all headers stay visible.
|
|
18
|
+
"split-primary": the `primary` section is always expanded and owns the scroll;
|
|
19
|
+
the others are content-sized disclosures. */
|
|
20
|
+
shape?: PanelStackShape;
|
|
21
|
+
/** Accessible name for the stack region. */
|
|
22
|
+
label?: string;
|
|
23
|
+
/** sticky-item, controlled: id of the expanded section. */
|
|
24
|
+
expanded?: string | null;
|
|
25
|
+
/** sticky-item, uncontrolled seed. */
|
|
26
|
+
defaultExpanded?: string | null;
|
|
27
|
+
onExpandedChange?: (id: string | null) => void;
|
|
28
|
+
/**
|
|
29
|
+
* split-primary: id of the section that owns the scroll. Falls back to the
|
|
30
|
+
* first EXPANDED section (registration order) when unset or stale, and —
|
|
31
|
+
* if nothing is expanded — to the first registered section, so the stack
|
|
32
|
+
* never degrades to zero scroll owners.
|
|
33
|
+
*/
|
|
34
|
+
primary?: string;
|
|
35
|
+
/** Usable floor for the primary section, in px. While the primary sits above it the
|
|
36
|
+
primary absorbs overflow; once it would drop below, a secondary auto-collapses
|
|
37
|
+
instead of compressing the primary further. Default 160. */
|
|
38
|
+
primaryMinHeight?: number;
|
|
39
|
+
/**
|
|
40
|
+
* At most {@link PANEL_STACK_MAX_SECTIONS} `PanelSection` children are
|
|
41
|
+
* supported — see that constant's doc comment for why.
|
|
42
|
+
*/
|
|
43
|
+
class?: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Pure fallback-chain resolver for split-primary's scroll owner — mirrors
|
|
47
|
+
* `PanelStack.svelte`'s `effectivePrimary` derivation so it is unit-testable
|
|
48
|
+
* without any component/DOM machinery (see MenuPopover's
|
|
49
|
+
* `computeMenuPopoverPosition` for the established pattern).
|
|
50
|
+
*
|
|
51
|
+
* Tier 1: a `designatedPrimary` that matches a currently-registered id always
|
|
52
|
+
* wins. Tier 2: otherwise the first EXPANDED id in `orderedIds` (registration
|
|
53
|
+
* order is the tiebreak, never click order). Tier 3 (last resort): the first
|
|
54
|
+
* registered id, so the stack never degrades to zero scroll owners.
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolvePanelStackPrimary(designatedPrimary: string | undefined, orderedIds: readonly string[], openIds: ReadonlySet<string>): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Pure resolver for sticky-item's effective expanded/scroll-owner id — a
|
|
59
|
+
* SINGLE resolved value deliberately reused by the class for both
|
|
60
|
+
* `isExpanded` and `isScrollOwner` in that shape (see `effectiveExpandedId`).
|
|
61
|
+
* Splitting these into two different values would let a section render as
|
|
62
|
+
* the (visible, `overflow:auto`) scroll owner while its trigger reports
|
|
63
|
+
* `aria-expanded="false"` — a screen reader announcing "collapsed" for
|
|
64
|
+
* on-screen, scrolling content. sticky-item's contract is that "expanded"
|
|
65
|
+
* and "owns the scroll" are the same fact about the same section by
|
|
66
|
+
* definition, so this resolver is the one place that fact is decided, for
|
|
67
|
+
* both.
|
|
68
|
+
*
|
|
69
|
+
* The controlled counterpart to `effectiveExpandedId`'s uncontrolled
|
|
70
|
+
* fallback (which already resolves to the first registered id on its own).
|
|
71
|
+
* Mirrors `resolvePanelStackPrimary`'s last-resort tier so this package's
|
|
72
|
+
* Node test environment can exercise the decision without any
|
|
73
|
+
* component/DOM machinery.
|
|
74
|
+
*
|
|
75
|
+
* Ratified cross-framework rule: a controlled `expanded` is NEVER silently
|
|
76
|
+
* corrected — the caller must still expose the raw, possibly-invalid value
|
|
77
|
+
* back to the consumer (never rewritten, never fed through
|
|
78
|
+
* `onExpandedChange`) — that is about the PROP, not about what gets
|
|
79
|
+
* rendered: ARIA still has to describe the actual DOM, so the resolved
|
|
80
|
+
* (possibly healed) value below is what both `isExpanded` and
|
|
81
|
+
* `isScrollOwner` read. Two distinct controlled inputs are told apart here:
|
|
82
|
+
*
|
|
83
|
+
* - `expandedId` is a non-null id that names NO id in `orderedIds`: this is
|
|
84
|
+
* a MISTAKE (a stale/typo'd controlled value) — the consumer intended a
|
|
85
|
+
* section open and silently got none, which is exactly the "content
|
|
86
|
+
* unreachable by the wheel" state the stack must never reach. Falls back
|
|
87
|
+
* to the first registered id, identically to `resolvePanelStackPrimary`'s
|
|
88
|
+
* own tier 3.
|
|
89
|
+
* - `expandedId` is explicitly `null`: this is a DELIBERATE "everything
|
|
90
|
+
* collapsed" — honoured as-is, no fallback. An all-collapsed stack shows
|
|
91
|
+
* no content at all, so nothing is unreachable; zero scroll owners is the
|
|
92
|
+
* correct, legitimate outcome here.
|
|
93
|
+
*/
|
|
94
|
+
export declare function resolvePanelStackExpanded(expandedId: string | null, orderedIds: readonly string[]): string | null;
|
|
95
|
+
export type PanelStackAutoCollapseMeasurements = {
|
|
96
|
+
/** Id of the section currently resolved as primary (never a collapse candidate). */
|
|
97
|
+
primaryId: string;
|
|
98
|
+
/** Latest observed height of the stack container. 0 means "not measured yet". */
|
|
99
|
+
stackHeight: number;
|
|
100
|
+
/** Latest observed height of the primary's own header. */
|
|
101
|
+
primaryHeaderHeight: number;
|
|
102
|
+
/** Ids of every non-primary (secondary) registered section. */
|
|
103
|
+
secondaryIds: readonly string[];
|
|
104
|
+
/** Latest observed ROOT (header + current body) height per registered id. */
|
|
105
|
+
rootHeights: ReadonlyMap<string, number>;
|
|
106
|
+
/** Ids the user explicitly opened (their INTENT, independent of what's actually visible). */
|
|
107
|
+
openSecondary: ReadonlySet<string>;
|
|
108
|
+
/** Ids force-collapsed by this algorithm on an earlier pass. */
|
|
109
|
+
autoCollapsed: ReadonlySet<string>;
|
|
110
|
+
/** MRU order (oldest first) of ids the user explicitly opened — drives
|
|
111
|
+
* "collapse the least-recently-expanded secondary first". */
|
|
112
|
+
expansionOrder: readonly string[];
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* THE auto-collapse decision, factored out as a pure function (per
|
|
116
|
+
* MenuPopover's `computeMenuPopoverPosition` precedent) so it is testable
|
|
117
|
+
* without ResizeObserver/DOM: this package's Node test environment has
|
|
118
|
+
* neither. Mirrors `PanelStack.svelte`'s decision `$effect` body exactly.
|
|
119
|
+
*
|
|
120
|
+
* Returns the id of AT MOST ONE new secondary to auto-collapse this pass, or
|
|
121
|
+
* `null` if nothing needs to (either it already fits, or nothing is left to
|
|
122
|
+
* collapse — the degenerate "pane too small even fully collapsed" case).
|
|
123
|
+
*
|
|
124
|
+
* Convergence / no-avalanche contract: this function is a pure read of the
|
|
125
|
+
* measurements and state PASSED IN — it never reads or writes any component
|
|
126
|
+
* field itself, and it never returns more than one id per call. A caller
|
|
127
|
+
* that re-invokes it once per REAL measurement update (the pattern used by
|
|
128
|
+
* `PanelStack`'s ResizeObserver callback and `toggle()`) therefore collapses
|
|
129
|
+
* at most one NEW secondary per pass, using measurements that are always
|
|
130
|
+
* either accurate (untouched by this pass) or correctly reflect an EARLIER
|
|
131
|
+
* pass once the observer catches up — never a same-tick avalanche. Calling
|
|
132
|
+
* it again with IDENTICAL inputs (e.g. a duplicate/no-op resize delivery)
|
|
133
|
+
* always returns `null` once the fixed point is reached: `autoCollapsed`
|
|
134
|
+
* already contains every viable candidate, so the `.find()` below yields
|
|
135
|
+
* nothing new — no oscillation.
|
|
136
|
+
*/
|
|
137
|
+
export declare function computePanelStackAutoCollapse(measurements: PanelStackAutoCollapseMeasurements, floorPx?: number): string | null;
|
|
138
|
+
/**
|
|
139
|
+
* Stacks several `PanelSection` contents inside ONE panel so a docked chat
|
|
140
|
+
* can share a pane with other content. The invariant is the whole point:
|
|
141
|
+
* exactly one section's body has `overflow: auto` at any moment, and the
|
|
142
|
+
* stack itself NEVER scrolls — see `PanelSection.ts` for the single scrolling
|
|
143
|
+
* declaration in this component pair.
|
|
144
|
+
*
|
|
145
|
+
* Faithful Angular port of `PanelStack.svelte`. See that file for the
|
|
146
|
+
* ratified contract this mirrors; the notable Angular-specific departures,
|
|
147
|
+
* all forced by this platform (documented in depth at each site below):
|
|
148
|
+
*
|
|
149
|
+
* - Coordination with `PanelSection` children is NOT Svelte-style context
|
|
150
|
+
* (`setContext`/`getContext`). Angular constructor DI would be the direct
|
|
151
|
+
* analog, but it needs `@Optional()`/`@Inject()` PARAMETER decorators,
|
|
152
|
+
* which this package's tsconfig cannot compile (no `experimentalDecorators`
|
|
153
|
+
* — the whole package already relies on standard/Ivy decorators for
|
|
154
|
+
* class/property positions only). Instead `PanelStack` discovers its
|
|
155
|
+
* sections via `@ContentChildren` and pushes `isPrimary`/`expanded`/
|
|
156
|
+
* `scrollOwner` directly onto each instance — the SAME "parent owns
|
|
157
|
+
* projected children's state" idiom `SelectableList` already established
|
|
158
|
+
* for its `SelectableRow` children in this exact package.
|
|
159
|
+
* - Registration order substitutes for Svelte's DOM-order-via-
|
|
160
|
+
* `compareDocumentPosition` fallback: `@ContentChildren` (and this
|
|
161
|
+
* package's Node test environment, which has no DOM at all) both already
|
|
162
|
+
* hand entries over in call/DOM order, so no separate re-sort is needed.
|
|
163
|
+
* - No `ChangeDetectorRef`/`markForCheck` — matching this package's existing
|
|
164
|
+
* idiom of relying on zone.js's default full-tree change detection (same
|
|
165
|
+
* as `MenuPopover`'s window-listener-driven position updates).
|
|
166
|
+
*/
|
|
167
|
+
export declare class PanelStack implements OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy {
|
|
168
|
+
private readonly host;
|
|
169
|
+
static readonly stComponentName = "PanelStack";
|
|
170
|
+
readonly componentName = "PanelStack";
|
|
171
|
+
shape: PanelStackShape;
|
|
172
|
+
label?: string;
|
|
173
|
+
/** sticky-item, controlled: id of the expanded section. Presence (including
|
|
174
|
+
* an explicit `null`) is what makes the stack controlled — same
|
|
175
|
+
* undefined-vs-set idiom as `AppShell.panelWidths`. */
|
|
176
|
+
expanded?: string | null;
|
|
177
|
+
defaultExpanded: string | null;
|
|
178
|
+
/** Svelte-canonical callback. */
|
|
179
|
+
onExpandedChange?: (id: string | null) => void;
|
|
180
|
+
/** Angular-idiom addition (not in the Svelte contract): enables
|
|
181
|
+
* `[(expanded)]` two-way binding alongside `onExpandedChange`. */
|
|
182
|
+
readonly expandedChange: EventEmitter<string | null>;
|
|
183
|
+
primary?: string;
|
|
184
|
+
primaryMinHeight?: number;
|
|
185
|
+
classInput?: string;
|
|
186
|
+
private sectionsQuery?;
|
|
187
|
+
private entries;
|
|
188
|
+
private internalExpanded;
|
|
189
|
+
private openSecondary;
|
|
190
|
+
private autoCollapsed;
|
|
191
|
+
private expansionOrder;
|
|
192
|
+
private rootHeights;
|
|
193
|
+
private stackHeight;
|
|
194
|
+
private primaryHeaderHeight;
|
|
195
|
+
private resizeObserver;
|
|
196
|
+
private observedPrimaryHeaderEl;
|
|
197
|
+
/** Dev-time "warned once" latch for a controlled `expanded` naming no
|
|
198
|
+
* registered section — see `effectiveExpandedId`. Guards the
|
|
199
|
+
* `console.warn` only, never the fallback resolution itself (which must
|
|
200
|
+
* always resolve a scroll owner). Never reset: the contract is "a
|
|
201
|
+
* console.warn once" (per instance), not "once per distinct bad id". */
|
|
202
|
+
private warnedInvalidExpanded;
|
|
203
|
+
private childUnregister;
|
|
204
|
+
private childToggleSub;
|
|
205
|
+
private sectionsChangesSub;
|
|
206
|
+
constructor(host: ElementRef<HTMLElement>);
|
|
207
|
+
ngOnInit(): void;
|
|
208
|
+
ngAfterContentInit(): void;
|
|
209
|
+
ngAfterViewInit(): void;
|
|
210
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
211
|
+
ngOnDestroy(): void;
|
|
212
|
+
get hostClass(): string;
|
|
213
|
+
get controlled(): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* sticky-item: the controlled branch NEVER rewrites `this.expanded` (the
|
|
216
|
+
* controlled contract is absolute — no self-correction, no synthetic
|
|
217
|
+
* `onExpandedChange`/`expandedChange` call), but it DOES resolve through
|
|
218
|
+
* `resolvePanelStackExpanded` so every DERIVED read (`isExpanded`,
|
|
219
|
+
* `isScrollOwner`) sees a healed value: a non-null `expanded` naming no
|
|
220
|
+
* registered section falls back to the first registered id (with a
|
|
221
|
+
* one-time dev warning below); an explicit `null` is a deliberate
|
|
222
|
+
* "everything collapsed" and is returned as-is. Guarded by
|
|
223
|
+
* `this.entries.length > 0` so a controlled value isn't flagged as
|
|
224
|
+
* "invalid" before any `PanelSection` has had a chance to register yet.
|
|
225
|
+
*/
|
|
226
|
+
get effectiveExpandedId(): string | null;
|
|
227
|
+
get effectivePrimary(): string | null;
|
|
228
|
+
/** Resolved floor fed to `computePanelStackAutoCollapse`'s `floorPx` —
|
|
229
|
+
* falls back to `PRIMARY_MIN_BLOCK_SIZE_PX` (the same value as the CSS
|
|
230
|
+
* fallback) when `primaryMinHeight` is unset. */
|
|
231
|
+
get resolvedPrimaryMinHeight(): number;
|
|
232
|
+
/** Inline value for the host's `--st-component-panelStack-primaryMinBlockSize`
|
|
233
|
+
* custom property — see the `host` binding in the `@Component` decorator.
|
|
234
|
+
* `resolvedPrimaryMinHeight` is the single source of truth this is
|
|
235
|
+
* derived from, so the JS threshold and the CSS floor can never drift
|
|
236
|
+
* apart. */
|
|
237
|
+
get primaryMinHeightStyle(): string;
|
|
238
|
+
isPrimary(id: string): boolean;
|
|
239
|
+
isExpanded(id: string): boolean;
|
|
240
|
+
isScrollOwner(id: string): boolean;
|
|
241
|
+
toggle(id: string): void;
|
|
242
|
+
/** Register a section's root AND header element, in registration order;
|
|
243
|
+
* returns an unregister callback. NOT just bookkeeping — the stack falls
|
|
244
|
+
* back to the first registered section as the scroll owner whenever
|
|
245
|
+
* nothing else designates one (unset/stale `expanded` or `primary`), so
|
|
246
|
+
* the invariant "exactly one scroll owner whenever the stack has >=1
|
|
247
|
+
* section" holds even for a misconfigured or dynamically-changing stack.
|
|
248
|
+
* Plain, DOM-agnostic bookkeeping — safe to call directly from tests with
|
|
249
|
+
* fake element objects (no real DOM required: `el`/`headerEl` are only
|
|
250
|
+
* ever compared by identity or handed to `ResizeObserver.observe`, which
|
|
251
|
+
* is itself guarded for absence below). */
|
|
252
|
+
register(id: string, el: HTMLElement, headerEl: HTMLElement): () => void;
|
|
253
|
+
private setExpanded;
|
|
254
|
+
private syncSections;
|
|
255
|
+
private applyStateToChildren;
|
|
256
|
+
private ensureResizeObserver;
|
|
257
|
+
/** Retarget the header observer whenever the primary changes (designation,
|
|
258
|
+
* fallback resolution, or a section registering/unregistering). */
|
|
259
|
+
private syncPrimaryHeaderObserver;
|
|
260
|
+
/** THE decision, driven off whatever measurements are CURRENTLY known.
|
|
261
|
+
* Called after every event that could change what "fits" means (a fresh
|
|
262
|
+
* ResizeObserver delivery, a toggle, a register/unregister, a `primary`/
|
|
263
|
+
* `shape` input change) — safe to over-call: `computePanelStackAutoCollapse`
|
|
264
|
+
* is a pure, idempotent read that returns `null` once nothing more needs
|
|
265
|
+
* to collapse, so redundant calls are no-ops. */
|
|
266
|
+
private runAutoCollapseDecision;
|
|
267
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PanelStack, never>;
|
|
268
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PanelStack, "st-panel-stack", never, { "shape": { "alias": "shape"; "required": false; }; "label": { "alias": "label"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "defaultExpanded": { "alias": "defaultExpanded"; "required": false; }; "onExpandedChange": { "alias": "onExpandedChange"; "required": false; }; "primary": { "alias": "primary"; "required": false; }; "primaryMinHeight": { "alias": "primaryMinHeight"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; }, { "expandedChange": "expandedChange"; }, ["sectionsQuery"], ["*"], true, never>;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=PanelStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelStack.d.ts","sourceRoot":"","sources":["../src/PanelStack.ts"],"names":[],"mappings":"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"}
|