@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.
@@ -3,6 +3,7 @@ export type AppShellVariant = "site" | "workspace";
3
3
  export type AppShellUtilityMode = "reserve" | "overlay" | "floating";
4
4
  export type AppShellUtilitySide = "left" | "right" | "bottom";
5
5
  export type AppShellPanelCollapse = "stack" | "accordion";
6
+ export type AppShellPanelKey = "navigationPanel" | "contextPanel" | "utilityPanel";
6
7
  export type AppShellProps = {
7
8
  variant?: AppShellVariant;
8
9
  /** Presence flags for named panels — pair with a projected `[slot=x]` element. */
@@ -37,6 +38,18 @@ export type AppShellProps = {
37
38
  contextPanelLabel?: string;
38
39
  /** Disclosure label for `utilityPanel` when `panelCollapse="accordion"`. Defaults to `utilityLabel`. */
39
40
  utilityPanelLabel?: string;
41
+ /** Enables drag-to-resize handles on side panels above 48rem. Default false — zero regression. */
42
+ panelResize?: boolean;
43
+ /** Controlled panel widths in px. When provided the component never mutates width itself. */
44
+ panelWidths?: Partial<Record<AppShellPanelKey, number>>;
45
+ /** Seeds uncontrolled widths in px. */
46
+ defaultPanelWidths?: Partial<Record<AppShellPanelKey, number>>;
47
+ /** Fired on every committed resize. Persistence is the CONSUMER's job — the DS stays presentational. */
48
+ onPanelResize?: (key: AppShellPanelKey, width: number) => void;
49
+ /** Lower clamp in px. Default 180. */
50
+ panelMinWidth?: number;
51
+ /** Upper clamp in px. Default 640. */
52
+ panelMaxWidth?: number;
40
53
  class?: string;
41
54
  };
42
55
  export declare class AppShell {
@@ -61,6 +74,20 @@ export declare class AppShell {
61
74
  contextPanelLabel?: string;
62
75
  utilityPanelLabel?: string;
63
76
  classInput?: string;
77
+ panelResize: boolean;
78
+ panelWidths?: Partial<Record<AppShellPanelKey, number>>;
79
+ defaultPanelWidths?: Partial<Record<AppShellPanelKey, number>>;
80
+ onPanelResize?: (key: AppShellPanelKey, width: number) => void;
81
+ panelMinWidth: number;
82
+ panelMaxWidth: number;
83
+ private navigationPanelRef?;
84
+ private contextPanelRef?;
85
+ private utilityPanelRef?;
86
+ private internalWidths?;
87
+ private dragKey;
88
+ private dragPositive;
89
+ private dragStartX;
90
+ private dragStartWidth;
64
91
  primaryRailPanelOpen: boolean;
65
92
  navigationPanelOpen: boolean;
66
93
  contextPanelOpen: boolean;
@@ -85,7 +112,20 @@ export declare class AppShell {
85
112
  toggleNavigationPanel(): void;
86
113
  toggleContextPanel(): void;
87
114
  toggleUtilityPanel(): void;
115
+ private get isWidthControlled();
116
+ private ensureInternalWidths;
117
+ widthFor(key: AppShellPanelKey): number | undefined;
118
+ clampWidth(n: number): number;
119
+ displayWidth(key: AppShellPanelKey): number;
120
+ private panelElFor;
121
+ get utilityPositive(): boolean;
122
+ get panelStyle(): string | null;
123
+ private commitWidth;
124
+ onHandlePointerDown(event: PointerEvent, key: AppShellPanelKey, positive: boolean): void;
125
+ onHandlePointerMove(event: PointerEvent): void;
126
+ onHandlePointerUp(event: PointerEvent): void;
127
+ onHandleKeydown(event: KeyboardEvent, key: AppShellPanelKey, positive: boolean): void;
88
128
  static ɵfac: i0.ɵɵFactoryDeclaration<AppShell, never>;
89
- static ɵcmp: i0.ɵɵComponentDeclaration<AppShell, "st-app-shell", never, { "variant": { "alias": "variant"; "required": false; }; "topChrome": { "alias": "topChrome"; "required": false; }; "primaryRail": { "alias": "primaryRail"; "required": false; }; "navigationPanel": { "alias": "navigationPanel"; "required": false; }; "contextPanel": { "alias": "contextPanel"; "required": false; }; "utilityPanel": { "alias": "utilityPanel"; "required": false; }; "bottomPanel": { "alias": "bottomPanel"; "required": false; }; "mainId": { "alias": "mainId"; "required": false; }; "navigationLabel": { "alias": "navigationLabel"; "required": false; }; "contextLabel": { "alias": "contextLabel"; "required": false; }; "utilityLabel": { "alias": "utilityLabel"; "required": false; }; "utilityMode": { "alias": "utilityMode"; "required": false; }; "utilitySide": { "alias": "utilitySide"; "required": false; }; "panelCollapse": { "alias": "panelCollapse"; "required": false; }; "primaryRailLabel": { "alias": "primaryRailLabel"; "required": false; }; "navigationPanelLabel": { "alias": "navigationPanelLabel"; "required": false; }; "contextPanelLabel": { "alias": "contextPanelLabel"; "required": false; }; "utilityPanelLabel": { "alias": "utilityPanelLabel"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; }, {}, never, ["*", "[slot=topChrome]", "[slot=primaryRail]", "[slot=navigationPanel]", "[slot=main]", "[slot=contextPanel]", "[slot=utilityPanel]", "[slot=bottomPanel]"], true, never>;
129
+ static ɵcmp: i0.ɵɵComponentDeclaration<AppShell, "st-app-shell", never, { "variant": { "alias": "variant"; "required": false; }; "topChrome": { "alias": "topChrome"; "required": false; }; "primaryRail": { "alias": "primaryRail"; "required": false; }; "navigationPanel": { "alias": "navigationPanel"; "required": false; }; "contextPanel": { "alias": "contextPanel"; "required": false; }; "utilityPanel": { "alias": "utilityPanel"; "required": false; }; "bottomPanel": { "alias": "bottomPanel"; "required": false; }; "mainId": { "alias": "mainId"; "required": false; }; "navigationLabel": { "alias": "navigationLabel"; "required": false; }; "contextLabel": { "alias": "contextLabel"; "required": false; }; "utilityLabel": { "alias": "utilityLabel"; "required": false; }; "utilityMode": { "alias": "utilityMode"; "required": false; }; "utilitySide": { "alias": "utilitySide"; "required": false; }; "panelCollapse": { "alias": "panelCollapse"; "required": false; }; "primaryRailLabel": { "alias": "primaryRailLabel"; "required": false; }; "navigationPanelLabel": { "alias": "navigationPanelLabel"; "required": false; }; "contextPanelLabel": { "alias": "contextPanelLabel"; "required": false; }; "utilityPanelLabel": { "alias": "utilityPanelLabel"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; "panelResize": { "alias": "panelResize"; "required": false; }; "panelWidths": { "alias": "panelWidths"; "required": false; }; "defaultPanelWidths": { "alias": "defaultPanelWidths"; "required": false; }; "onPanelResize": { "alias": "onPanelResize"; "required": false; }; "panelMinWidth": { "alias": "panelMinWidth"; "required": false; }; "panelMaxWidth": { "alias": "panelMaxWidth"; "required": false; }; }, {}, never, ["*", "[slot=topChrome]", "[slot=primaryRail]", "[slot=navigationPanel]", "[slot=main]", "[slot=contextPanel]", "[slot=utilityPanel]", "[slot=bottomPanel]"], true, never>;
90
130
  }
91
131
  //# sourceMappingURL=AppShell.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../src/AppShell.ts"],"names":[],"mappings":";AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8GAA8G;IAC9G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBA0Ja,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,eAAe,cAAc;IAC7C,QAAQ,CAAC,aAAa,cAAc;IAEzB,OAAO,EAAE,eAAe,CAAe;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,SAAU;IAChB,eAAe,SAA0B;IACzC,YAAY,SAAmB;IAC/B,YAAY,SAAmB;IAC/B,WAAW,EAAE,mBAAmB,CAAa;IAC7C,WAAW,EAAE,mBAAmB,CAAW;IAC3C,aAAa,EAAE,qBAAqB,CAAW;IAC/C,gBAAgB,SAAkB;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAMtC,oBAAoB,UAAS;IAC7B,mBAAmB,UAAS;IAC5B,gBAAgB,UAAS;IACzB,gBAAgB,UAAS;IAIzB,QAAQ,CAAC,oBAAoB,qCAAqC;IAClE,QAAQ,CAAC,mBAAmB,oCAAoC;IAChE,QAAQ,CAAC,wBAAwB,yCAAyC;IAC1E,QAAQ,CAAC,uBAAuB,wCAAwC;IACxE,QAAQ,CAAC,qBAAqB,sCAAsC;IACpE,QAAQ,CAAC,oBAAoB,qCAAqC;IAClE,QAAQ,CAAC,qBAAqB,sCAAsC;IACpE,QAAQ,CAAC,oBAAoB,qCAAqC;IAElE,IAAI,SAAS,IAAI,MAAM,CAEtB;IAKD,IAAI,4BAA4B,IAAI,MAAM,CAEzC;IAED,IAAI,yBAAyB,IAAI,MAAM,CAEtC;IAED,IAAI,yBAAyB,IAAI,MAAM,CAEtC;IAED,IAAI,0BAA0B,IAAI,OAAO,CAExC;IAED,IAAI,8BAA8B,IAAI,OAAO,CAE5C;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,sBAAsB,IAAI,IAAI;IAI9B,qBAAqB,IAAI,IAAI;IAI7B,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,IAAI,IAAI;yCA3Ff,QAAQ;2CAAR,QAAQ;CA8FpB"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../src/AppShell.ts"],"names":[],"mappings":";AAKA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AACrE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,WAAW,CAAC;AAC1D,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,GAAG,cAAc,CAAC;AA2BnF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,kFAAkF;IAClF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8GAA8G;IAC9G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kGAAkG;IAClG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,wGAAwG;IACxG,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBA8Ma,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,eAAe,cAAc;IAC7C,QAAQ,CAAC,aAAa,cAAc;IAEzB,OAAO,EAAE,eAAe,CAAe;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,SAAU;IAChB,eAAe,SAA0B;IACzC,YAAY,SAAmB;IAC/B,YAAY,SAAmB;IAC/B,WAAW,EAAE,mBAAmB,CAAa;IAC7C,WAAW,EAAE,mBAAmB,CAAW;IAC3C,aAAa,EAAE,qBAAqB,CAAW;IAC/C,gBAAgB,SAAkB;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,UAAS;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/D,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,aAAa,SAAO;IACpB,aAAa,SAAO;IAEC,OAAO,CAAC,kBAAkB,CAAC,CAA0B;IACxD,OAAO,CAAC,eAAe,CAAC,CAA0B;IAClD,OAAO,CAAC,eAAe,CAAC,CAA0B;IAM/E,OAAO,CAAC,cAAc,CAAC,CAA4C;IAInE,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAM3B,oBAAoB,UAAS;IAC7B,mBAAmB,UAAS;IAC5B,gBAAgB,UAAS;IACzB,gBAAgB,UAAS;IAIzB,QAAQ,CAAC,oBAAoB,qCAAqC;IAClE,QAAQ,CAAC,mBAAmB,oCAAoC;IAChE,QAAQ,CAAC,wBAAwB,yCAAyC;IAC1E,QAAQ,CAAC,uBAAuB,wCAAwC;IACxE,QAAQ,CAAC,qBAAqB,sCAAsC;IACpE,QAAQ,CAAC,oBAAoB,qCAAqC;IAClE,QAAQ,CAAC,qBAAqB,sCAAsC;IACpE,QAAQ,CAAC,oBAAoB,qCAAqC;IAElE,IAAI,SAAS,IAAI,MAAM,CAEtB;IAKD,IAAI,4BAA4B,IAAI,MAAM,CAEzC;IAED,IAAI,yBAAyB,IAAI,MAAM,CAEtC;IAED,IAAI,yBAAyB,IAAI,MAAM,CAEtC;IAED,IAAI,0BAA0B,IAAI,OAAO,CAExC;IAED,IAAI,8BAA8B,IAAI,OAAO,CAE5C;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,IAAI,2BAA2B,IAAI,OAAO,CAEzC;IAED,sBAAsB,IAAI,IAAI;IAI9B,qBAAqB,IAAI,IAAI;IAI7B,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,IAAI,IAAI;IAS1B,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,CAAC,oBAAoB;IAO5B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS;IAKnD,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAM7B,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM;IAI3C,OAAO,CAAC,UAAU;IASlB,IAAI,eAAe,IAAI,OAAO,CAE7B;IAMD,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAQ9B;IAED,OAAO,CAAC,WAAW;IASnB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAWxF,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAO9C,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAW5C,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;yCAtN1E,QAAQ;2CAAR,QAAQ;CA4OpB"}
package/dist/AppShell.js CHANGED
@@ -1,7 +1,30 @@
1
- import { Component, Input as NgInput } from "@angular/core";
1
+ import { Component, ElementRef, Input as NgInput, ViewChild } from "@angular/core";
2
2
  import { classNames } from "./classNames.js";
3
3
  import { Icon } from "./Icon.js";
4
4
  import * as i0 from "@angular/core";
5
+ // CSS custom property each resizable panel is sized by (see the
6
+ // `.st-appShell` base rule in shared styles.css) — setting it inline on the
7
+ // shell root is the intended resize mechanism, it simply out-specificities
8
+ // the token-driven default declared there. Mirrors Svelte's `PANEL_VAR`.
9
+ const PANEL_VAR = {
10
+ navigationPanel: "--st-appShell-navigation-width",
11
+ contextPanel: "--st-appShell-context-width",
12
+ utilityPanel: "--st-appShell-utility-width",
13
+ };
14
+ // Nominal px equivalent of each panel's own CSS-token default (navigation
15
+ // 20rem, context 22rem, utility 24rem, all at a 16px root) — used ONLY as a
16
+ // display/ARIA fallback (aria-valuenow, drag-start anchor) before any width
17
+ // has ever been supplied or committed. Never written back as an inline
18
+ // style, so a themed override of the underlying token is never fought until
19
+ // the consumer/user actually establishes a concrete width.
20
+ // NOTE: `primaryRail` is intentionally NOT a resizable panel — it is a
21
+ // fixed-width icon rail (à la VS Code's activity bar), not a splittable
22
+ // pane; see `AppShellPanelKey` above.
23
+ const PANEL_NOMINAL_PX = {
24
+ navigationPanel: 320,
25
+ contextPanel: 352,
26
+ utilityPanel: 384,
27
+ };
5
28
  export class AppShell {
6
29
  static stComponentName = "AppShell";
7
30
  componentName = "AppShell";
@@ -24,6 +47,26 @@ export class AppShell {
24
47
  contextPanelLabel;
25
48
  utilityPanelLabel;
26
49
  classInput;
50
+ panelResize = false;
51
+ panelWidths;
52
+ defaultPanelWidths;
53
+ onPanelResize;
54
+ panelMinWidth = 180;
55
+ panelMaxWidth = 640;
56
+ navigationPanelRef;
57
+ contextPanelRef;
58
+ utilityPanelRef;
59
+ // Uncontrolled fallback for resizable widths, seeded on first read from
60
+ // `defaultPanelWidths` (mirrors `internalValue` on TimeRangePicker — a
61
+ // lazy, one-time seed rather than a constructor-time copy, since
62
+ // `@Input()`s aren't bound yet when the class is constructed).
63
+ internalWidths;
64
+ // Pointer-drag bookkeeping — plain fields, never read from the template,
65
+ // only from the pointer handlers below.
66
+ dragKey = null;
67
+ dragPositive = true;
68
+ dragStartX = 0;
69
+ dragStartWidth = 0;
27
70
  // Uncontrolled per-panel disclosure state (v1) — each accordion panel
28
71
  // starts collapsed. Desktop rendering never reads these (CSS scopes the
29
72
  // collapse to `@media (max-width: 48rem)`), so they have zero effect above
@@ -81,8 +124,120 @@ export class AppShell {
81
124
  toggleUtilityPanel() {
82
125
  this.utilityPanelOpen = !this.utilityPanelOpen;
83
126
  }
127
+ // ── Resizable panels (panelResize) ──────────────────────────────────────
128
+ // Controlled/uncontrolled mirrors the Svelte reference: `panelWidths`
129
+ // present (even as `{}`) means controlled — the component reads it but
130
+ // never writes it; otherwise widths live in `internalWidths`.
131
+ get isWidthControlled() {
132
+ return this.panelWidths !== undefined;
133
+ }
134
+ ensureInternalWidths() {
135
+ if (this.internalWidths === undefined) {
136
+ this.internalWidths = { ...this.defaultPanelWidths };
137
+ }
138
+ return this.internalWidths;
139
+ }
140
+ widthFor(key) {
141
+ const source = this.isWidthControlled ? this.panelWidths : this.ensureInternalWidths();
142
+ return source?.[key];
143
+ }
144
+ clampWidth(n) {
145
+ return Math.min(Math.max(n, this.panelMinWidth), this.panelMaxWidth);
146
+ }
147
+ // Current width for rendering/ARIA — always a concrete, clamped number so
148
+ // aria-valuenow is never NaN and is always within [aria-valuemin, aria-valuemax].
149
+ displayWidth(key) {
150
+ return this.clampWidth(this.widthFor(key) ?? PANEL_NOMINAL_PX[key]);
151
+ }
152
+ panelElFor(key) {
153
+ if (key === "navigationPanel")
154
+ return this.navigationPanelRef?.nativeElement ?? null;
155
+ if (key === "contextPanel")
156
+ return this.contextPanelRef?.nativeElement ?? null;
157
+ return this.utilityPanelRef?.nativeElement ?? null;
158
+ }
159
+ // `utilityPanel` mirrors a left panel (grow-on-drag-right) unless it sits
160
+ // on the right edge; the "bottom" side never renders a handle at all
161
+ // (guarded in the template), so its `positive` value is never read.
162
+ get utilityPositive() {
163
+ return this.utilitySide !== "right";
164
+ }
165
+ // Only the CSS vars for panels with an explicit (controlled or committed)
166
+ // width are emitted — an untouched panel keeps deferring to its token
167
+ // default (`.st-appShell` base rule), so a theme's own width override is
168
+ // never silently overridden just because `panelResize` is on.
169
+ get panelStyle() {
170
+ if (!this.panelResize)
171
+ return null;
172
+ const parts = [];
173
+ for (const key of Object.keys(PANEL_VAR)) {
174
+ const width = this.widthFor(key);
175
+ if (width !== undefined)
176
+ parts.push(`${PANEL_VAR[key]}: ${this.clampWidth(width)}px`);
177
+ }
178
+ return parts.length ? parts.join("; ") : null;
179
+ }
180
+ commitWidth(key, next) {
181
+ const clamped = this.clampWidth(next);
182
+ if (!this.isWidthControlled) {
183
+ const widths = this.ensureInternalWidths();
184
+ this.internalWidths = { ...widths, [key]: clamped };
185
+ }
186
+ this.onPanelResize?.(key, clamped);
187
+ }
188
+ onHandlePointerDown(event, key, positive) {
189
+ const handle = event.currentTarget;
190
+ handle?.setPointerCapture?.(event.pointerId);
191
+ this.dragKey = key;
192
+ this.dragPositive = positive;
193
+ this.dragStartX = event.clientX;
194
+ const measured = this.panelElFor(key)?.getBoundingClientRect().width ?? 0;
195
+ this.dragStartWidth = measured > 0 ? measured : this.displayWidth(key);
196
+ event.preventDefault();
197
+ }
198
+ onHandlePointerMove(event) {
199
+ if (this.dragKey === null)
200
+ return;
201
+ const dx = event.clientX - this.dragStartX;
202
+ const delta = this.dragPositive ? dx : -dx;
203
+ this.commitWidth(this.dragKey, this.dragStartWidth + delta);
204
+ }
205
+ onHandlePointerUp(event) {
206
+ if (this.dragKey === null)
207
+ return;
208
+ const handle = event.currentTarget;
209
+ if (handle?.hasPointerCapture?.(event.pointerId))
210
+ handle.releasePointerCapture?.(event.pointerId);
211
+ this.dragKey = null;
212
+ }
213
+ // Arrow keys move the splitter itself (WAI-ARIA window-splitter pattern):
214
+ // for a "positive" (left-edge) panel, moving the splitter right grows it;
215
+ // for a "negative" (right-edge) panel, moving the splitter right shrinks
216
+ // it. Home/End always jump to the absolute clamp bounds.
217
+ onHandleKeydown(event, key, positive) {
218
+ const current = this.displayWidth(key);
219
+ let next;
220
+ switch (event.key) {
221
+ case "ArrowLeft":
222
+ next = current + (positive ? -16 : 16);
223
+ break;
224
+ case "ArrowRight":
225
+ next = current + (positive ? 16 : -16);
226
+ break;
227
+ case "Home":
228
+ next = this.panelMinWidth;
229
+ break;
230
+ case "End":
231
+ next = this.panelMaxWidth;
232
+ break;
233
+ default:
234
+ return;
235
+ }
236
+ event.preventDefault();
237
+ this.commitWidth(key, next);
238
+ }
84
239
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: AppShell, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: AppShell, isStandalone: true, selector: "st-app-shell", inputs: { variant: "variant", topChrome: "topChrome", primaryRail: "primaryRail", navigationPanel: "navigationPanel", contextPanel: "contextPanel", utilityPanel: "utilityPanel", bottomPanel: "bottomPanel", mainId: "mainId", navigationLabel: "navigationLabel", contextLabel: "contextLabel", utilityLabel: "utilityLabel", utilityMode: "utilityMode", utilitySide: "utilitySide", panelCollapse: "panelCollapse", primaryRailLabel: "primaryRailLabel", navigationPanelLabel: "navigationPanelLabel", contextPanelLabel: "contextPanelLabel", utilityPanelLabel: "utilityPanelLabel", classInput: ["class", "classInput"] }, ngImport: i0, template: `
240
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: AppShell, isStandalone: true, selector: "st-app-shell", inputs: { variant: "variant", topChrome: "topChrome", primaryRail: "primaryRail", navigationPanel: "navigationPanel", contextPanel: "contextPanel", utilityPanel: "utilityPanel", bottomPanel: "bottomPanel", mainId: "mainId", navigationLabel: "navigationLabel", contextLabel: "contextLabel", utilityLabel: "utilityLabel", utilityMode: "utilityMode", utilitySide: "utilitySide", panelCollapse: "panelCollapse", primaryRailLabel: "primaryRailLabel", navigationPanelLabel: "navigationPanelLabel", contextPanelLabel: "contextPanelLabel", utilityPanelLabel: "utilityPanelLabel", classInput: ["class", "classInput"], panelResize: "panelResize", panelWidths: "panelWidths", defaultPanelWidths: "defaultPanelWidths", onPanelResize: "onPanelResize", panelMinWidth: "panelMinWidth", panelMaxWidth: "panelMaxWidth" }, viewQueries: [{ propertyName: "navigationPanelRef", first: true, predicate: ["navigationPanelEl"], descendants: true }, { propertyName: "contextPanelRef", first: true, predicate: ["contextPanelEl"], descendants: true }, { propertyName: "utilityPanelRef", first: true, predicate: ["utilityPanelEl"], descendants: true }], ngImport: i0, template: `
86
241
  @if (variant === "site") {
87
242
  <div [attr.data-st-component]="componentName" data-st-app-shell-variant="site" [class]="hostClass">
88
243
  <ng-content></ng-content>
@@ -95,6 +250,7 @@ export class AppShell {
95
250
  [attr.data-utility-side]="utilitySide"
96
251
  [attr.data-panel-collapse]="panelCollapse"
97
252
  [class]="hostClass"
253
+ [style]="panelStyle"
98
254
  >
99
255
  @if (topChrome) {
100
256
  <div class="st-appShell__topChrome">
@@ -131,7 +287,7 @@ export class AppShell {
131
287
  </aside>
132
288
  }
133
289
  @if (navigationPanel) {
134
- <aside class="st-appShell__navigationPanel" [attr.aria-label]="navigationLabel">
290
+ <aside class="st-appShell__navigationPanel" [attr.aria-label]="navigationLabel" #navigationPanelEl>
135
291
  @if (panelCollapse === "accordion") {
136
292
  <button
137
293
  type="button"
@@ -156,13 +312,30 @@ export class AppShell {
156
312
  >
157
313
  <ng-content select="[slot=navigationPanel]"></ng-content>
158
314
  </div>
315
+ @if (panelResize) {
316
+ <div
317
+ class="st-appShell__resizeHandle"
318
+ role="separator"
319
+ aria-orientation="vertical"
320
+ tabindex="0"
321
+ [attr.aria-valuenow]="displayWidth('navigationPanel')"
322
+ [attr.aria-valuemin]="panelMinWidth"
323
+ [attr.aria-valuemax]="panelMaxWidth"
324
+ [attr.aria-label]="'Resize ' + navigationLabel"
325
+ (pointerdown)="onHandlePointerDown($event, 'navigationPanel', true)"
326
+ (pointermove)="onHandlePointerMove($event)"
327
+ (pointerup)="onHandlePointerUp($event)"
328
+ (pointercancel)="onHandlePointerUp($event)"
329
+ (keydown)="onHandleKeydown($event, 'navigationPanel', true)"
330
+ ></div>
331
+ }
159
332
  </aside>
160
333
  }
161
334
  <main class="st-appShell__main" [id]="mainId">
162
335
  <ng-content select="[slot=main]"></ng-content>
163
336
  </main>
164
337
  @if (contextPanel) {
165
- <aside class="st-appShell__contextPanel" [attr.aria-label]="contextLabel">
338
+ <aside class="st-appShell__contextPanel" [attr.aria-label]="contextLabel" #contextPanelEl>
166
339
  @if (panelCollapse === "accordion") {
167
340
  <button
168
341
  type="button"
@@ -187,10 +360,27 @@ export class AppShell {
187
360
  >
188
361
  <ng-content select="[slot=contextPanel]"></ng-content>
189
362
  </div>
363
+ @if (panelResize) {
364
+ <div
365
+ class="st-appShell__resizeHandle"
366
+ role="separator"
367
+ aria-orientation="vertical"
368
+ tabindex="0"
369
+ [attr.aria-valuenow]="displayWidth('contextPanel')"
370
+ [attr.aria-valuemin]="panelMinWidth"
371
+ [attr.aria-valuemax]="panelMaxWidth"
372
+ [attr.aria-label]="'Resize ' + contextLabel"
373
+ (pointerdown)="onHandlePointerDown($event, 'contextPanel', false)"
374
+ (pointermove)="onHandlePointerMove($event)"
375
+ (pointerup)="onHandlePointerUp($event)"
376
+ (pointercancel)="onHandlePointerUp($event)"
377
+ (keydown)="onHandleKeydown($event, 'contextPanel', false)"
378
+ ></div>
379
+ }
190
380
  </aside>
191
381
  }
192
382
  @if (utilityPanel) {
193
- <aside class="st-appShell__utilityPanel" [attr.aria-label]="utilityLabel">
383
+ <aside class="st-appShell__utilityPanel" [attr.aria-label]="utilityLabel" #utilityPanelEl>
194
384
  @if (panelCollapse === "accordion") {
195
385
  <button
196
386
  type="button"
@@ -215,6 +405,23 @@ export class AppShell {
215
405
  >
216
406
  <ng-content select="[slot=utilityPanel]"></ng-content>
217
407
  </div>
408
+ @if (panelResize && utilitySide !== "bottom") {
409
+ <div
410
+ class="st-appShell__resizeHandle"
411
+ role="separator"
412
+ aria-orientation="vertical"
413
+ tabindex="0"
414
+ [attr.aria-valuenow]="displayWidth('utilityPanel')"
415
+ [attr.aria-valuemin]="panelMinWidth"
416
+ [attr.aria-valuemax]="panelMaxWidth"
417
+ [attr.aria-label]="'Resize ' + utilityLabel"
418
+ (pointerdown)="onHandlePointerDown($event, 'utilityPanel', utilityPositive)"
419
+ (pointermove)="onHandlePointerMove($event)"
420
+ (pointerup)="onHandlePointerUp($event)"
421
+ (pointercancel)="onHandlePointerUp($event)"
422
+ (keydown)="onHandleKeydown($event, 'utilityPanel', utilityPositive)"
423
+ ></div>
424
+ }
218
425
  </aside>
219
426
  }
220
427
  </div>
@@ -242,6 +449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
242
449
  [attr.data-utility-side]="utilitySide"
243
450
  [attr.data-panel-collapse]="panelCollapse"
244
451
  [class]="hostClass"
452
+ [style]="panelStyle"
245
453
  >
246
454
  @if (topChrome) {
247
455
  <div class="st-appShell__topChrome">
@@ -278,7 +486,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
278
486
  </aside>
279
487
  }
280
488
  @if (navigationPanel) {
281
- <aside class="st-appShell__navigationPanel" [attr.aria-label]="navigationLabel">
489
+ <aside class="st-appShell__navigationPanel" [attr.aria-label]="navigationLabel" #navigationPanelEl>
282
490
  @if (panelCollapse === "accordion") {
283
491
  <button
284
492
  type="button"
@@ -303,13 +511,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
303
511
  >
304
512
  <ng-content select="[slot=navigationPanel]"></ng-content>
305
513
  </div>
514
+ @if (panelResize) {
515
+ <div
516
+ class="st-appShell__resizeHandle"
517
+ role="separator"
518
+ aria-orientation="vertical"
519
+ tabindex="0"
520
+ [attr.aria-valuenow]="displayWidth('navigationPanel')"
521
+ [attr.aria-valuemin]="panelMinWidth"
522
+ [attr.aria-valuemax]="panelMaxWidth"
523
+ [attr.aria-label]="'Resize ' + navigationLabel"
524
+ (pointerdown)="onHandlePointerDown($event, 'navigationPanel', true)"
525
+ (pointermove)="onHandlePointerMove($event)"
526
+ (pointerup)="onHandlePointerUp($event)"
527
+ (pointercancel)="onHandlePointerUp($event)"
528
+ (keydown)="onHandleKeydown($event, 'navigationPanel', true)"
529
+ ></div>
530
+ }
306
531
  </aside>
307
532
  }
308
533
  <main class="st-appShell__main" [id]="mainId">
309
534
  <ng-content select="[slot=main]"></ng-content>
310
535
  </main>
311
536
  @if (contextPanel) {
312
- <aside class="st-appShell__contextPanel" [attr.aria-label]="contextLabel">
537
+ <aside class="st-appShell__contextPanel" [attr.aria-label]="contextLabel" #contextPanelEl>
313
538
  @if (panelCollapse === "accordion") {
314
539
  <button
315
540
  type="button"
@@ -334,10 +559,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
334
559
  >
335
560
  <ng-content select="[slot=contextPanel]"></ng-content>
336
561
  </div>
562
+ @if (panelResize) {
563
+ <div
564
+ class="st-appShell__resizeHandle"
565
+ role="separator"
566
+ aria-orientation="vertical"
567
+ tabindex="0"
568
+ [attr.aria-valuenow]="displayWidth('contextPanel')"
569
+ [attr.aria-valuemin]="panelMinWidth"
570
+ [attr.aria-valuemax]="panelMaxWidth"
571
+ [attr.aria-label]="'Resize ' + contextLabel"
572
+ (pointerdown)="onHandlePointerDown($event, 'contextPanel', false)"
573
+ (pointermove)="onHandlePointerMove($event)"
574
+ (pointerup)="onHandlePointerUp($event)"
575
+ (pointercancel)="onHandlePointerUp($event)"
576
+ (keydown)="onHandleKeydown($event, 'contextPanel', false)"
577
+ ></div>
578
+ }
337
579
  </aside>
338
580
  }
339
581
  @if (utilityPanel) {
340
- <aside class="st-appShell__utilityPanel" [attr.aria-label]="utilityLabel">
582
+ <aside class="st-appShell__utilityPanel" [attr.aria-label]="utilityLabel" #utilityPanelEl>
341
583
  @if (panelCollapse === "accordion") {
342
584
  <button
343
585
  type="button"
@@ -362,6 +604,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
362
604
  >
363
605
  <ng-content select="[slot=utilityPanel]"></ng-content>
364
606
  </div>
607
+ @if (panelResize && utilitySide !== "bottom") {
608
+ <div
609
+ class="st-appShell__resizeHandle"
610
+ role="separator"
611
+ aria-orientation="vertical"
612
+ tabindex="0"
613
+ [attr.aria-valuenow]="displayWidth('utilityPanel')"
614
+ [attr.aria-valuemin]="panelMinWidth"
615
+ [attr.aria-valuemax]="panelMaxWidth"
616
+ [attr.aria-label]="'Resize ' + utilityLabel"
617
+ (pointerdown)="onHandlePointerDown($event, 'utilityPanel', utilityPositive)"
618
+ (pointermove)="onHandlePointerMove($event)"
619
+ (pointerup)="onHandlePointerUp($event)"
620
+ (pointercancel)="onHandlePointerUp($event)"
621
+ (keydown)="onHandleKeydown($event, 'utilityPanel', utilityPositive)"
622
+ ></div>
623
+ }
365
624
  </aside>
366
625
  }
367
626
  </div>
@@ -412,5 +671,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
412
671
  }], classInput: [{
413
672
  type: NgInput,
414
673
  args: ["class"]
674
+ }], panelResize: [{
675
+ type: NgInput
676
+ }], panelWidths: [{
677
+ type: NgInput
678
+ }], defaultPanelWidths: [{
679
+ type: NgInput
680
+ }], onPanelResize: [{
681
+ type: NgInput
682
+ }], panelMinWidth: [{
683
+ type: NgInput
684
+ }], panelMaxWidth: [{
685
+ type: NgInput
686
+ }], navigationPanelRef: [{
687
+ type: ViewChild,
688
+ args: ["navigationPanelEl"]
689
+ }], contextPanelRef: [{
690
+ type: ViewChild,
691
+ args: ["contextPanelEl"]
692
+ }], utilityPanelRef: [{
693
+ type: ViewChild,
694
+ args: ["utilityPanelEl"]
415
695
  }] } });
416
696
  //# sourceMappingURL=AppShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../src/AppShell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../src/AppShell.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,86 @@
1
+ import { ElementRef, EventEmitter } from "@angular/core";
2
+ import type { AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from "@angular/core";
1
3
  import type { MenuItem } from "./Menu.js";
2
4
  import * as i0 from "@angular/core";
3
5
  export type MenuPopoverPlacement = "top-start" | "top-end" | "bottom-start" | "bottom-end";
6
+ export type MenuPopoverAlign = "start" | "end" | "center";
7
+ export type MenuPopoverRect = {
8
+ top: number;
9
+ bottom: number;
10
+ left: number;
11
+ right: number;
12
+ width: number;
13
+ };
14
+ export type MenuPopoverViewport = {
15
+ height: number;
16
+ scrollX: number;
17
+ scrollY: number;
18
+ };
19
+ export type MenuPopoverPosition = {
20
+ top: number;
21
+ left: number;
22
+ maxHeight: number;
23
+ alignEnd: boolean;
24
+ alignCenter: boolean;
25
+ };
26
+ /**
27
+ * Pure position solver — mirrors Svelte's `computePosition()` / React's
28
+ * `computePosition` callback so it can be unit-tested without a real
29
+ * `window`/DOM (this package's tests run in a Node environment, no jsdom).
30
+ */
31
+ export declare function computeMenuPopoverPosition(rect: MenuPopoverRect, placement: MenuPopoverPlacement, align: MenuPopoverAlign | undefined, viewport: MenuPopoverViewport): MenuPopoverPosition;
32
+ export declare function menuPopoverIsWithin(event: {
33
+ composedPath?: () => EventTarget[];
34
+ target: EventTarget | null;
35
+ }, node: Element | null | undefined): boolean;
4
36
  export type MenuPopoverProps = {
5
37
  items?: MenuItem[];
6
38
  open?: boolean;
39
+ trigger?: HTMLElement | null;
7
40
  placement?: MenuPopoverPlacement;
41
+ align?: MenuPopoverAlign;
42
+ label?: string;
8
43
  class?: string;
44
+ closeOnOutside?: boolean;
45
+ closeOnEscape?: boolean;
9
46
  };
10
- export declare class MenuPopover {
47
+ export declare class MenuPopover implements AfterViewInit, OnChanges, OnDestroy {
11
48
  static readonly stComponentName = "MenuPopover";
12
49
  readonly componentName = "MenuPopover";
50
+ /** Convenience (not in the Svelte contract): renders a <st-menu> from `items` instead of projected content. */
13
51
  items?: MenuItem[];
14
- open?: boolean;
15
- placement?: MenuPopoverPlacement;
52
+ open: boolean;
53
+ /** Anchor element used for position computation and outside-click exclusion (Svelte-canonical). */
54
+ trigger: HTMLElement | null;
55
+ placement: MenuPopoverPlacement;
56
+ align?: MenuPopoverAlign;
57
+ /** Accessible name for the panel (Svelte-canonical: applied as aria-label on role="dialog"). */
58
+ label: string;
16
59
  classInput?: string;
60
+ closeOnOutside: boolean;
61
+ closeOnEscape: boolean;
62
+ readonly openChange: EventEmitter<boolean>;
63
+ panel?: ElementRef<HTMLDivElement>;
64
+ top: number;
65
+ left: number;
66
+ maxHeight: number;
67
+ alignEnd: boolean;
68
+ alignCenter: boolean;
69
+ private listenersActive;
70
+ private readonly onScroll;
71
+ private readonly onResize;
72
+ private readonly onPointerDown;
73
+ private readonly onKeyDown;
17
74
  get hostClass(): string;
75
+ get panelStyle(): string;
76
+ ngAfterViewInit(): void;
77
+ ngOnChanges(changes: SimpleChanges): void;
78
+ ngOnDestroy(): void;
79
+ computePosition(): void;
80
+ close(): void;
81
+ private registerWindowListeners;
82
+ private unregisterWindowListeners;
18
83
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuPopover, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuPopover, "st-menu-popover", never, { "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuPopover, "st-menu-popover", never, { "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "trigger": { "alias": "trigger"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "align": { "alias": "align"; "required": false; }; "label": { "alias": "label"; "required": false; }; "classInput": { "alias": "class"; "required": false; }; "closeOnOutside": { "alias": "closeOnOutside"; "required": false; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
20
85
  }
21
86
  //# sourceMappingURL=MenuPopover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;;AAE1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAUa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,eAAe,iBAAiB;IAChD,QAAQ,CAAC,aAAa,iBAAiB;IAC5B,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEtC,IAAI,SAAS,IAAI,MAAM,CAEtB;yCAVU,WAAW;2CAAX,WAAW;CAWvB"}
1
+ {"version":3,"file":"MenuPopover.d.ts","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"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"}