igniteui-dockmanager 1.12.5 → 1.13.0

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 (52) hide show
  1. package/dist/cjs/igc-button-component_20.cjs.entry.js +91 -22
  2. package/dist/cjs/igniteui-dockmanager.cjs.js +2 -2
  3. package/dist/cjs/{index-f11f2141.js → index-2e72b990.js} +8 -0
  4. package/dist/cjs/index.cjs.js +1 -1
  5. package/dist/cjs/loader.cjs.js +2 -2
  6. package/dist/cjs/{locale-758076f2.js → locale-17d229ad.js} +6 -0
  7. package/dist/collection/components/dockmanager/docking/joystick-indicator-component.js +29 -1
  8. package/dist/collection/components/dockmanager/dockmanager-component.js +71 -2
  9. package/dist/collection/components/dockmanager/dockmanager.public-interfaces.js +7 -0
  10. package/dist/collection/components/dockmanager/dockmanager.service.js +14 -0
  11. package/dist/collection/components/sample-component/sample-component.js +8 -2
  12. package/dist/collection/components/tabs/tabs-component.js +26 -14
  13. package/dist/esm/igc-button-component_20.entry.js +91 -22
  14. package/dist/esm/igniteui-dockmanager.js +2 -2
  15. package/dist/esm/{index-cbe7fc41.js → index-bd1fe64b.js} +8 -0
  16. package/dist/esm/index.js +1 -1
  17. package/dist/esm/loader.js +2 -2
  18. package/dist/esm/{locale-7d22d721.js → locale-a0672ab3.js} +6 -0
  19. package/dist/esm-es5/igc-button-component_20.entry.js +1 -1
  20. package/dist/esm-es5/igniteui-dockmanager.js +1 -1
  21. package/dist/esm-es5/{index-cbe7fc41.js → index-bd1fe64b.js} +1 -1
  22. package/dist/esm-es5/index.js +1 -1
  23. package/dist/esm-es5/loader.js +1 -1
  24. package/dist/esm-es5/locale-a0672ab3.js +1 -0
  25. package/dist/igniteui-dockmanager/igniteui-dockmanager.esm.js +1 -1
  26. package/dist/igniteui-dockmanager/igniteui-dockmanager.js +1 -1
  27. package/dist/igniteui-dockmanager/index.esm.js +1 -1
  28. package/dist/igniteui-dockmanager/p-383f3cf9.entry.js +1 -0
  29. package/dist/igniteui-dockmanager/p-63ab8da6.system.js +1 -0
  30. package/dist/igniteui-dockmanager/p-7fcd25e9.system.entry.js +1 -0
  31. package/dist/igniteui-dockmanager/p-940b5e72.js +1 -0
  32. package/dist/igniteui-dockmanager/p-bb001bb5.system.js +1 -0
  33. package/dist/igniteui-dockmanager/{p-972bb54a.system.js → p-c98cb661.system.js} +1 -1
  34. package/dist/igniteui-dockmanager/{p-41c42898.system.js → p-d8198e0d.system.js} +1 -1
  35. package/dist/igniteui-dockmanager/p-e84a170b.js +1 -0
  36. package/dist/types/components/dockmanager/docking/joystick-indicator-component.d.ts +3 -0
  37. package/dist/types/components/dockmanager/dockmanager-component.d.ts +3 -0
  38. package/dist/types/components/dockmanager/dockmanager.public-interfaces.d.ts +24 -0
  39. package/dist/types/components/dockmanager/dockmanager.service.d.ts +2 -0
  40. package/dist/types/components/sample-component/sample-component.d.ts +1 -0
  41. package/dist/types/components/tabs/tabs-component.d.ts +3 -1
  42. package/dist/types/components.d.ts +5 -0
  43. package/loader/cdn.js +2 -2
  44. package/loader/index.cjs.js +2 -2
  45. package/package.json +1 -1
  46. package/dist/esm-es5/locale-7d22d721.js +0 -1
  47. package/dist/igniteui-dockmanager/p-13716c31.entry.js +0 -1
  48. package/dist/igniteui-dockmanager/p-28ea6cfc.system.entry.js +0 -1
  49. package/dist/igniteui-dockmanager/p-5de92891.js +0 -1
  50. package/dist/igniteui-dockmanager/p-db0ed18d.system.js +0 -1
  51. package/dist/igniteui-dockmanager/p-f8e35aef.system.js +0 -1
  52. package/dist/igniteui-dockmanager/p-fdf33b6f.js +0 -1
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-f11f2141.js');
6
- const locale = require('./locale-758076f2.js');
5
+ const index = require('./index-2e72b990.js');
6
+ const locale = require('./locale-17d229ad.js');
7
7
 
8
8
  const buttonComponentCss = "button{position:static;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;height:100%;min-width:10px;padding:2px 4px;border-radius:2px;color:var(--igc-button-text, rgba(0, 0, 0, 0.72));cursor:pointer;outline-style:none;font-size:14px;font-family:inherit;background:transparent;border:none;-webkit-tap-highlight-color:transparent;opacity:0.7;-webkit-transition:background 0.25s ease-out, opacity 0.25s ease-out, -webkit-box-shadow 0.25s ease-out;transition:background 0.25s ease-out, opacity 0.25s ease-out, -webkit-box-shadow 0.25s ease-out;transition:background 0.25s ease-out, opacity 0.25s ease-out, box-shadow 0.25s ease-out;transition:background 0.25s ease-out, opacity 0.25s ease-out, box-shadow 0.25s ease-out, -webkit-box-shadow 0.25s ease-out}:host([disabled]){pointer-events:none}:host{display:-ms-flexbox;display:flex}button{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}button:hover{opacity:1}button:focus{background:var(--igc-accent-color, #fff);-webkit-box-shadow:inset 0 0 0 1px var(--igc-active-color, cornflowerblue);box-shadow:inset 0 0 0 1px var(--igc-active-color, cornflowerblue);opacity:1}button[disabled]{opacity:0.54}";
9
9
 
@@ -693,6 +693,14 @@ class IgcDockManagerService {
693
693
  updateLayout() {
694
694
  this.dockManager.layout = Object.assign({}, this.dockManager.layout);
695
695
  }
696
+ hasMaximizedProp(pane) {
697
+ return 'isMaximized' in pane;
698
+ }
699
+ getLastMaximizedPane() {
700
+ const keys = Array.from(this.paneParentMap.keys());
701
+ const maximizedPane = keys.filter(this.hasMaximizedProp).filter(i => i.isMaximized)[0];
702
+ return maximizedPane;
703
+ }
696
704
  processLayout() {
697
705
  this.paneParentMap = new Map();
698
706
  this.unpinnedLocationMap = new Map();
@@ -847,6 +855,12 @@ class IgcDockManagerService {
847
855
  const parent = this.getParent(pane);
848
856
  const targetPane = parent && parent.type === locale.IgcDockManagerPaneType.tabGroupPane && pane !== this.dockManager.flyoutPane ? parent : pane;
849
857
  this.dockManager.maximizedPane = this.dockManager.maximizedPane === targetPane ? null : targetPane;
858
+ if (this.dockManager.maximizedPane) {
859
+ targetPane.isMaximized = true;
860
+ }
861
+ else {
862
+ targetPane.isMaximized = false;
863
+ }
850
864
  }
851
865
  moveFloatingPane(pane, location) {
852
866
  pane.floatingLocation = location;
@@ -1975,6 +1989,7 @@ let IgcDockManager = class {
1975
1989
  this.allowMaximize = true;
1976
1990
  this.allowFloatingPanesResize = true;
1977
1991
  this.disableKeyboardNavigation = false;
1992
+ this.allowInnerDock = true;
1978
1993
  this.activePane = null;
1979
1994
  this.updateTemplates = () => {
1980
1995
  if (this.templates.size > 0) {
@@ -2132,6 +2147,22 @@ let IgcDockManager = class {
2132
2147
  async removePane(pane) {
2133
2148
  this.service.removePane(pane);
2134
2149
  }
2150
+ async focusPane(contentId) {
2151
+ const contentPane = this.service.getContent(contentId);
2152
+ const parentPane = this.service.getRootParent(contentPane);
2153
+ const isFloating = this.service.isFloatingPane(parentPane);
2154
+ const isUnpinned = contentPane.isPinned !== undefined && !contentPane.isPinned;
2155
+ if (isFloating) {
2156
+ this.service.bringFloatingPaneOnTop(parentPane);
2157
+ this.activePane = contentPane;
2158
+ }
2159
+ else if (isUnpinned) {
2160
+ this.handlePaneFlyout(contentPane);
2161
+ }
2162
+ else {
2163
+ this.activePane = contentPane;
2164
+ }
2165
+ }
2135
2166
  connectedCallback() {
2136
2167
  this.element.shadowRoot.addEventListener('focusout', this.handleShadowRootFocusOut);
2137
2168
  this.domObserver.observe(this.element, { attributes: true, subtree: true, childList: true });
@@ -2153,6 +2184,16 @@ let IgcDockManager = class {
2153
2184
  this.resourceStrings = locale.resourceStringsMap.has(lang) ? locale.resourceStringsMap.get(lang) : locale.resourceStringsMap.get('en');
2154
2185
  }
2155
2186
  }
2187
+ componentWillRender() {
2188
+ const lastMaximizedPane = this.service.getLastMaximizedPane();
2189
+ if (lastMaximizedPane && this.maximizedPane !== lastMaximizedPane) {
2190
+ const shouldFlyout = 'isPinned' in lastMaximizedPane && !lastMaximizedPane.isPinned;
2191
+ if (shouldFlyout) {
2192
+ this.handlePaneFlyout(lastMaximizedPane);
2193
+ }
2194
+ this.handleMaximize(lastMaximizedPane);
2195
+ }
2196
+ }
2156
2197
  componentDidRender() {
2157
2198
  while (this.scheduledCallbacks.length) {
2158
2199
  const callback = this.scheduledCallbacks.shift();
@@ -2565,6 +2606,7 @@ let IgcDockManager = class {
2565
2606
  this.service.resizeFloatingPaneEnd(pane, event.detail.resizerLocation);
2566
2607
  }
2567
2608
  handleDropPositionChange(clientX, clientY, target) {
2609
+ var _a;
2568
2610
  const elements = clientX && clientY ?
2569
2611
  this.element.shadowRoot.elementsFromPoint(clientX, clientY) :
2570
2612
  null;
@@ -2575,7 +2617,7 @@ let IgcDockManager = class {
2575
2617
  const adjacentElement = elements[splitterIndex - 1];
2576
2618
  isOverSplitter = adjacentElement &&
2577
2619
  adjacentElement.tagName.toLowerCase() === 'igc-floating-pane-component' &&
2578
- adjacentElement.floatingId === this.draggedPane.id; // if not equal - splitter is below another element, not directly over
2620
+ adjacentElement.floatingId === ((_a = this.draggedPane) === null || _a === void 0 ? void 0 : _a.id); // if not equal - splitter is below another element, not directly over
2579
2621
  }
2580
2622
  if (!elements || !elements.length || isOverSplitter) {
2581
2623
  this.service.dockingIndicator = null;
@@ -3043,7 +3085,7 @@ let IgcDockManager = class {
3043
3085
  flexDirection: 'row',
3044
3086
  justifyContent: 'space-between'
3045
3087
  } }, !this.documentOnlyDrag && this.renderRootDockingIndicator(startPosition), !this.documentOnlyDrag && this.renderRootDockingIndicator(endPosition)), !this.documentOnlyDrag && this.renderRootDockingIndicator(locale.IgcDockingIndicatorPosition.bottom), this.dropTargetPaneInfo &&
3046
- index.h("igc-joystick-indicator-component", { dropTargetPaneInfo: this.dropTargetPaneInfo, documentOnlyDrag: this.documentOnlyDrag })));
3088
+ index.h("igc-joystick-indicator-component", { dropTargetPaneInfo: this.dropTargetPaneInfo, documentOnlyDrag: this.documentOnlyDrag, allowCenterDock: this.allowInnerDock })));
3047
3089
  }
3048
3090
  renderContextMenu() {
3049
3091
  return this.contextMenuMeta && (index.h("igc-context-menu-component", { onMenuClosed: this.handleContextMenuClosed.bind(this), orientation: IgcContextMenuOrientation.bottom, items: this.contextMenuMeta.menuItems, target: this.contextMenuMeta.target, position: this.contextMenuMeta.position }));
@@ -3394,6 +3436,16 @@ let IgcJoystickIndicatorComponent = class {
3394
3436
  return ((el && el.closest(selector)) ||
3395
3437
  this.closestElement(selector, el.getRootNode().host));
3396
3438
  }
3439
+ shouldAllowCenterDock() {
3440
+ let targetPane = this.dropTargetPaneInfo.pane;
3441
+ targetPane = targetPane.type === locale.IgcDockManagerPaneType.tabGroupPane && targetPane.selectedIndex > -1 ? targetPane.panes[targetPane.selectedIndex] : targetPane;
3442
+ return targetPane.type === locale.IgcDockManagerPaneType.contentPane && targetPane.acceptsInnerDock !== undefined
3443
+ ? targetPane.acceptsInnerDock
3444
+ : this.allowCenterDock;
3445
+ }
3446
+ renderBlankIndicator(position) {
3447
+ return (index.h("igc-joystick-icon-component", { isDocHost: this.isDocHost, position: position, direction: Utils.getDirection(this.closestElement('igc-dockmanager', this.element)), empty: true }));
3448
+ }
3397
3449
  renderIndicator(position) {
3398
3450
  return (index.h("igc-joystick-icon-component", { isDocHost: this.isDocHost, position: position, direction: Utils.getDirection(this.closestElement('igc-dockmanager', this.element)), empty: this.isEmptyCenter(position) || this.isEmptyEdge(position) }));
3399
3451
  }
@@ -3407,7 +3459,7 @@ let IgcJoystickIndicatorComponent = class {
3407
3459
  } }, index.h("div", { class: {
3408
3460
  'indicators-container': true,
3409
3461
  'indicators-container--doc-host': this.isDocHost
3410
- } }, this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerLeft), this.renderIndicator(locale.IgcDockingIndicatorPosition.left), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerTop), this.renderIndicator(locale.IgcDockingIndicatorPosition.top), this.renderIndicator(locale.IgcDockingIndicatorPosition.center), this.renderIndicator(locale.IgcDockingIndicatorPosition.right), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerRight), this.renderIndicator(locale.IgcDockingIndicatorPosition.bottom), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerBottom))));
3462
+ } }, this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerLeft), this.renderIndicator(locale.IgcDockingIndicatorPosition.left), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerTop), this.renderIndicator(locale.IgcDockingIndicatorPosition.top), !this.shouldAllowCenterDock() && this.renderBlankIndicator(locale.IgcDockingIndicatorPosition.center), this.shouldAllowCenterDock() && this.renderIndicator(locale.IgcDockingIndicatorPosition.center), this.renderIndicator(locale.IgcDockingIndicatorPosition.right), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerRight), this.renderIndicator(locale.IgcDockingIndicatorPosition.bottom), this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(locale.IgcDockingIndicatorPosition.outerBottom))));
3411
3463
  }
3412
3464
  get element() { return index.getElement(this); }
3413
3465
  };
@@ -4270,6 +4322,7 @@ let IgcTabsComponent = class {
4270
4322
  this.selectedTabOutOfView = index.createEvent(this, "selectedTabOutOfView", 3);
4271
4323
  this.rendered = index.createEvent(this, "rendered", 7);
4272
4324
  this.forcedUpdate = false;
4325
+ this.selectionOrder = [];
4273
4326
  this.hasHiddenTabs = false;
4274
4327
  this.allowMaximize = true;
4275
4328
  this.tabHeadersPosition = IgcTabHeadersPosition.top;
@@ -4277,8 +4330,9 @@ let IgcTabsComponent = class {
4277
4330
  this.showHiddenTabsMenu = true;
4278
4331
  this.resizeObserver = new ResizeObserver(this.tabHeadersDivResized.bind(this));
4279
4332
  this.slotChanged = () => {
4280
- this.updateSelectedIndex();
4281
4333
  this.setTabsAttributes();
4334
+ this.updateSelection();
4335
+ this.handleSelectedIndexChanged(this.selectedIndex);
4282
4336
  this.forceUpdate();
4283
4337
  };
4284
4338
  this.onTabKeyDown = (ev) => {
@@ -4318,9 +4372,31 @@ let IgcTabsComponent = class {
4318
4372
  }
4319
4373
  componentWillLoad() {
4320
4374
  this.hiddenTabsMenuMeta = null;
4321
- this.updateSelectedIndex();
4375
+ this.handleSelectedIndexChanged(this.selectedIndex);
4322
4376
  this.checkForActivePane();
4323
4377
  }
4378
+ componentWillUpdate() {
4379
+ this.updateSelection();
4380
+ }
4381
+ updateSelection() {
4382
+ var _a;
4383
+ const headers = this.tabHeaders;
4384
+ // if any header is removed - delete its id from selection order & update selected index
4385
+ const missingMatchIndex = this.selectionOrder.findIndex(s => headers.findIndex(h => h.id === s) < 0);
4386
+ if (missingMatchIndex > -1) {
4387
+ this.selectionOrder.splice(missingMatchIndex, 1);
4388
+ const newSelectedIndex = headers.findIndex(h => h.id === this.selectionOrder[this.selectionOrder.length - 1]);
4389
+ this.selectedIndex = newSelectedIndex > -1 ? newSelectedIndex : 0;
4390
+ }
4391
+ const currentSelectionId = (_a = headers[this.selectedIndex]) === null || _a === void 0 ? void 0 : _a.id;
4392
+ const existingMatchIndex = this.selectionOrder.indexOf(currentSelectionId);
4393
+ if (existingMatchIndex > -1) {
4394
+ this.selectionOrder.splice(existingMatchIndex, 1);
4395
+ }
4396
+ if (currentSelectionId) {
4397
+ this.selectionOrder.push(currentSelectionId);
4398
+ }
4399
+ }
4324
4400
  componentDidRender() {
4325
4401
  this.rendered.emit();
4326
4402
  }
@@ -4359,18 +4435,6 @@ let IgcTabsComponent = class {
4359
4435
  this.forcedUpdate = true;
4360
4436
  index.forceUpdate(this);
4361
4437
  }
4362
- updateSelectedIndex() {
4363
- const tabPanels = this.tabPanels;
4364
- if (tabPanels.length === 0) {
4365
- return;
4366
- }
4367
- if (this.selectedIndex > tabPanels.length - 1) {
4368
- this.selectedIndex = tabPanels.length - 1;
4369
- }
4370
- else {
4371
- this.handleSelectedIndexChanged(this.selectedIndex);
4372
- }
4373
- }
4374
4438
  get tabPanels() {
4375
4439
  return Array.from(this.el.querySelectorAll('igc-tab-panel-component'));
4376
4440
  }
@@ -4612,7 +4676,8 @@ let SampleComponent = class {
4612
4676
  type: locale.IgcDockManagerPaneType.contentPane,
4613
4677
  header: 'App.xaml',
4614
4678
  contentId: 'content8',
4615
- allowMaximize: true
4679
+ allowMaximize: true,
4680
+ acceptsInnerDock: false
4616
4681
  }
4617
4682
  ]
4618
4683
  }
@@ -4694,7 +4759,8 @@ let SampleComponent = class {
4694
4759
  {
4695
4760
  type: locale.IgcDockManagerPaneType.contentPane,
4696
4761
  header: 'Floating 1',
4697
- contentId: 'content10'
4762
+ contentId: 'content10',
4763
+ acceptsInnerDock: false
4698
4764
  },
4699
4765
  {
4700
4766
  type: locale.IgcDockManagerPaneType.contentPane,
@@ -4898,6 +4964,9 @@ let SampleComponent = class {
4898
4964
  tabGroupPane.panes[0].disabled = true;
4899
4965
  this.dockManager.layout = Object.assign({}, this.layout);
4900
4966
  }
4967
+ focusPane() {
4968
+ this.dockManager.focusPane('content12');
4969
+ }
4901
4970
  findElement(pane, type) {
4902
4971
  if (!pane) {
4903
4972
  return;
@@ -5041,7 +5110,7 @@ let SampleComponent = class {
5041
5110
  }
5042
5111
  }
5043
5112
  render() {
5044
- return (index.h(index.Host, null, index.h("div", null, index.h("button", { onClick: () => this.saveLayout() }, "Save Layout"), index.h("button", { onClick: () => this.loadLayout() }, "Load Layout"), index.h("button", { onClick: () => this.setActivePane() }, "Set Active Pane"), index.h("button", { onClick: () => this.addPane() }, "Add Floating Pane"), index.h("button", { onClick: () => this.addTab() }, "Add Tab Pane"), index.h("button", { onClick: () => this.disableContentPane() }, "Disable Tab Pane"), index.h("input", { id: "hideOnClose", type: "checkbox", style: { marginLeft: '20px' }, ref: el => this.hideOnCloseCheckbox = el }), index.h("label", { htmlFor: "hideOnClose" }, "Hide on close"), index.h("span", { style: { marginLeft: '20px' } }, "Hidden Panes:"), index.h("select", { style: { width: '150px' }, ref: el => this.hiddenPanesSelect = el }, this.hiddenPanes.map(p => {
5113
+ return (index.h(index.Host, null, index.h("div", null, index.h("button", { onClick: () => this.saveLayout() }, "Save Layout"), index.h("button", { onClick: () => this.loadLayout() }, "Load Layout"), index.h("button", { onClick: () => this.setActivePane() }, "Set Active Pane"), index.h("button", { onClick: () => this.addPane() }, "Add Floating Pane"), index.h("button", { onClick: () => this.addTab() }, "Add Tab Pane"), index.h("button", { onClick: () => this.disableContentPane() }, "Disable Tab Pane"), index.h("button", { onClick: () => this.focusPane() }, "Focus Pane"), index.h("input", { id: "hideOnClose", type: "checkbox", style: { marginLeft: '20px' }, ref: el => this.hideOnCloseCheckbox = el }), index.h("label", { htmlFor: "hideOnClose" }, "Hide on close"), index.h("span", { style: { marginLeft: '20px' } }, "Hidden Panes:"), index.h("select", { style: { width: '150px' }, ref: el => this.hiddenPanesSelect = el }, this.hiddenPanes.map(p => {
5045
5114
  return (index.h("option", { value: p.id }, p.header));
5046
5115
  })), index.h("button", { onClick: () => this.showPane() }, "Show Pane"), index.h("button", { onClick: () => this.showAllPanes() }, "Show All Panes")), index.h("igc-dockmanager", { layout: this.layout, onPaneClose: this.handlePaneClose.bind(this), onPaneScroll: this.handlePaneScroll.bind(this), onPanePinnedToggle: this.handlePinnedToggle.bind(this), onActivePaneChanged: this.handleActivePaneChanged.bind(this), onPaneDragStart: this.handleDragStart.bind(this), onPaneDragOver: this.handleDragOver.bind(this), onPaneDragEnd: this.handleDragEnd.bind(this), onSplitterResizeStart: this.handleSplitterResizeStart.bind(this), onSplitterResizeEnd: this.handleSplitterResizeEnd.bind(this), onFloatingPaneResizeStart: this.handleFloatingPaneResizeStart.bind(this), onFloatingPaneResizeMove: this.handleFloatingPaneResizeMove.bind(this), onFloatingPaneResizeEnd: this.handleFloatingPaneResizeEnd.bind(this), onLayoutChange: this.handleLayoutChange.bind(this),
5047
5116
  // resourceStrings={this.getCustomResourceStrings()}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const index = require('./index-f11f2141.js');
3
+ const index = require('./index-2e72b990.js');
4
4
 
5
5
  /*
6
6
  Stencil Client Patch Browser v2.12.1 | MIT Licensed | https://stenciljs.com
@@ -15,5 +15,5 @@ const patchBrowser = () => {
15
15
  };
16
16
 
17
17
  patchBrowser().then(options => {
18
- return index.bootstrapLazy([["igc-button-component_20.cjs",[[2,"sample-component",{"hiddenPanes":[1040]}],[1,"igc-dockmanager",{"navigationPaneMeta":[1040],"allowMaximize":[4,"allow-maximize"],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"],"maximizedPane":[1040],"resourceStrings":[1040],"allowFloatingPanesResize":[4,"allow-floating-panes-resize"],"disableKeyboardNavigation":[4,"disable-keyboard-navigation"],"contextMenuPosition":[1,"context-menu-position"],"layout":[1040],"draggedPane":[1040],"dropPosition":[16],"activePane":[1040],"dropTargetPaneInfo":[32],"flyoutPane":[32],"floatingPaneZIndicesMap":[32],"contextMenuMeta":[32],"dropShadowRect":[32],"templates":[32],"hasCustomMaximizeButton":[32],"hasCustomMinimizeButton":[32],"dropPane":[64],"removePane":[64]},[[0,"focusout","handleFocusOut"],[0,"keydown","handleKeyDown"],[1,"pointerdown","handlePointerDown"],[1,"pointerup","handlePointerUp"]]],[1,"igc-tabs-component",{"size":[2],"maximized":[4],"allowMaximize":[4,"allow-maximize"],"tabHeadersPosition":[1,"tab-headers-position"],"selectedIndex":[1026,"selected-index"],"hasHeaders":[4,"has-headers"],"showHiddenTabsMenu":[4,"show-hidden-tabs-menu"],"resourceStrings":[16],"hiddenTabsMenuMeta":[32],"hasHiddenTabs":[32]},[[0,"tabMouseDown","handleTabMouseDown"]]],[2,"igc-joystick-indicator-component",{"dropTargetPaneInfo":[16],"documentOnlyDrag":[4,"document-only-drag"]}],[1,"igc-pane-header-component",{"dragService":[1040],"pinned":[4],"maximized":[4],"isFloating":[4,"is-floating"],"forcedDrag":[4,"forced-drag"],"isFloatingPaneHeader":[4,"is-floating-pane-header"],"allowClose":[4,"allow-close"],"allowMaximize":[4,"allow-maximize"],"allowPinning":[4,"allow-pinning"],"pane":[16],"isActive":[4,"is-active"],"disabled":[4],"resourceStrings":[16]}],[1,"igc-tab-header-component",{"dragService":[1040],"selected":[4],"hovered":[4],"position":[1],"iconName":[1,"icon-name"],"header":[1],"isActive":[4,"is-active"],"resourceStrings":[16],"forcedDrag":[4,"forced-drag"],"disabled":[4],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"]},[[1,"mousedown","handleMouseDown"],[1,"mouseenter","handleMouseEnter"],[1,"mouseleave","handleMouseLeave"]]],[1,"igc-floating-pane-component",{"allowResize":[4,"allow-resize"],"floatingLocation":[16],"floatingWidth":[2,"floating-width"],"floatingHeight":[2,"floating-height"],"hasHeader":[4,"has-header"],"maximized":[4],"floatingMinHeight":[2,"floating-min-height"],"floatingMinWidth":[2,"floating-min-width"],"floatingId":[1,"floating-id"]}],[2,"igc-root-docking-indicator-component",{"position":[1]}],[1,"igc-content-pane-component",{"size":[2],"isFlyout":[4,"is-flyout"],"unpinnedSize":[2,"unpinned-size"],"header":[1],"disabled":[4],"isSingleFloating":[4,"is-single-floating"]}],[2,"igc-document-host-component",{"size":[2]}],[1,"igc-pane-navigator-component",{"activeDocuments":[16],"activePanes":[16],"selectedIndex":[1026,"selected-index"],"previousActivePaneIndex":[2,"previous-active-pane-index"],"resourceStrings":[16]},[[0,"keyup","handleKeyUp"],[0,"keydown","handleKeydown"]]],[2,"igc-split-pane-component",{"orientation":[1],"size":[2]}],[1,"igc-splitter-component",{"showDragGhost":[4,"show-drag-ghost"],"splitPaneOrientation":[1,"split-pane-orientation"],"flyoutLocation":[1,"flyout-location"],"dragOffset":[32],"hasCustomSplitterHandle":[32]},[[0,"keydown","handleKeydownEvent"],[1,"mousedown","handleMouseDown"]]],[1,"igc-tab-panel-component",{"selected":[4],"disabled":[4]}],[1,"igc-unpinned-pane-header-component",{"location":[1],"isActive":[4,"is-active"],"disabled":[4]}],[1,"igc-context-menu-component",{"orientation":[1],"position":[1],"target":[16],"items":[16],"activeIndex":[1026,"active-index"]},[[0,"focusout","emitMenuClosed"]]],[2,"igc-joystick-icon-component",{"isDocHost":[4,"is-doc-host"],"position":[1],"direction":[1],"empty":[4]}],[2,"igc-resizer-component",{"orientation":[1],"dragOffsetX":[32],"dragOffsetY":[32]}],[1,"igc-button-component",{"disabled":[4],"name":[513],"type":[513],"value":[513]}],[2,"igc-icon-component",{"name":[1]}]]]], options);
18
+ return index.bootstrapLazy([["igc-button-component_20.cjs",[[2,"sample-component",{"hiddenPanes":[1040]}],[1,"igc-dockmanager",{"navigationPaneMeta":[1040],"allowMaximize":[4,"allow-maximize"],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"],"maximizedPane":[1040],"resourceStrings":[1040],"allowFloatingPanesResize":[4,"allow-floating-panes-resize"],"disableKeyboardNavigation":[4,"disable-keyboard-navigation"],"contextMenuPosition":[1,"context-menu-position"],"allowInnerDock":[4,"allow-inner-dock"],"layout":[1040],"draggedPane":[1040],"dropPosition":[16],"activePane":[1040],"dropTargetPaneInfo":[32],"flyoutPane":[32],"floatingPaneZIndicesMap":[32],"contextMenuMeta":[32],"dropShadowRect":[32],"templates":[32],"hasCustomMaximizeButton":[32],"hasCustomMinimizeButton":[32],"dropPane":[64],"removePane":[64],"focusPane":[64]},[[0,"focusout","handleFocusOut"],[0,"keydown","handleKeyDown"],[1,"pointerdown","handlePointerDown"],[1,"pointerup","handlePointerUp"]]],[1,"igc-tabs-component",{"size":[2],"maximized":[4],"allowMaximize":[4,"allow-maximize"],"tabHeadersPosition":[1,"tab-headers-position"],"selectedIndex":[1026,"selected-index"],"hasHeaders":[4,"has-headers"],"showHiddenTabsMenu":[4,"show-hidden-tabs-menu"],"resourceStrings":[16],"hiddenTabsMenuMeta":[32],"hasHiddenTabs":[32]},[[0,"tabMouseDown","handleTabMouseDown"]]],[2,"igc-joystick-indicator-component",{"dropTargetPaneInfo":[16],"documentOnlyDrag":[4,"document-only-drag"],"allowCenterDock":[4,"allow-center-dock"]}],[1,"igc-pane-header-component",{"dragService":[1040],"pinned":[4],"maximized":[4],"isFloating":[4,"is-floating"],"forcedDrag":[4,"forced-drag"],"isFloatingPaneHeader":[4,"is-floating-pane-header"],"allowClose":[4,"allow-close"],"allowMaximize":[4,"allow-maximize"],"allowPinning":[4,"allow-pinning"],"pane":[16],"isActive":[4,"is-active"],"disabled":[4],"resourceStrings":[16]}],[1,"igc-tab-header-component",{"dragService":[1040],"selected":[4],"hovered":[4],"position":[1],"iconName":[1,"icon-name"],"header":[1],"isActive":[4,"is-active"],"resourceStrings":[16],"forcedDrag":[4,"forced-drag"],"disabled":[4],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"]},[[1,"mousedown","handleMouseDown"],[1,"mouseenter","handleMouseEnter"],[1,"mouseleave","handleMouseLeave"]]],[1,"igc-floating-pane-component",{"allowResize":[4,"allow-resize"],"floatingLocation":[16],"floatingWidth":[2,"floating-width"],"floatingHeight":[2,"floating-height"],"hasHeader":[4,"has-header"],"maximized":[4],"floatingMinHeight":[2,"floating-min-height"],"floatingMinWidth":[2,"floating-min-width"],"floatingId":[1,"floating-id"]}],[2,"igc-root-docking-indicator-component",{"position":[1]}],[1,"igc-content-pane-component",{"size":[2],"isFlyout":[4,"is-flyout"],"unpinnedSize":[2,"unpinned-size"],"header":[1],"disabled":[4],"isSingleFloating":[4,"is-single-floating"]}],[2,"igc-document-host-component",{"size":[2]}],[1,"igc-pane-navigator-component",{"activeDocuments":[16],"activePanes":[16],"selectedIndex":[1026,"selected-index"],"previousActivePaneIndex":[2,"previous-active-pane-index"],"resourceStrings":[16]},[[0,"keyup","handleKeyUp"],[0,"keydown","handleKeydown"]]],[2,"igc-split-pane-component",{"orientation":[1],"size":[2]}],[1,"igc-splitter-component",{"showDragGhost":[4,"show-drag-ghost"],"splitPaneOrientation":[1,"split-pane-orientation"],"flyoutLocation":[1,"flyout-location"],"dragOffset":[32],"hasCustomSplitterHandle":[32]},[[0,"keydown","handleKeydownEvent"],[1,"mousedown","handleMouseDown"]]],[1,"igc-tab-panel-component",{"selected":[4],"disabled":[4]}],[1,"igc-unpinned-pane-header-component",{"location":[1],"isActive":[4,"is-active"],"disabled":[4]}],[1,"igc-context-menu-component",{"orientation":[1],"position":[1],"target":[16],"items":[16],"activeIndex":[1026,"active-index"]},[[0,"focusout","emitMenuClosed"]]],[2,"igc-joystick-icon-component",{"isDocHost":[4,"is-doc-host"],"position":[1],"direction":[1],"empty":[4]}],[2,"igc-resizer-component",{"orientation":[1],"dragOffsetX":[32],"dragOffsetY":[32]}],[1,"igc-button-component",{"disabled":[4],"name":[513],"type":[513],"value":[513]}],[2,"igc-icon-component",{"name":[1]}]]]], options);
19
19
  });
@@ -758,6 +758,14 @@ const dispatchHooks = (hostRef, isInitialLoad) => {
758
758
  promise = safeCall(instance, 'componentWillLoad');
759
759
  }
760
760
  }
761
+ else {
762
+ {
763
+ promise = safeCall(instance, 'componentWillUpdate');
764
+ }
765
+ }
766
+ {
767
+ promise = then(promise, () => safeCall(instance, 'componentWillRender'));
768
+ }
761
769
  endSchedule();
762
770
  return then(promise, () => updateComponent(hostRef, instance, isInitialLoad));
763
771
  };
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const locale = require('./locale-758076f2.js');
5
+ const locale = require('./locale-17d229ad.js');
6
6
 
7
7
 
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-f11f2141.js');
5
+ const index = require('./index-2e72b990.js');
6
6
 
7
7
  /*
8
8
  Stencil Client Patch Esm v2.12.1 | MIT Licensed | https://stenciljs.com
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["igc-button-component_20.cjs",[[2,"sample-component",{"hiddenPanes":[1040]}],[1,"igc-dockmanager",{"navigationPaneMeta":[1040],"allowMaximize":[4,"allow-maximize"],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"],"maximizedPane":[1040],"resourceStrings":[1040],"allowFloatingPanesResize":[4,"allow-floating-panes-resize"],"disableKeyboardNavigation":[4,"disable-keyboard-navigation"],"contextMenuPosition":[1,"context-menu-position"],"layout":[1040],"draggedPane":[1040],"dropPosition":[16],"activePane":[1040],"dropTargetPaneInfo":[32],"flyoutPane":[32],"floatingPaneZIndicesMap":[32],"contextMenuMeta":[32],"dropShadowRect":[32],"templates":[32],"hasCustomMaximizeButton":[32],"hasCustomMinimizeButton":[32],"dropPane":[64],"removePane":[64]},[[0,"focusout","handleFocusOut"],[0,"keydown","handleKeyDown"],[1,"pointerdown","handlePointerDown"],[1,"pointerup","handlePointerUp"]]],[1,"igc-tabs-component",{"size":[2],"maximized":[4],"allowMaximize":[4,"allow-maximize"],"tabHeadersPosition":[1,"tab-headers-position"],"selectedIndex":[1026,"selected-index"],"hasHeaders":[4,"has-headers"],"showHiddenTabsMenu":[4,"show-hidden-tabs-menu"],"resourceStrings":[16],"hiddenTabsMenuMeta":[32],"hasHiddenTabs":[32]},[[0,"tabMouseDown","handleTabMouseDown"]]],[2,"igc-joystick-indicator-component",{"dropTargetPaneInfo":[16],"documentOnlyDrag":[4,"document-only-drag"]}],[1,"igc-pane-header-component",{"dragService":[1040],"pinned":[4],"maximized":[4],"isFloating":[4,"is-floating"],"forcedDrag":[4,"forced-drag"],"isFloatingPaneHeader":[4,"is-floating-pane-header"],"allowClose":[4,"allow-close"],"allowMaximize":[4,"allow-maximize"],"allowPinning":[4,"allow-pinning"],"pane":[16],"isActive":[4,"is-active"],"disabled":[4],"resourceStrings":[16]}],[1,"igc-tab-header-component",{"dragService":[1040],"selected":[4],"hovered":[4],"position":[1],"iconName":[1,"icon-name"],"header":[1],"isActive":[4,"is-active"],"resourceStrings":[16],"forcedDrag":[4,"forced-drag"],"disabled":[4],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"]},[[1,"mousedown","handleMouseDown"],[1,"mouseenter","handleMouseEnter"],[1,"mouseleave","handleMouseLeave"]]],[1,"igc-floating-pane-component",{"allowResize":[4,"allow-resize"],"floatingLocation":[16],"floatingWidth":[2,"floating-width"],"floatingHeight":[2,"floating-height"],"hasHeader":[4,"has-header"],"maximized":[4],"floatingMinHeight":[2,"floating-min-height"],"floatingMinWidth":[2,"floating-min-width"],"floatingId":[1,"floating-id"]}],[2,"igc-root-docking-indicator-component",{"position":[1]}],[1,"igc-content-pane-component",{"size":[2],"isFlyout":[4,"is-flyout"],"unpinnedSize":[2,"unpinned-size"],"header":[1],"disabled":[4],"isSingleFloating":[4,"is-single-floating"]}],[2,"igc-document-host-component",{"size":[2]}],[1,"igc-pane-navigator-component",{"activeDocuments":[16],"activePanes":[16],"selectedIndex":[1026,"selected-index"],"previousActivePaneIndex":[2,"previous-active-pane-index"],"resourceStrings":[16]},[[0,"keyup","handleKeyUp"],[0,"keydown","handleKeydown"]]],[2,"igc-split-pane-component",{"orientation":[1],"size":[2]}],[1,"igc-splitter-component",{"showDragGhost":[4,"show-drag-ghost"],"splitPaneOrientation":[1,"split-pane-orientation"],"flyoutLocation":[1,"flyout-location"],"dragOffset":[32],"hasCustomSplitterHandle":[32]},[[0,"keydown","handleKeydownEvent"],[1,"mousedown","handleMouseDown"]]],[1,"igc-tab-panel-component",{"selected":[4],"disabled":[4]}],[1,"igc-unpinned-pane-header-component",{"location":[1],"isActive":[4,"is-active"],"disabled":[4]}],[1,"igc-context-menu-component",{"orientation":[1],"position":[1],"target":[16],"items":[16],"activeIndex":[1026,"active-index"]},[[0,"focusout","emitMenuClosed"]]],[2,"igc-joystick-icon-component",{"isDocHost":[4,"is-doc-host"],"position":[1],"direction":[1],"empty":[4]}],[2,"igc-resizer-component",{"orientation":[1],"dragOffsetX":[32],"dragOffsetY":[32]}],[1,"igc-button-component",{"disabled":[4],"name":[513],"type":[513],"value":[513]}],[2,"igc-icon-component",{"name":[1]}]]]], options);
17
+ return index.bootstrapLazy([["igc-button-component_20.cjs",[[2,"sample-component",{"hiddenPanes":[1040]}],[1,"igc-dockmanager",{"navigationPaneMeta":[1040],"allowMaximize":[4,"allow-maximize"],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"],"maximizedPane":[1040],"resourceStrings":[1040],"allowFloatingPanesResize":[4,"allow-floating-panes-resize"],"disableKeyboardNavigation":[4,"disable-keyboard-navigation"],"contextMenuPosition":[1,"context-menu-position"],"allowInnerDock":[4,"allow-inner-dock"],"layout":[1040],"draggedPane":[1040],"dropPosition":[16],"activePane":[1040],"dropTargetPaneInfo":[32],"flyoutPane":[32],"floatingPaneZIndicesMap":[32],"contextMenuMeta":[32],"dropShadowRect":[32],"templates":[32],"hasCustomMaximizeButton":[32],"hasCustomMinimizeButton":[32],"dropPane":[64],"removePane":[64],"focusPane":[64]},[[0,"focusout","handleFocusOut"],[0,"keydown","handleKeyDown"],[1,"pointerdown","handlePointerDown"],[1,"pointerup","handlePointerUp"]]],[1,"igc-tabs-component",{"size":[2],"maximized":[4],"allowMaximize":[4,"allow-maximize"],"tabHeadersPosition":[1,"tab-headers-position"],"selectedIndex":[1026,"selected-index"],"hasHeaders":[4,"has-headers"],"showHiddenTabsMenu":[4,"show-hidden-tabs-menu"],"resourceStrings":[16],"hiddenTabsMenuMeta":[32],"hasHiddenTabs":[32]},[[0,"tabMouseDown","handleTabMouseDown"]]],[2,"igc-joystick-indicator-component",{"dropTargetPaneInfo":[16],"documentOnlyDrag":[4,"document-only-drag"],"allowCenterDock":[4,"allow-center-dock"]}],[1,"igc-pane-header-component",{"dragService":[1040],"pinned":[4],"maximized":[4],"isFloating":[4,"is-floating"],"forcedDrag":[4,"forced-drag"],"isFloatingPaneHeader":[4,"is-floating-pane-header"],"allowClose":[4,"allow-close"],"allowMaximize":[4,"allow-maximize"],"allowPinning":[4,"allow-pinning"],"pane":[16],"isActive":[4,"is-active"],"disabled":[4],"resourceStrings":[16]}],[1,"igc-tab-header-component",{"dragService":[1040],"selected":[4],"hovered":[4],"position":[1],"iconName":[1,"icon-name"],"header":[1],"isActive":[4,"is-active"],"resourceStrings":[16],"forcedDrag":[4,"forced-drag"],"disabled":[4],"showHeaderIconOnHover":[1,"show-header-icon-on-hover"]},[[1,"mousedown","handleMouseDown"],[1,"mouseenter","handleMouseEnter"],[1,"mouseleave","handleMouseLeave"]]],[1,"igc-floating-pane-component",{"allowResize":[4,"allow-resize"],"floatingLocation":[16],"floatingWidth":[2,"floating-width"],"floatingHeight":[2,"floating-height"],"hasHeader":[4,"has-header"],"maximized":[4],"floatingMinHeight":[2,"floating-min-height"],"floatingMinWidth":[2,"floating-min-width"],"floatingId":[1,"floating-id"]}],[2,"igc-root-docking-indicator-component",{"position":[1]}],[1,"igc-content-pane-component",{"size":[2],"isFlyout":[4,"is-flyout"],"unpinnedSize":[2,"unpinned-size"],"header":[1],"disabled":[4],"isSingleFloating":[4,"is-single-floating"]}],[2,"igc-document-host-component",{"size":[2]}],[1,"igc-pane-navigator-component",{"activeDocuments":[16],"activePanes":[16],"selectedIndex":[1026,"selected-index"],"previousActivePaneIndex":[2,"previous-active-pane-index"],"resourceStrings":[16]},[[0,"keyup","handleKeyUp"],[0,"keydown","handleKeydown"]]],[2,"igc-split-pane-component",{"orientation":[1],"size":[2]}],[1,"igc-splitter-component",{"showDragGhost":[4,"show-drag-ghost"],"splitPaneOrientation":[1,"split-pane-orientation"],"flyoutLocation":[1,"flyout-location"],"dragOffset":[32],"hasCustomSplitterHandle":[32]},[[0,"keydown","handleKeydownEvent"],[1,"mousedown","handleMouseDown"]]],[1,"igc-tab-panel-component",{"selected":[4],"disabled":[4]}],[1,"igc-unpinned-pane-header-component",{"location":[1],"isActive":[4,"is-active"],"disabled":[4]}],[1,"igc-context-menu-component",{"orientation":[1],"position":[1],"target":[16],"items":[16],"activeIndex":[1026,"active-index"]},[[0,"focusout","emitMenuClosed"]]],[2,"igc-joystick-icon-component",{"isDocHost":[4,"is-doc-host"],"position":[1],"direction":[1],"empty":[4]}],[2,"igc-resizer-component",{"orientation":[1],"dragOffsetX":[32],"dragOffsetY":[32]}],[1,"igc-button-component",{"disabled":[4],"name":[513],"type":[513],"value":[513]}],[2,"igc-icon-component",{"name":[1]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -56,6 +56,12 @@ class IgcDockManagerComponent extends HTMLElement {
56
56
  removePane(pane) {
57
57
  return null;
58
58
  }
59
+ /**
60
+ * Focuses a pane from the layout.
61
+ */
62
+ focusPane(contentId) {
63
+ return null;
64
+ }
59
65
  addEventListener() { }
60
66
  removeEventListener() { }
61
67
  }
@@ -19,6 +19,16 @@ export class IgcJoystickIndicatorComponent {
19
19
  return ((el && el.closest(selector)) ||
20
20
  this.closestElement(selector, el.getRootNode().host));
21
21
  }
22
+ shouldAllowCenterDock() {
23
+ let targetPane = this.dropTargetPaneInfo.pane;
24
+ targetPane = targetPane.type === IgcDockManagerPaneType.tabGroupPane && targetPane.selectedIndex > -1 ? targetPane.panes[targetPane.selectedIndex] : targetPane;
25
+ return targetPane.type === IgcDockManagerPaneType.contentPane && targetPane.acceptsInnerDock !== undefined
26
+ ? targetPane.acceptsInnerDock
27
+ : this.allowCenterDock;
28
+ }
29
+ renderBlankIndicator(position) {
30
+ return (h("igc-joystick-icon-component", { isDocHost: this.isDocHost, position: position, direction: Utils.getDirection(this.closestElement('igc-dockmanager', this.element)), empty: true }));
31
+ }
22
32
  renderIndicator(position) {
23
33
  return (h("igc-joystick-icon-component", { isDocHost: this.isDocHost, position: position, direction: Utils.getDirection(this.closestElement('igc-dockmanager', this.element)), empty: this.isEmptyCenter(position) || this.isEmptyEdge(position) }));
24
34
  }
@@ -38,7 +48,8 @@ export class IgcJoystickIndicatorComponent {
38
48
  this.renderIndicator(IgcDockingIndicatorPosition.left),
39
49
  this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(IgcDockingIndicatorPosition.outerTop),
40
50
  this.renderIndicator(IgcDockingIndicatorPosition.top),
41
- this.renderIndicator(IgcDockingIndicatorPosition.center),
51
+ !this.shouldAllowCenterDock() && this.renderBlankIndicator(IgcDockingIndicatorPosition.center),
52
+ this.shouldAllowCenterDock() && this.renderIndicator(IgcDockingIndicatorPosition.center),
42
53
  this.renderIndicator(IgcDockingIndicatorPosition.right),
43
54
  this.isDocHost && !this.documentOnlyDrag && this.renderIndicator(IgcDockingIndicatorPosition.outerRight),
44
55
  this.renderIndicator(IgcDockingIndicatorPosition.bottom),
@@ -89,6 +100,23 @@ export class IgcJoystickIndicatorComponent {
89
100
  },
90
101
  "attribute": "document-only-drag",
91
102
  "reflect": false
103
+ },
104
+ "allowCenterDock": {
105
+ "type": "boolean",
106
+ "mutable": false,
107
+ "complexType": {
108
+ "original": "boolean",
109
+ "resolved": "boolean",
110
+ "references": {}
111
+ },
112
+ "required": false,
113
+ "optional": false,
114
+ "docs": {
115
+ "tags": [],
116
+ "text": ""
117
+ },
118
+ "attribute": "allow-center-dock",
119
+ "reflect": false
92
120
  }
93
121
  }; }
94
122
  static get elementRef() { return "element"; }
@@ -131,6 +131,7 @@ export class IgcDockManager {
131
131
  this.allowMaximize = true;
132
132
  this.allowFloatingPanesResize = true;
133
133
  this.disableKeyboardNavigation = false;
134
+ this.allowInnerDock = true;
134
135
  this.activePane = null;
135
136
  this.updateTemplates = () => {
136
137
  if (this.templates.size > 0) {
@@ -288,6 +289,22 @@ export class IgcDockManager {
288
289
  async removePane(pane) {
289
290
  this.service.removePane(pane);
290
291
  }
292
+ async focusPane(contentId) {
293
+ const contentPane = this.service.getContent(contentId);
294
+ const parentPane = this.service.getRootParent(contentPane);
295
+ const isFloating = this.service.isFloatingPane(parentPane);
296
+ const isUnpinned = contentPane.isPinned !== undefined && !contentPane.isPinned;
297
+ if (isFloating) {
298
+ this.service.bringFloatingPaneOnTop(parentPane);
299
+ this.activePane = contentPane;
300
+ }
301
+ else if (isUnpinned) {
302
+ this.handlePaneFlyout(contentPane);
303
+ }
304
+ else {
305
+ this.activePane = contentPane;
306
+ }
307
+ }
291
308
  connectedCallback() {
292
309
  this.element.shadowRoot.addEventListener('focusout', this.handleShadowRootFocusOut);
293
310
  this.domObserver.observe(this.element, { attributes: true, subtree: true, childList: true });
@@ -309,6 +326,16 @@ export class IgcDockManager {
309
326
  this.resourceStrings = resourceStringsMap.has(lang) ? resourceStringsMap.get(lang) : resourceStringsMap.get('en');
310
327
  }
311
328
  }
329
+ componentWillRender() {
330
+ const lastMaximizedPane = this.service.getLastMaximizedPane();
331
+ if (lastMaximizedPane && this.maximizedPane !== lastMaximizedPane) {
332
+ const shouldFlyout = 'isPinned' in lastMaximizedPane && !lastMaximizedPane.isPinned;
333
+ if (shouldFlyout) {
334
+ this.handlePaneFlyout(lastMaximizedPane);
335
+ }
336
+ this.handleMaximize(lastMaximizedPane);
337
+ }
338
+ }
312
339
  componentDidRender() {
313
340
  while (this.scheduledCallbacks.length) {
314
341
  const callback = this.scheduledCallbacks.shift();
@@ -721,6 +748,7 @@ export class IgcDockManager {
721
748
  this.service.resizeFloatingPaneEnd(pane, event.detail.resizerLocation);
722
749
  }
723
750
  handleDropPositionChange(clientX, clientY, target) {
751
+ var _a;
724
752
  const elements = clientX && clientY ?
725
753
  this.element.shadowRoot.elementsFromPoint(clientX, clientY) :
726
754
  null;
@@ -731,7 +759,7 @@ export class IgcDockManager {
731
759
  const adjacentElement = elements[splitterIndex - 1];
732
760
  isOverSplitter = adjacentElement &&
733
761
  adjacentElement.tagName.toLowerCase() === 'igc-floating-pane-component' &&
734
- adjacentElement.floatingId === this.draggedPane.id; // if not equal - splitter is below another element, not directly over
762
+ adjacentElement.floatingId === ((_a = this.draggedPane) === null || _a === void 0 ? void 0 : _a.id); // if not equal - splitter is below another element, not directly over
735
763
  }
736
764
  if (!elements || !elements.length || isOverSplitter) {
737
765
  this.service.dockingIndicator = null;
@@ -1222,7 +1250,7 @@ export class IgcDockManager {
1222
1250
  !this.documentOnlyDrag && this.renderRootDockingIndicator(endPosition)),
1223
1251
  !this.documentOnlyDrag && this.renderRootDockingIndicator(IgcDockingIndicatorPosition.bottom),
1224
1252
  this.dropTargetPaneInfo &&
1225
- h("igc-joystick-indicator-component", { dropTargetPaneInfo: this.dropTargetPaneInfo, documentOnlyDrag: this.documentOnlyDrag })));
1253
+ h("igc-joystick-indicator-component", { dropTargetPaneInfo: this.dropTargetPaneInfo, documentOnlyDrag: this.documentOnlyDrag, allowCenterDock: this.allowInnerDock })));
1226
1254
  }
1227
1255
  renderContextMenu() {
1228
1256
  return this.contextMenuMeta && (h("igc-context-menu-component", { onMenuClosed: this.handleContextMenuClosed.bind(this), orientation: IgcContextMenuOrientation.bottom, items: this.contextMenuMeta.menuItems, target: this.contextMenuMeta.target, position: this.contextMenuMeta.position }));
@@ -1445,6 +1473,24 @@ export class IgcDockManager {
1445
1473
  "attribute": "context-menu-position",
1446
1474
  "reflect": false
1447
1475
  },
1476
+ "allowInnerDock": {
1477
+ "type": "boolean",
1478
+ "mutable": false,
1479
+ "complexType": {
1480
+ "original": "boolean",
1481
+ "resolved": "boolean",
1482
+ "references": {}
1483
+ },
1484
+ "required": false,
1485
+ "optional": false,
1486
+ "docs": {
1487
+ "tags": [],
1488
+ "text": ""
1489
+ },
1490
+ "attribute": "allow-inner-dock",
1491
+ "reflect": false,
1492
+ "defaultValue": "true"
1493
+ },
1448
1494
  "layout": {
1449
1495
  "type": "unknown",
1450
1496
  "mutable": true,
@@ -1920,6 +1966,29 @@ export class IgcDockManager {
1920
1966
  "text": "",
1921
1967
  "tags": []
1922
1968
  }
1969
+ },
1970
+ "focusPane": {
1971
+ "complexType": {
1972
+ "signature": "(contentId: string) => Promise<void>",
1973
+ "parameters": [{
1974
+ "tags": [],
1975
+ "text": ""
1976
+ }],
1977
+ "references": {
1978
+ "Promise": {
1979
+ "location": "global"
1980
+ },
1981
+ "IgcContentPane": {
1982
+ "location": "import",
1983
+ "path": "./dockmanager.public-interfaces"
1984
+ }
1985
+ },
1986
+ "return": "Promise<void>"
1987
+ },
1988
+ "docs": {
1989
+ "text": "",
1990
+ "tags": []
1991
+ }
1923
1992
  }
1924
1993
  }; }
1925
1994
  static get elementRef() { return "element"; }
@@ -55,6 +55,13 @@ export class IgcDockManagerComponent extends HTMLElement {
55
55
  pane = pane;
56
56
  return null;
57
57
  }
58
+ /**
59
+ * Focuses a pane from the layout.
60
+ */
61
+ focusPane(contentId) {
62
+ contentId = contentId;
63
+ return null;
64
+ }
58
65
  addEventListener() { }
59
66
  removeEventListener() { }
60
67
  }
@@ -363,6 +363,14 @@ export class IgcDockManagerService {
363
363
  updateLayout() {
364
364
  this.dockManager.layout = Object.assign({}, this.dockManager.layout);
365
365
  }
366
+ hasMaximizedProp(pane) {
367
+ return 'isMaximized' in pane;
368
+ }
369
+ getLastMaximizedPane() {
370
+ const keys = Array.from(this.paneParentMap.keys());
371
+ const maximizedPane = keys.filter(this.hasMaximizedProp).filter(i => i.isMaximized)[0];
372
+ return maximizedPane;
373
+ }
366
374
  processLayout() {
367
375
  this.paneParentMap = new Map();
368
376
  this.unpinnedLocationMap = new Map();
@@ -517,6 +525,12 @@ export class IgcDockManagerService {
517
525
  const parent = this.getParent(pane);
518
526
  const targetPane = parent && parent.type === IgcDockManagerPaneType.tabGroupPane && pane !== this.dockManager.flyoutPane ? parent : pane;
519
527
  this.dockManager.maximizedPane = this.dockManager.maximizedPane === targetPane ? null : targetPane;
528
+ if (this.dockManager.maximizedPane) {
529
+ targetPane.isMaximized = true;
530
+ }
531
+ else {
532
+ targetPane.isMaximized = false;
533
+ }
520
534
  }
521
535
  moveFloatingPane(pane, location) {
522
536
  pane.floatingLocation = location;
@@ -82,7 +82,8 @@ export class SampleComponent {
82
82
  type: IgcDockManagerPaneType.contentPane,
83
83
  header: 'App.xaml',
84
84
  contentId: 'content8',
85
- allowMaximize: true
85
+ allowMaximize: true,
86
+ acceptsInnerDock: false
86
87
  }
87
88
  ]
88
89
  }
@@ -164,7 +165,8 @@ export class SampleComponent {
164
165
  {
165
166
  type: IgcDockManagerPaneType.contentPane,
166
167
  header: 'Floating 1',
167
- contentId: 'content10'
168
+ contentId: 'content10',
169
+ acceptsInnerDock: false
168
170
  },
169
171
  {
170
172
  type: IgcDockManagerPaneType.contentPane,
@@ -368,6 +370,9 @@ export class SampleComponent {
368
370
  tabGroupPane.panes[0].disabled = true;
369
371
  this.dockManager.layout = Object.assign({}, this.layout);
370
372
  }
373
+ focusPane() {
374
+ this.dockManager.focusPane('content12');
375
+ }
371
376
  findElement(pane, type) {
372
377
  if (!pane) {
373
378
  return;
@@ -533,6 +538,7 @@ export class SampleComponent {
533
538
  h("button", { onClick: () => this.addPane() }, "Add Floating Pane"),
534
539
  h("button", { onClick: () => this.addTab() }, "Add Tab Pane"),
535
540
  h("button", { onClick: () => this.disableContentPane() }, "Disable Tab Pane"),
541
+ h("button", { onClick: () => this.focusPane() }, "Focus Pane"),
536
542
  h("input", { id: "hideOnClose", type: "checkbox", style: { marginLeft: '20px' }, ref: el => this.hideOnCloseCheckbox = el }),
537
543
  h("label", { htmlFor: "hideOnClose" }, "Hide on close"),
538
544
  h("span", { style: { marginLeft: '20px' } }, "Hidden Panes:"),