@omegagrid/core 0.10.45 → 0.10.47
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/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/accordion.d.ts +3 -2
- package/dist/ui/accordion.d.ts.map +1 -1
- package/dist/ui/accordion.js +15 -1
- package/dist/ui/accordion.js.map +1 -1
- package/package.json +2 -2
package/dist/types.d.ts
CHANGED
|
@@ -84,10 +84,15 @@ export type Rect = {
|
|
|
84
84
|
w: number;
|
|
85
85
|
h: number;
|
|
86
86
|
};
|
|
87
|
-
export type
|
|
87
|
+
export type AccordionItem = SplitContainerItem & {
|
|
88
88
|
title?: string | HTMLElement | TemplateResult<1>;
|
|
89
89
|
icon?: string | IconSpec;
|
|
90
90
|
};
|
|
91
|
+
export type AccordionItemState = {
|
|
92
|
+
id?: ComponentId;
|
|
93
|
+
collapsed: boolean;
|
|
94
|
+
size: number | null;
|
|
95
|
+
};
|
|
91
96
|
export type SplitContainerItem = {
|
|
92
97
|
id?: ComponentId;
|
|
93
98
|
size?: number | null;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAwDvD,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACrB,+BAAiB,CAAA;IACjB,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,yCAA2B,CAAA;AAC5B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { TemplateResult } from \"lit-html\";\nimport { IconSpec } from \"./ui\";\n\nexport type ThemeDefinition = Record<string, string>;\nexport type ThemeVariables = Map<string, string>;\n\nexport type ThemeType = 'light'|'dark';\n\nexport type Theme = {\n\tname: string,\n\ttype: ThemeType,\n\tdefinition: ThemeDefinition,\n\taccentColor?: string,\n};\n\nexport type LocaleId = string;\n\nexport type LayoutOptions<TParent extends HTMLElement = HTMLElement> = {\n\tparent?: TParent,\n\telements?: Map<string, HTMLElement>,\n}\n\nexport interface Layout extends HTMLElement {\n\tlayout(options?: LayoutOptions) : void;\n}\n\nexport type ComponentState = {\n\tname?: string;\n\t[key: string]: unknown;\n}\n\nexport interface Statefull {\n\tget state(): ComponentState;\n\tset state(value: ComponentState);\n\tgetState(): ComponentState;\n\tsetState(state: ComponentState): void;\n}\n\n/**\n * General = 'g',\n * Text = 't',\n * Number = 'n',\n * Date = 'd',\n * DateTime = 'dt',\n * Time = 'tm',\n * Checkbox = 'b',\n * Select = 's',\n * MultiSelect = 'm',\n */\nexport type UIValueType = 'g'|'t'|'n'|'d'|'dt'|'tm'|'b'|'s'|'m';\n\nexport type UIValueFormat = string;\n\n\nexport enum ColorTypes {\n\tAccent = 'accent',\n\tRed = 'red',\n\tYellow = 'yellow',\n\tGreen = 'green',\n\tBlue = 'blue',\n\tGray = 'gray',\n\tTransparent = 'transparent',\n}\n\nexport type DecimalSeparator = '.'|',';\nexport type Orientation = 'vertical'|'horizontal';\nexport type VerticalDirection = 'up'|'down';\nexport type HorizontalDirection = 'left'|'right';\nexport type Direction = VerticalDirection | HorizontalDirection;\nexport type DiagonalDirection = 'ne'|'nw'|'se'|'sw';\nexport type VerticalPosition = 'top'|'bottom'|'center';\nexport type HorizontalPosition = 'left'|'right'|'center';\nexport type DirectionalPosition = VerticalPosition | HorizontalPosition;\nexport type Size = {w: number, h: number};\nexport type Location = {x: number, y: number};\nexport type Position = {r?: number, b?: number, l?: number, t?: number};\nexport type CssPosition = {r?: string|number, b?: string|number, l?: string|number, t?: string|number};\nexport type Rect = {x: number, y: number, w: number, h: number};\n\nexport type
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAwDvD,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACrB,+BAAiB,CAAA;IACjB,yBAAW,CAAA;IACX,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,2BAAa,CAAA;IACb,2BAAa,CAAA;IACb,yCAA2B,CAAA;AAC5B,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { TemplateResult } from \"lit-html\";\nimport { IconSpec } from \"./ui\";\n\nexport type ThemeDefinition = Record<string, string>;\nexport type ThemeVariables = Map<string, string>;\n\nexport type ThemeType = 'light'|'dark';\n\nexport type Theme = {\n\tname: string,\n\ttype: ThemeType,\n\tdefinition: ThemeDefinition,\n\taccentColor?: string,\n};\n\nexport type LocaleId = string;\n\nexport type LayoutOptions<TParent extends HTMLElement = HTMLElement> = {\n\tparent?: TParent,\n\telements?: Map<string, HTMLElement>,\n}\n\nexport interface Layout extends HTMLElement {\n\tlayout(options?: LayoutOptions) : void;\n}\n\nexport type ComponentState = {\n\tname?: string;\n\t[key: string]: unknown;\n}\n\nexport interface Statefull {\n\tget state(): ComponentState;\n\tset state(value: ComponentState);\n\tgetState(): ComponentState;\n\tsetState(state: ComponentState): void;\n}\n\n/**\n * General = 'g',\n * Text = 't',\n * Number = 'n',\n * Date = 'd',\n * DateTime = 'dt',\n * Time = 'tm',\n * Checkbox = 'b',\n * Select = 's',\n * MultiSelect = 'm',\n */\nexport type UIValueType = 'g'|'t'|'n'|'d'|'dt'|'tm'|'b'|'s'|'m';\n\nexport type UIValueFormat = string;\n\n\nexport enum ColorTypes {\n\tAccent = 'accent',\n\tRed = 'red',\n\tYellow = 'yellow',\n\tGreen = 'green',\n\tBlue = 'blue',\n\tGray = 'gray',\n\tTransparent = 'transparent',\n}\n\nexport type DecimalSeparator = '.'|',';\nexport type Orientation = 'vertical'|'horizontal';\nexport type VerticalDirection = 'up'|'down';\nexport type HorizontalDirection = 'left'|'right';\nexport type Direction = VerticalDirection | HorizontalDirection;\nexport type DiagonalDirection = 'ne'|'nw'|'se'|'sw';\nexport type VerticalPosition = 'top'|'bottom'|'center';\nexport type HorizontalPosition = 'left'|'right'|'center';\nexport type DirectionalPosition = VerticalPosition | HorizontalPosition;\nexport type Size = {w: number, h: number};\nexport type Location = {x: number, y: number};\nexport type Position = {r?: number, b?: number, l?: number, t?: number};\nexport type CssPosition = {r?: string|number, b?: string|number, l?: string|number, t?: string|number};\nexport type Rect = {x: number, y: number, w: number, h: number};\n\nexport type AccordionItem = SplitContainerItem & {\n\ttitle?: string|HTMLElement|TemplateResult<1>,\n\ticon?: string|IconSpec\n}\n\nexport type AccordionItemState = {\n\tid?: ComponentId,\n\tcollapsed: boolean,\n\tsize: number|null\n}\n\nexport type SplitContainerItem = {\n\tid?: ComponentId,\n\tsize?: number|null, // width or height\n\tcollapsed?: boolean\n}\n\nexport type ComponentId = string|number;\n\nexport type ComponentFactory<T = HTMLElement> = (id?: ComponentId) => T|Promise<T>;\n\nexport interface ComponentContainer<T = HTMLElement> {\n\tcreateComponent: ComponentFactory<T>;\n}\n\nexport type Matrix<T = unknown> = T[][];\n\nexport type Scalar<T = unknown> = T;\n\nexport type DeepPartial<T> = {\n\t[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport interface Populatable {\n\tpopulate(source: Record<PropertyKey, unknown>): void;\n\tgetSourceData(): Record<PropertyKey, unknown>;\n}\n\nexport interface IPrototype<T> { prototype: T }\n\nexport type ValueFormatter<T = unknown> = (value: T) => string;\n\nexport type CustomProperties = Record<string, unknown>;\n\nexport type User = {\n\tid: string,\n\tname?: string\n};\n\nexport type AnyFunction<A = any> = (...input: any[]) => A\nexport type AnyConstructor<A = object> = new (...input: any[]) => A\nexport type Mixin<T extends AnyFunction> = InstanceType<ReturnType<T>>\n\nexport interface Model<TSource = unknown> {\n\t\n\tpopulate(source: TSource): void;\n\tgetSourceData(): TSource;\n\n}\n\nexport type KeyValue = {\n\tkey: string,\n\tvalue?: string\n}\n"]}
|
package/dist/ui/accordion.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AccordionItemState, AccordionItem, ComponentId } from '../types';
|
|
2
2
|
import { Panel } from './panel';
|
|
3
3
|
import { SplitContainer } from './splitContainer';
|
|
4
4
|
export declare class Accordion extends SplitContainer {
|
|
5
5
|
#private;
|
|
6
6
|
static styles: import("lit").CSSResult[];
|
|
7
|
-
items:
|
|
7
|
+
items: AccordionItem[];
|
|
8
8
|
constructor();
|
|
9
|
+
getItemsState(): AccordionItemState[];
|
|
9
10
|
willUpdate(props: Map<string, unknown>): void;
|
|
10
11
|
get totalCollapsedHeight(): number;
|
|
11
12
|
fixSizes(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,qBACa,SAAU,SAAQ,cAAc;;IAE5C,MAAM,CAAC,MAAM,4BAsBV;IAGH,KAAK,EAAE,aAAa,EAAE,CAAM;;IAgB5B,aAAa,IAAI,kBAAkB,EAAE;IAYrC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IActC,IAAI,oBAAoB,WAMvB;IAEK,QAAQ;IAkER,MAAM;IAQZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW;IAyC5C,iBAAiB;CAKjB"}
|
package/dist/ui/accordion.js
CHANGED
|
@@ -15,7 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
16
16
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
17
17
|
};
|
|
18
|
-
var _Accordion_panels, _Accordion_collapsedIndices, _Accordion_heights;
|
|
18
|
+
var _Accordion_instances, _Accordion_panels, _Accordion_collapsedIndices, _Accordion_heights, _Accordion_dispatchChange;
|
|
19
19
|
import { html, render, css } from 'lit';
|
|
20
20
|
import { customElement, property } from 'lit/decorators.js';
|
|
21
21
|
import { dom } from '../common';
|
|
@@ -25,6 +25,7 @@ const MIN_PANEL_SIZE = 50;
|
|
|
25
25
|
let Accordion = class Accordion extends SplitContainer {
|
|
26
26
|
constructor() {
|
|
27
27
|
super();
|
|
28
|
+
_Accordion_instances.add(this);
|
|
28
29
|
this.items = [];
|
|
29
30
|
_Accordion_panels.set(this, new Map());
|
|
30
31
|
_Accordion_collapsedIndices.set(this, new Set());
|
|
@@ -33,8 +34,16 @@ let Accordion = class Accordion extends SplitContainer {
|
|
|
33
34
|
this.addEventListener('splitContainer.resize', () => {
|
|
34
35
|
__classPrivateFieldSet(this, _Accordion_heights, [...this.containers].map(c => c.offsetHeight), "f");
|
|
35
36
|
this.layout();
|
|
37
|
+
__classPrivateFieldGet(this, _Accordion_instances, "m", _Accordion_dispatchChange).call(this);
|
|
36
38
|
});
|
|
37
39
|
}
|
|
40
|
+
getItemsState() {
|
|
41
|
+
return this.items.map((item, i) => ({
|
|
42
|
+
id: item.id,
|
|
43
|
+
collapsed: __classPrivateFieldGet(this, _Accordion_collapsedIndices, "f").has(i),
|
|
44
|
+
size: __classPrivateFieldGet(this, _Accordion_heights, "f")[i] ?? null,
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
38
47
|
willUpdate(props) {
|
|
39
48
|
if (props.has('items')) {
|
|
40
49
|
__classPrivateFieldGet(this, _Accordion_panels, "f").clear();
|
|
@@ -159,6 +168,7 @@ let Accordion = class Accordion extends SplitContainer {
|
|
|
159
168
|
// });
|
|
160
169
|
panel.addEventListener('resizestop', () => {
|
|
161
170
|
this.layout();
|
|
171
|
+
__classPrivateFieldGet(this, _Accordion_instances, "m", _Accordion_dispatchChange).call(this);
|
|
162
172
|
});
|
|
163
173
|
render(html `
|
|
164
174
|
<div slot="header">${item.title ?? ''}</div>
|
|
@@ -176,6 +186,10 @@ let Accordion = class Accordion extends SplitContainer {
|
|
|
176
186
|
_Accordion_panels = new WeakMap();
|
|
177
187
|
_Accordion_collapsedIndices = new WeakMap();
|
|
178
188
|
_Accordion_heights = new WeakMap();
|
|
189
|
+
_Accordion_instances = new WeakSet();
|
|
190
|
+
_Accordion_dispatchChange = function _Accordion_dispatchChange() {
|
|
191
|
+
this.dispatchEvent(new Event('state', { bubbles: true, composed: true }));
|
|
192
|
+
};
|
|
179
193
|
Accordion.styles = [...SplitContainer.styles, css `
|
|
180
194
|
:host {
|
|
181
195
|
border: 1px solid var(--og-border-color);
|
package/dist/ui/accordion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { AcordionItem, ComponentId } from '../types';\nimport { dom } from '../common';\nimport { Panel } from './panel';\nimport { SplitContainer } from './splitContainer';\nimport { until } from 'lit/directives/until.js';\n\nconst MIN_PANEL_SIZE = 50;\n\n@customElement(`og-accordion`)\nexport class Accordion extends SplitContainer {\n\n\tstatic styles = [...SplitContainer.styles, css`\n\t\t:host {\n\t\t\tborder: 1px solid var(--og-border-color);\n\t\t}\n\n\t\t.item {\n\t\t\tborder-top: none !important;\n\t\t}\n\t\t\n\t\t.item.first og-panel {\n\t\t\tborder-top: none;\n\t\t}\n\n\t\t.item og-panel {\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-width: 0;\n\t\t}\n\n\t\t.item.last og-panel {\n\t\t\tborder-bottom-width: 1px;\n\t\t}\n\t`];\n\n\t@property({type: Array})\n\titems: AcordionItem[] = [];\n\n\t#panels = new Map<number, Panel>();\n\t#collapsedIndices = new Set<number>();\n\t#heights: number[] = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.defaultLayout = false;\n\t\tthis.addEventListener('splitContainer.resize', () => {\n\t\t\tthis.#heights = [...this.containers].map(c => c.offsetHeight);\n\t\t\tthis.layout();\n\t\t});\n\t}\n\n\twillUpdate(props: Map<string, unknown>) {\n\t\tif (props.has('items')) {\n\t\t\tthis.#panels.clear();\n\t\t\tthis.#heights = [];\n\t\t\tthis.items?.forEach((item, i) => {\n\t\t\t\t// override SplitContainer collapse logic\n\t\t\t\tif (item.collapsed) this.#collapsedIndices.add(i);\n\t\t\t\titem.collapsed = false;\n\t\t\t\tthis.#heights.push(item.size);\n\t\t\t});\n\t\t}\n\t\tsuper.willUpdate(props);\n\t}\n\n\tget totalCollapsedHeight() {\n\t\treturn [...this.#collapsedIndices].reduce((acc, i) => {\n\t\t\tconst panel = this.#panels.get(i);\n\t\t\tif (!panel) return acc;\n\t\t\treturn acc + (panel.collapsed ? panel.header.offsetHeight ?? 0 : 0);\n\t\t}, 0);\n\t}\n\n\tasync fixSizes() {\n\t\tawait Promise.all([...this.#panels.values()].map(panel => panel.updateComplete));\n\t\tconst containerHeight = this.clientHeight;\n\t\tconst collapsedCount = this.#collapsedIndices.size;\n\t\tconst visibleCount = this.items.length - collapsedCount;\n\t\tlet totalCollapsedHeight = 0;\n\t\tlet totalVisibleHeight = 0;\n\t\tlet unsetHeightCount = 0;\n\t\tlet heights: number[] = new Array(this.items.length).fill(null);\n\t\tlet lastIndex: number;\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tconst collapsed = this.#collapsedIndices.has(i);\n\t\t\tif (collapsed) {\n\t\t\t\tconst panel = this.#panels.get(i);\n\t\t\t\tif (!panel) continue;\n\t\t\t\theights[i] = panel.header?.offsetHeight || 0;\n\t\t\t\ttotalCollapsedHeight += heights[i];\n\t\t\t} else {\n\t\t\t\theights[i] = this.#heights[i];\n\t\t\t\tif (!heights[i]) unsetHeightCount++;\n\t\t\t\ttotalVisibleHeight += heights[i] || 0;\n\t\t\t\tlastIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tlet remainingHeight = containerHeight - totalCollapsedHeight - totalVisibleHeight;\n\t\tlet reset = false;\n\t\tlet addHeight = 0;\n\t\tlet remainingCount = visibleCount;\n\n\t\tif (remainingHeight > 0) {\n\t\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\t\tif (!heights[i]) {\n\t\t\t\t\taddHeight = remainingHeight / unsetHeightCount\n\t\t\t\t\theights[i] = addHeight;\n\t\t\t\t\tunsetHeightCount--;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t\ttotalVisibleHeight += addHeight;\n\t\t\t\t} else {\n\t\t\t\t\taddHeight = remainingHeight / remainingCount;\n\t\t\t\t\theights[i] += addHeight;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t}\n\t\t\t\tremainingCount--;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\tif (heights[i] < MIN_PANEL_SIZE) {\n\t\t\t\treset = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (reset) {\n\t\t\theights = heights.map((h, i) => this.#collapsedIndices.has(i) ? h : (totalVisibleHeight / visibleCount));\n\t\t} else if (remainingHeight > 0) {\n\t\t\theights[lastIndex] += remainingHeight;\n\t\t}\n\n\t\theights.forEach((h, i) => this.setContainerSize(i, h));\n\t}\n\n\tasync layout() {\n\t\tawait this.fixSizes();\n\t\tthis.containers.forEach((_, i) => {\n\t\t\tconst component = this.getContainerComponent(i);\n\t\t\tif (component?.layout) component.layout();\n\t\t});\n\t}\n\n\tgetComponent(index: number, id?: ComponentId) {\n\t\tlet panel = this.#panels.get(index);\n\t\tif (panel) return panel;\n\n\t\tpanel = dom.createElement<Panel>('og-panel');\n\t\tconst item = this.items[index];\n\t\tpanel.collapsible = true;\n\t\tpanel.collapsed = this.#collapsedIndices.has(index) ?? false;\n\t\tpanel.icon = item.icon;\n\t\tpanel.arrowPosition = 'left';\n\t\tthis.#panels.set(index, panel);\n\n\t\tpanel.addEventListener('resizestart', () => {\n\t\t\tif (panel.collapsed) {\n\t\t\t\tif (!this.#heights[index]) this.#heights[index] = this.getContainer(index).offsetHeight;\n\t\t\t\tthis.#collapsedIndices.add(index);\n\t\t\t} else {\n\t\t\t\tthis.#collapsedIndices.delete(index);\n\t\t\t}\n\t\t});\n\t\t\n\t\t// panel.addEventListener('resize', () => {\n\t\t// \tconsole.log(panel.body.offsetHeight + panel.header.offsetHeight);\n\t\t// \tlet h = panel.body.offsetHeight + panel.header.offsetHeight;\n\t\t// \tthis.setContainerSize(index, h);\n\t\t// });\n\t\t\n\t\tpanel.addEventListener('resizestop', () => {\n\t\t\tthis.layout();\n\t\t});\n\n\t\trender(html`\n\t\t\t<div slot=\"header\">${item.title ?? ''}</div>\n\t\t\t<div slot=\"body\" style=\"height: 100%; overflow: hidden; position: relative\">\n\t\t\t\t${until(this.createComponent(id ?? index))}\n\t\t\t</div>\n\t\t`, panel);\n\t\treturn panel;\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.orientation = 'vertical';\n\t}\n\t\n}"]}
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, render, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { AccordionItemState, AccordionItem, ComponentId } from '../types';\nimport { dom } from '../common';\nimport { Panel } from './panel';\nimport { SplitContainer } from './splitContainer';\nimport { until } from 'lit/directives/until.js';\n\nconst MIN_PANEL_SIZE = 50;\n\n@customElement(`og-accordion`)\nexport class Accordion extends SplitContainer {\n\n\tstatic styles = [...SplitContainer.styles, css`\n\t\t:host {\n\t\t\tborder: 1px solid var(--og-border-color);\n\t\t}\n\n\t\t.item {\n\t\t\tborder-top: none !important;\n\t\t}\n\t\t\n\t\t.item.first og-panel {\n\t\t\tborder-top: none;\n\t\t}\n\n\t\t.item og-panel {\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-width: 0;\n\t\t}\n\n\t\t.item.last og-panel {\n\t\t\tborder-bottom-width: 1px;\n\t\t}\n\t`];\n\n\t@property({type: Array})\n\titems: AccordionItem[] = [];\n\n\t#panels = new Map<number, Panel>();\n\t#collapsedIndices = new Set<number>();\n\t#heights: number[] = [];\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.defaultLayout = false;\n\t\tthis.addEventListener('splitContainer.resize', () => {\n\t\t\tthis.#heights = [...this.containers].map(c => c.offsetHeight);\n\t\t\tthis.layout();\n\t\t\tthis.#dispatchChange();\n\t\t});\n\t}\n\n\tgetItemsState(): AccordionItemState[] {\n\t\treturn this.items.map((item, i) => ({\n\t\t\tid: item.id,\n\t\t\tcollapsed: this.#collapsedIndices.has(i),\n\t\t\tsize: this.#heights[i] ?? null,\n\t\t}));\n\t}\n\n\t#dispatchChange() {\n\t\tthis.dispatchEvent(new Event('state', {bubbles: true, composed: true}));\n\t}\n\n\twillUpdate(props: Map<string, unknown>) {\n\t\tif (props.has('items')) {\n\t\t\tthis.#panels.clear();\n\t\t\tthis.#heights = [];\n\t\t\tthis.items?.forEach((item, i) => {\n\t\t\t\t// override SplitContainer collapse logic\n\t\t\t\tif (item.collapsed) this.#collapsedIndices.add(i);\n\t\t\t\titem.collapsed = false;\n\t\t\t\tthis.#heights.push(item.size);\n\t\t\t});\n\t\t}\n\t\tsuper.willUpdate(props);\n\t}\n\n\tget totalCollapsedHeight() {\n\t\treturn [...this.#collapsedIndices].reduce((acc, i) => {\n\t\t\tconst panel = this.#panels.get(i);\n\t\t\tif (!panel) return acc;\n\t\t\treturn acc + (panel.collapsed ? panel.header.offsetHeight ?? 0 : 0);\n\t\t}, 0);\n\t}\n\n\tasync fixSizes() {\n\t\tawait Promise.all([...this.#panels.values()].map(panel => panel.updateComplete));\n\t\tconst containerHeight = this.clientHeight;\n\t\tconst collapsedCount = this.#collapsedIndices.size;\n\t\tconst visibleCount = this.items.length - collapsedCount;\n\t\tlet totalCollapsedHeight = 0;\n\t\tlet totalVisibleHeight = 0;\n\t\tlet unsetHeightCount = 0;\n\t\tlet heights: number[] = new Array(this.items.length).fill(null);\n\t\tlet lastIndex: number;\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tconst collapsed = this.#collapsedIndices.has(i);\n\t\t\tif (collapsed) {\n\t\t\t\tconst panel = this.#panels.get(i);\n\t\t\t\tif (!panel) continue;\n\t\t\t\theights[i] = panel.header?.offsetHeight || 0;\n\t\t\t\ttotalCollapsedHeight += heights[i];\n\t\t\t} else {\n\t\t\t\theights[i] = this.#heights[i];\n\t\t\t\tif (!heights[i]) unsetHeightCount++;\n\t\t\t\ttotalVisibleHeight += heights[i] || 0;\n\t\t\t\tlastIndex = i;\n\t\t\t}\n\t\t}\n\n\t\tlet remainingHeight = containerHeight - totalCollapsedHeight - totalVisibleHeight;\n\t\tlet reset = false;\n\t\tlet addHeight = 0;\n\t\tlet remainingCount = visibleCount;\n\n\t\tif (remainingHeight > 0) {\n\t\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\t\tif (!heights[i]) {\n\t\t\t\t\taddHeight = remainingHeight / unsetHeightCount\n\t\t\t\t\theights[i] = addHeight;\n\t\t\t\t\tunsetHeightCount--;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t\ttotalVisibleHeight += addHeight;\n\t\t\t\t} else {\n\t\t\t\t\taddHeight = remainingHeight / remainingCount;\n\t\t\t\t\theights[i] += addHeight;\n\t\t\t\t\tremainingHeight -= addHeight;\n\t\t\t\t}\n\t\t\t\tremainingCount--;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < this.items.length; i++) {\n\t\t\tif (this.#collapsedIndices.has(i)) continue;\n\t\t\tif (heights[i] < MIN_PANEL_SIZE) {\n\t\t\t\treset = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (reset) {\n\t\t\theights = heights.map((h, i) => this.#collapsedIndices.has(i) ? h : (totalVisibleHeight / visibleCount));\n\t\t} else if (remainingHeight > 0) {\n\t\t\theights[lastIndex] += remainingHeight;\n\t\t}\n\n\t\theights.forEach((h, i) => this.setContainerSize(i, h));\n\t}\n\n\tasync layout() {\n\t\tawait this.fixSizes();\n\t\tthis.containers.forEach((_, i) => {\n\t\t\tconst component = this.getContainerComponent(i);\n\t\t\tif (component?.layout) component.layout();\n\t\t});\n\t}\n\n\tgetComponent(index: number, id?: ComponentId) {\n\t\tlet panel = this.#panels.get(index);\n\t\tif (panel) return panel;\n\n\t\tpanel = dom.createElement<Panel>('og-panel');\n\t\tconst item = this.items[index];\n\t\tpanel.collapsible = true;\n\t\tpanel.collapsed = this.#collapsedIndices.has(index) ?? false;\n\t\tpanel.icon = item.icon;\n\t\tpanel.arrowPosition = 'left';\n\t\tthis.#panels.set(index, panel);\n\n\t\tpanel.addEventListener('resizestart', () => {\n\t\t\tif (panel.collapsed) {\n\t\t\t\tif (!this.#heights[index]) this.#heights[index] = this.getContainer(index).offsetHeight;\n\t\t\t\tthis.#collapsedIndices.add(index);\n\t\t\t} else {\n\t\t\t\tthis.#collapsedIndices.delete(index);\n\t\t\t}\n\t\t});\n\t\t\n\t\t// panel.addEventListener('resize', () => {\n\t\t// \tconsole.log(panel.body.offsetHeight + panel.header.offsetHeight);\n\t\t// \tlet h = panel.body.offsetHeight + panel.header.offsetHeight;\n\t\t// \tthis.setContainerSize(index, h);\n\t\t// });\n\t\t\n\t\tpanel.addEventListener('resizestop', () => {\n\t\t\tthis.layout();\n\t\t\tthis.#dispatchChange();\n\t\t});\n\n\t\trender(html`\n\t\t\t<div slot=\"header\">${item.title ?? ''}</div>\n\t\t\t<div slot=\"body\" style=\"height: 100%; overflow: hidden; position: relative\">\n\t\t\t\t${until(this.createComponent(id ?? index))}\n\t\t\t</div>\n\t\t`, panel);\n\t\treturn panel;\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tthis.orientation = 'vertical';\n\t}\n\t\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/core",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.47",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"description": "Core components",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@fortawesome/fontawesome-svg-core": "^7.0.1",
|
|
39
|
-
"@omegagrid/localize": "^0.10.
|
|
39
|
+
"@omegagrid/localize": "^0.10.47",
|
|
40
40
|
"color": "^4.2.3",
|
|
41
41
|
"date-fns": "^3.2.0",
|
|
42
42
|
"lit": "^3.1.1",
|