@api-client/ui 0.0.9 → 0.0.11

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 (56) hide show
  1. package/.eslintrc +8 -1
  2. package/demo/index.html +3 -0
  3. package/demo/layout/index.html +91 -0
  4. package/demo/layout/index.ts +182 -0
  5. package/dist/elements/layout/SplitItem.d.ts +1 -9
  6. package/dist/elements/layout/SplitItem.d.ts.map +1 -1
  7. package/dist/elements/layout/SplitItem.js +27 -20
  8. package/dist/elements/layout/SplitItem.js.map +1 -1
  9. package/dist/elements/layout/SplitLayout.d.ts +16 -14
  10. package/dist/elements/layout/SplitLayout.d.ts.map +1 -1
  11. package/dist/elements/layout/SplitLayout.js +47 -42
  12. package/dist/elements/layout/SplitLayout.js.map +1 -1
  13. package/dist/elements/layout/SplitPanel.d.ts +7 -2
  14. package/dist/elements/layout/SplitPanel.d.ts.map +1 -1
  15. package/dist/elements/layout/SplitPanel.js +130 -52
  16. package/dist/elements/layout/SplitPanel.js.map +1 -1
  17. package/dist/elements/layout/SplitView.d.ts.map +1 -1
  18. package/dist/elements/layout/SplitView.js +18 -14
  19. package/dist/elements/layout/SplitView.js.map +1 -1
  20. package/dist/elements/layout/type.d.ts +3 -3
  21. package/dist/elements/layout/type.d.ts.map +1 -1
  22. package/dist/elements/layout/type.js.map +1 -1
  23. package/dist/elements/schema-design/DataModelVisualizationElement.d.ts.map +1 -1
  24. package/dist/elements/schema-design/DataModelVisualizationElement.js +18 -1
  25. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  26. package/dist/pages/http-project/HttpClientCommands.d.ts.map +1 -1
  27. package/dist/pages/http-project/HttpClientCommands.js +28 -12
  28. package/dist/pages/http-project/HttpClientCommands.js.map +1 -1
  29. package/package.json +2 -1
  30. package/src/elements/layout/SplitItem.ts +29 -21
  31. package/src/elements/layout/SplitLayout.ts +53 -43
  32. package/src/elements/layout/SplitPanel.ts +140 -57
  33. package/src/elements/layout/SplitView.ts +18 -15
  34. package/src/elements/layout/type.ts +3 -4
  35. package/src/elements/schema-design/DataModelVisualizationElement.ts +18 -1
  36. package/src/pages/http-project/HttpClientCommands.ts +28 -12
  37. package/test/elements/layout/SplitItem.test.ts +76 -75
  38. package/test/elements/layout/SplitLayoutManager.test.ts +70 -69
  39. package/test/elements/layout/SplitPanel.test.ts +10 -7
  40. package/tsconfig.eslint.json +8 -0
  41. package/web-test-runner.config.mjs +4 -1
  42. package/dist/define/layout/layout-panel.d.ts +0 -7
  43. package/dist/define/layout/layout-panel.d.ts.map +0 -1
  44. package/dist/define/layout/layout-panel.js +0 -3
  45. package/dist/define/layout/layout-panel.js.map +0 -1
  46. package/dist/elements/layout/LayoutManager.d.ts +0 -327
  47. package/dist/elements/layout/LayoutManager.d.ts.map +0 -1
  48. package/dist/elements/layout/LayoutManager.js +0 -747
  49. package/dist/elements/layout/LayoutManager.js.map +0 -1
  50. package/dist/elements/layout/LayoutPanelElement.d.ts +0 -62
  51. package/dist/elements/layout/LayoutPanelElement.d.ts.map +0 -1
  52. package/dist/elements/layout/LayoutPanelElement.js +0 -628
  53. package/dist/elements/layout/LayoutPanelElement.js.map +0 -1
  54. package/src/define/layout/layout-panel.ts +0 -9
  55. package/src/elements/layout/LayoutManager.ts +0 -930
  56. package/src/elements/layout/LayoutPanelElement.ts +0 -651
@@ -106,6 +106,12 @@ export default class DataModelVisualizationElement extends ApiElement {
106
106
  .data-type {
107
107
  margin-left: auto;
108
108
  }
109
+
110
+ .property-key-icon {
111
+ width: 16px;
112
+ height: 16px;
113
+ margin-right: 8px;
114
+ }
109
115
  `,
110
116
  ];
111
117
  }
@@ -361,8 +367,19 @@ export default class DataModelVisualizationElement extends ApiElement {
361
367
  primary,
362
368
  index,
363
369
  };
370
+
371
+ const icons: TemplateResult[] = [];
372
+ if (primary) {
373
+ icons.push(html`<ui-icon icon="key" class="property-key-icon"></ui-icon>`);
374
+ } else if (index) {
375
+ icons.push(html`<ui-icon icon="search" class="property-key-icon"></ui-icon>`);
376
+ } else {
377
+ icons.push(html`<span class="property-key-icon"></span>`);
378
+ }
379
+
364
380
  return html`
365
381
  <li data-key="${key}" class="${classMap(classes)}">
382
+ ${icons}
366
383
  <span class="label">${info.renderLabel}</span>
367
384
  <span class="data-type">${type}</span>
368
385
  </li>
@@ -377,7 +394,7 @@ export default class DataModelVisualizationElement extends ApiElement {
377
394
  if (targets.length === 1) {
378
395
  return html`<viz-association
379
396
  data-key="${key}"
380
- data-target="${targets[0]}"
397
+ data-target="${targets[0].key}"
381
398
  title="${info.renderLabel}"
382
399
  data-selectable
383
400
  data-marker-start="association"
@@ -85,12 +85,16 @@ const commands: IContextMenuCommand<HttpProjectContextualStore>[] = [
85
85
  label: 'Close',
86
86
  icon: close,
87
87
  execute: (init): void => {
88
- const { key } = init.target.dataset;
89
- if (!key) {
88
+ const { key, panel } = init.target.dataset;
89
+ if (!key || !panel) {
90
90
  return;
91
91
  }
92
92
  const layout = init.store.get('layout');
93
- layout.removeItem(key);
93
+ const parent = layout.findPanel(panel);
94
+ if (!parent) {
95
+ return;
96
+ }
97
+ parent.removeItem(key);
94
98
  }
95
99
  },
96
100
  {
@@ -105,12 +109,16 @@ const commands: IContextMenuCommand<HttpProjectContextualStore>[] = [
105
109
  return true;
106
110
  },
107
111
  execute: (init): void => {
108
- const { key } = init.target.dataset;
109
- if (!key) {
112
+ const { key, panel } = init.target.dataset;
113
+ if (!key || !panel) {
110
114
  return;
111
115
  }
112
116
  const layout = init.store.get('layout');
113
- layout.removeRelative(key, SplitCloseDirection.both);
117
+ const parent = layout.findPanel(panel);
118
+ if (!parent) {
119
+ return;
120
+ }
121
+ parent.removeRelative(key, SplitCloseDirection.both);
114
122
  },
115
123
  },
116
124
  {
@@ -124,12 +132,16 @@ const commands: IContextMenuCommand<HttpProjectContextualStore>[] = [
124
132
  return true;
125
133
  },
126
134
  execute: (init): void => {
127
- const { key } = init.target.dataset;
128
- if (!key) {
135
+ const { key, panel } = init.target.dataset;
136
+ if (!key || !panel) {
129
137
  return;
130
138
  }
131
139
  const layout = init.store.get('layout');
132
- layout.removeRelative(key, SplitCloseDirection.right);
140
+ const parent = layout.findPanel(panel);
141
+ if (!parent) {
142
+ return;
143
+ }
144
+ parent.removeRelative(key, SplitCloseDirection.right);
133
145
  },
134
146
  },
135
147
  {
@@ -143,12 +155,16 @@ const commands: IContextMenuCommand<HttpProjectContextualStore>[] = [
143
155
  return true;
144
156
  },
145
157
  execute: (init): void => {
146
- const { key } = init.target.dataset;
147
- if (!key) {
158
+ const { key, panel } = init.target.dataset;
159
+ if (!key || !panel) {
148
160
  return;
149
161
  }
150
162
  const layout = init.store.get('layout');
151
- layout.removeRelative(key, SplitCloseDirection.left);
163
+ const parent = layout.findPanel(panel);
164
+ if (!parent) {
165
+ return;
166
+ }
167
+ parent.removeRelative(key, SplitCloseDirection.left);
152
168
  },
153
169
  },
154
170
 
@@ -295,7 +295,7 @@ describe('layout', () => {
295
295
  });
296
296
  });
297
297
 
298
- describe('getParent()', () => {
298
+ describe('getParents()', () => {
299
299
  let manager: SplitLayout;
300
300
 
301
301
  beforeEach(() => {
@@ -308,8 +308,8 @@ describe('layout', () => {
308
308
  kind: 'test-kind',
309
309
  label: 'test-label',
310
310
  });
311
- const result = instance.getParent();
312
- assert.isUndefined(result);
311
+ const result = instance.getParents();
312
+ assert.deepEqual(result, []);
313
313
  });
314
314
 
315
315
  it('returns the parent panel', () => {
@@ -319,81 +319,82 @@ describe('layout', () => {
319
319
  kind: 'test-kind',
320
320
  label: 'test-label',
321
321
  });
322
- const result = instance.getParent();
323
- assert.deepEqual(result, panel);
322
+ const result = instance.getParents();
323
+ assert.deepEqual(result, [panel]);
324
324
  });
325
325
  });
326
326
 
327
- describe('remove()', () => {
328
- let manager: SplitLayout;
329
- let panel: SplitPanel;
330
- let item: SplitItem;
331
-
332
- beforeEach(() => {
333
- manager = new SplitLayout();
334
- panel = manager.addPanel();
335
- item = panel.addItem({
336
- key: 'test-key',
337
- kind: 'test-kind',
338
- label: 'test-label',
339
- });
340
- });
341
-
342
- it('removes the item from definitions', () => {
343
- item.remove();
344
- const result = manager.definitions.get(item.key);
345
- assert.notOk(result);
346
- });
347
-
348
- it('removes the item from the parent items', () => {
349
- item.remove();
350
- assert.deepEqual(panel.items, []);
351
- });
352
-
353
- it('informs the panel listeners about item removed', () => {
354
- const spy = sinon.spy();
355
- manager.addEventListener('closetab', spy);
356
- item.remove();
357
- assert.isTrue(spy.calledOnce, 'the event is dispatched');
358
- const e = spy.args[0][0] as CustomEvent<string>;
359
- assert.equal(e.detail, item.key, 'has the item key on the detail')
360
- });
361
-
362
- it('informs the panel listeners about layout change', () => {
363
- const spy = sinon.spy();
364
- manager.addEventListener('change', spy);
365
- item.remove();
366
- assert.isTrue(spy.calledOnce, 'the event is dispatched');
367
- });
368
- });
369
-
370
- describe('setSelected()', () => {
371
- let manager: SplitLayout;
372
- let panel: SplitPanel;
373
- let item: SplitItem;
374
-
375
- beforeEach(() => {
376
- manager = new SplitLayout();
377
- panel = manager.addPanel();
378
- item = panel.addItem({
379
- key: 'test-key',
380
- kind: 'test-kind',
381
- label: 'test-label',
382
- });
383
- });
384
-
385
- it('sets item selected with the panel', () => {
386
- item.setSelected();
387
- assert.equal(panel.selected, item.key);
388
- });
389
-
390
- it('informs the panel listeners about layout change', () => {
391
- const spy = sinon.spy();
392
- manager.addEventListener('change', spy);
393
- item.setSelected();
394
- assert.isTrue(spy.calledOnce, 'the event is dispatched');
395
- });
396
- });
327
+ // describe('remove()', () => {
328
+ // let manager: SplitLayout;
329
+ // let panel: SplitPanel;
330
+ // let item: SplitItem;
331
+
332
+ // beforeEach(() => {
333
+ // manager = new SplitLayout();
334
+ // panel = manager.addPanel();
335
+ // item = panel.addItem({
336
+ // key: 'test-key',
337
+ // kind: 'test-kind',
338
+ // label: 'test-label',
339
+ // });
340
+ // });
341
+
342
+ // it('removes the item from definitions', () => {
343
+ // item.remove();
344
+ // const result = manager.definitions.get(item.key);
345
+ // assert.notOk(result);
346
+ // });
347
+
348
+ // it('removes the item from the parent items', () => {
349
+ // item.remove();
350
+ // assert.deepEqual(panel.items, []);
351
+ // });
352
+
353
+ // it('informs the panel listeners about item removed', () => {
354
+ // const spy = sinon.spy();
355
+ // manager.addEventListener('closetab', spy);
356
+ // item.remove();
357
+ // assert.isTrue(spy.calledOnce, 'the event is dispatched');
358
+ // const e = spy.args[0][0] as CustomEvent<ITabCloseDetail>;
359
+ // assert.equal(e.detail.tab, item.key, 'has the item key on the detail')
360
+ // assert.equal(e.detail.panel, panel.key, 'has the panel key on the detail')
361
+ // });
362
+
363
+ // it('informs the panel listeners about layout change', () => {
364
+ // const spy = sinon.spy();
365
+ // manager.addEventListener('change', spy);
366
+ // item.remove();
367
+ // assert.isTrue(spy.calledOnce, 'the event is dispatched');
368
+ // });
369
+ // });
370
+
371
+ // describe('setSelected()', () => {
372
+ // let manager: SplitLayout;
373
+ // let panel: SplitPanel;
374
+ // let item: SplitItem;
375
+
376
+ // beforeEach(() => {
377
+ // manager = new SplitLayout();
378
+ // panel = manager.addPanel();
379
+ // item = panel.addItem({
380
+ // key: 'test-key',
381
+ // kind: 'test-kind',
382
+ // label: 'test-label',
383
+ // });
384
+ // });
385
+
386
+ // it('sets item selected with the panel', () => {
387
+ // item.setSelected();
388
+ // assert.equal(panel.selected, item.key);
389
+ // });
390
+
391
+ // it('informs the panel listeners about layout change', () => {
392
+ // const spy = sinon.spy();
393
+ // manager.addEventListener('change', spy);
394
+ // item.setSelected();
395
+ // assert.isTrue(spy.calledOnce, 'the event is dispatched');
396
+ // });
397
+ // });
397
398
 
398
399
  describe('setLabel()', () => {
399
400
  let manager: SplitLayout;
@@ -2,10 +2,10 @@ import { assert, aTimeout, fixture, html } from '@open-wc/testing';
2
2
  import { TemplateResult } from 'lit';
3
3
  import sinon from 'sinon';
4
4
  import { ISplitItem, SplitItem } from '../../../src/elements/layout/SplitItem.js';
5
- import { SplitLayout } from '../../../src/elements/layout/SplitLayout.js';
5
+ import { ITabCloseDetail, SplitLayout } from '../../../src/elements/layout/SplitLayout.js';
6
6
  import { ISplitPanel, SplitPanel } from '../../../src/elements/layout/SplitPanel.js';
7
7
  import SplitView from '../../../src/elements/layout/SplitView.js';
8
- import { LayoutType, SplitCloseDirection, SplitDirection, SplitRegion } from '../../../src/elements/layout/type.js';
8
+ import { LayoutType, SplitDirection, SplitRegion } from '../../../src/elements/layout/type.js';
9
9
  import '../../../src/define/layout/split-view.js';
10
10
 
11
11
  describe('layout', () => {
@@ -194,29 +194,29 @@ describe('layout', () => {
194
194
  });
195
195
  });
196
196
 
197
- describe('getParent()', () => {
197
+ describe('getParents()', () => {
198
198
  let manager: SplitLayout;
199
199
 
200
200
  beforeEach(() => {
201
201
  manager = new SplitLayout();
202
202
  });
203
203
 
204
- it('returns undefined when no item or panel', () => {
205
- const result = manager.getParent('unknown');
206
- assert.isUndefined(result);
204
+ it('returns empty array when no item or panel', () => {
205
+ const result = manager.getParents('unknown');
206
+ assert.deepEqual(result, []);
207
207
  });
208
208
 
209
209
  it('returns a parent for a panel that is a panel', () => {
210
210
  const p1 = manager.addPanel();
211
211
  const p2 = p1.addPanel();
212
- const result = manager.getParent(p2.key);
213
- assert.deepEqual(result, p1);
212
+ const result = manager.getParents(p2.key);
213
+ assert.deepEqual(result, [p1]);
214
214
  });
215
215
 
216
- it('returns undefined when the parent is the manager', () => {
216
+ it('returns empty array when the parent is the manager', () => {
217
217
  const p1 = manager.addPanel();
218
- const result = manager.getParent(p1.key);
219
- assert.isUndefined(result);
218
+ const result = manager.getParents(p1.key);
219
+ assert.deepEqual(result, []);
220
220
  });
221
221
 
222
222
  it('returns a parent for an item', () => {
@@ -226,20 +226,20 @@ describe('layout', () => {
226
226
  key: 'b',
227
227
  label: 'c',
228
228
  });
229
- const result = manager.getParent(i1.key);
230
- assert.deepEqual(result, p1);
229
+ const result = manager.getParents(i1.key);
230
+ assert.deepEqual(result, [p1]);
231
231
  });
232
232
 
233
- it('returns undefined for an item that has been remove', () => {
233
+ it('returns empty array for an item that has been removes', () => {
234
234
  const p1 = manager.addPanel();
235
235
  const i1 = p1.addItem({
236
236
  kind: 'a',
237
237
  key: 'b',
238
238
  label: 'c',
239
239
  });
240
- i1.remove();
241
- const result = manager.getParent(i1.key);
242
- assert.isUndefined(result);
240
+ p1.removeChildItem(i1);
241
+ const result = manager.getParents(i1.key);
242
+ assert.deepEqual(result, []);
243
243
  });
244
244
  });
245
245
 
@@ -361,10 +361,11 @@ describe('layout', () => {
361
361
  it('dispatches the "nameitem" event', () => {
362
362
  const spy = sinon.spy();
363
363
  manager.addEventListener('closetab', spy);
364
- manager.notifyTabClose('test');
364
+ manager.notifyTabClose('test', 'key');
365
365
  assert.isTrue(spy.calledOnce);
366
- const event = spy.args[0][0] as CustomEvent<string>;
367
- assert.equal(event.detail, 'test');
366
+ const event = spy.args[0][0] as CustomEvent<ITabCloseDetail>;
367
+ assert.equal(event.detail.tab, 'test');
368
+ assert.equal(event.detail.panel, 'key');
368
369
  });
369
370
  });
370
371
 
@@ -484,7 +485,7 @@ describe('layout', () => {
484
485
  kind: '',
485
486
  label: '',
486
487
  });
487
- const parent = i1.getParent()!;
488
+ const parent = i1.getParents()[0];
488
489
  assert.ok(parent, 'has the parent');
489
490
  const foundParent = manager.findPanel(parent.key);
490
491
  assert.ok(foundParent, 'the parent is in the layout');
@@ -500,7 +501,7 @@ describe('layout', () => {
500
501
  kind: '',
501
502
  label: '',
502
503
  });
503
- const itemParent = i1.getParent();
504
+ const itemParent = i1.getParents()[0];
504
505
  // p1 has panels in it so it must be p2.
505
506
  assert.deepEqual(itemParent, p2);
506
507
  });
@@ -514,7 +515,7 @@ describe('layout', () => {
514
515
  kind: '',
515
516
  label: '',
516
517
  });
517
- const itemParent = i1.getParent();
518
+ const itemParent = i1.getParents()[0];
518
519
  assert.deepEqual(itemParent, p2);
519
520
  });
520
521
 
@@ -721,48 +722,48 @@ describe('layout', () => {
721
722
  });
722
723
  });
723
724
 
724
- describe('removeRelative()', () => {
725
- let manager: SplitLayout;
726
-
727
- beforeEach(() => {
728
- manager = new SplitLayout();
729
- });
730
-
731
- it('calls removeRelative() on the parent with defaults', () => {
732
- const p1 = manager.addPanel();
733
- const spy = sinon.spy(p1, 'removeRelative');
734
- const i1 = p1.addItem({
735
- key: 'i1',
736
- kind: '',
737
- label: '',
738
- });
739
- manager.removeRelative(i1.key);
740
- assert.isTrue(spy.calledOnce);
741
- assert.equal(spy.args[0][0], i1.key, 'passes the key');
742
- assert.isUndefined(spy.args[0][1], 'has no direction specified');
743
- });
744
-
745
- it('calls removeRelative() on the parent with the direction', () => {
746
- const p1 = manager.addPanel();
747
- const spy = sinon.spy(p1, 'removeRelative');
748
- const i1 = p1.addItem({
749
- key: 'i1',
750
- kind: '',
751
- label: '',
752
- });
753
- manager.removeRelative(i1.key, SplitCloseDirection.left);
754
- assert.isTrue(spy.calledOnce);
755
- assert.equal(spy.args[0][0], i1.key, 'passes the key');
756
- assert.equal(spy.args[0][1], SplitCloseDirection.left, 'has the direction');
757
- });
758
-
759
- it('does nothing when item is not found', () => {
760
- const p1 = manager.addPanel();
761
- const spy = sinon.spy(p1, 'removeRelative');
762
- manager.removeRelative('unknown', SplitCloseDirection.left);
763
- assert.isFalse(spy.called);
764
- });
765
- });
725
+ // describe('removeRelative()', () => {
726
+ // let manager: SplitLayout;
727
+
728
+ // beforeEach(() => {
729
+ // manager = new SplitLayout();
730
+ // });
731
+
732
+ // it('calls removeRelative() on the parent with defaults', () => {
733
+ // const p1 = manager.addPanel();
734
+ // const spy = sinon.spy(p1, 'removeRelative');
735
+ // const i1 = p1.addItem({
736
+ // key: 'i1',
737
+ // kind: '',
738
+ // label: '',
739
+ // });
740
+ // manager.removeRelative(i1.key);
741
+ // assert.isTrue(spy.calledOnce);
742
+ // assert.equal(spy.args[0][0], i1.key, 'passes the key');
743
+ // assert.isUndefined(spy.args[0][1], 'has no direction specified');
744
+ // });
745
+
746
+ // it('calls removeRelative() on the parent with the direction', () => {
747
+ // const p1 = manager.addPanel();
748
+ // const spy = sinon.spy(p1, 'removeRelative');
749
+ // const i1 = p1.addItem({
750
+ // key: 'i1',
751
+ // kind: '',
752
+ // label: '',
753
+ // });
754
+ // manager.removeRelative(i1.key, SplitCloseDirection.left);
755
+ // assert.isTrue(spy.calledOnce);
756
+ // assert.equal(spy.args[0][0], i1.key, 'passes the key');
757
+ // assert.equal(spy.args[0][1], SplitCloseDirection.left, 'has the direction');
758
+ // });
759
+
760
+ // it('does nothing when item is not found', () => {
761
+ // const p1 = manager.addPanel();
762
+ // const spy = sinon.spy(p1, 'removeRelative');
763
+ // manager.removeRelative('unknown', SplitCloseDirection.left);
764
+ // assert.isFalse(spy.called);
765
+ // });
766
+ // });
766
767
 
767
768
  describe('moveItem()', () => {
768
769
  let manager: SplitLayout;
@@ -788,7 +789,7 @@ describe('layout', () => {
788
789
  kind: '',
789
790
  label: '',
790
791
  });
791
- manager.moveItem(p1.key, p1.key, i1.key, 1);
792
+ manager.moveItem(p1.key, p1.key, i1.key, { index: 1 });
792
793
  assert.equal(i1.index, 1, 'the #1 has changed index');
793
794
  assert.equal(i2.index, 0, 'the #2 has changed index');
794
795
  assert.equal(i3.index, 2, 'the #3 has unchanged index');
@@ -812,7 +813,7 @@ describe('layout', () => {
812
813
  kind: '',
813
814
  label: '',
814
815
  });
815
- manager.moveItem(p1.key, p2.key, i1.key, 0);
816
+ manager.moveItem(p1.key, p2.key, i1.key, { index: 0 });
816
817
  const readI1 = manager.findItem(i1.key)!;
817
818
  assert.ok(readI1, 'the manager has the moved item');
818
819
  assert.isFalse(p1.hasItem(i1.key), 'item was removed from the from parent');
@@ -830,7 +831,7 @@ describe('layout', () => {
830
831
  label: '',
831
832
  });
832
833
  assert.throws(() => {
833
- manager.moveItem('unknown', p1.key, i1.key, 0);
834
+ manager.moveItem('unknown', p1.key, i1.key, { index: 0 });
834
835
  }, 'Source layout panel not found.');
835
836
  });
836
837
 
@@ -842,7 +843,7 @@ describe('layout', () => {
842
843
  label: '',
843
844
  });
844
845
  assert.throws(() => {
845
- manager.moveItem(p1.key, 'unknown', i1.key, 0);
846
+ manager.moveItem(p1.key, 'unknown', i1.key, { index: 0 });
846
847
  }, 'Target layout panel not found.');
847
848
  });
848
849
 
@@ -1,7 +1,7 @@
1
1
  import { assert } from '@open-wc/testing';
2
2
  import sinon from 'sinon';
3
3
  import { SplitItem } from '../../../src/elements/layout/SplitItem';
4
- import { SplitLayout } from "../../../src/elements/layout/SplitLayout.js";
4
+ import { ITabCloseDetail, SplitLayout } from "../../../src/elements/layout/SplitLayout.js";
5
5
  import { SplitPanel } from '../../../src/elements/layout/SplitPanel.js';
6
6
  import { IPanelObject, LayoutType, PanelState, SplitCloseDirection, SplitDirection, SplitRegion } from '../../../src/elements/layout/type.js';
7
7
 
@@ -822,8 +822,9 @@ describe('layout', () => {
822
822
  manager.addEventListener('closetab', spy);
823
823
  panel.removeItem(i1.key);
824
824
  assert.isTrue(spy.calledOnce, 'removes the item');
825
- const event = spy.args[0][0] as CustomEvent<string>;
826
- assert.equal(event.detail, i1.key, 'has the tab key');
825
+ const event = spy.args[0][0] as CustomEvent<ITabCloseDetail>;
826
+ assert.equal(event.detail.tab, i1.key, 'has the tab key');
827
+ assert.equal(event.detail.panel, panel.key, 'has the panel key');
827
828
  });
828
829
 
829
830
  it('notifies tab removed when the panel has more items', () => {
@@ -842,8 +843,9 @@ describe('layout', () => {
842
843
  manager.addEventListener('closetab', spy);
843
844
  p1.removeItem(i1.key);
844
845
  assert.isTrue(spy.calledOnce, 'removes the item');
845
- const event = spy.args[0][0] as CustomEvent<string>;
846
- assert.equal(event.detail, i1.key, 'has the tab key');
846
+ const event = spy.args[0][0] as CustomEvent<ITabCloseDetail>;
847
+ assert.equal(event.detail.tab, i1.key, 'has the tab key');
848
+ assert.equal(event.detail.panel, p1.key, 'has the panel key');
847
849
  });
848
850
 
849
851
  it('notifies tab removed when removing the panel', () => {
@@ -857,8 +859,9 @@ describe('layout', () => {
857
859
  manager.addEventListener('closetab', spy);
858
860
  p1.removeItem(i1.key);
859
861
  assert.isTrue(spy.calledOnce, 'removes the item');
860
- const event = spy.args[0][0] as CustomEvent<string>;
861
- assert.equal(event.detail, i1.key, 'has the tab key');
862
+ const event = spy.args[0][0] as CustomEvent<ITabCloseDetail>;
863
+ assert.equal(event.detail.tab, i1.key, 'has the tab key');
864
+ assert.equal(event.detail.panel, p1.key, 'has the panel key');
862
865
  });
863
866
 
864
867
  it('moves the selection to the next item', () => {
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": [
4
+ "src/**/*.ts",
5
+ "demo/**/*.ts",
6
+ "test/**/*.ts"
7
+ ],
8
+ }
@@ -11,7 +11,10 @@ const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
11
11
 
12
12
  export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
13
13
  /** Test files to run */
14
- files: ["test/**/**/*.test.ts"],
14
+ files: [
15
+ "test/**/**/*.test.ts"
16
+ // "test/elements/layout/*.test.ts",
17
+ ],
15
18
 
16
19
  /** Resolve bare module imports */
17
20
  nodeResolve: {
@@ -1,7 +0,0 @@
1
- import Element from "../../elements/layout/LayoutPanelElement.js";
2
- declare global {
3
- interface HTMLElementTagNameMap {
4
- 'layout-panel': Element;
5
- }
6
- }
7
- //# sourceMappingURL=layout-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-panel.d.ts","sourceRoot":"","sources":["../../../src/define/layout/layout-panel.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAIlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,OAAO,CAAC;KACzB;CACF"}
@@ -1,3 +0,0 @@
1
- import Element from "../../elements/layout/LayoutPanelElement.js";
2
- window.customElements.define('layout-panel', Element);
3
- //# sourceMappingURL=layout-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout-panel.js","sourceRoot":"","sources":["../../../src/define/layout/layout-panel.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,6CAA6C,CAAC;AAElE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC","sourcesContent":["import Element from \"../../elements/layout/LayoutPanelElement.js\";\n\nwindow.customElements.define('layout-panel', Element);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'layout-panel': Element;\n }\n}\n"]}