@omegagrid/tabs 0.10.19 → 0.10.21

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":"tabContainer.d.ts","sourceRoot":"","sources":["../../src/components/tabContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAO,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,qBACa,YAAa,SAAQ,UAAW,YAAW,MAAM;;IAE7D,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACzC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAEhC,MAAM,CAAC,MAAM,4BAAW;IAGxB,IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAG1B;IACD,IAAI,QAAQ,IAJQ,OAAO,CAIa;IAGxC,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAG1B,QAAQ,UAAS;IAGjB,eAAe,EAAE,gBAAgB,CAAC;IAGlC,IAAI,EAAE,IAAI,CAAC;IAGX,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,SAAS,UAAS;IAGlB,cAAc,UAAS;IAGvB,aAAa,UAAS;IAGtB,OAAO,EAAE,OAAO,CAAU;IAE1B,OAAO,CAAC,cAAc,CAAM;IAC5B,IACI,aAAa,IAAI,MAAM,CAA+B;IAC1D,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,IAAI,UAAU,IAAI,WAAW,CAE5B;IAGD,WAAW,EAAE,gBAAgB,CAAS;IAGtC,eAAe,UAAS;IAGxB,SAAS,EAAE,cAAc,CAAC;IAG1B,OAAO,EAAE,cAAc,CAAC;IAGxB,SAAgB,UAAU,gCAAuC;IACjE,OAAO,CAAC,gBAAgB,CAAc;IACtC,IAAI,SAAS,gBAAmC;IAEhD,UAAU,UAAQ;IAClB,QAAQ,qCAA0C;IAElD,MAAM;IAIN,UAAU;IAEJ,YAAY,CAAC,WAAW,EAAE,WAAW;IAarC,aAAa,CAAC,EAAE,EAAE,WAAW;IAqCnC,OAAO;IAMP,SAAS,aAAwB;IAEjC,SAAS,GAAI,GAAG,QAAQ,UAKtB;IAEF,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,UAAO;IAYjD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAY3C,YAAY;IAIZ,eAAe,CAAC,GAAG,EAAE,mBAAmB;IAkBxC,WAAW,aAGV;IAED,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAQ7C,WAAW,GAAI,GAAG,SAAS,UAO1B;IAED,OAAO,aAIN;IAED,YAAY,GAAI,IAAI,SAAS,UAE5B;IAED,WAAW,aAEV;IAED,UAAU,GAAI,GAAG,SAAS,UAGzB;IAED,MAAM,6CAqCJ;CAEF"}
1
+ {"version":3,"file":"tabContainer.d.ts","sourceRoot":"","sources":["../../src/components/tabContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAO,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,qBACa,YAAa,SAAQ,UAAW,YAAW,MAAM;;IAE7D,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACzC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;IAEhC,MAAM,CAAC,MAAM,4BAAW;IAGxB,IACI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAG1B;IACD,IAAI,QAAQ,IAJQ,OAAO,CAIa;IAGxC,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAG1B,QAAQ,UAAS;IAGjB,eAAe,EAAE,gBAAgB,CAAC;IAGlC,IAAI,EAAE,IAAI,CAAC;IAGX,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,SAAS,UAAS;IAGlB,cAAc,UAAS;IAGvB,aAAa,UAAS;IAGtB,OAAO,EAAE,OAAO,CAAU;IAE1B,OAAO,CAAC,cAAc,CAAM;IAC5B,IACI,aAAa,IAAI,MAAM,CAA+B;IAC1D,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,IAAI,UAAU,IAAI,WAAW,CAE5B;IAGD,WAAW,EAAE,gBAAgB,CAAS;IAGtC,eAAe,UAAS;IAGxB,SAAS,EAAE,cAAc,CAAC;IAG1B,OAAO,EAAE,cAAc,CAAC;IAGxB,SAAgB,UAAU,gCAAuC;IACjE,OAAO,CAAC,gBAAgB,CAAc;IACtC,IAAI,SAAS,gBAAmC;IAEhD,UAAU,UAAQ;IAClB,QAAQ,qCAA0C;IAElD,MAAM;IAIN,UAAU;IAEJ,YAAY,CAAC,WAAW,EAAE,WAAW;IAarC,aAAa,CAAC,EAAE,EAAE,WAAW;IAqCnC,OAAO;IAMP,SAAS,aAAwB;IAEjC,SAAS,GAAI,GAAG,QAAQ,UAMtB;IAEF,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,UAAO;IAcjD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAY3C,YAAY;IAIZ,eAAe,CAAC,GAAG,EAAE,mBAAmB;IAkBxC,WAAW,aAGV;IAED,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAQ7C,WAAW,GAAI,GAAG,SAAS,UAO1B;IAED,OAAO,aAIN;IAED,YAAY,GAAI,IAAI,SAAS,UAE5B;IAED,WAAW,aAEV;IAED,UAAU,GAAI,GAAG,SAAS,UAGzB;IAED,MAAM,6CAqCJ;CAEF"}
@@ -39,6 +39,7 @@ let TabContainer = TabContainer_1 = class TabContainer extends LitElement {
39
39
  this._itemMap = new Map;
40
40
  this._onSelect = () => this.refresh();
41
41
  this._onRemove = (e) => {
42
+ this.components.get(e.tab.id)?.remove();
42
43
  this.components.delete(e.tab.id);
43
44
  if (this.tabs.items?.length === 0) {
44
45
  dom.showElement(this.tabs, 'flex');
@@ -188,7 +189,9 @@ let TabContainer = TabContainer_1 = class TabContainer extends LitElement {
188
189
  open(item, dispatchEvent = true) {
189
190
  const tabIndex = this.tabs.getIndexById(item.id);
190
191
  if (tabIndex > -1) {
191
- this.tabs.selectTab(tabIndex, dispatchEvent);
192
+ if (tabIndex != this.tabs.selectedIndex || !this.component) {
193
+ this.tabs.selectTab(tabIndex, dispatchEvent);
194
+ }
192
195
  }
193
196
  else {
194
197
  this.tabs.addTab(item);
@@ -1 +1 @@
1
- {"version":3,"file":"tabContainer.js","sourceRoot":"","sources":["../../src/components/tabContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { style } from './tabContainer.style';\nimport { ContainerTabItem } from '../types';\nimport { dom, ComponentFactory, actions, Layout, ComponentId, DirectionalPosition, VerticalPosition } from \"@omegagrid/core\";\nimport { TabEvent, Tabs, TabSize } from \"./tabs\";\n\nexport type TabsActionArgs = {\n\tindex: number\n}\n\n@customElement('og-tabcontainer')\nexport class TabContainer extends LitElement implements Layout {\n\n\tstatic dropPosition: DirectionalPosition;\n\tstatic dragParent: TabContainer;\n\tstatic dropTarget: TabContainer;\n\n\tstatic styles = [style];\n\n\t#inactive = false;\n\t@property({type: Boolean, noAccessor: true})\n\tset inactive(value: boolean) {\n\t\tthis.#inactive = value;\n\t\tif (this.tabs) this.tabs.classList.toggle('inactive', value);\n\t}\n\tget inactive() { return this.#inactive }\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Array})\n\titems: ContainerTabItem[];\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@query('og-tabs')\n\ttabs: Tabs;\n\n\t@property({type: Array})\n\tactions: actions.Action[];\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Boolean})\n\tscrollableTabs = false;\n\n\t@property({type: Boolean})\n\tdraggableTabs = false;\n\n\t@property({type: String})\n\ttabSize: TabSize = 'auto';\n\n\tprivate _selectedIndex = -1;\n\t@property({type: Number, reflect: true, noAccessor: true})\n\tget selectedIndex(): number { return this._selectedIndex }\n\tset selectedIndex(value: number) {\n\t\tif (value != this._selectedIndex) {\n\t\t\tthis.requestUpdate('selectedIndex', this._selectedIndex);\n\t\t\tthis._selectedIndex = value;\n\t\t}\n\t}\n\n\tget selectedId(): ComponentId {\n\t\treturn this.tabs?.selectedItem?.id;\n\t}\n\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Boolean})\n\tcacheComponents = false;\n\n\t@query('#container')\n\tcontainer: HTMLDivElement;\n\n\t@query('#overlay')\n\toverlay: HTMLDivElement;\n\n\n\tpublic readonly components = new Map<ComponentId, HTMLElement>();\n\tprivate currentComponent: HTMLElement;\n\tget component() { return this.currentComponent }\n\n\t_firstLoad = true;\n\t_itemMap = new Map<ComponentId, ContainerTabItem>;\n\n\tlayout() {\n\t\tif ((this.currentComponent as Layout)?.layout) (this.currentComponent as Layout).layout();\n\t}\n\n\tupdateTabs() { this.tabs.requestUpdate() }\n\n\tasync getComponent(componentId: ComponentId) {\n\t\tif (!this.createComponent) return null;\n\n\t\tconst cacheComponent = this.cacheComponents || this._itemMap?.get(componentId)?.preventDisconnect;\n\t\tif (!cacheComponent || !this.components.has(componentId)) {\n\t\t\tconst component = await this.createComponent(componentId);\n\t\t\tcomponent.dataset.preventDisconnect = this._itemMap?.get(componentId)?.preventDisconnect ? '1' : '0';\n\t\t\tif (!cacheComponent) return component;\n\t\t\tthis.components.set(componentId, component);\n\t\t}\n\t\treturn this.components.get(componentId);\n\t}\n\n\tasync loadComponent(id: ComponentId) {\n\t\tif (id != null) {\n\t\t\tconst prevComponent = this.currentComponent;\n\t\t\tthis.currentComponent = await this.getComponent(id);\n\n\t\t\tif (prevComponent) {\n\t\t\t\tconst preventDisconnect = prevComponent?.dataset?.preventDisconnect === '1';\n\n\t\t\t\tif (preventDisconnect) {\n\t\t\t\t\tdom.hideElement(prevComponent);\n\t\t\t\t} else {\n\t\t\t\t\tprevComponent.remove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.currentComponent) {\n\t\t\t\tif (this.currentComponent.parentElement !== this.container) {\n\t\t\t\t\tdom.appendElement(this.container, this.currentComponent);\n\t\t\t\t}\n\t\t\t\tdom.showElement(this.currentComponent);\n\t\t\t}\n\n\t\t\tif (this._firstLoad) {\n\t\t\t\tthis._firstLoad = false;\n\t\t\t\tthis.dispatchEvent(new Event('load'));\n\t\t\t}\n\t\t} else {\n\t\t\tdom.empty(this.container);\n\t\t\tthis.currentComponent = null;\n\t\t}\n\n\t\tif (this._firstLoad) {\n\t\t\tthis._firstLoad = false;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\trefresh() {\n\t\tconst id = this.tabs?.selectedItem?.id;\n\t\tthis._selectedIndex = this.tabs?.selectedIndex ?? -1;\n\t\tif (id != null)\tthis.loadComponent(this.tabs.selectedItem?.id);\n\t}\n\n\t_onSelect = () => this.refresh();\n\n\t_onRemove = (e: TabEvent) => {\n\t\tthis.components.delete(e.tab.id);\n\t\tif (this.tabs.items?.length === 0) {\n\t\t\tdom.showElement(this.tabs, 'flex');\n\t\t}\n\t};\n\n\topen(item: ContainerTabItem, dispatchEvent = true) {\n\t\tconst tabIndex = this.tabs.getIndexById(item.id);\n\t\tif (tabIndex > -1) {\n\t\t\tthis.tabs.selectTab(tabIndex, dispatchEvent);\n\t\t} else {\n\t\t\tthis.tabs.addTab(item);\n\t\t\tthis.tabs.selectTabById(item.id, dispatchEvent);\n\t\t}\n\n\t\tdom.showElement(this.tabs, 'flex');\n\t}\n\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif (!this.topLevelComponent) this.topLevelComponent = this;\n\t\tthis.selectedIndex = this.items?.length > 0\n\t\t\t? Math.max(0, Math.min(this.selectedIndex ?? -1, this.items.length - 1))\n\t\t\t: -1;\n\n\t\tif (props.has('items')) {\n\t\t\tthis._firstLoad = true;\n\t\t\tthis._itemMap = new Map(this.items.map(item => [item.id, item]));\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tif (this.selectedIndex > -1) this.open(this.items[this.selectedIndex]);\n\t}\n\n\tpositionOverlay(pos: DirectionalPosition) {\n\t\tTabContainer.dropPosition = pos;\n\n\t\tthis.tabs.hideOverlay();\n\t\tif (pos == null) {\n\t\t\tthis.tabs.positionOverlay(this.tabs.empty);\n\t\t\treturn dom.hideElement(this.overlay);\n\t\t}\n\n\t\tdom.showElement(this.overlay);\n\t\tdom.setPosition(this.overlay, {\n\t\t\tt: (pos == 'bottom' ? this.container.clientHeight / 2 : 0) + this.container.offsetTop,\n\t\t\tl: pos == 'right' ? this.container.clientWidth / 2 : 0,\n\t\t\tb: pos == 'top' ? this.container.clientHeight / 2 : 0,\n\t\t\tr: pos == 'left' ? this.container.clientWidth / 2 : 0,\n\t\t});\n\t}\n\n\thideOverlay = () => {\n\t\tdom.hideElement(this.overlay);\n\t\tthis.tabs.hideOverlay();\n\t}\n\n\tcalculateOverlayPosition(x: number, y: number) {\n\t\tconst [w, h] = [this.container.clientWidth, this.container.clientHeight];\n\t\tconst margin = 0.3;\n\t\tif (x > w * margin && x < w - (w * margin) && y > h * margin && y < h - (h * margin)) return null;\n\t\tconst [q1, q2] = [w / h > x / y, w / h > x / (h - y)];\n\t\treturn (q1 ? (q2 ? 'left' : 'bottom') : (q2 ? 'top' : 'right')) as DirectionalPosition;\n\t}\n\n\t_onDragover = (e: DragEvent) => {\n\t\tif (!TabContainer.dragParent || !Tabs.dragParent) return;\n\t\tif (TabContainer.dragParent.topLevelComponent != this.topLevelComponent && Tabs.dragParent.topLevelComponent != this.topLevelComponent) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tthis.positionOverlay(this.calculateOverlayPosition(e.offsetX, e.offsetY));\n\t}\n\n\t_onDrop = () => {\n\t\tif (TabContainer.dragParent?.topLevelComponent != this.topLevelComponent && Tabs.dragParent?.topLevelComponent != this.topLevelComponent) return;\n\t\tTabContainer.dropTarget = this;\n\t\tthis.hideOverlay();\n\t}\n\n\t_onDragStart = (_e: DragEvent) => {\n\t\tTabContainer.dragParent = this;\n\t}\n\n\t_onDragStop = () => {\n\t\tTabContainer.dragParent = null;\n\t}\n\n\t_onTabDrop = (e: DragEvent) => {\n\t\tTabContainer.dragParent = null;\n\t\te.stopPropagation();\n\t}\n\n\trender = () => {\n\t\tconst tabs = html`\n\t\t\t<og-tabs\n\t\t\t\tclass=\"${this.inactive ? 'inactive' : ''}\"\n\t\t\t\tstyle=\"${this.items?.length ? '' : 'display: none;'}\"\n\t\t\t\t?scrollable=\"${this.scrollableTabs}\"\n\t\t\t\t?draggable=\"${this.draggableTabs}\"\n\t\t\t\t.topLevelComponent=\"${this.topLevelComponent}\"\n\t\t\t\t.items=\"${this.items}\"\n\t\t\t\t.actions=\"${this.actions}\"\n\t\t\t\t.selectedIndex=\"${this.selectedIndex}\"\n\t\t\t\t.position=\"${this.tabPosition}\"\n\t\t\t\t.tabSize=\"${this.tabSize}\"\n\t\t\t\t?closable=\"${this.closable}\"\n\t\t\t\t?addButton=\"${this.addButton}\"\n\t\t\t\t@tab.select=\"${this._onSelect}\"\n\t\t\t\t@tab.remove=\"${this._onRemove}\"\n\t\t\t\t@dragstart=\"${this._onDragStart}\"\n\t\t\t\t@dragstop=\"${this._onDragStop}\"\n\t\t\t\t@drop=\"${this._onTabDrop}\">\n\t\t\t</og-tabs>\n\t\t`;\n\n\t\tconst container = html`\n\t\t\t<div\n\t\t\t\tid=\"container\"\n\t\t\t\t@drop=\"${this._onDrop}\"\n\t\t\t\t@dragover=\"${this._onDragover}\"\n\t\t\t\t@dragleave=\"${() => this.hideOverlay()}\">\n\t\t\t</div>\n\t\t`;\n\n\t\treturn html`\n\t\t\t${this.tabPosition == 'top' ? tabs : container}\n\t\t\t${this.tabPosition == 'bottom' ? tabs : container}\n\t\t\t<div id=\"overlay\" style=\"display: none\"></div>\n\t\t`\n\t};\n\n}\n"]}
1
+ {"version":3,"file":"tabContainer.js","sourceRoot":"","sources":["../../src/components/tabContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { style } from './tabContainer.style';\nimport { ContainerTabItem } from '../types';\nimport { dom, ComponentFactory, actions, Layout, ComponentId, DirectionalPosition, VerticalPosition } from \"@omegagrid/core\";\nimport { TabEvent, Tabs, TabSize } from \"./tabs\";\n\nexport type TabsActionArgs = {\n\tindex: number\n}\n\n@customElement('og-tabcontainer')\nexport class TabContainer extends LitElement implements Layout {\n\n\tstatic dropPosition: DirectionalPosition;\n\tstatic dragParent: TabContainer;\n\tstatic dropTarget: TabContainer;\n\n\tstatic styles = [style];\n\n\t#inactive = false;\n\t@property({type: Boolean, noAccessor: true})\n\tset inactive(value: boolean) {\n\t\tthis.#inactive = value;\n\t\tif (this.tabs) this.tabs.classList.toggle('inactive', value);\n\t}\n\tget inactive() { return this.#inactive }\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Array})\n\titems: ContainerTabItem[];\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@query('og-tabs')\n\ttabs: Tabs;\n\n\t@property({type: Array})\n\tactions: actions.Action[];\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Boolean})\n\tscrollableTabs = false;\n\n\t@property({type: Boolean})\n\tdraggableTabs = false;\n\n\t@property({type: String})\n\ttabSize: TabSize = 'auto';\n\n\tprivate _selectedIndex = -1;\n\t@property({type: Number, reflect: true, noAccessor: true})\n\tget selectedIndex(): number { return this._selectedIndex }\n\tset selectedIndex(value: number) {\n\t\tif (value != this._selectedIndex) {\n\t\t\tthis.requestUpdate('selectedIndex', this._selectedIndex);\n\t\t\tthis._selectedIndex = value;\n\t\t}\n\t}\n\n\tget selectedId(): ComponentId {\n\t\treturn this.tabs?.selectedItem?.id;\n\t}\n\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Boolean})\n\tcacheComponents = false;\n\n\t@query('#container')\n\tcontainer: HTMLDivElement;\n\n\t@query('#overlay')\n\toverlay: HTMLDivElement;\n\n\n\tpublic readonly components = new Map<ComponentId, HTMLElement>();\n\tprivate currentComponent: HTMLElement;\n\tget component() { return this.currentComponent }\n\n\t_firstLoad = true;\n\t_itemMap = new Map<ComponentId, ContainerTabItem>;\n\n\tlayout() {\n\t\tif ((this.currentComponent as Layout)?.layout) (this.currentComponent as Layout).layout();\n\t}\n\n\tupdateTabs() { this.tabs.requestUpdate() }\n\n\tasync getComponent(componentId: ComponentId) {\n\t\tif (!this.createComponent) return null;\n\n\t\tconst cacheComponent = this.cacheComponents || this._itemMap?.get(componentId)?.preventDisconnect;\n\t\tif (!cacheComponent || !this.components.has(componentId)) {\n\t\t\tconst component = await this.createComponent(componentId);\n\t\t\tcomponent.dataset.preventDisconnect = this._itemMap?.get(componentId)?.preventDisconnect ? '1' : '0';\n\t\t\tif (!cacheComponent) return component;\n\t\t\tthis.components.set(componentId, component);\n\t\t}\n\t\treturn this.components.get(componentId);\n\t}\n\n\tasync loadComponent(id: ComponentId) {\n\t\tif (id != null) {\n\t\t\tconst prevComponent = this.currentComponent;\n\t\t\tthis.currentComponent = await this.getComponent(id);\n\n\t\t\tif (prevComponent) {\n\t\t\t\tconst preventDisconnect = prevComponent?.dataset?.preventDisconnect === '1';\n\n\t\t\t\tif (preventDisconnect) {\n\t\t\t\t\tdom.hideElement(prevComponent);\n\t\t\t\t} else {\n\t\t\t\t\tprevComponent.remove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.currentComponent) {\n\t\t\t\tif (this.currentComponent.parentElement !== this.container) {\n\t\t\t\t\tdom.appendElement(this.container, this.currentComponent);\n\t\t\t\t}\n\t\t\t\tdom.showElement(this.currentComponent);\n\t\t\t}\n\n\t\t\tif (this._firstLoad) {\n\t\t\t\tthis._firstLoad = false;\n\t\t\t\tthis.dispatchEvent(new Event('load'));\n\t\t\t}\n\t\t} else {\n\t\t\tdom.empty(this.container);\n\t\t\tthis.currentComponent = null;\n\t\t}\n\n\t\tif (this._firstLoad) {\n\t\t\tthis._firstLoad = false;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\trefresh() {\n\t\tconst id = this.tabs?.selectedItem?.id;\n\t\tthis._selectedIndex = this.tabs?.selectedIndex ?? -1;\n\t\tif (id != null)\tthis.loadComponent(this.tabs.selectedItem?.id);\n\t}\n\n\t_onSelect = () => this.refresh();\n\n\t_onRemove = (e: TabEvent) => {\n\t\tthis.components.get(e.tab.id)?.remove();\n\t\tthis.components.delete(e.tab.id);\n\t\tif (this.tabs.items?.length === 0) {\n\t\t\tdom.showElement(this.tabs, 'flex');\n\t\t}\n\t};\n\n\topen(item: ContainerTabItem, dispatchEvent = true) {\n\t\tconst tabIndex = this.tabs.getIndexById(item.id);\n\t\tif (tabIndex > -1) {\n\t\t\tif (tabIndex != this.tabs.selectedIndex || !this.component) {\n\t\t\t\tthis.tabs.selectTab(tabIndex, dispatchEvent);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.tabs.addTab(item);\n\t\t\tthis.tabs.selectTabById(item.id, dispatchEvent);\n\t\t}\n\n\t\tdom.showElement(this.tabs, 'flex');\n\t}\n\n\twillUpdate(props: Map<PropertyKey, unknown>) {\n\t\tif (!this.topLevelComponent) this.topLevelComponent = this;\n\t\tthis.selectedIndex = this.items?.length > 0\n\t\t\t? Math.max(0, Math.min(this.selectedIndex ?? -1, this.items.length - 1))\n\t\t\t: -1;\n\n\t\tif (props.has('items')) {\n\t\t\tthis._firstLoad = true;\n\t\t\tthis._itemMap = new Map(this.items.map(item => [item.id, item]));\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tif (this.selectedIndex > -1) this.open(this.items[this.selectedIndex]);\n\t}\n\n\tpositionOverlay(pos: DirectionalPosition) {\n\t\tTabContainer.dropPosition = pos;\n\n\t\tthis.tabs.hideOverlay();\n\t\tif (pos == null) {\n\t\t\tthis.tabs.positionOverlay(this.tabs.empty);\n\t\t\treturn dom.hideElement(this.overlay);\n\t\t}\n\n\t\tdom.showElement(this.overlay);\n\t\tdom.setPosition(this.overlay, {\n\t\t\tt: (pos == 'bottom' ? this.container.clientHeight / 2 : 0) + this.container.offsetTop,\n\t\t\tl: pos == 'right' ? this.container.clientWidth / 2 : 0,\n\t\t\tb: pos == 'top' ? this.container.clientHeight / 2 : 0,\n\t\t\tr: pos == 'left' ? this.container.clientWidth / 2 : 0,\n\t\t});\n\t}\n\n\thideOverlay = () => {\n\t\tdom.hideElement(this.overlay);\n\t\tthis.tabs.hideOverlay();\n\t}\n\n\tcalculateOverlayPosition(x: number, y: number) {\n\t\tconst [w, h] = [this.container.clientWidth, this.container.clientHeight];\n\t\tconst margin = 0.3;\n\t\tif (x > w * margin && x < w - (w * margin) && y > h * margin && y < h - (h * margin)) return null;\n\t\tconst [q1, q2] = [w / h > x / y, w / h > x / (h - y)];\n\t\treturn (q1 ? (q2 ? 'left' : 'bottom') : (q2 ? 'top' : 'right')) as DirectionalPosition;\n\t}\n\n\t_onDragover = (e: DragEvent) => {\n\t\tif (!TabContainer.dragParent || !Tabs.dragParent) return;\n\t\tif (TabContainer.dragParent.topLevelComponent != this.topLevelComponent && Tabs.dragParent.topLevelComponent != this.topLevelComponent) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tthis.positionOverlay(this.calculateOverlayPosition(e.offsetX, e.offsetY));\n\t}\n\n\t_onDrop = () => {\n\t\tif (TabContainer.dragParent?.topLevelComponent != this.topLevelComponent && Tabs.dragParent?.topLevelComponent != this.topLevelComponent) return;\n\t\tTabContainer.dropTarget = this;\n\t\tthis.hideOverlay();\n\t}\n\n\t_onDragStart = (_e: DragEvent) => {\n\t\tTabContainer.dragParent = this;\n\t}\n\n\t_onDragStop = () => {\n\t\tTabContainer.dragParent = null;\n\t}\n\n\t_onTabDrop = (e: DragEvent) => {\n\t\tTabContainer.dragParent = null;\n\t\te.stopPropagation();\n\t}\n\n\trender = () => {\n\t\tconst tabs = html`\n\t\t\t<og-tabs\n\t\t\t\tclass=\"${this.inactive ? 'inactive' : ''}\"\n\t\t\t\tstyle=\"${this.items?.length ? '' : 'display: none;'}\"\n\t\t\t\t?scrollable=\"${this.scrollableTabs}\"\n\t\t\t\t?draggable=\"${this.draggableTabs}\"\n\t\t\t\t.topLevelComponent=\"${this.topLevelComponent}\"\n\t\t\t\t.items=\"${this.items}\"\n\t\t\t\t.actions=\"${this.actions}\"\n\t\t\t\t.selectedIndex=\"${this.selectedIndex}\"\n\t\t\t\t.position=\"${this.tabPosition}\"\n\t\t\t\t.tabSize=\"${this.tabSize}\"\n\t\t\t\t?closable=\"${this.closable}\"\n\t\t\t\t?addButton=\"${this.addButton}\"\n\t\t\t\t@tab.select=\"${this._onSelect}\"\n\t\t\t\t@tab.remove=\"${this._onRemove}\"\n\t\t\t\t@dragstart=\"${this._onDragStart}\"\n\t\t\t\t@dragstop=\"${this._onDragStop}\"\n\t\t\t\t@drop=\"${this._onTabDrop}\">\n\t\t\t</og-tabs>\n\t\t`;\n\n\t\tconst container = html`\n\t\t\t<div\n\t\t\t\tid=\"container\"\n\t\t\t\t@drop=\"${this._onDrop}\"\n\t\t\t\t@dragover=\"${this._onDragover}\"\n\t\t\t\t@dragleave=\"${() => this.hideOverlay()}\">\n\t\t\t</div>\n\t\t`;\n\n\t\treturn html`\n\t\t\t${this.tabPosition == 'top' ? tabs : container}\n\t\t\t${this.tabPosition == 'bottom' ? tabs : container}\n\t\t\t<div id=\"overlay\" style=\"display: none\"></div>\n\t\t`\n\t};\n\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACxD,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,sBAAsB,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAA;AAED,qBAAa,sBAAsB;IAElC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,qBAAqB,EAAE,CAAM;IACpC,UAAU,CAAC,EAAE,qBAAqB,CAAC;gBAEvB,UAAU,CAAC,EAAE,uBAAuB;IAIhD,KAAK;IAiBL,QAAQ,CAAC,UAAU,EAAE,uBAAuB;IAe5C,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAc3C,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW;IAmBxC,SAAS,CAAC,EAAE,EAAE,MAAM;IAUpB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,KAAK,IAAI,GAAC,OAAO,EAAE,SAAS,CAAC,EAAE,sBAAsB;IAe5G,aAAa,IAgBP,uBAAuB;CAG7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG;IACxD,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,sBAAsB,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAA;AAED,qBAAa,sBAAsB;IAElC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,qBAAqB,EAAE,CAAM;IACpC,UAAU,CAAC,EAAE,qBAAqB,CAAC;gBAEvB,UAAU,CAAC,EAAE,uBAAuB;IAIhD,KAAK;IAyBL,QAAQ,CAAC,UAAU,EAAE,uBAAuB;IAe5C,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAc3C,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW;IAmBxC,SAAS,CAAC,EAAE,EAAE,MAAM;IAUpB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,KAAK,IAAI,GAAC,OAAO,EAAE,SAAS,CAAC,EAAE,sBAAsB;IAe5G,aAAa,IAgBP,uBAAuB;CAG7B"}
@@ -8,10 +8,17 @@ export class TabSplitContainerModel {
8
8
  const removeIndexes = new Set();
9
9
  let clean = false;
10
10
  this.items.forEach((item, i) => {
11
- if (item.container)
11
+ if (item.container) {
12
12
  clean = item.container.clean() || clean;
13
- else if (!item.tabs || !item.tabs.length)
13
+ const singleItem = item.container.items.length == 1 ? item.container.items[0] : null;
14
+ if (!singleItem?.container && !singleItem?.tabs?.length) {
15
+ clean = true;
16
+ removeIndexes.add(i);
17
+ }
18
+ }
19
+ else if (!item.tabs || !item.tabs.length) {
14
20
  removeIndexes.add(i);
21
+ }
15
22
  });
16
23
  this.items = this.items.filter((_item, i) => !removeIndexes.has(i));
17
24
  if (this.items.length == 1 && this.parentItem) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComponentId, Orientation, SplitContainerItem } from \"@omegagrid/core\"\nimport { TabItem } from \"../types\";\n\nexport type TabSplitContainerItem = SplitContainerItem & {\n\ttabs?: TabItem[],\n\tselectedIndex?: number,\n\tcontainer?: Partial<TabSplitContainerModel>,\n\tparentContainer?: TabSplitContainerModel\n}\n\nexport type TabSplitContainerSource = {\n\torientation?: Orientation;\n\titems?: TabSplitContainerItem[];\n}\n\nexport class TabSplitContainerModel {\n\n\torientation: Orientation;\n\titems: TabSplitContainerItem[] = [];\n\tparentItem?: TabSplitContainerItem;\n\n\tconstructor(sourceData?: TabSplitContainerSource) {\n\t\tif (sourceData) this.populate(sourceData);\n\t}\n\n\tclean() {\n\t\tconst removeIndexes = new Set<number>();\n\t\tlet clean = false;\n\t\tthis.items.forEach((item, i) => {\n\t\t\tif (item.container) clean = item.container.clean() || clean;\n\t\t\telse if (!item.tabs || !item.tabs.length) removeIndexes.add(i);\n\t\t});\n\t\tthis.items = this.items.filter((_item, i) => !removeIndexes.has(i));\n\t\tif (this.items.length == 1 && this.parentItem) {\n\t\t\tthis.parentItem.tabs = this.items[0].tabs;\n\t\t\tthis.parentItem.container = this.items[0].container;\n\t\t\tthis.parentItem.parentContainer = this.items[0].parentContainer;\n\t\t\tclean = true;\n\t\t}\n\t\treturn removeIndexes.size > 0 || clean;\n\t}\n\t\n\tpopulate(sourceData: TabSplitContainerSource) {\n\t\tthis.orientation = sourceData.orientation;\n\t\tthis.items = sourceData.items ? (sourceData.items.map((sourceItem) => ({\n\t\t\ttabs: sourceItem.tabs,\n\t\t\tselectedIndex: sourceItem.selectedIndex,\n\t\t\tcontainer: sourceItem.container ? new TabSplitContainerModel(sourceItem.container) : null,\n\t\t\tsize: sourceItem.size,\n\t\t}))) : [];\n\n\t\tthis.items.forEach(item => {\n\t\t\titem.parentContainer = this;\n\t\t\tif (item.container) item.container.parentItem = item;\n\t\t});\n\t}\n\n\tupdateTab(id: string, tab: Partial<TabItem>) {\n\t\tthis.items.forEach(item => {\n\t\t\tif (item.container) item.container.updateTab(id, tab);\n\t\t\telse if (item.tabs) {\n\t\t\t\tfor (let i = 0; i < item.tabs.length; i++) {\n\t\t\t\t\tif (item.tabs[i].id == id) {\n\t\t\t\t\t\tObject.assign(item.tabs[i], tab);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\taddTab(tab: TabItem, after?: ComponentId) {\n\t\tfor (const item of this.items) {\n\t\t\tif (item.container) item.container.addTab(tab, after);\n\t\t\telse {\n\t\t\t\titem.tabs = item.tabs || [];\n\t\t\t\tif (after == null) {\n\t\t\t\t\titem.tabs.push(tab);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tconst index = item.tabs.findIndex(tab => tab.id == after) + 1;\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\titem.tabs.splice(index, 0, tab);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveTab(id: string) {\n\t\tthis.items.forEach(item => {\n\t\t\tif (item.container) item.container.removeTab(id);\n\t\t\telse if (item.tabs) {\n\t\t\t\tconst tabIndex = item.tabs.findIndex(tab => tab.id == id);\n\t\t\t\tif (tabIndex > -1) item.tabs.splice(tabIndex, 1);\n\t\t\t}\n\t\t});\n\t}\n\n\twalk(cb: (m: TabItem, container: TabSplitContainerModel) => void|boolean, container?: TabSplitContainerModel) {\n\t\tfor (const item of this.items) {\n\t\t\tif (item.container) {\n\t\t\t\tconst stop = item.container.walk(cb, item.container as TabSplitContainerModel);\n\t\t\t\tif (stop === false) return false;\n\t\t\t} else if (item.tabs) {\n\t\t\t\tfor (const tab of item.tabs) {\n\t\t\t\t\tconst stop = cb(tab, container || this);\n\t\t\t\t\tif (stop === false) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tgetSourceData() {\n\t\treturn {\n\t\t\torientation: this.orientation,\n\t\t\titems: this.items.map(item => {\n\t\t\t\tconst modelItem: TabSplitContainerItem = {};\n\t\t\t\tmodelItem.collapsed = item.collapsed;\n\t\t\t\tmodelItem.size = item.size;\n\t\t\t\tmodelItem.selectedIndex = item.selectedIndex;\n\t\t\t\tif (item.container) modelItem.container = item.container.getSourceData();\n\t\t\t\telse if (item.tabs) modelItem.tabs = item.tabs.map(tabItem => {\n\t\t\t\t\tconst item = Object.assign({}, tabItem);\n\t\t\t\t\tdelete item.unsaved;\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t\treturn modelItem;\n\t\t\t})\n\t\t} as TabSplitContainerSource;\n\t}\n\n}"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,sBAAsB;IAMlC,YAAY,UAAoC;QAHhD,UAAK,GAA4B,EAAE,CAAC;QAInC,IAAI,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK;QACJ,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QACxC,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrF,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oBACzD,KAAK,GAAG,IAAI,CAAC;oBACb,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACF,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;YAChE,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,UAAmC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtE,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;YACzF,IAAI,EAAE,UAAU,CAAC,IAAI;SACrB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;QACtD,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,GAAqB;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;iBACjD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;wBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBACjC,MAAM;oBACP,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAY,EAAE,KAAmB;QACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBACjD,CAAC;gBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO;gBACR,CAAC;qBAAM,CAAC;oBACP,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC9D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;wBAChC,OAAO;oBACR,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAED,SAAS,CAAC,EAAU;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;iBAC5C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC1D,IAAI,QAAQ,GAAG,CAAC,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,EAAmE,EAAE,SAAkC;QAC3G,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAmC,CAAC,CAAC;gBAC/E,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;oBACxC,IAAI,IAAI,KAAK,KAAK;wBAAE,OAAO,KAAK,CAAC;gBAClC,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,aAAa;QACZ,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,SAAS,GAA0B,EAAE,CAAC;gBAC5C,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBACrC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC3B,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7C,IAAI,IAAI,CAAC,SAAS;oBAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;qBACpE,IAAI,IAAI,CAAC,IAAI;oBAAE,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBACxC,OAAO,IAAI,CAAC,OAAO,CAAC;wBACpB,OAAO,IAAI,CAAC;oBACb,CAAC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;YAClB,CAAC,CAAC;SACyB,CAAC;IAC9B,CAAC;CAED","sourcesContent":["import { ComponentId, Orientation, SplitContainerItem } from \"@omegagrid/core\"\nimport { TabItem } from \"../types\";\n\nexport type TabSplitContainerItem = SplitContainerItem & {\n\ttabs?: TabItem[],\n\tselectedIndex?: number,\n\tcontainer?: Partial<TabSplitContainerModel>,\n\tparentContainer?: TabSplitContainerModel\n}\n\nexport type TabSplitContainerSource = {\n\torientation?: Orientation;\n\titems?: TabSplitContainerItem[];\n}\n\nexport class TabSplitContainerModel {\n\n\torientation: Orientation;\n\titems: TabSplitContainerItem[] = [];\n\tparentItem?: TabSplitContainerItem;\n\n\tconstructor(sourceData?: TabSplitContainerSource) {\n\t\tif (sourceData) this.populate(sourceData);\n\t}\n\n\tclean() {\n\t\tconst removeIndexes = new Set<number>();\n\t\tlet clean = false;\n\t\tthis.items.forEach((item, i) => {\n\t\t\tif (item.container) {\n\t\t\t\tclean = item.container.clean() || clean;\n\t\t\t\tconst singleItem = item.container.items.length == 1 ? item.container.items[0] : null;\n\t\t\t\tif (!singleItem?.container && !singleItem?.tabs?.length) {\n\t\t\t\t\tclean = true;\n\t\t\t\t\tremoveIndexes.add(i);\n\t\t\t\t}\n\t\t\t} else if (!item.tabs || !item.tabs.length) {\n\t\t\t\tremoveIndexes.add(i);\n\t\t\t}\n\t\t});\n\t\tthis.items = this.items.filter((_item, i) => !removeIndexes.has(i));\n\t\tif (this.items.length == 1 && this.parentItem) {\n\t\t\tthis.parentItem.tabs = this.items[0].tabs;\n\t\t\tthis.parentItem.container = this.items[0].container;\n\t\t\tthis.parentItem.parentContainer = this.items[0].parentContainer;\n\t\t\tclean = true;\n\t\t}\n\t\treturn removeIndexes.size > 0 || clean;\n\t}\n\n\tpopulate(sourceData: TabSplitContainerSource) {\n\t\tthis.orientation = sourceData.orientation;\n\t\tthis.items = sourceData.items ? (sourceData.items.map((sourceItem) => ({\n\t\t\ttabs: sourceItem.tabs,\n\t\t\tselectedIndex: sourceItem.selectedIndex,\n\t\t\tcontainer: sourceItem.container ? new TabSplitContainerModel(sourceItem.container) : null,\n\t\t\tsize: sourceItem.size,\n\t\t}))) : [];\n\n\t\tthis.items.forEach(item => {\n\t\t\titem.parentContainer = this;\n\t\t\tif (item.container) item.container.parentItem = item;\n\t\t});\n\t}\n\n\tupdateTab(id: string, tab: Partial<TabItem>) {\n\t\tthis.items.forEach(item => {\n\t\t\tif (item.container) item.container.updateTab(id, tab);\n\t\t\telse if (item.tabs) {\n\t\t\t\tfor (let i = 0; i < item.tabs.length; i++) {\n\t\t\t\t\tif (item.tabs[i].id == id) {\n\t\t\t\t\t\tObject.assign(item.tabs[i], tab);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\taddTab(tab: TabItem, after?: ComponentId) {\n\t\tfor (const item of this.items) {\n\t\t\tif (item.container) item.container.addTab(tab, after);\n\t\t\telse {\n\t\t\t\titem.tabs = item.tabs || [];\n\t\t\t\tif (after == null) {\n\t\t\t\t\titem.tabs.push(tab);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tconst index = item.tabs.findIndex(tab => tab.id == after) + 1;\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\titem.tabs.splice(index, 0, tab);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tremoveTab(id: string) {\n\t\tthis.items.forEach(item => {\n\t\t\tif (item.container) item.container.removeTab(id);\n\t\t\telse if (item.tabs) {\n\t\t\t\tconst tabIndex = item.tabs.findIndex(tab => tab.id == id);\n\t\t\t\tif (tabIndex > -1) item.tabs.splice(tabIndex, 1);\n\t\t\t}\n\t\t});\n\t}\n\n\twalk(cb: (m: TabItem, container: TabSplitContainerModel) => void|boolean, container?: TabSplitContainerModel) {\n\t\tfor (const item of this.items) {\n\t\t\tif (item.container) {\n\t\t\t\tconst stop = item.container.walk(cb, item.container as TabSplitContainerModel);\n\t\t\t\tif (stop === false) return false;\n\t\t\t} else if (item.tabs) {\n\t\t\t\tfor (const tab of item.tabs) {\n\t\t\t\t\tconst stop = cb(tab, container || this);\n\t\t\t\t\tif (stop === false) return false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tgetSourceData() {\n\t\treturn {\n\t\t\torientation: this.orientation,\n\t\t\titems: this.items.map(item => {\n\t\t\t\tconst modelItem: TabSplitContainerItem = {};\n\t\t\t\tmodelItem.collapsed = item.collapsed;\n\t\t\t\tmodelItem.size = item.size;\n\t\t\t\tmodelItem.selectedIndex = item.selectedIndex;\n\t\t\t\tif (item.container) modelItem.container = item.container.getSourceData();\n\t\t\t\telse if (item.tabs) modelItem.tabs = item.tabs.map(tabItem => {\n\t\t\t\t\tconst item = Object.assign({}, tabItem);\n\t\t\t\t\tdelete item.unsaved;\n\t\t\t\t\treturn item;\n\t\t\t\t});\n\t\t\t\treturn modelItem;\n\t\t\t})\n\t\t} as TabSplitContainerSource;\n\t}\n\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omegagrid/tabs",
3
- "version": "0.10.19",
3
+ "version": "0.10.21",
4
4
  "license": "UNLICENSED",
5
5
  "description": "Universal tabbed layout component",
6
6
  "main": "./dist/index.js",
@@ -27,7 +27,7 @@
27
27
  "_prepublish": "yarn test && yarn lint"
28
28
  },
29
29
  "dependencies": {
30
- "@omegagrid/core": "^0.10.19",
30
+ "@omegagrid/core": "^0.10.21",
31
31
  "lit": "^3.1.1",
32
32
  "lit-html": "^3.1.1",
33
33
  "ts-debounce": "^4.0.0"