@omegagrid/tabs 0.7.14 → 0.8.1
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/components/tabContainer.d.ts +1 -0
- package/dist/components/tabContainer.d.ts.map +1 -1
- package/dist/components/tabContainer.js +5 -0
- package/dist/components/tabContainer.js.map +1 -1
- package/dist/components/tabSplitContainer.d.ts +1 -0
- package/dist/components/tabSplitContainer.d.ts.map +1 -1
- package/dist/components/tabSplitContainer.js +6 -0
- package/dist/components/tabSplitContainer.js.map +1 -1
- package/dist/components/tabs.d.ts +2 -0
- package/dist/components/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +56 -42
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tabs.style.d.ts.map +1 -1
- package/dist/components/tabs.style.js +5 -0
- package/dist/components/tabs.style.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/package.json +2 -2
|
@@ -21,6 +21,7 @@ export declare class TabContainer extends LitElement implements Layout {
|
|
|
21
21
|
actions: actions.Action[];
|
|
22
22
|
fixed: boolean;
|
|
23
23
|
addButton: boolean;
|
|
24
|
+
scrollableTabs: boolean;
|
|
24
25
|
private _selectedIndex;
|
|
25
26
|
get selectedIndex(): number;
|
|
26
27
|
set selectedIndex(value: number);
|
|
@@ -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,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAExC,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,OAAO,EAAE,CAAC;IAGjB,QAAQ,UAAS;IAGjB,eAAe,EAAE,gBAAgB,CAAC;IAGlC,IAAI,EAAE,IAAI,CAAC;IAGX,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,KAAK,UAAS;IAGd,SAAS,UAAS;IAGlB,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;IAElB,MAAM;IAIN,UAAU;IAEJ,YAAY,CAAC,WAAW,EAAE,WAAW;IAUrC,aAAa,CAAC,WAAW,EAAE,WAAW;IAsB5C,OAAO;IAMP,SAAS,aAAwB;IAEjC,SAAS,GAAI,GAAG,QAAQ,UAKtB;IAEF,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,UAAO;IAYxC,UAAU;IAOV,YAAY;IAIZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAIxC,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,
|
|
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,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAExC,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,OAAO,EAAE,CAAC;IAGjB,QAAQ,UAAS;IAGjB,eAAe,EAAE,gBAAgB,CAAC;IAGlC,IAAI,EAAE,IAAI,CAAC;IAGX,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,KAAK,UAAS;IAGd,SAAS,UAAS;IAGlB,cAAc,UAAS;IAEvB,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;IAElB,MAAM;IAIN,UAAU;IAEJ,YAAY,CAAC,WAAW,EAAE,WAAW;IAUrC,aAAa,CAAC,WAAW,EAAE,WAAW;IAsB5C,OAAO;IAMP,SAAS,aAAwB;IAEjC,SAAS,GAAI,GAAG,QAAQ,UAKtB;IAEF,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,UAAO;IAYxC,UAAU;IAOV,YAAY;IAIZ,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;IAIxC,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,6CAoCJ;CAEF"}
|
|
@@ -29,6 +29,7 @@ let TabContainer = TabContainer_1 = class TabContainer extends LitElement {
|
|
|
29
29
|
this.closable = false;
|
|
30
30
|
this.fixed = false;
|
|
31
31
|
this.addButton = false;
|
|
32
|
+
this.scrollableTabs = false;
|
|
32
33
|
this._selectedIndex = -1;
|
|
33
34
|
this.tabPosition = 'top';
|
|
34
35
|
this.cacheComponents = false;
|
|
@@ -77,6 +78,7 @@ let TabContainer = TabContainer_1 = class TabContainer extends LitElement {
|
|
|
77
78
|
class="${this.inactive ? 'inactive' : ''}"
|
|
78
79
|
style="${this.items?.length ? '' : 'display: none;'}"
|
|
79
80
|
?fixed="${this.fixed}"
|
|
81
|
+
?scrollable="${this.scrollableTabs}"
|
|
80
82
|
.topLevelComponent="${this.topLevelComponent}"
|
|
81
83
|
.items="${this.items}"
|
|
82
84
|
.actions="${this.actions}"
|
|
@@ -245,6 +247,9 @@ __decorate([
|
|
|
245
247
|
__decorate([
|
|
246
248
|
property({ type: Boolean })
|
|
247
249
|
], TabContainer.prototype, "addButton", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
property({ type: Boolean })
|
|
252
|
+
], TabContainer.prototype, "scrollableTabs", void 0);
|
|
248
253
|
__decorate([
|
|
249
254
|
property({ type: Number, reflect: true, noAccessor: true })
|
|
250
255
|
], TabContainer.prototype, "selectedIndex", null);
|
|
@@ -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 { TabItem } from '../types';\nimport { dom, ComponentFactory, actions, Layout, ComponentId, DirectionalPosition, VerticalPosition } from \"@omegagrid/core\";\nimport { TabEvent, Tabs } 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: TabItem[];\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\tfixed = false;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\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\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\t\tif (!this.cacheComponents || !this.components.has(componentId)) {\n\t\t\tconst component = await this.createComponent(componentId);\n\t\t\tif (!this.cacheComponents) 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(componentId: ComponentId) {\n\t\tif (componentId != null) {\n\t\t\tthis.currentComponent = await this.getComponent(componentId);\n\t\t\tdom.empty(this.container);\n\t\t\tif (this.currentComponent) {\n\t\t\t\tdom.appendElement(this.container, this.currentComponent);\n\t\t\t}\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: TabItem, 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() {\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\t}\n\t\n\tfirstUpdated() {\n\t\tif (this.selectedIndex > -1) this.open(this.items[this.selectedIndex]);\n\t}\n\n\tupdated(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('items')) this._firstLoad = true;\n\t}\n\n\tpositionOverlay(pos: DirectionalPosition) {\n\t\tTabContainer.dropPosition = pos;\n\t\t\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?fixed=\"${this.fixed}\"\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?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\t\t\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\t\t\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}"]}
|
|
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 { TabItem } from '../types';\nimport { dom, ComponentFactory, actions, Layout, ComponentId, DirectionalPosition, VerticalPosition } from \"@omegagrid/core\";\nimport { TabEvent, Tabs } 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: TabItem[];\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\tfixed = false;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Boolean})\n\tscrollableTabs = false;\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\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\t\tif (!this.cacheComponents || !this.components.has(componentId)) {\n\t\t\tconst component = await this.createComponent(componentId);\n\t\t\tif (!this.cacheComponents) 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(componentId: ComponentId) {\n\t\tif (componentId != null) {\n\t\t\tthis.currentComponent = await this.getComponent(componentId);\n\t\t\tdom.empty(this.container);\n\t\t\tif (this.currentComponent) {\n\t\t\t\tdom.appendElement(this.container, this.currentComponent);\n\t\t\t}\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: TabItem, 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() {\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\t}\n\t\n\tfirstUpdated() {\n\t\tif (this.selectedIndex > -1) this.open(this.items[this.selectedIndex]);\n\t}\n\n\tupdated(props: Map<PropertyKey, unknown>) {\n\t\tif (props.has('items')) this._firstLoad = true;\n\t}\n\n\tpositionOverlay(pos: DirectionalPosition) {\n\t\tTabContainer.dropPosition = pos;\n\t\t\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?fixed=\"${this.fixed}\"\n\t\t\t\t?scrollable=\"${this.scrollableTabs}\"\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?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\t\t\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\t\t\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}"]}
|
|
@@ -15,6 +15,7 @@ export declare class TabSplitContainer extends LitElement implements Layout {
|
|
|
15
15
|
closable: boolean;
|
|
16
16
|
singleActive: boolean;
|
|
17
17
|
tabPosition: VerticalPosition;
|
|
18
|
+
scrollableTabs: boolean;
|
|
18
19
|
createComponent: ComponentFactory;
|
|
19
20
|
splitContainer: SplitContainer;
|
|
20
21
|
tabContainers: Set<TabSplitContainer | TabSplitContainerTabContainer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabSplitContainer.d.ts","sourceRoot":"","sources":["../../src/components/tabSplitContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAe,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,KAAK,6BAA6B,GAAG,YAAY,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,iBAAiB,CAAA;CAClC,CAAC;AAEF,qBAEa,iBAAkB,SAAQ,UAAW,YAAW,MAAM;IAElE,MAAM,CAAC,MAAM,0BAQX;IAGF,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,sBAAsB,CAAC;IAG9B,SAAS,UAAS;IAGlB,QAAQ,UAAS;IAGjB,YAAY,UAAS;IAGrB,WAAW,EAAE,gBAAgB,CAAS;IAGtC,eAAe,EAAE,gBAAgB,CAAC;IAGlC,cAAc,EAAE,cAAc,CAAC;IAE/B,aAAa,yDAA8D;IAE3E,OAAO,CAAC,mBAAmB,CAAe;IAC1C,IAAI,kBAAkB,iBAAsC;IAE5D,OAAO,CAAC,UAAU,CAAU;IAC5B,IAAI,SAAS,YAA6B;IAE1C,OAAO,CAAC,SAAS,CAAK;IAEtB,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,KAAK,OAAO,GAAC,IAAI;IAUzG,UAAU;IAKV,UAAU;IAEV,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAkB1C,qBAAqB;IAQ3B,eAAe;IAOf,mBAAmB,GAAI,gBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"tabSplitContainer.d.ts","sourceRoot":"","sources":["../../src/components/tabSplitContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAe,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,KAAK,6BAA6B,GAAG,YAAY,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,iBAAiB,CAAA;CAClC,CAAC;AAEF,qBAEa,iBAAkB,SAAQ,UAAW,YAAW,MAAM;IAElE,MAAM,CAAC,MAAM,0BAQX;IAGF,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,sBAAsB,CAAC;IAG9B,SAAS,UAAS;IAGlB,QAAQ,UAAS;IAGjB,YAAY,UAAS;IAGrB,WAAW,EAAE,gBAAgB,CAAS;IAGtC,cAAc,UAAS;IAGvB,eAAe,EAAE,gBAAgB,CAAC;IAGlC,cAAc,EAAE,cAAc,CAAC;IAE/B,aAAa,yDAA8D;IAE3E,OAAO,CAAC,mBAAmB,CAAe;IAC1C,IAAI,kBAAkB,iBAAsC;IAE5D,OAAO,CAAC,UAAU,CAAU;IAC5B,IAAI,SAAS,YAA6B;IAE1C,OAAO,CAAC,SAAS,CAAK;IAEtB,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,6BAA6B,KAAK,OAAO,GAAC,IAAI;IAUzG,UAAU;IAKV,UAAU;IAEV,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IAkB1C,qBAAqB;IAQ3B,eAAe;IAOf,mBAAmB,GAAI,gBAAgB,MAAM,mCAoD3C;IAEF,qBAAqB,GAAI,gBAAgB,MAAM,uBAY7C;IAEF,8BAA8B,GAAI,IAAI,WAAW,+CAgB9C;IAEH,OAAO,GAAI,GAAG,SAAS,UA2DtB;IAED,QAAQ,CAAC,EAAE,EAAE,WAAW;IAIxB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,SAAI;IAwBtC,MAAM,kDAOC;IAEP,MAAM;CAIN"}
|
|
@@ -18,6 +18,7 @@ let TabSplitContainer = TabSplitContainer_1 = class TabSplitContainer extends Li
|
|
|
18
18
|
this.closable = false;
|
|
19
19
|
this.singleActive = false;
|
|
20
20
|
this.tabPosition = 'top';
|
|
21
|
+
this.scrollableTabs = false;
|
|
21
22
|
this.tabContainers = new Set();
|
|
22
23
|
this.loadState = 0;
|
|
23
24
|
this._createTabContainer = (containerIndex) => {
|
|
@@ -29,6 +30,7 @@ let TabSplitContainer = TabSplitContainer_1 = class TabSplitContainer extends Li
|
|
|
29
30
|
this.model.items = this.model.items ?? [];
|
|
30
31
|
component.closable = this.closable;
|
|
31
32
|
component.addButton = this.addButton;
|
|
33
|
+
component.scrollableTabs = this.scrollableTabs;
|
|
32
34
|
component.style.height = '100%';
|
|
33
35
|
const item = this.model.items[containerIndex];
|
|
34
36
|
component.items = item?.tabs ?? [];
|
|
@@ -71,6 +73,7 @@ let TabSplitContainer = TabSplitContainer_1 = class TabSplitContainer extends Li
|
|
|
71
73
|
const component = dom.createElement('og-tabsplitcontainer');
|
|
72
74
|
component.style.height = '100%';
|
|
73
75
|
component.addButton = this.addButton;
|
|
76
|
+
component.scrollableTabs = this.scrollableTabs;
|
|
74
77
|
component.tabPosition = this.tabPosition;
|
|
75
78
|
component.model = this.model.items[containerIndex].container;
|
|
76
79
|
component.createComponent = this.createComponent;
|
|
@@ -269,6 +272,9 @@ __decorate([
|
|
|
269
272
|
__decorate([
|
|
270
273
|
property({ type: String, reflect: true })
|
|
271
274
|
], TabSplitContainer.prototype, "tabPosition", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
property({ type: Boolean })
|
|
277
|
+
], TabSplitContainer.prototype, "scrollableTabs", void 0);
|
|
272
278
|
__decorate([
|
|
273
279
|
property({ type: Object })
|
|
274
280
|
], TabSplitContainer.prototype, "createComponent", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabSplitContainer.js","sourceRoot":"","sources":["../../src/components/tabSplitContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TabItem } from '../types';\nimport { dom, ComponentFactory, SplitContainer, Layout, ComponentId, Orientation, VerticalPosition } from \"@omegagrid/core\";\nimport { TabContainer } from \"./tabContainer\";\nimport { TabEvent, Tabs } from \"./tabs\";\nimport { TabSplitContainerModel } from \"../model\";\n\ntype TabSplitContainerTabContainer = TabContainer & {\n\tindex: number,\n\tparentContainer: TabSplitContainer\n};\n\n@customElement('og-tabsplitcontainer')\n// @stylable({vars: ['tab-*']})\nexport class TabSplitContainer extends LitElement implements Layout {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\tog-splitcontainer {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Object})\n\tmodel: TabSplitContainerModel;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Boolean})\n\tsingleActive = false;\n\t\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@query('og-splitcontainer')\n\tsplitContainer: SplitContainer;\n\n\ttabContainers = new Set<TabSplitContainerTabContainer|TabSplitContainer>();\n\t\n\tprivate _activeTabContainer: TabContainer;\n\tget activeTabContainer() { return this._activeTabContainer }\n\t\n\tprivate _activeTab: TabItem;\n\tget activeTab() { return this._activeTab }\n\n\tprivate loadState = 0;\n\n\twalk(cb: (splitContainer: TabSplitContainer, tabContainer: TabSplitContainerTabContainer) => boolean|void) {\n\t\tthis.tabContainers.forEach(container => {\n\t\t\tif (container instanceof TabSplitContainer) container.walk(cb);\n\t\t\telse {\n\t\t\t\tconst res = cb(this, container);\n\t\t\t\tif (res === false) return;\n\t\t\t}\n\t\t});\n\t}\n\t\n\twillUpdate() {\n\t\tif (!this.topLevelComponent) this.topLevelComponent = this;\n\t\tif (this.model && !this.model.orientation) this.model.orientation = 'horizontal';\n\t}\n\n\tupdateTabs() { this.tabContainers.forEach(tabContainer => tabContainer.updateTabs()) }\n\n\tupdateTab(id: ComponentId, tab: Partial<TabItem>) {\n\t\tthis.walk((_splitContainer, tabContainer) => {\n\t\t\tconst tabIndex = tabContainer.items.findIndex(item => item.id == id);\n\t\t\tconst currentTab = tabContainer.tabs.items[tabIndex];\n\t\t\tif (currentTab) {\n\t\t\t\tObject.assign(currentTab, tab);\n\t\t\t\tif (tabContainer.selectedIndex == tabIndex && id != tab.id) {\n\t\t\t\t\t// component is visible and id has changed\n\t\t\t\t\tthis.updateTabs();\n\t\t\t\t\ttabContainer.loadComponent(currentTab.id);\n\t\t\t\t\ttabContainer.components.delete(id);\n\t\t\t\t\tthis.updateActiveTab();\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tasync removeEmptyContainers() {\n\t\tif (this.model.clean()) {\n\t\t\tthis.requestUpdate();\n\t\t\tawait this.updateComplete;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tupdateActiveTab() {\n\t\tif (!this.singleActive) return;\n\t\t(this.topLevelComponent as TabSplitContainer).walk((_splitContainer, tabContainer) => {\n\t\t\ttabContainer.inactive = tabContainer != this.activeTabContainer;\n\t\t});\n\t}\n\n\t_createTabContainer = (containerIndex: number) => {\n\t\tconst component = dom.createElement<TabSplitContainerTabContainer>('og-tabcontainer');\n\t\tcomponent.inactive = this.singleActive;\n\t\tcomponent.index = containerIndex;\n\t\tcomponent.parentContainer = this;\n\t\tcomponent.tabPosition = this.tabPosition;\n\t\tthis.model.items = this.model.items ?? [];\n\t\tcomponent.closable = this.closable;\n\t\tcomponent.addButton = this.addButton;\n\t\tcomponent.style.height = '100%';\n\t\tconst item = this.model.items[containerIndex];\n\t\tcomponent.items = item?.tabs ?? [];\n\t\tcomponent.selectedIndex = item.selectedIndex;\n\t\tcomponent.topLevelComponent = this.topLevelComponent;\n\t\t\n\t\t//component.actions = [{key: 'split', icon: 'table-columns'}];\n\n\t\t// component.addEventListener('tabs.action.split', (e) => {\n\t\t// \te.stopPropagation();\n\t\t// \tconst newItem: TabSplitContainerItem = {size: null, tabs: []};\n\t\t// \tthis.model.items.splice(containerIndex + 1, 0, newItem);\n\t\t// \tthis.model.items.forEach(item => item.size = null);\n\t\t// \tthis.requestUpdate();\n\t\t// });\n\n\t\tcomponent.addEventListener('tab.remove', () => {\n\t\t\tif (component.tabs.items.length == 0) {\n\t\t\t\tif (this.model.items.length > 1) this.model.items.splice(containerIndex, 1);\n\t\t\t\tthis.model.items.forEach(item => item.size = null);\n\t\t\t\tthis.requestUpdate();\n\t\t\t}\n\t\t\tthis.removeEmptyContainers();\n\t\t});\n\n\t\tcomponent.addEventListener('tab.move', () => {\n\t\t\tthis.removeEmptyContainers();\n\t\t});\n\n\t\tcomponent.addEventListener('tab.select', (e: TabEvent) => {\n\t\t\tif (e.tabs.topLevelComponent == this.topLevelComponent && item) {\n\t\t\t\titem.selectedIndex = e.tabs.selectedIndex;\n\t\t\t\tif (this.singleActive) {\n\t\t\t\t\tthis._activeTabContainer = component;\n\t\t\t\t\tthis._activeTab = e.tab;\n\t\t\t\t\tthis.updateActiveTab();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcomponent.createComponent = this.createComponent;\n\t\treturn component;\n\t};\n\n\t_createSplitContainer = (containerIndex: number) => {\n\t\tconst component = dom.createElement<TabSplitContainer>('og-tabsplitcontainer');\n\t\tcomponent.style.height = '100%';\n\t\tcomponent.addButton = this.addButton;\n\t\tcomponent.tabPosition = this.tabPosition;\n\t\tcomponent.model = this.model.items[containerIndex].container as TabSplitContainerModel;\n\t\tcomponent.createComponent = this.createComponent;\n\t\tcomponent.topLevelComponent = this.topLevelComponent;\n\t\tcomponent.closable = this.closable;\n\t\tcomponent.singleActive = this.singleActive;\n\t\treturn component;\n\t};\n\t\n\t_createSplitContainerComponent = (id: ComponentId) => new Promise<TabContainer|TabSplitContainer>((resolve, reject) => {\n\t\tconst containerIndex = id as number;\n\t\tconst container = this.model.items ? this.model.items[containerIndex] : null;\n\t\tif (container) {\n\t\t\tconst containerComponent = container.container\n\t\t\t\t? this._createSplitContainer(containerIndex)\n\t\t\t\t: this._createTabContainer(containerIndex);\n\t\t\tcontainerComponent.addEventListener('load', () => {\n\t\t\t\tthis.loadState++;\n\t\t\t\tif (this.loadState == this.splitContainer.items.length) this.dispatchEvent(new Event('load'));\n\t\t\t});\n\t\t\tthis.tabContainers.add(containerComponent);\n\t\t\tresolve(containerComponent);\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n\n\t_onDrop = (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\t\n\t\te.stopImmediatePropagation();\n\t\tconst tabContainer1 = TabContainer.dragParent as TabSplitContainerTabContainer;\n\t\tconst tabContainer2 = TabContainer.dropTarget as TabSplitContainerTabContainer;\n\t\t\n\t\tTabContainer.dragParent = null;\n\t\tTabContainer.dropTarget = null;\n\t\t\n\t\tif (!tabContainer1 || !tabContainer2) {\n\t\t\tif (tabContainer1 && tabContainer1.parentContainer.model.items[tabContainer1.index].tabs.length == 0) {\n\t\t\t\ttabContainer1.parentContainer.model.items.splice(tabContainer1.index, 1);\n\t\t\t}\n\t\t\ttabContainer1.parentContainer.splitContainer.requestUpdate();\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tconst tab = tabContainer1.tabs.removeTab(Tabs.dragIndex, false);\n\t\tconst dropOrientation: Orientation = TabContainer.dropPosition \n\t\t\t? ['left', 'right'].includes(TabContainer.dropPosition) ? 'horizontal' : 'vertical'\n\t\t\t: null;\n\n\t\tconst parentContainer2 = tabContainer2?.parentContainer;\n\t\tif (parentContainer2) {\n\t\t\tif (dropOrientation == null) {\n\t\t\t\tconst item = parentContainer2.model.items[tabContainer2.index];\n\t\t\t\titem.tabs.push(tab);\n\t\t\t} else if (dropOrientation == parentContainer2.model.orientation) {\n\t\t\t\tparentContainer2.model.items.splice(\n\t\t\t\t\ttabContainer2.index + (['right', 'bottom'].includes(TabContainer.dropPosition) ? 1 : 0), 0, {tabs: [tab]}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst item = parentContainer2.model.items[tabContainer2.index];\n\t\t\t\titem.container = new TabSplitContainerModel({\n\t\t\t\t\torientation: dropOrientation,\n\t\t\t\t\titems: [{\n\t\t\t\t\t\ttabs: item.tabs\n\t\t\t\t\t}, {\n\t\t\t\t\t\ttabs: [tab]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\tparentContainer2.splitContainer.resetContainerSizes();\n\t\t\tparentContainer2.splitContainer.requestUpdate();\n\t\t}\n\n\t\tconst parentContainer1 = tabContainer1?.parentContainer;\n\t\tif (parentContainer1) {\n\t\t\tfor (let i = parentContainer1.model.items.length - 1; i >= 0; i--) {\n\t\t\t\tconst item = parentContainer1.model.items[i];\n\t\t\t\tif ((!item.tabs || item.tabs.length == 0) && !item.container) {\n\t\t\t\t\tparentContainer1.model.items.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentContainer1.splitContainer.resetContainerSizes();\n\t\t\tparentContainer1.splitContainer.requestUpdate();\n\t\t}\n\t}\n\n\tactivate(id: ComponentId) {\n\t\tthis.open({ id });\n\t}\n\n\topen(item: TabItem, containerIndex = 0) {\n\t\tlet container = this.splitContainer.getContainerComponent(containerIndex) as TabSplitContainerTabContainer;\n\t\tlet model = this.model;\n\n\t\t// prevent opening the same tab twice\n\t\tthis.walk((splitContainer, tabContainer) => {\n\t\t\tfor (let i = 0; i < tabContainer.items.length; i++) {\n\t\t\t\tconst tabItem = tabContainer.items[i];\n\t\t\t\tif (tabItem.id == item.id) {\n\t\t\t\t\tcontainer = tabContainer;\n\t\t\t\t\tmodel = splitContainer.model;\n\t\t\t\t\tcontainer.selectedIndex = i;\n\t\t\t\t\tcontainerIndex = container.index;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcontainer.open(item);\n\t\tif (model.items[containerIndex]) {\n\t\t\tmodel.items[containerIndex].tabs = container.items;\n\t\t}\n\t}\n\n\trender = () => this.model ? html`\n\t\t<og-splitcontainer\n\t\t\torientation=${this.model?.orientation}\n\t\t\t.items=\"${this.model.items ?? []}\"\n\t\t\t.createComponent=\"${this._createSplitContainerComponent}\"\n\t\t\t@drop=\"${this._onDrop}\">\n\t\t</og-splitcontainer>\n\t` : '';\n\n\tlayout() {\n\t\tthis.splitContainer?.layout();\n\t}\n\n}"]}
|
|
1
|
+
{"version":3,"file":"tabSplitContainer.js","sourceRoot":"","sources":["../../src/components/tabSplitContainer.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from \"lit\";\nimport { customElement, property, query } from \"lit/decorators.js\";\nimport { TabItem } from '../types';\nimport { dom, ComponentFactory, SplitContainer, Layout, ComponentId, Orientation, VerticalPosition } from \"@omegagrid/core\";\nimport { TabContainer } from \"./tabContainer\";\nimport { TabEvent, Tabs } from \"./tabs\";\nimport { TabSplitContainerModel } from \"../model\";\n\ntype TabSplitContainerTabContainer = TabContainer & {\n\tindex: number,\n\tparentContainer: TabSplitContainer\n};\n\n@customElement('og-tabsplitcontainer')\n// @stylable({vars: ['tab-*']})\nexport class TabSplitContainer extends LitElement implements Layout {\n\n\tstatic styles = css`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\tog-splitcontainer {\n\t\t\theight: 100%;\n\t\t}\n\t`;\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Object})\n\tmodel: TabSplitContainerModel;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Boolean})\n\tsingleActive = false;\n\t\n\t@property({type: String, reflect: true})\n\ttabPosition: VerticalPosition = 'top';\n\n\t@property({type: Boolean})\n\tscrollableTabs = false;\n\n\t@property({type: Object})\n\tcreateComponent: ComponentFactory;\n\n\t@query('og-splitcontainer')\n\tsplitContainer: SplitContainer;\n\n\ttabContainers = new Set<TabSplitContainerTabContainer|TabSplitContainer>();\n\t\n\tprivate _activeTabContainer: TabContainer;\n\tget activeTabContainer() { return this._activeTabContainer }\n\t\n\tprivate _activeTab: TabItem;\n\tget activeTab() { return this._activeTab }\n\n\tprivate loadState = 0;\n\n\twalk(cb: (splitContainer: TabSplitContainer, tabContainer: TabSplitContainerTabContainer) => boolean|void) {\n\t\tthis.tabContainers.forEach(container => {\n\t\t\tif (container instanceof TabSplitContainer) container.walk(cb);\n\t\t\telse {\n\t\t\t\tconst res = cb(this, container);\n\t\t\t\tif (res === false) return;\n\t\t\t}\n\t\t});\n\t}\n\t\n\twillUpdate() {\n\t\tif (!this.topLevelComponent) this.topLevelComponent = this;\n\t\tif (this.model && !this.model.orientation) this.model.orientation = 'horizontal';\n\t}\n\n\tupdateTabs() { this.tabContainers.forEach(tabContainer => tabContainer.updateTabs()) }\n\n\tupdateTab(id: ComponentId, tab: Partial<TabItem>) {\n\t\tthis.walk((_splitContainer, tabContainer) => {\n\t\t\tconst tabIndex = tabContainer.items.findIndex(item => item.id == id);\n\t\t\tconst currentTab = tabContainer.tabs.items[tabIndex];\n\t\t\tif (currentTab) {\n\t\t\t\tObject.assign(currentTab, tab);\n\t\t\t\tif (tabContainer.selectedIndex == tabIndex && id != tab.id) {\n\t\t\t\t\t// component is visible and id has changed\n\t\t\t\t\tthis.updateTabs();\n\t\t\t\t\ttabContainer.loadComponent(currentTab.id);\n\t\t\t\t\ttabContainer.components.delete(id);\n\t\t\t\t\tthis.updateActiveTab();\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tasync removeEmptyContainers() {\n\t\tif (this.model.clean()) {\n\t\t\tthis.requestUpdate();\n\t\t\tawait this.updateComplete;\n\t\t\tthis.layout();\n\t\t}\n\t}\n\n\tupdateActiveTab() {\n\t\tif (!this.singleActive) return;\n\t\t(this.topLevelComponent as TabSplitContainer).walk((_splitContainer, tabContainer) => {\n\t\t\ttabContainer.inactive = tabContainer != this.activeTabContainer;\n\t\t});\n\t}\n\n\t_createTabContainer = (containerIndex: number) => {\n\t\tconst component = dom.createElement<TabSplitContainerTabContainer>('og-tabcontainer');\n\t\tcomponent.inactive = this.singleActive;\n\t\tcomponent.index = containerIndex;\n\t\tcomponent.parentContainer = this;\n\t\tcomponent.tabPosition = this.tabPosition;\n\t\tthis.model.items = this.model.items ?? [];\n\t\tcomponent.closable = this.closable;\n\t\tcomponent.addButton = this.addButton;\n\t\tcomponent.scrollableTabs = this.scrollableTabs;\n\t\tcomponent.style.height = '100%';\n\t\tconst item = this.model.items[containerIndex];\n\t\tcomponent.items = item?.tabs ?? [];\n\t\tcomponent.selectedIndex = item.selectedIndex;\n\t\tcomponent.topLevelComponent = this.topLevelComponent;\n\t\t\n\t\t//component.actions = [{key: 'split', icon: 'table-columns'}];\n\n\t\t// component.addEventListener('tabs.action.split', (e) => {\n\t\t// \te.stopPropagation();\n\t\t// \tconst newItem: TabSplitContainerItem = {size: null, tabs: []};\n\t\t// \tthis.model.items.splice(containerIndex + 1, 0, newItem);\n\t\t// \tthis.model.items.forEach(item => item.size = null);\n\t\t// \tthis.requestUpdate();\n\t\t// });\n\n\t\tcomponent.addEventListener('tab.remove', () => {\n\t\t\tif (component.tabs.items.length == 0) {\n\t\t\t\tif (this.model.items.length > 1) this.model.items.splice(containerIndex, 1);\n\t\t\t\tthis.model.items.forEach(item => item.size = null);\n\t\t\t\tthis.requestUpdate();\n\t\t\t}\n\t\t\tthis.removeEmptyContainers();\n\t\t});\n\n\t\tcomponent.addEventListener('tab.move', () => {\n\t\t\tthis.removeEmptyContainers();\n\t\t});\n\n\t\tcomponent.addEventListener('tab.select', (e: TabEvent) => {\n\t\t\tif (e.tabs.topLevelComponent == this.topLevelComponent && item) {\n\t\t\t\titem.selectedIndex = e.tabs.selectedIndex;\n\t\t\t\tif (this.singleActive) {\n\t\t\t\t\tthis._activeTabContainer = component;\n\t\t\t\t\tthis._activeTab = e.tab;\n\t\t\t\t\tthis.updateActiveTab();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcomponent.createComponent = this.createComponent;\n\t\treturn component;\n\t};\n\n\t_createSplitContainer = (containerIndex: number) => {\n\t\tconst component = dom.createElement<TabSplitContainer>('og-tabsplitcontainer');\n\t\tcomponent.style.height = '100%';\n\t\tcomponent.addButton = this.addButton;\n\t\tcomponent.scrollableTabs = this.scrollableTabs;\n\t\tcomponent.tabPosition = this.tabPosition;\n\t\tcomponent.model = this.model.items[containerIndex].container as TabSplitContainerModel;\n\t\tcomponent.createComponent = this.createComponent;\n\t\tcomponent.topLevelComponent = this.topLevelComponent;\n\t\tcomponent.closable = this.closable;\n\t\tcomponent.singleActive = this.singleActive;\n\t\treturn component;\n\t};\n\t\n\t_createSplitContainerComponent = (id: ComponentId) => new Promise<TabContainer|TabSplitContainer>((resolve, reject) => {\n\t\tconst containerIndex = id as number;\n\t\tconst container = this.model.items ? this.model.items[containerIndex] : null;\n\t\tif (container) {\n\t\t\tconst containerComponent = container.container\n\t\t\t\t? this._createSplitContainer(containerIndex)\n\t\t\t\t: this._createTabContainer(containerIndex);\n\t\t\tcontainerComponent.addEventListener('load', () => {\n\t\t\t\tthis.loadState++;\n\t\t\t\tif (this.loadState == this.splitContainer.items.length) this.dispatchEvent(new Event('load'));\n\t\t\t});\n\t\t\tthis.tabContainers.add(containerComponent);\n\t\t\tresolve(containerComponent);\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n\n\t_onDrop = (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\t\n\t\te.stopImmediatePropagation();\n\t\tconst tabContainer1 = TabContainer.dragParent as TabSplitContainerTabContainer;\n\t\tconst tabContainer2 = TabContainer.dropTarget as TabSplitContainerTabContainer;\n\t\t\n\t\tTabContainer.dragParent = null;\n\t\tTabContainer.dropTarget = null;\n\t\t\n\t\tif (!tabContainer1 || !tabContainer2) {\n\t\t\tif (tabContainer1 && tabContainer1.parentContainer.model.items[tabContainer1.index].tabs.length == 0) {\n\t\t\t\ttabContainer1.parentContainer.model.items.splice(tabContainer1.index, 1);\n\t\t\t}\n\t\t\ttabContainer1.parentContainer.splitContainer.requestUpdate();\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tconst tab = tabContainer1.tabs.removeTab(Tabs.dragIndex, false);\n\t\tconst dropOrientation: Orientation = TabContainer.dropPosition \n\t\t\t? ['left', 'right'].includes(TabContainer.dropPosition) ? 'horizontal' : 'vertical'\n\t\t\t: null;\n\n\t\tconst parentContainer2 = tabContainer2?.parentContainer;\n\t\tif (parentContainer2) {\n\t\t\tif (dropOrientation == null) {\n\t\t\t\tconst item = parentContainer2.model.items[tabContainer2.index];\n\t\t\t\titem.tabs.push(tab);\n\t\t\t} else if (dropOrientation == parentContainer2.model.orientation) {\n\t\t\t\tparentContainer2.model.items.splice(\n\t\t\t\t\ttabContainer2.index + (['right', 'bottom'].includes(TabContainer.dropPosition) ? 1 : 0), 0, {tabs: [tab]}\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst item = parentContainer2.model.items[tabContainer2.index];\n\t\t\t\titem.container = new TabSplitContainerModel({\n\t\t\t\t\torientation: dropOrientation,\n\t\t\t\t\titems: [{\n\t\t\t\t\t\ttabs: item.tabs\n\t\t\t\t\t}, {\n\t\t\t\t\t\ttabs: [tab]\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\t\t\tparentContainer2.splitContainer.resetContainerSizes();\n\t\t\tparentContainer2.splitContainer.requestUpdate();\n\t\t}\n\n\t\tconst parentContainer1 = tabContainer1?.parentContainer;\n\t\tif (parentContainer1) {\n\t\t\tfor (let i = parentContainer1.model.items.length - 1; i >= 0; i--) {\n\t\t\t\tconst item = parentContainer1.model.items[i];\n\t\t\t\tif ((!item.tabs || item.tabs.length == 0) && !item.container) {\n\t\t\t\t\tparentContainer1.model.items.splice(i, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentContainer1.splitContainer.resetContainerSizes();\n\t\t\tparentContainer1.splitContainer.requestUpdate();\n\t\t}\n\t}\n\n\tactivate(id: ComponentId) {\n\t\tthis.open({ id });\n\t}\n\n\topen(item: TabItem, containerIndex = 0) {\n\t\tlet container = this.splitContainer.getContainerComponent(containerIndex) as TabSplitContainerTabContainer;\n\t\tlet model = this.model;\n\n\t\t// prevent opening the same tab twice\n\t\tthis.walk((splitContainer, tabContainer) => {\n\t\t\tfor (let i = 0; i < tabContainer.items.length; i++) {\n\t\t\t\tconst tabItem = tabContainer.items[i];\n\t\t\t\tif (tabItem.id == item.id) {\n\t\t\t\t\tcontainer = tabContainer;\n\t\t\t\t\tmodel = splitContainer.model;\n\t\t\t\t\tcontainer.selectedIndex = i;\n\t\t\t\t\tcontainerIndex = container.index;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tcontainer.open(item);\n\t\tif (model.items[containerIndex]) {\n\t\t\tmodel.items[containerIndex].tabs = container.items;\n\t\t}\n\t}\n\n\trender = () => this.model ? html`\n\t\t<og-splitcontainer\n\t\t\torientation=${this.model?.orientation}\n\t\t\t.items=\"${this.model.items ?? []}\"\n\t\t\t.createComponent=\"${this._createSplitContainerComponent}\"\n\t\t\t@drop=\"${this._onDrop}\">\n\t\t</og-splitcontainer>\n\t` : '';\n\n\tlayout() {\n\t\tthis.splitContainer?.layout();\n\t}\n\n}"]}
|
|
@@ -18,6 +18,7 @@ export declare class Tabs extends LitElement {
|
|
|
18
18
|
topLevelComponent: HTMLElement;
|
|
19
19
|
items: TabItem[];
|
|
20
20
|
closable: boolean;
|
|
21
|
+
scrollable: boolean;
|
|
21
22
|
addButton: boolean;
|
|
22
23
|
selectedIndex: number;
|
|
23
24
|
overlay: HTMLDivElement;
|
|
@@ -52,6 +53,7 @@ export declare class Tabs extends LitElement {
|
|
|
52
53
|
_onActionClick(action: actions.Action): void;
|
|
53
54
|
disconnectedCallback(): void;
|
|
54
55
|
_onContainerDragover(e: DragEvent): void;
|
|
56
|
+
renderTabs: () => Generator<unknown, void, unknown>;
|
|
55
57
|
render: () => import("lit-html").TemplateResult<1>;
|
|
56
58
|
}
|
|
57
59
|
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAY,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,qBAAa,QAAS,SAAQ,KAAK;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;gBAEL,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;CAIjD;AAWD,qBACa,IAAK,SAAQ,UAAU;IAEnC,MAAM,CAAC,MAAM,4BAAW;IAExB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;IACxB,MAAM,CAAC,SAAS,SAAM;IACtB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;IACxB,MAAM,CAAC,SAAS,SAAM;IAGtB,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,OAAO,EAAE,CAAC;IAGjB,QAAQ,UAAS;IAGjB,SAAS,UAAS;IAGlB,aAAa,SAAM;IAGnB,OAAO,EAAE,cAAc,CAAC;IAGxB,IAAI,EAAE,cAAc,EAAE,CAAC;IAGvB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,QAAQ,EAAE,gBAAgB,CAAS;IAGnC,KAAK,UAAS;IAGd,KAAK,EAAE,cAAc,CAAC;IAEtB,eAAe,EAAE,YAAY,CAAC;IAE9B,OAAO,8CAAqB;IAE5B,IAAI,IAAI,SAAgC;IAExC,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,IAAI,YAAY,YAA4C;IAE5D,IAAI,SAAS,IACsC,YAAY,CAC9D;IAED,OAAO;IAMP,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW;IASpC,WAAW,oBAAuC;IAElD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ;IAK9C,YAAY,CAAC,EAAE,EAAE,WAAW;IAI5B,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,UAAQ;IAKpD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAyB;IAMpD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ;IAiB9C,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAMzC,WAAW;IAIX,OAAO;IAeP,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,UAAQ;IAQjE,iBAAiB,CAAC,CAAC,EAAE,eAAe;IAqBpC,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAK1C,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAO3C,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAIrC,oBAAoB;IAIpB,oBAAoB,CAAC,CAAC,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAO,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAY,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C,qBAAa,QAAS,SAAQ,KAAK;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;gBAEL,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;CAIjD;AAWD,qBACa,IAAK,SAAQ,UAAU;IAEnC,MAAM,CAAC,MAAM,4BAAW;IAExB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;IACxB,MAAM,CAAC,SAAS,SAAM;IACtB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;IACxB,MAAM,CAAC,SAAS,SAAM;IAGtB,iBAAiB,EAAE,WAAW,CAAC;IAG/B,KAAK,EAAE,OAAO,EAAE,CAAC;IAGjB,QAAQ,UAAS;IAGjB,UAAU,UAAS;IAGnB,SAAS,UAAS;IAGlB,aAAa,SAAM;IAGnB,OAAO,EAAE,cAAc,CAAC;IAGxB,IAAI,EAAE,cAAc,EAAE,CAAC;IAGvB,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAG1B,QAAQ,EAAE,gBAAgB,CAAS;IAGnC,KAAK,UAAS;IAGd,KAAK,EAAE,cAAc,CAAC;IAEtB,eAAe,EAAE,YAAY,CAAC;IAE9B,OAAO,8CAAqB;IAE5B,IAAI,IAAI,SAAgC;IAExC,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,iBAAiB,CAAkB;IAE3C,IAAI,YAAY,YAA4C;IAE5D,IAAI,SAAS,IACsC,YAAY,CAC9D;IAED,OAAO;IAMP,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW;IASpC,WAAW,oBAAuC;IAElD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ;IAK9C,YAAY,CAAC,EAAE,EAAE,WAAW;IAI5B,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,UAAQ;IAKpD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAyB;IAMpD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,UAAQ;IAiB9C,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAUvC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM;IAMzC,WAAW;IAIX,OAAO;IAeP,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,UAAQ;IAQjE,iBAAiB,CAAC,CAAC,EAAE,eAAe;IAqBpC,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAK1C,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;IAO3C,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAIrC,oBAAoB;IAIpB,oBAAoB,CAAC,CAAC,EAAE,SAAS;IAMjC,UAAU,0CA4BR;IAEF,MAAM,6CA4CJ;CAEF"}
|
package/dist/components/tabs.js
CHANGED
|
@@ -30,6 +30,7 @@ let Tabs = Tabs_1 = class Tabs extends LitElement {
|
|
|
30
30
|
constructor() {
|
|
31
31
|
super(...arguments);
|
|
32
32
|
this.closable = false;
|
|
33
|
+
this.scrollable = false;
|
|
33
34
|
this.addButton = false;
|
|
34
35
|
this.selectedIndex = -1;
|
|
35
36
|
this.position = 'top';
|
|
@@ -38,56 +39,66 @@ let Tabs = Tabs_1 = class Tabs extends LitElement {
|
|
|
38
39
|
this._contextMenuTabIndex = -1;
|
|
39
40
|
this._contextMenuItems = [];
|
|
40
41
|
this.hideOverlay = () => dom.hideElement(this.overlay);
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
${map(this.items, (item, index) => item.hidden ? null : html `
|
|
46
|
-
<div
|
|
47
|
-
.draggable="${!this.fixed}"
|
|
48
|
-
class="${classMap({
|
|
42
|
+
this.renderTabs = () => map(this.items, (item, index) => item.hidden ? null : html `
|
|
43
|
+
<div
|
|
44
|
+
.draggable="${!this.fixed}"
|
|
45
|
+
class="${classMap({
|
|
49
46
|
'tab': true,
|
|
50
47
|
'active': index == this.selectedIndex,
|
|
51
48
|
'unsaved': !!item.unsaved,
|
|
52
49
|
'closable': this.closable
|
|
53
50
|
})}"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
</div>
|
|
73
|
-
`)}
|
|
51
|
+
style="${styleMap({ backgroundColor: item.color ? `#${item.color}` : null })}"
|
|
52
|
+
@click="${() => this.selectTab(index, true)}"
|
|
53
|
+
@drop="${() => this._onDrop()}"
|
|
54
|
+
@dragover="${(e) => this._onDragover(e, index)}"
|
|
55
|
+
@dragleave="${() => this.hideOverlay()}"
|
|
56
|
+
@dragstart="${(e) => this._onDragStart(e, index)}"
|
|
57
|
+
@dragstop="${() => this._onDragStop()}"
|
|
58
|
+
@contextmenu="${(e) => this._onContextMenu(e, index)}">
|
|
59
|
+
<div class="tab-text" style="${styleMap({ color: item.color ? colors.getComplmentaryColor('#' + item.color) : null })}">
|
|
60
|
+
${item.icon ? html `<og-icon icon="${item.icon}"></og-icon>` : ``}
|
|
61
|
+
${item.title ?? item.id}
|
|
62
|
+
</div>
|
|
63
|
+
${item.unsaved ? html `<div class="tab-save-mark">●</div>` : ``}
|
|
64
|
+
${this.closable ? html `<div
|
|
65
|
+
class="tab-x"
|
|
66
|
+
@click="${(e) => this._onCrossClick(e, index)}">
|
|
67
|
+
×
|
|
68
|
+
</div>` : ``}
|
|
74
69
|
</div>
|
|
70
|
+
`);
|
|
71
|
+
this.render = () => html `
|
|
72
|
+
${this.items && this.items.length > 0 ? this.scrollable ? html `
|
|
73
|
+
<og-container sliderSize="6">
|
|
74
|
+
<div class="tabs" slot="content"
|
|
75
|
+
@dragend="${() => this.hideOverlay()}">
|
|
76
|
+
${this.renderTabs()}
|
|
77
|
+
</div>
|
|
78
|
+
</og-container>
|
|
79
|
+
` : html `
|
|
80
|
+
<div class="tabs"
|
|
81
|
+
@dragend="${() => this.hideOverlay()}">
|
|
82
|
+
${this.renderTabs()}
|
|
83
|
+
</div>
|
|
75
84
|
` : ``}
|
|
76
85
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
${this.scrollable ? '' : html `
|
|
87
|
+
<div
|
|
88
|
+
class="empty"
|
|
89
|
+
@dragover="${(e) => this._onDragover(e, this.items.length)}"
|
|
90
|
+
@drop="${() => this._onDrop()}"
|
|
91
|
+
@dragleave="${() => this.hideOverlay()}">
|
|
92
|
+
${this.addButton ? html `
|
|
93
|
+
<og-button
|
|
94
|
+
id="btnAdd"
|
|
95
|
+
icon="plus"
|
|
96
|
+
color="gray"
|
|
97
|
+
@click="${() => this.dispatchEvent(new TabEvent('add', { tab: this.items[this.items.length - 1], tabs: this }))}">
|
|
98
|
+
</og-button>
|
|
99
|
+
` : ``}
|
|
100
|
+
</div>
|
|
101
|
+
`}
|
|
91
102
|
|
|
92
103
|
<div class="buttons">
|
|
93
104
|
${map(this.actions, action => html `
|
|
@@ -259,6 +270,9 @@ __decorate([
|
|
|
259
270
|
__decorate([
|
|
260
271
|
property({ type: Boolean })
|
|
261
272
|
], Tabs.prototype, "closable", void 0);
|
|
273
|
+
__decorate([
|
|
274
|
+
property({ type: Boolean })
|
|
275
|
+
], Tabs.prototype, "scrollable", void 0);
|
|
262
276
|
__decorate([
|
|
263
277
|
property({ type: Boolean })
|
|
264
278
|
], Tabs.prototype, "addButton", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { customElement, property, query, queryAll } from \"lit/decorators.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { style } from './tabs.style';\nimport { TabItem } from '../types';\nimport { dom, ListSelectEvent, Menu, actions, ComponentId, MenuItem, VerticalPosition } from \"@omegagrid/core\";\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { TabContainer } from \"./tabContainer\";\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { colors } from \"@omegagrid/core\";\n\nexport class TabEvent extends Event {\n\n\tindex: number;\n\ttabs: Tabs;\n\ttab: TabItem;\n\tuiEvent: UIEvent;\n\n\tconstructor(type: string, args: Partial<TabEvent>) {\n\t\tsuper(`tab.${type}`, {composed: true, bubbles: true, cancelable: true});\n\t\tObject.assign(this, args);\n\t}\n}\n\ntype CloseType = 'close'|'close_all'|'close_others'|'close_right';\n\nconst closeMenuItems: {key: CloseType, value: string, icon?: string}[] = [\n\t{key: 'close', value: \"Close\", icon: \"xmark\"},\n\t{key: 'close_all', value: \"Close All\", icon: \"xmark\"},\n\t{key: 'close_others', value: \"Close Others\", icon: \"xmark\"},\n\t{key: 'close_right', value: \"Close to the Right\", icon: \"xmark\"}\n];\n\n@customElement('og-tabs')\nexport class Tabs extends LitElement {\n\n\tstatic styles = [style];\n\n\tstatic dragParent: Tabs;\n\tstatic dragIndex = -1;\n\tstatic dragTarget: Tabs;\n\tstatic dropIndex = -1;\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Array})\n\titems: TabItem[];\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Number})\n\tselectedIndex = -1;\n\n\t@query('#overlay')\n\toverlay: HTMLDivElement;\n\n\t@queryAll('.tab')\n\ttabs: HTMLDivElement[];\n\n\t@property({type: Array})\n\tactions: actions.Action[];\n\n\t@property({type: String, reflect: true})\n\tposition: VerticalPosition = 'top';\n\n\t@property({type: Boolean})\n\tfixed = false;\n\n\t@query('.empty')\n\tempty: HTMLDivElement;\n\n\tparentContainer: TabContainer;\n\t\n\tmenuRef = createRef<Menu>();\n\n\tget menu() { return this.menuRef.value }\n\n\tprivate _contextMenuTabIndex = -1;\n\tprivate _contextMenuItems: MenuItem[] = [];\n\n\tget selectedItem() { return this.items[this.selectedIndex] }\n\n\tget container() {\n\t\treturn dom.findParent(this, 'og-tabcontainer') as TabContainer;\n\t}\n\n\tupdated() {\n\t\tthis._contextMenuItems = [];\n\t\tif (this.closable) this._contextMenuItems = closeMenuItems;\n\t\tthis.menu.items = this._contextMenuItems;\n\t}\n\n\tpositionOverlay(target?: HTMLElement) {\n\t\tif (!target) return this.hideOverlay();\n\n\t\tconst offset = dom.getElementOffset(target, this);\n\t\tdom.setPosition(this.overlay, {t: offset.top, l: offset.left});\n\t\tdom.setSize(this.overlay, {w: target.offsetWidth, h: target.offsetHeight});\n\t\tdom.showElement(this.overlay);\n\t}\n\t\n\thideOverlay = () => dom.hideElement(this.overlay);\n\n\tselectTab(index: number, dispatchEvent = false) {\n\t\tthis.selectedIndex = index;\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('select', {tab: this.items[index], tabs: this}));\n\t}\n\n\tgetIndexById(id: ComponentId) {\n\t\treturn this.items.findIndex(item => item.id == id);\n\t}\n\n\tselectTabById(id: ComponentId, dispatchEvent = false) {\n\t\tconst index = this.getIndexById(id);\n\t\tif (index > -1) this.selectTab(index, dispatchEvent);\n\t}\n\n\taddTab(item: TabItem, index = this.selectedIndex + 1) {\n\t\tthis.hideOverlay();\n\t\tthis.items.splice(index, 0, item);\n\t\tthis.requestUpdate();\n\t}\n\n\tremoveTab(index: number, dispatchEvent = false) {\n\t\tthis.hideOverlay();\n\t\tif (!this.dispatchEvent(new TabEvent('beforeRemove', {tab: this.items[index], tabs: this, index}))) return;\n\n\t\tconst [deletedItem] = this.items.splice(index, 1);\n\t\t\n\t\tif (this.selectedIndex >= this.items.length) {\n\t\t\tthis.selectTab(this.items.length - 1, true);\n\t\t} else if (this.selectedIndex == index) {\n\t\t\tthis.selectTab(0, true);\n\t\t}\n\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('remove', {tab: deletedItem, tabs: this, index}));\n\t\treturn deletedItem;\n\t}\n\n\t_onDragover(e: DragEvent, index: number) {\n\t\tif (!Tabs.dragParent) return;\n\t\tif (Tabs.dragParent.topLevelComponent != this.topLevelComponent) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tTabs.dropIndex = index;\n\t\tthis.positionOverlay(index >= this.tabs.length ? this.empty : this.tabs[index]);\n\t}\n\n\t_onDragStart(_e: DragEvent, index: number) {\n\t\tTabs.dragParent = this;\n\t\tTabs.dragTarget = null;\n\t\tTabs.dragIndex = index;\n\t}\n\n\t_onDragStop() {\n\t\tTabs.dragParent = null;\n\t}\n\n\t_onDrop() {\n\t\tTabs.dragTarget = this;\n\t\tif (Tabs.dragParent == Tabs.dragTarget) {\n\t\t\tthis.moveTab(Tabs.dragIndex, Tabs.dropIndex, true);\n\t\t} else {\n\t\t\tconst tab = Tabs.dragParent.items[Tabs.dragIndex];\n\t\t\tTabs.dragParent.removeTab(Tabs.dragIndex);\n\t\t\tTabs.dragParent.selectTab(Math.min(Tabs.dragParent.items.length - 1, Tabs.dragIndex), true);\n\t\t\tTabs.dragTarget.addTab(tab, Tabs.dropIndex);\n\t\t\tTabs.dragTarget.selectTab(Tabs.dropIndex, true);\n\t\t\tthis.dispatchEvent(new TabEvent('move', {tab: tab, tabs: this}));\n\t\t}\n\t\tTabs.dragParent = null;\n\t}\n\t\n\tmoveTab(fromIndex: number, toIndex: number, dispatchEvent = false) {\n\t\tif (fromIndex == toIndex) return;\n\t\tconst [movedItem] = this.items.splice(toIndex, 0, this.items.splice(fromIndex, 1)[0]);\n\t\tthis.selectTab(Math.min(toIndex, this.tabs.length - 1), true);\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('move', {tab: movedItem, tabs: this}));\n\t}\n\n\t_onMenuItemSelect(e: ListSelectEvent) {\n\t\tconst key = this._contextMenuItems[e.index].key;\n\t\tif (key == 'close') {\n\t\t\tthis.removeTab(this._contextMenuTabIndex, true);\n\t\t\tif (this.selectedIndex >= this.items.length)\n\t\t\t\tthis.selectTab(Math.max(this.items.length - 1, 0), true);\n\t\t} else if (key == 'close_all') {\n\t\t\twhile (this.items.length > 0) this.removeTab(0, true);\n\t\t} else if (key == 'close_others') {\n\t\t\tfor (let i = this.items.length - 1; i >= 0; i--) {\n\t\t\t\tif (i != this._contextMenuTabIndex) this.removeTab(i, true);\n\t\t\t}\n\t\t\tthis.selectTab(0, true);\n\t\t} else if (key == 'close_right') {\n\t\t\twhile (this.items.length > this._contextMenuTabIndex + 1)\n\t\t\t\tthis.removeTab(this._contextMenuTabIndex + 1, true);\n\t\t\tif (this.selectedIndex >= this.items.length)\n\t\t\t\tthis.selectTab(Math.max(this.items.length - 1, 0), true);\n\t\t}\n\t}\n\n\t_onCrossClick(e: MouseEvent, index: number) {\n\t\te.stopPropagation();\n\t\tthis.removeTab(index, true);\n\t}\n\n\t_onContextMenu(e: MouseEvent, index: number) {\n\t\te.preventDefault();\n\t\tthis._contextMenuTabIndex = index;\n\t\tif (this.menu.items.length > 0) this.menu.openAt(e.pageX, e.pageY);\n\t\tthis.dispatchEvent(new TabEvent('contextmenu', {tab: this.items[index], tabs: this, uiEvent: e}));\n\t}\n\n\t_onActionClick(action: actions.Action) {\n\t\tactions.dispatchActionEvent(this, 'tabs', action);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.menu?.remove();\n\t}\n\n\t_onContainerDragover(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t}\n\n\n\trender = () => html`\n\t\t${this.items && this.items.length > 0 ? html`\n\t\t<div class=\"tabs\"\n\t\t\t@dragend=\"${() => this.hideOverlay()}\">\n\t\t\t${map(this.items, (item, index) => item.hidden ? null : html`\n\t\t\t\t<div\n\t\t\t\t\t.draggable=\"${!this.fixed}\"\n\t\t\t\t\tclass=\"${classMap({\n\t\t\t\t\t\t'tab': true, \n\t\t\t\t\t\t'active': index == this.selectedIndex, \n\t\t\t\t\t\t'unsaved': !!item.unsaved,\n\t\t\t\t\t\t'closable': this.closable\n\t\t\t\t\t})}\"\n\t\t\t\t\tstyle=\"${styleMap({backgroundColor: item.color ? `#${item.color}` : null})}\"\n\t\t\t\t\t@click=\"${() => this.selectTab(index, true)}\"\n\t\t\t\t\t@drop=\"${() => this._onDrop()}\"\n\t\t\t\t\t@dragover=\"${(e: DragEvent) => this._onDragover(e, index)}\"\n\t\t\t\t\t@dragleave=\"${() => this.hideOverlay()}\"\n\t\t\t\t\t@dragstart=\"${(e: DragEvent) => this._onDragStart(e, index)}\"\n\t\t\t\t\t@dragstop=\"${() => this._onDragStop()}\"\n\t\t\t\t\t@contextmenu=\"${(e: MouseEvent) => this._onContextMenu(e, index)}\">\n\t\t\t\t\t<div class=\"tab-text\" style=\"${styleMap({color: item.color ? colors.getComplmentaryColor('#' + item.color) : null})}\">\n\t\t\t\t\t\t${item.icon ? html`<og-icon icon=\"${item.icon}\"></og-icon>` : ``}\n\t\t\t\t\t\t${item.title ?? item.id}\n\t\t\t\t\t</div>\n\t\t\t\t\t${item.unsaved ? html`<div class=\"tab-save-mark\">●</div>` : ``}\n\t\t\t\t\t${this.closable ? html`<div\n\t\t\t\t\t\tclass=\"tab-x\"\n\t\t\t\t\t\t@click=\"${(e: MouseEvent) => this._onCrossClick(e, index)}\">\n\t\t\t\t\t\t×\n\t\t\t\t\t</div>` : ``}\n\t\t\t\t</div>\n\t\t\t`)}\n\t\t</div>\n\t\t` : ``}\n\n\t\t<div\n\t\t\tclass=\"empty\"\n\t\t\t@dragover=\"${(e: DragEvent) => this._onDragover(e, this.items.length)}\"\n\t\t\t@drop=\"${() => this._onDrop()}\"\n\t\t\t@dragleave=\"${() => this.hideOverlay()}\">\n\t\t\t${this.addButton ? html`\n\t\t\t\t<og-button\n\t\t\t\t\tid=\"btnAdd\"\n\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t@click=\"${() => this.dispatchEvent(new TabEvent('add', {tab: this.items[this.items.length - 1], tabs: this}))}\">\n\t\t\t\t</og-button>\n\t\t\t` : ``}\n\t\t</div>\n\t\t\n\t\t<div class=\"buttons\">\n\t\t\t${map(this.actions, action => html`\n\t\t\t\t<og-icon .icon=\"${action.icon}\" @click=\"${() => this._onActionClick(action)}\"></og-icon>\n\t\t\t`)}\n\t\t</div>\n\n\t\t<div id=\"overlay\" style=\"display: none\"></div>\n\n\t\t<og-menu ${ref(this.menuRef)} \n\t\t\tstyle=\"display: none; z-index: 2000\"\n\t\t\t@select=${(e: ListSelectEvent) => this._onMenuItemSelect(e)}>\n\t\t</og-menu>\n\t`;\n\n}"]}
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from \"lit\";\nimport { customElement, property, query, queryAll } from \"lit/decorators.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { style } from './tabs.style';\nimport { TabItem } from '../types';\nimport { dom, ListSelectEvent, Menu, actions, ComponentId, MenuItem, VerticalPosition } from \"@omegagrid/core\";\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { TabContainer } from \"./tabContainer\";\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { colors } from \"@omegagrid/core\";\n\nexport class TabEvent extends Event {\n\n\tindex: number;\n\ttabs: Tabs;\n\ttab: TabItem;\n\tuiEvent: UIEvent;\n\n\tconstructor(type: string, args: Partial<TabEvent>) {\n\t\tsuper(`tab.${type}`, {composed: true, bubbles: true, cancelable: true});\n\t\tObject.assign(this, args);\n\t}\n}\n\ntype CloseType = 'close'|'close_all'|'close_others'|'close_right';\n\nconst closeMenuItems: {key: CloseType, value: string, icon?: string}[] = [\n\t{key: 'close', value: \"Close\", icon: \"xmark\"},\n\t{key: 'close_all', value: \"Close All\", icon: \"xmark\"},\n\t{key: 'close_others', value: \"Close Others\", icon: \"xmark\"},\n\t{key: 'close_right', value: \"Close to the Right\", icon: \"xmark\"}\n];\n\n@customElement('og-tabs')\nexport class Tabs extends LitElement {\n\n\tstatic styles = [style];\n\n\tstatic dragParent: Tabs;\n\tstatic dragIndex = -1;\n\tstatic dragTarget: Tabs;\n\tstatic dropIndex = -1;\n\n\t@property({type: Object})\n\ttopLevelComponent: HTMLElement;\n\n\t@property({type: Array})\n\titems: TabItem[];\n\n\t@property({type: Boolean})\n\tclosable = false;\n\n\t@property({type: Boolean})\n\tscrollable = false;\n\n\t@property({type: Boolean})\n\taddButton = false;\n\n\t@property({type: Number})\n\tselectedIndex = -1;\n\n\t@query('#overlay')\n\toverlay: HTMLDivElement;\n\n\t@queryAll('.tab')\n\ttabs: HTMLDivElement[];\n\n\t@property({type: Array})\n\tactions: actions.Action[];\n\n\t@property({type: String, reflect: true})\n\tposition: VerticalPosition = 'top';\n\n\t@property({type: Boolean})\n\tfixed = false;\n\n\t@query('.empty')\n\tempty: HTMLDivElement;\n\n\tparentContainer: TabContainer;\n\t\n\tmenuRef = createRef<Menu>();\n\n\tget menu() { return this.menuRef.value }\n\n\tprivate _contextMenuTabIndex = -1;\n\tprivate _contextMenuItems: MenuItem[] = [];\n\n\tget selectedItem() { return this.items[this.selectedIndex] }\n\n\tget container() {\n\t\treturn dom.findParent(this, 'og-tabcontainer') as TabContainer;\n\t}\n\n\tupdated() {\n\t\tthis._contextMenuItems = [];\n\t\tif (this.closable) this._contextMenuItems = closeMenuItems;\n\t\tthis.menu.items = this._contextMenuItems;\n\t}\n\n\tpositionOverlay(target?: HTMLElement) {\n\t\tif (!target) return this.hideOverlay();\n\n\t\tconst offset = dom.getElementOffset(target, this);\n\t\tdom.setPosition(this.overlay, {t: offset.top, l: offset.left});\n\t\tdom.setSize(this.overlay, {w: target.offsetWidth, h: target.offsetHeight});\n\t\tdom.showElement(this.overlay);\n\t}\n\t\n\thideOverlay = () => dom.hideElement(this.overlay);\n\n\tselectTab(index: number, dispatchEvent = false) {\n\t\tthis.selectedIndex = index;\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('select', {tab: this.items[index], tabs: this}));\n\t}\n\n\tgetIndexById(id: ComponentId) {\n\t\treturn this.items.findIndex(item => item.id == id);\n\t}\n\n\tselectTabById(id: ComponentId, dispatchEvent = false) {\n\t\tconst index = this.getIndexById(id);\n\t\tif (index > -1) this.selectTab(index, dispatchEvent);\n\t}\n\n\taddTab(item: TabItem, index = this.selectedIndex + 1) {\n\t\tthis.hideOverlay();\n\t\tthis.items.splice(index, 0, item);\n\t\tthis.requestUpdate();\n\t}\n\n\tremoveTab(index: number, dispatchEvent = false) {\n\t\tthis.hideOverlay();\n\t\tif (!this.dispatchEvent(new TabEvent('beforeRemove', {tab: this.items[index], tabs: this, index}))) return;\n\n\t\tconst [deletedItem] = this.items.splice(index, 1);\n\t\t\n\t\tif (this.selectedIndex >= this.items.length) {\n\t\t\tthis.selectTab(this.items.length - 1, true);\n\t\t} else if (this.selectedIndex == index) {\n\t\t\tthis.selectTab(0, true);\n\t\t}\n\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('remove', {tab: deletedItem, tabs: this, index}));\n\t\treturn deletedItem;\n\t}\n\n\t_onDragover(e: DragEvent, index: number) {\n\t\tif (!Tabs.dragParent) return;\n\t\tif (Tabs.dragParent.topLevelComponent != this.topLevelComponent) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t\tTabs.dropIndex = index;\n\t\tthis.positionOverlay(index >= this.tabs.length ? this.empty : this.tabs[index]);\n\t}\n\n\t_onDragStart(_e: DragEvent, index: number) {\n\t\tTabs.dragParent = this;\n\t\tTabs.dragTarget = null;\n\t\tTabs.dragIndex = index;\n\t}\n\n\t_onDragStop() {\n\t\tTabs.dragParent = null;\n\t}\n\n\t_onDrop() {\n\t\tTabs.dragTarget = this;\n\t\tif (Tabs.dragParent == Tabs.dragTarget) {\n\t\t\tthis.moveTab(Tabs.dragIndex, Tabs.dropIndex, true);\n\t\t} else {\n\t\t\tconst tab = Tabs.dragParent.items[Tabs.dragIndex];\n\t\t\tTabs.dragParent.removeTab(Tabs.dragIndex);\n\t\t\tTabs.dragParent.selectTab(Math.min(Tabs.dragParent.items.length - 1, Tabs.dragIndex), true);\n\t\t\tTabs.dragTarget.addTab(tab, Tabs.dropIndex);\n\t\t\tTabs.dragTarget.selectTab(Tabs.dropIndex, true);\n\t\t\tthis.dispatchEvent(new TabEvent('move', {tab: tab, tabs: this}));\n\t\t}\n\t\tTabs.dragParent = null;\n\t}\n\t\n\tmoveTab(fromIndex: number, toIndex: number, dispatchEvent = false) {\n\t\tif (fromIndex == toIndex) return;\n\t\tconst [movedItem] = this.items.splice(toIndex, 0, this.items.splice(fromIndex, 1)[0]);\n\t\tthis.selectTab(Math.min(toIndex, this.tabs.length - 1), true);\n\t\tthis.requestUpdate();\n\t\tif (dispatchEvent) this.dispatchEvent(new TabEvent('move', {tab: movedItem, tabs: this}));\n\t}\n\n\t_onMenuItemSelect(e: ListSelectEvent) {\n\t\tconst key = this._contextMenuItems[e.index].key;\n\t\tif (key == 'close') {\n\t\t\tthis.removeTab(this._contextMenuTabIndex, true);\n\t\t\tif (this.selectedIndex >= this.items.length)\n\t\t\t\tthis.selectTab(Math.max(this.items.length - 1, 0), true);\n\t\t} else if (key == 'close_all') {\n\t\t\twhile (this.items.length > 0) this.removeTab(0, true);\n\t\t} else if (key == 'close_others') {\n\t\t\tfor (let i = this.items.length - 1; i >= 0; i--) {\n\t\t\t\tif (i != this._contextMenuTabIndex) this.removeTab(i, true);\n\t\t\t}\n\t\t\tthis.selectTab(0, true);\n\t\t} else if (key == 'close_right') {\n\t\t\twhile (this.items.length > this._contextMenuTabIndex + 1)\n\t\t\t\tthis.removeTab(this._contextMenuTabIndex + 1, true);\n\t\t\tif (this.selectedIndex >= this.items.length)\n\t\t\t\tthis.selectTab(Math.max(this.items.length - 1, 0), true);\n\t\t}\n\t}\n\n\t_onCrossClick(e: MouseEvent, index: number) {\n\t\te.stopPropagation();\n\t\tthis.removeTab(index, true);\n\t}\n\n\t_onContextMenu(e: MouseEvent, index: number) {\n\t\te.preventDefault();\n\t\tthis._contextMenuTabIndex = index;\n\t\tif (this.menu.items.length > 0) this.menu.openAt(e.pageX, e.pageY);\n\t\tthis.dispatchEvent(new TabEvent('contextmenu', {tab: this.items[index], tabs: this, uiEvent: e}));\n\t}\n\n\t_onActionClick(action: actions.Action) {\n\t\tactions.dispatchActionEvent(this, 'tabs', action);\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.menu?.remove();\n\t}\n\n\t_onContainerDragover(e: DragEvent) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\te.dataTransfer.dropEffect = 'move';\n\t}\n\n\trenderTabs = () => map(this.items, (item, index) => item.hidden ? null : html`\n\t\t<div\n\t\t\t.draggable=\"${!this.fixed}\"\n\t\t\tclass=\"${classMap({\n\t\t\t\t'tab': true, \n\t\t\t\t'active': index == this.selectedIndex, \n\t\t\t\t'unsaved': !!item.unsaved,\n\t\t\t\t'closable': this.closable\n\t\t\t})}\"\n\t\t\tstyle=\"${styleMap({backgroundColor: item.color ? `#${item.color}` : null})}\"\n\t\t\t@click=\"${() => this.selectTab(index, true)}\"\n\t\t\t@drop=\"${() => this._onDrop()}\"\n\t\t\t@dragover=\"${(e: DragEvent) => this._onDragover(e, index)}\"\n\t\t\t@dragleave=\"${() => this.hideOverlay()}\"\n\t\t\t@dragstart=\"${(e: DragEvent) => this._onDragStart(e, index)}\"\n\t\t\t@dragstop=\"${() => this._onDragStop()}\"\n\t\t\t@contextmenu=\"${(e: MouseEvent) => this._onContextMenu(e, index)}\">\n\t\t\t<div class=\"tab-text\" style=\"${styleMap({color: item.color ? colors.getComplmentaryColor('#' + item.color) : null})}\">\n\t\t\t\t${item.icon ? html`<og-icon icon=\"${item.icon}\"></og-icon>` : ``}\n\t\t\t\t${item.title ?? item.id}\n\t\t\t</div>\n\t\t\t${item.unsaved ? html`<div class=\"tab-save-mark\">●</div>` : ``}\n\t\t\t${this.closable ? html`<div\n\t\t\t\tclass=\"tab-x\"\n\t\t\t\t@click=\"${(e: MouseEvent) => this._onCrossClick(e, index)}\">\n\t\t\t\t×\n\t\t\t</div>` : ``}\n\t\t</div>\n\t`)\n\n\trender = () => html`\n\t\t${this.items && this.items.length > 0 ? this.scrollable ? html`\n\t\t\t<og-container sliderSize=\"6\">\n\t\t\t\t<div class=\"tabs\" slot=\"content\"\n\t\t\t\t\t@dragend=\"${() => this.hideOverlay()}\">\n\t\t\t\t\t${this.renderTabs()}\n\t\t\t\t</div>\n\t\t\t</og-container>\n\t\t\t` : html`\n\t\t\t<div class=\"tabs\"\n\t\t\t\t@dragend=\"${() => this.hideOverlay()}\">\n\t\t\t\t${this.renderTabs()}\n\t\t\t</div>\n\t\t` : ``}\n\n\t\t${this.scrollable ? '' : html`\n\t\t\t<div\n\t\t\t\tclass=\"empty\"\n\t\t\t\t@dragover=\"${(e: DragEvent) => this._onDragover(e, this.items.length)}\"\n\t\t\t\t@drop=\"${() => this._onDrop()}\"\n\t\t\t\t@dragleave=\"${() => this.hideOverlay()}\">\n\t\t\t\t${this.addButton ? html`\n\t\t\t\t\t<og-button\n\t\t\t\t\t\tid=\"btnAdd\"\n\t\t\t\t\t\ticon=\"plus\"\n\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t@click=\"${() => this.dispatchEvent(new TabEvent('add', {tab: this.items[this.items.length - 1], tabs: this}))}\">\n\t\t\t\t\t</og-button>\n\t\t\t\t` : ``}\n\t\t\t</div>\n\t\t`}\n\t\t\n\t\t<div class=\"buttons\">\n\t\t\t${map(this.actions, action => html`\n\t\t\t\t<og-icon .icon=\"${action.icon}\" @click=\"${() => this._onActionClick(action)}\"></og-icon>\n\t\t\t`)}\n\t\t</div>\n\n\t\t<div id=\"overlay\" style=\"display: none\"></div>\n\n\t\t<og-menu ${ref(this.menuRef)} \n\t\t\tstyle=\"display: none; z-index: 2000\"\n\t\t\t@select=${(e: ListSelectEvent) => this._onMenuItemSelect(e)}>\n\t\t</og-menu>\n\t`;\n\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.style.d.ts","sourceRoot":"","sources":["../../src/components/tabs.style.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"tabs.style.d.ts","sourceRoot":"","sources":["../../src/components/tabs.style.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK,yBAoJjB,CAAC"}
|
|
@@ -26,6 +26,11 @@ export const style = css `
|
|
|
26
26
|
flex-direction: row;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
og-container {
|
|
30
|
+
height: ${constants.TAB_PANEL_HEIGHT - 1}px;
|
|
31
|
+
flex: 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
29
34
|
:host([position="top"]) .tab {
|
|
30
35
|
border-top: ${constants.TAB_PANEL_BORDER}px solid var(--og-tab-panel-background-color);
|
|
31
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.style.js","sourceRoot":"","sources":["../../src/components/tabs.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;gBAOR,SAAS,CAAC,gBAAgB;iBACzB,SAAS,CAAC,gBAAgB;;;;;;;;;;YAU/B,SAAS,CAAC,gBAAgB,GAAG,CAAC;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tabs.style.js","sourceRoot":"","sources":["../../src/components/tabs.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;gBAOR,SAAS,CAAC,gBAAgB;iBACzB,SAAS,CAAC,gBAAgB;;;;;;;;;;YAU/B,SAAS,CAAC,gBAAgB,GAAG,CAAC;;;;;;;;YAQ9B,SAAS,CAAC,gBAAgB,GAAG,CAAC;;;;;gBAK1B,SAAS,CAAC,gBAAgB;;;;;;;;mBAQvB,SAAS,CAAC,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA+BjC,SAAS,CAAC,gBAAgB;;;;;;;;;;;;aAYzB,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkErE,CAAC","sourcesContent":["import { device } from \"@omegagrid/core\";\nimport constants from \"../constants\";\nimport { css, unsafeCSS } from \"lit\";\n\nexport const style = css`\n\t* {\n\t\tbox-sizing: border-box;\n\t}\n\n\t:host {\n\t\tcolor: var(--og-text-color);\n\t\tmin-height: ${constants.TAB_PANEL_HEIGHT}px;\n\t\tline-height: ${constants.TAB_PANEL_HEIGHT}px;\n\t\tbackground: var(--og-tab-panel-background-color);\n\t\tborder-bottom: 1px solid var(--og-tab-border-color);\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tposition: relative;\n\t\tfont-size: var(--og-font-size);\n\t}\n\n\t.tabs {\n\t\theight: ${constants.TAB_PANEL_HEIGHT - 1}px;\n\t\tflex: 0;\n\t\twhite-space: nowrap;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t}\n\n\tog-container {\n\t\theight: ${constants.TAB_PANEL_HEIGHT - 1}px;\n\t\tflex: 1;\n\t}\n\n\t:host([position=\"top\"]) .tab {\n\t\tborder-top: ${constants.TAB_PANEL_BORDER}px solid var(--og-tab-panel-background-color);\n\t}\n\n\t:host([position=\"top\"]) .tab:hover, :host([position=\"top\"]) .tab.active {\n\t\tborder-top-color: var(--og-accent-color);\n\t}\n\n\t:host([position=\"bottom\"]) .tab {\n\t\tborder-bottom: ${constants.TAB_PANEL_BORDER}px solid var(--og-tab-panel-background-color);\n\t}\n\n\t:host([position=\"bottom\"]) .tab:hover, :host([position=\"bottom\"]) .tab.active {\n\t\tborder-bottom-color: var(--og-accent-color);\n\t}\n\n\t:host(.inactive) .tab.active {\n\t\tborder-top-color: var(--og-tab-border-color);\n\t\tborder-bottom-color: var(--og-tab-border-color);\n\t}\n\n\t.tab {\n\t\tborder-right: 1px solid var(--og-tab-border-color);\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\theight: 100%;\n\t\tbackground: var(--og-tab-background-color);\n\t\tcursor: pointer;\n\t\tmargin-right: 1px;\n\t\tpadding-left: 7px;\n\t\tpadding-right: 7px;\n\t\tposition: relative;\n\t}\n\n\t.tab.closable {\n\t\tpadding-right: 20px;\n\t}\n\n\t.tab.active {\n\t\tbackground-color: var(--og-tab-background-color-active);\n\t\theight: ${constants.TAB_PANEL_HEIGHT}px;\n\t\tfont-weight: bold;\n\t}\n\n\t.tab:hover .tab-x {\n\t\tdisplay: block;\n\t}\n\n\t.tab-x {\n\t\tfont-size: 14px;\n\t\tposition: absolute;\n\t\tright: 2px;\n\t\tdisplay: ${unsafeCSS(device.detect() == \"mobile\" ? \"block\" : \"none\")};\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tline-height: 16px;\n\t\tmargin: 6px 0 0 5px;\n\t\ttext-align: center;\n\t\tborder-radius: 50%;\n\t}\n\n\t.tab-save-mark {\n\t\theight: 16px;\n\t\tline-height: 16px;\n\t\tmargin: 6px 0 0 5px;\n\t}\n\n\t.tab.closable:hover .tab-save-mark {\n\t\tdisplay: none;\n\t}\n\n\t.tab.closable .tab-save-mark {\n\t\tposition: absolute;\n\t\tright: 5px;\n\t}\n\n\t.tab.unsaved {\n\t\tcolor: #959d00;\n\t}\n\n\t.tab-x og-icon {\n\t\tdisplay: block;\n\t}\n\n\t.tab-x:hover {\n\t\tbackground-color: var(--og-accent-color-alpha-30);\n\t}\n\n\t.empty {\n\t\tflex: 1;\n\t\theight: 100%;\n\t}\n\t\n\t.buttons {\n\t\tflex: 0;\n\t\theight: 100%;\n\t\tpadding: 0 10px 0 10px;\n\t}\n\n\t.buttons og-icon {\n\t\tcursor: pointer;\n\t}\n\n\t.buttons og-icon:hover {\n\t\tcolor: var(--og-text-color-2)\n\t}\n\n\t#overlay {\n\t\tbackground-color: var(--og-accent-color);\n\t\topacity: 0.5;\n\t\tpointer-events: none;\n\t}\n\n\t#btnAdd {\n\t\tmargin-left: 5px;\n\t\tline-height: 0;\n\t}\n\n`;"]}
|
package/dist/constants.d.ts
CHANGED
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,wBAIC"}
|
package/dist/constants.js
CHANGED
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAe;IACd,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,CAAC;IACnB,GAAG,aAAa;CAChB,CAAA","sourcesContent":["import { constants as coreConstants } from '@omegagrid/core';\n\nexport default {\n\tTAB_PANEL_HEIGHT: 30,\n\tTAB_PANEL_BORDER:
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAe;IACd,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,CAAC;IACnB,GAAG,aAAa;CAChB,CAAA","sourcesContent":["import { constants as coreConstants } from '@omegagrid/core';\n\nexport default {\n\tTAB_PANEL_HEIGHT: 30,\n\tTAB_PANEL_BORDER: 1,\n\t...coreConstants\n}"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omegagrid/tabs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
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.
|
|
30
|
+
"@omegagrid/core": "^0.8.1",
|
|
31
31
|
"lit": "^3.1.1",
|
|
32
32
|
"lit-html": "^3.1.1",
|
|
33
33
|
"ts-debounce": "^4.0.0"
|