@omegagrid/tabs 0.2.5

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.
Files changed (41) hide show
  1. package/dist/components/index.d.ts +4 -0
  2. package/dist/components/index.d.ts.map +1 -0
  3. package/dist/components/index.js +20 -0
  4. package/dist/components/index.js.map +1 -0
  5. package/dist/components/tabContainer.d.ts +48 -0
  6. package/dist/components/tabContainer.d.ts.map +1 -0
  7. package/dist/components/tabContainer.js +219 -0
  8. package/dist/components/tabContainer.js.map +1 -0
  9. package/dist/components/tabContainer.style.d.ts +2 -0
  10. package/dist/components/tabContainer.style.d.ts.map +1 -0
  11. package/dist/components/tabContainer.style.js +33 -0
  12. package/dist/components/tabContainer.style.js.map +1 -0
  13. package/dist/components/tabSplitContainer.d.ts +41 -0
  14. package/dist/components/tabSplitContainer.d.ts.map +1 -0
  15. package/dist/components/tabSplitContainer.js +281 -0
  16. package/dist/components/tabSplitContainer.js.map +1 -0
  17. package/dist/components/tabs.d.ts +55 -0
  18. package/dist/components/tabs.d.ts.map +1 -0
  19. package/dist/components/tabs.js +287 -0
  20. package/dist/components/tabs.js.map +1 -0
  21. package/dist/components/tabs.style.d.ts +2 -0
  22. package/dist/components/tabs.style.d.ts.map +1 -0
  23. package/dist/components/tabs.style.js +152 -0
  24. package/dist/components/tabs.style.js.map +1 -0
  25. package/dist/constants.d.ts +44 -0
  26. package/dist/constants.d.ts.map +1 -0
  27. package/dist/constants.js +9 -0
  28. package/dist/constants.js.map +1 -0
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +20 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/model/index.d.ts +25 -0
  34. package/dist/model/index.d.ts.map +1 -0
  35. package/dist/model/index.js +96 -0
  36. package/dist/model/index.js.map +1 -0
  37. package/dist/types.d.ts +9 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/dist/types.js +3 -0
  40. package/dist/types.js.map +1 -0
  41. package/package.json +58 -0
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var TabSplitContainer_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TabSplitContainer = void 0;
11
+ const lit_1 = require("lit");
12
+ const decorators_js_1 = require("lit/decorators.js");
13
+ const core_1 = require("@omegagrid/core");
14
+ const tabContainer_1 = require("./tabContainer");
15
+ const tabs_1 = require("./tabs");
16
+ const model_1 = require("../model");
17
+ let TabSplitContainer = TabSplitContainer_1 = class TabSplitContainer extends lit_1.LitElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.addButton = false;
21
+ this.closable = false;
22
+ this.singleActive = false;
23
+ this.tabPosition = 'top';
24
+ this.tabContainers = new Set();
25
+ this._createTabContainer = (containerIndex) => {
26
+ var _a, _b;
27
+ const component = core_1.dom.createElement('og-tabcontainer');
28
+ component.inactive = this.singleActive;
29
+ component.index = containerIndex;
30
+ component.parentContainer = this;
31
+ component.tabPosition = this.tabPosition;
32
+ this.model.items = (_a = this.model.items) !== null && _a !== void 0 ? _a : [];
33
+ component.closable = this.closable;
34
+ component.addButton = this.addButton;
35
+ component.style.height = '100%';
36
+ const item = this.model.items[containerIndex];
37
+ component.items = (_b = item === null || item === void 0 ? void 0 : item.tabs) !== null && _b !== void 0 ? _b : [];
38
+ component.selectedIndex = item.selectedIndex;
39
+ component.topLevelComponent = this.topLevelComponent;
40
+ //component.actions = [{key: 'split', icon: 'table-columns'}];
41
+ // component.addEventListener('tabs.action.split', (e) => {
42
+ // e.stopPropagation();
43
+ // const newItem: TabSplitContainerItem = {size: null, tabs: []};
44
+ // this.model.items.splice(containerIndex + 1, 0, newItem);
45
+ // this.model.items.forEach(item => item.size = null);
46
+ // this.requestUpdate();
47
+ // });
48
+ component.addEventListener('tab.remove', () => {
49
+ if (component.tabs.items.length == 0) {
50
+ if (this.model.items.length > 1)
51
+ this.model.items.splice(containerIndex, 1);
52
+ this.model.items.forEach(item => item.size = null);
53
+ this.requestUpdate();
54
+ }
55
+ this.removeEmptyContainers();
56
+ });
57
+ component.addEventListener('tab.move', () => {
58
+ this.removeEmptyContainers();
59
+ });
60
+ component.addEventListener('tab.select', (e) => {
61
+ if (e.tabs.topLevelComponent == this.topLevelComponent && item) {
62
+ item.selectedIndex = e.tabs.selectedIndex;
63
+ if (this.singleActive) {
64
+ this._activeTabContainer = component;
65
+ this._activeTab = e.tab;
66
+ this.updateActiveTab();
67
+ }
68
+ }
69
+ });
70
+ component.createComponent = this.createComponent;
71
+ return component;
72
+ };
73
+ this._createSplitContainer = (containerIndex) => {
74
+ const component = core_1.dom.createElement('og-tabsplitcontainer');
75
+ component.style.height = '100%';
76
+ component.addButton = this.addButton;
77
+ component.tabPosition = this.tabPosition;
78
+ component.model = this.model.items[containerIndex].container;
79
+ component.createComponent = this.createComponent;
80
+ component.topLevelComponent = this.topLevelComponent;
81
+ component.closable = this.closable;
82
+ component.singleActive = this.singleActive;
83
+ return component;
84
+ };
85
+ this._createSplitContainerComponent = (id) => new Promise((resolve, reject) => {
86
+ const containerIndex = id;
87
+ const container = this.model.items ? this.model.items[containerIndex] : null;
88
+ if (container) {
89
+ const containerComponent = container.container
90
+ ? this._createSplitContainer(containerIndex)
91
+ : this._createTabContainer(containerIndex);
92
+ this.tabContainers.add(containerComponent);
93
+ resolve(containerComponent);
94
+ }
95
+ else {
96
+ reject();
97
+ }
98
+ });
99
+ this._onDrop = (e) => {
100
+ if (!tabContainer_1.TabContainer.dragParent && !tabs_1.Tabs.dragParent)
101
+ return;
102
+ if (tabContainer_1.TabContainer.dragParent.topLevelComponent != this.topLevelComponent && tabs_1.Tabs.dragParent.topLevelComponent != this.topLevelComponent)
103
+ return;
104
+ e.stopImmediatePropagation();
105
+ const tabContainer1 = tabContainer_1.TabContainer.dragParent;
106
+ const tabContainer2 = tabContainer_1.TabContainer.dropTarget;
107
+ tabContainer_1.TabContainer.dragParent = null;
108
+ tabContainer_1.TabContainer.dropTarget = null;
109
+ if (!tabContainer1 || !tabContainer2) {
110
+ if (tabContainer1 && tabContainer1.parentContainer.model.items[tabContainer1.index].tabs.length == 0) {
111
+ tabContainer1.parentContainer.model.items.splice(tabContainer1.index, 1);
112
+ }
113
+ tabContainer1.parentContainer.splitContainer.requestUpdate();
114
+ return;
115
+ }
116
+ const tab = tabContainer1.tabs.removeTab(tabs_1.Tabs.dragIndex, false);
117
+ const dropOrientation = tabContainer_1.TabContainer.dropPosition
118
+ ? ['left', 'right'].includes(tabContainer_1.TabContainer.dropPosition) ? 'horizontal' : 'vertical'
119
+ : null;
120
+ if (tabContainer2 && tabContainer2.parentContainer) {
121
+ if (dropOrientation == null) {
122
+ const item = tabContainer2.parentContainer.model.items[tabContainer2.index];
123
+ item.tabs.push(tab);
124
+ }
125
+ else if (dropOrientation == tabContainer2.parentContainer.model.orientation) {
126
+ tabContainer2.parentContainer.model.items.splice(tabContainer2.index + (['right', 'bottom'].includes(tabContainer_1.TabContainer.dropPosition) ? 1 : 0), 0, { tabs: [tab] });
127
+ }
128
+ else {
129
+ const item = tabContainer2.parentContainer.model.items[tabContainer2.index];
130
+ item.container = new model_1.TabSplitContainerModel({
131
+ orientation: dropOrientation,
132
+ items: [{
133
+ tabs: item.tabs
134
+ }, {
135
+ tabs: [tab]
136
+ }]
137
+ });
138
+ }
139
+ tabContainer2.parentContainer.splitContainer.requestUpdate();
140
+ }
141
+ if (tabContainer1 && tabContainer1.parentContainer) {
142
+ for (let i = tabContainer1.parentContainer.model.items.length - 1; i >= 0; i--) {
143
+ const item = tabContainer1.parentContainer.model.items[i];
144
+ if ((!item.tabs || item.tabs.length == 0) && !item.container) {
145
+ tabContainer1.parentContainer.model.items.splice(i, 1);
146
+ }
147
+ }
148
+ tabContainer1.parentContainer.splitContainer.requestUpdate();
149
+ }
150
+ };
151
+ this.render = () => {
152
+ var _a, _b;
153
+ return this.model ? (0, lit_1.html) `
154
+ <og-splitcontainer
155
+ orientation=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.orientation}
156
+ .items="${(_b = this.model.items) !== null && _b !== void 0 ? _b : []}"
157
+ .createComponent="${this._createSplitContainerComponent}"
158
+ @drop="${this._onDrop}">
159
+ </og-splitcontainer>
160
+ ` : '';
161
+ };
162
+ }
163
+ get activeTabContainer() { return this._activeTabContainer; }
164
+ get activeTab() { return this._activeTab; }
165
+ walk(cb) {
166
+ this.tabContainers.forEach(container => {
167
+ if (container instanceof TabSplitContainer_1)
168
+ container.walk(cb);
169
+ else {
170
+ const res = cb(this, container);
171
+ if (res === false)
172
+ return;
173
+ }
174
+ });
175
+ }
176
+ willUpdate() {
177
+ if (!this.topLevelComponent)
178
+ this.topLevelComponent = this;
179
+ if (this.model && !this.model.orientation)
180
+ this.model.orientation = 'horizontal';
181
+ }
182
+ updateTabs() { this.tabContainers.forEach(tabContainer => tabContainer.updateTabs()); }
183
+ updateTab(id, tab) {
184
+ this.walk((_splitContainer, tabContainer) => {
185
+ const tabIndex = tabContainer.items.findIndex(item => item.id == id);
186
+ const currentTab = tabContainer.tabs.items[tabIndex];
187
+ if (currentTab) {
188
+ Object.assign(currentTab, tab);
189
+ if (tabContainer.selectedIndex == tabIndex && id != tab.id) {
190
+ // component is visible and id has changed
191
+ this.updateTabs();
192
+ tabContainer.loadComponent(currentTab.id);
193
+ tabContainer.components.delete(id);
194
+ this.updateActiveTab();
195
+ }
196
+ return false;
197
+ }
198
+ });
199
+ }
200
+ async removeEmptyContainers() {
201
+ if (this.model.clean()) {
202
+ this.requestUpdate();
203
+ await this.updateComplete;
204
+ this.layout();
205
+ }
206
+ }
207
+ updateActiveTab() {
208
+ if (!this.singleActive)
209
+ return;
210
+ this.topLevelComponent.walk((_splitContainer, tabContainer) => {
211
+ tabContainer.inactive = tabContainer != this.activeTabContainer;
212
+ });
213
+ }
214
+ activate(id) {
215
+ this.open({ id });
216
+ }
217
+ open(item, containerIndex = 0) {
218
+ let container = this.splitContainer.getContainerComponent(containerIndex);
219
+ let model = this.model;
220
+ // prevent opening the same tab twice
221
+ this.walk((splitContainer, tabContainer) => {
222
+ for (let i = 0; i < tabContainer.items.length; i++) {
223
+ const tabItem = tabContainer.items[i];
224
+ if (tabItem.id == item.id) {
225
+ container = tabContainer;
226
+ model = splitContainer.model;
227
+ container.selectedIndex = i;
228
+ containerIndex = container.index;
229
+ return false;
230
+ }
231
+ }
232
+ });
233
+ container.open(item);
234
+ if (model.items[containerIndex]) {
235
+ model.items[containerIndex].tabs = container.items;
236
+ }
237
+ }
238
+ layout() {
239
+ var _a;
240
+ (_a = this.splitContainer) === null || _a === void 0 ? void 0 : _a.layout();
241
+ }
242
+ };
243
+ exports.TabSplitContainer = TabSplitContainer;
244
+ TabSplitContainer.styles = (0, lit_1.css) `
245
+ :host {
246
+ display: block;
247
+ }
248
+
249
+ og-splitcontainer {
250
+ height: 100%;
251
+ }
252
+ `;
253
+ __decorate([
254
+ (0, decorators_js_1.property)({ type: Object })
255
+ ], TabSplitContainer.prototype, "topLevelComponent", void 0);
256
+ __decorate([
257
+ (0, decorators_js_1.property)({ type: Object })
258
+ ], TabSplitContainer.prototype, "model", void 0);
259
+ __decorate([
260
+ (0, decorators_js_1.property)({ type: Boolean })
261
+ ], TabSplitContainer.prototype, "addButton", void 0);
262
+ __decorate([
263
+ (0, decorators_js_1.property)({ type: Boolean })
264
+ ], TabSplitContainer.prototype, "closable", void 0);
265
+ __decorate([
266
+ (0, decorators_js_1.property)({ type: Boolean })
267
+ ], TabSplitContainer.prototype, "singleActive", void 0);
268
+ __decorate([
269
+ (0, decorators_js_1.property)({ type: String, reflect: true })
270
+ ], TabSplitContainer.prototype, "tabPosition", void 0);
271
+ __decorate([
272
+ (0, decorators_js_1.property)({ type: Object })
273
+ ], TabSplitContainer.prototype, "createComponent", void 0);
274
+ __decorate([
275
+ (0, decorators_js_1.query)('og-splitcontainer')
276
+ ], TabSplitContainer.prototype, "splitContainer", void 0);
277
+ exports.TabSplitContainer = TabSplitContainer = TabSplitContainer_1 = __decorate([
278
+ (0, decorators_js_1.customElement)('og-tabsplitcontainer')
279
+ // @stylable({vars: ['tab-*']})
280
+ ], TabSplitContainer);
281
+ //# sourceMappingURL=tabSplitContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabSplitContainer.js","sourceRoot":"","sources":["../../src/components/tabSplitContainer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { LitElement } from "lit";
2
+ import { TabItem } from '../types';
3
+ import { ListSelectEvent, Menu, actions, ComponentId, VerticalPosition } from "@omegagrid/core";
4
+ import { TabContainer } from "./tabContainer";
5
+ export declare class TabEvent extends Event {
6
+ index: number;
7
+ tabs: Tabs;
8
+ tab: TabItem;
9
+ uiEvent: UIEvent;
10
+ constructor(type: string, args: Partial<TabEvent>);
11
+ }
12
+ export declare class Tabs extends LitElement {
13
+ static styles: import("lit").CSSResult[];
14
+ static dragParent: Tabs;
15
+ static dragIndex: number;
16
+ static dragTarget: Tabs;
17
+ static dropIndex: number;
18
+ topLevelComponent: HTMLElement;
19
+ items: TabItem[];
20
+ closable: boolean;
21
+ addButton: boolean;
22
+ selectedIndex: number;
23
+ overlay: HTMLDivElement;
24
+ tabs: HTMLDivElement[];
25
+ actions: actions.Action[];
26
+ position: VerticalPosition;
27
+ empty: HTMLDivElement;
28
+ parentContainer: TabContainer;
29
+ menuRef: import("lit-html/directives/ref").Ref<Menu>;
30
+ get menu(): Menu;
31
+ private _contextMenuTabIndex;
32
+ private _contextMenuItems;
33
+ get selectedItem(): TabItem;
34
+ updated(): void;
35
+ positionOverlay(target?: HTMLElement): HTMLElement;
36
+ hideOverlay: () => HTMLElement;
37
+ selectTab(index: number, dispatchEvent?: boolean): void;
38
+ getIndexById(id: ComponentId): number;
39
+ selectTabById(id: ComponentId, dispatchEvent?: boolean): void;
40
+ addTab(item: TabItem, index?: number): void;
41
+ removeTab(index: number, dispatchEvent?: boolean): TabItem;
42
+ _onDragover(e: DragEvent, index: number): void;
43
+ _onDragStart(_e: DragEvent, index: number): void;
44
+ _onDragStop(): void;
45
+ _onDrop(): void;
46
+ moveTab(fromIndex: number, toIndex: number, dispatchEvent?: boolean): void;
47
+ _onMenuItemSelect(e: ListSelectEvent): void;
48
+ _onCrossClick(e: MouseEvent, index: number): void;
49
+ _onContextMenu(e: MouseEvent, index: number): void;
50
+ _onActionClick(action: actions.Action): void;
51
+ disconnectedCallback(): void;
52
+ _onContainerDragover(e: DragEvent): void;
53
+ render: () => import("lit-html").TemplateResult<1>;
54
+ }
55
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +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,EAAY,OAAO,EAAE,WAAW,EAAY,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEzH,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,qBAEa,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,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,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;IAW9C,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;IAOjC,MAAM,6CA8DJ;CAEF"}
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var Tabs_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Tabs = exports.TabEvent = void 0;
11
+ const lit_1 = require("lit");
12
+ const decorators_js_1 = require("lit/decorators.js");
13
+ const map_js_1 = require("lit/directives/map.js");
14
+ const class_map_js_1 = require("lit/directives/class-map.js");
15
+ const tabs_style_1 = require("./tabs.style");
16
+ const core_1 = require("@omegagrid/core");
17
+ const ref_js_1 = require("lit/directives/ref.js");
18
+ const style_map_js_1 = require("lit/directives/style-map.js");
19
+ const core_2 = require("@omegagrid/core");
20
+ class TabEvent extends Event {
21
+ constructor(type, args) {
22
+ super(`tab.${type}`, { composed: true, bubbles: true, cancelable: true });
23
+ Object.assign(this, args);
24
+ }
25
+ }
26
+ exports.TabEvent = TabEvent;
27
+ const closeMenuItems = [
28
+ { key: 'close', value: "Close", icon: "xmark" },
29
+ { key: 'close_all', value: "Close All", icon: "xmark" },
30
+ { key: 'close_others', value: "Close Others", icon: "xmark" },
31
+ { key: 'close_right', value: "Close to the Right", icon: "xmark" }
32
+ ];
33
+ let Tabs = Tabs_1 = class Tabs extends lit_1.LitElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.closable = false;
37
+ this.addButton = false;
38
+ this.selectedIndex = -1;
39
+ this.position = 'top';
40
+ this.menuRef = (0, ref_js_1.createRef)();
41
+ this._contextMenuTabIndex = -1;
42
+ this._contextMenuItems = [];
43
+ this.hideOverlay = () => core_1.dom.hideElement(this.overlay);
44
+ this.render = () => (0, lit_1.html) `
45
+ ${this.items && this.items.length > 0 ? (0, lit_1.html) `
46
+ <div class="tabs"
47
+ @dragend="${() => this.hideOverlay()}">
48
+ ${(0, map_js_1.map)(this.items, (item, index) => {
49
+ var _a;
50
+ return (0, lit_1.html) `
51
+ <div
52
+ draggable="true"
53
+ class="${(0, class_map_js_1.classMap)({
54
+ 'tab': true,
55
+ 'active': index == this.selectedIndex,
56
+ 'unsaved': !!item.unsaved,
57
+ 'closable': this.closable
58
+ })}"
59
+ style="${(0, style_map_js_1.styleMap)({ backgroundColor: item.color ? `#${item.color}` : null })}"
60
+ @click="${() => this.selectTab(index, true)}"
61
+ @drop="${() => this._onDrop()}"
62
+ @dragover="${(e) => this._onDragover(e, index)}"
63
+ @dragleave="${() => this.hideOverlay()}"
64
+ @dragstart="${(e) => this._onDragStart(e, index)}"
65
+ @dragstop="${() => this._onDragStop()}"
66
+ @contextmenu="${(e) => this._onContextMenu(e, index)}">
67
+ <div class="tab-text" style="${(0, style_map_js_1.styleMap)({ color: item.color ? core_2.colors.getComplmentaryColor('#' + item.color) : null })}">
68
+ ${(_a = item.title) !== null && _a !== void 0 ? _a : item.id}
69
+ </div>
70
+ ${item.unsaved ? (0, lit_1.html) `<div class="tab-save-mark">&#9679;</div>` : ``}
71
+ ${this.closable ? (0, lit_1.html) `<div
72
+ class="tab-x"
73
+ @click="${(e) => this._onCrossClick(e, index)}">
74
+ &times
75
+ </div>` : ``}
76
+ </div>
77
+ `;
78
+ })}
79
+ </div>
80
+ ` : ``}
81
+
82
+ <div
83
+ class="empty"
84
+ @dragover="${(e) => this._onDragover(e, this.items.length)}"
85
+ @drop="${() => this._onDrop()}"
86
+ @dragleave="${() => this.hideOverlay()}">
87
+ ${this.addButton ? (0, lit_1.html) `
88
+ <og-button
89
+ id="btnAdd"
90
+ icon="plus"
91
+ color="gray"
92
+ @click="${() => this.dispatchEvent(new TabEvent('add', { tab: this.items[this.items.length - 1], tabs: this }))}">
93
+ </og-button>
94
+ ` : ``}
95
+ </div>
96
+
97
+ <div class="buttons">
98
+ ${(0, map_js_1.map)(this.actions, action => (0, lit_1.html) `
99
+ <og-fa-icon icon="${action.icon}" @click="${() => this._onActionClick(action)}"></og-fa-icon>
100
+ `)}
101
+ </div>
102
+
103
+ <div id="overlay" style="display: none"></div>
104
+
105
+ <og-menu ${(0, ref_js_1.ref)(this.menuRef)}
106
+ style="display: none; z-index: 2000"
107
+ @select=${(e) => this._onMenuItemSelect(e)}>
108
+ </og-menu>
109
+ `;
110
+ }
111
+ get menu() { return this.menuRef.value; }
112
+ get selectedItem() { return this.items[this.selectedIndex]; }
113
+ updated() {
114
+ this._contextMenuItems = [];
115
+ if (this.closable)
116
+ this._contextMenuItems = closeMenuItems;
117
+ this.menu.items = this._contextMenuItems;
118
+ }
119
+ positionOverlay(target) {
120
+ if (!target)
121
+ return this.hideOverlay();
122
+ const offset = core_1.dom.getElementOffset(target, this);
123
+ core_1.dom.setPosition(this.overlay, { t: offset.top, l: offset.left });
124
+ core_1.dom.setSize(this.overlay, { w: target.offsetWidth, h: target.offsetHeight });
125
+ core_1.dom.showElement(this.overlay);
126
+ }
127
+ selectTab(index, dispatchEvent = false) {
128
+ this.selectedIndex = index;
129
+ if (dispatchEvent)
130
+ this.dispatchEvent(new TabEvent('select', { tab: this.items[index], tabs: this }));
131
+ }
132
+ getIndexById(id) {
133
+ return this.items.findIndex(item => item.id == id);
134
+ }
135
+ selectTabById(id, dispatchEvent = false) {
136
+ const index = this.getIndexById(id);
137
+ if (index > -1)
138
+ this.selectTab(index, dispatchEvent);
139
+ }
140
+ addTab(item, index = this.selectedIndex + 1) {
141
+ this.hideOverlay();
142
+ this.items.splice(index, 0, item);
143
+ this.requestUpdate();
144
+ }
145
+ removeTab(index, dispatchEvent = false) {
146
+ this.hideOverlay();
147
+ if (!this.dispatchEvent(new TabEvent('beforeRemove', { tab: this.items[index], tabs: this, index })))
148
+ return;
149
+ const [deletedItem] = this.items.splice(index, 1);
150
+ if (this.selectedIndex >= this.items.length)
151
+ this.selectTab(this.items.length - 1, true);
152
+ this.requestUpdate();
153
+ if (dispatchEvent)
154
+ this.dispatchEvent(new TabEvent('remove', { tab: deletedItem, tabs: this, index }));
155
+ return deletedItem;
156
+ }
157
+ _onDragover(e, index) {
158
+ if (!Tabs_1.dragParent)
159
+ return;
160
+ if (Tabs_1.dragParent.topLevelComponent != this.topLevelComponent)
161
+ return;
162
+ e.preventDefault();
163
+ e.stopPropagation();
164
+ e.dataTransfer.dropEffect = 'move';
165
+ Tabs_1.dropIndex = index;
166
+ this.positionOverlay(index >= this.tabs.length ? this.empty : this.tabs[index]);
167
+ }
168
+ _onDragStart(_e, index) {
169
+ Tabs_1.dragParent = this;
170
+ Tabs_1.dragTarget = null;
171
+ Tabs_1.dragIndex = index;
172
+ }
173
+ _onDragStop() {
174
+ Tabs_1.dragParent = null;
175
+ }
176
+ _onDrop() {
177
+ Tabs_1.dragTarget = this;
178
+ if (Tabs_1.dragParent == Tabs_1.dragTarget) {
179
+ this.moveTab(Tabs_1.dragIndex, Tabs_1.dropIndex, true);
180
+ }
181
+ else {
182
+ const tab = Tabs_1.dragParent.items[Tabs_1.dragIndex];
183
+ Tabs_1.dragParent.removeTab(Tabs_1.dragIndex);
184
+ Tabs_1.dragParent.selectTab(Math.min(Tabs_1.dragParent.items.length - 1, Tabs_1.dragIndex), true);
185
+ Tabs_1.dragTarget.addTab(tab, Tabs_1.dropIndex);
186
+ Tabs_1.dragTarget.selectTab(Tabs_1.dropIndex, true);
187
+ this.dispatchEvent(new TabEvent('move', { tab: tab, tabs: this }));
188
+ }
189
+ Tabs_1.dragParent = null;
190
+ }
191
+ moveTab(fromIndex, toIndex, dispatchEvent = false) {
192
+ if (fromIndex == toIndex)
193
+ return;
194
+ const [movedItem] = this.items.splice(toIndex, 0, this.items.splice(fromIndex, 1)[0]);
195
+ this.selectTab(Math.min(toIndex, this.tabs.length - 1), true);
196
+ this.requestUpdate();
197
+ if (dispatchEvent)
198
+ this.dispatchEvent(new TabEvent('move', { tab: movedItem, tabs: this }));
199
+ }
200
+ _onMenuItemSelect(e) {
201
+ const key = this._contextMenuItems[e.index].key;
202
+ if (key == 'close') {
203
+ this.removeTab(this._contextMenuTabIndex, true);
204
+ if (this.selectedIndex >= this.items.length)
205
+ this.selectTab(Math.max(this.items.length - 1, 0), true);
206
+ }
207
+ else if (key == 'close_all') {
208
+ while (this.items.length > 0)
209
+ this.removeTab(0, true);
210
+ }
211
+ else if (key == 'close_others') {
212
+ for (let i = this.items.length - 1; i >= 0; i--) {
213
+ if (i != this._contextMenuTabIndex)
214
+ this.removeTab(i, true);
215
+ }
216
+ this.selectTab(0, true);
217
+ }
218
+ else if (key == 'close_right') {
219
+ while (this.items.length > this._contextMenuTabIndex + 1)
220
+ this.removeTab(this._contextMenuTabIndex + 1, true);
221
+ if (this.selectedIndex >= this.items.length)
222
+ this.selectTab(Math.max(this.items.length - 1, 0), true);
223
+ }
224
+ }
225
+ _onCrossClick(e, index) {
226
+ e.stopPropagation();
227
+ this.removeTab(index, true);
228
+ }
229
+ _onContextMenu(e, index) {
230
+ e.preventDefault();
231
+ this._contextMenuTabIndex = index;
232
+ if (this.menu.items.length > 0)
233
+ this.menu.openAt(e.pageX, e.pageY);
234
+ this.dispatchEvent(new TabEvent('contextmenu', { tab: this.items[index], tabs: this, uiEvent: e }));
235
+ }
236
+ _onActionClick(action) {
237
+ core_1.actions.dispatchActionEvent(this, 'tabs', action);
238
+ }
239
+ disconnectedCallback() {
240
+ var _a;
241
+ (_a = this.menu) === null || _a === void 0 ? void 0 : _a.remove();
242
+ }
243
+ _onContainerDragover(e) {
244
+ e.preventDefault();
245
+ e.stopPropagation();
246
+ e.dataTransfer.dropEffect = 'move';
247
+ }
248
+ };
249
+ exports.Tabs = Tabs;
250
+ Tabs.styles = [tabs_style_1.style];
251
+ Tabs.dragIndex = -1;
252
+ Tabs.dropIndex = -1;
253
+ __decorate([
254
+ (0, decorators_js_1.property)({ type: Object })
255
+ ], Tabs.prototype, "topLevelComponent", void 0);
256
+ __decorate([
257
+ (0, decorators_js_1.property)({ type: Array })
258
+ ], Tabs.prototype, "items", void 0);
259
+ __decorate([
260
+ (0, decorators_js_1.property)({ type: Boolean })
261
+ ], Tabs.prototype, "closable", void 0);
262
+ __decorate([
263
+ (0, decorators_js_1.property)({ type: Boolean })
264
+ ], Tabs.prototype, "addButton", void 0);
265
+ __decorate([
266
+ (0, decorators_js_1.property)({ type: Number })
267
+ ], Tabs.prototype, "selectedIndex", void 0);
268
+ __decorate([
269
+ (0, decorators_js_1.query)('#overlay')
270
+ ], Tabs.prototype, "overlay", void 0);
271
+ __decorate([
272
+ (0, decorators_js_1.queryAll)('.tab')
273
+ ], Tabs.prototype, "tabs", void 0);
274
+ __decorate([
275
+ (0, decorators_js_1.property)({ type: Array })
276
+ ], Tabs.prototype, "actions", void 0);
277
+ __decorate([
278
+ (0, decorators_js_1.property)({ type: String, reflect: true })
279
+ ], Tabs.prototype, "position", void 0);
280
+ __decorate([
281
+ (0, decorators_js_1.query)('.empty')
282
+ ], Tabs.prototype, "empty", void 0);
283
+ exports.Tabs = Tabs = Tabs_1 = __decorate([
284
+ (0, decorators_js_1.customElement)('og-tabs'),
285
+ (0, core_1.stylable)({ vars: ['tab-*', 'font-*', 'text-*'] })
286
+ ], Tabs);
287
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":"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"}