@omegagrid/core 0.6.60 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD,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,YAAY,EAAE,CAAM;;IAe3B,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAatC,IAAI,oBAAoB,WAMvB;IAEK,QAAQ;IAkER,MAAM;IAQZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,WAAW;IAwC5C,iBAAiB;CAKjB"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/ui/accordion.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErD,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,YAAY,EAAE,CAAM;;IAe3B,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;IAwC5C,iBAAiB;CAKjB"}
@@ -37,6 +37,7 @@ let Accordion = class Accordion extends SplitContainer {
37
37
  }
38
38
  willUpdate(props) {
39
39
  if (props.has('items')) {
40
+ __classPrivateFieldGet(this, _Accordion_panels, "f").clear();
40
41
  __classPrivateFieldSet(this, _Accordion_heights, [], "f");
41
42
  this.items?.forEach((item, i) => {
42
43
  // override SplitContainer collapse logic
@@ -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.#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 { 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}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/core",
3
- "version": "0.6.60",
3
+ "version": "0.6.61",
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": "6.4.2",
39
- "@omegagrid/localize": "^0.6.60",
39
+ "@omegagrid/localize": "^0.6.61",
40
40
  "@riovir/wc-fontawesome": "^0.1.9",
41
41
  "color": "^4.2.3",
42
42
  "date-fns": "^3.2.0",