igniteui-dockmanager 2.0.2-alpha.2 → 2.1.0-RC.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.
- package/CHANGELOG.md +2 -0
- package/components/dockmanager/dockmanager-component.d.ts +25 -7
- package/components/dockmanager/dockmanager-component.js +53 -12
- package/components/dockmanager/dockmanager.interfaces.d.ts +43 -4
- package/components/dockmanager/dockmanager.interfaces.js +2 -0
- package/components/dockmanager/dockmanager.service.d.ts +21 -1
- package/components/dockmanager/dockmanager.service.js +82 -16
- package/components/dockmanager/panes/content-pane-component.d.ts +18 -0
- package/components/dockmanager/panes/content-pane-component.js +23 -1
- package/components/dockmanager/panes/split-pane-component.d.ts +18 -0
- package/components/dockmanager/panes/split-pane-component.js +23 -3
- package/components/dockmanager/panes/splitter-component.d.ts +2 -0
- package/components/dockmanager/panes/splitter-component.js +76 -31
- package/components/tabs/tabs-component.d.ts +12 -0
- package/components/tabs/tabs-component.js +18 -0
- package/custom-elements.json +390 -228
- package/igniteui-dockmanager.html-data.json +1 -1
- package/package.json +1 -1
- package/utils/test-utils.d.ts +2 -2
- package/utils/test-utils.js +5 -3
- package/utils/utils.d.ts +20 -1
- package/utils/utils.js +103 -0
- package/web-types.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
|
|
3
3
|
"version": 1.1,
|
|
4
|
-
"tags": [{"name":"igc-button-component","description":"\n---\n\n\n### **Slots:**\n - _default_ - Default slot for button content.","attributes":[{"name":"disabled","description":"Indicates whether the button is disabled.","values":[]},{"name":"type","description":"The type attribute of the control.","values":[{"name":"button"},{"name":"submit"},{"name":"reset"}]},{"name":"name","description":"The name attribute of the control.","values":[]},{"name":"value","description":"The value attribute of the control.","values":[]}],"references":[]},{"name":"igc-context-menu","description":"\n---\n\n\n### **Events:**\n - **igcMenuClosed** - Emitted when the context menu is closed.\n\n### **Slots:**\n - **contextMenuCloseButton** - The close icon.\n- **contextMenuUnpinButton** - The unpin icon.\n\n### **CSS Parts:**\n - **context-menu** - The outer container of the context menu.\n- **context-menu-item** - A single menu item container.\n- **context-menu-content** - The wrapper for all menu items.\n- **context-menu-close-button** - The default close button icon.\n- **context-menu-unpin-button** - The default unpin button icon.","attributes":[{"name":"orientation","values":[{"name":"ContextMenuOrientation"}]},{"name":"position","values":[{"name":"ContextMenuPosition"}]},{"name":"target","values":[{"name":"HTMLElement"}]},{"name":"items","values":[{"name":"IgcContextMenuItem[]"}]}],"references":[]},{"name":"igc-dockmanager","description":"A powerful, flexible dock manager component for laying out, docking,\nundocking, pinning, and floating panes of content.\n---\n\n\n### **Events:**\n - **activePaneChanged** - Emitted when the active content pane changes\n- **floatingPaneResizeStart** - Emitted when a floating pane resize interaction begins\n- **floatingPaneResizeMove** - Emitted while a floating pane is being resized\n- **floatingPaneResizeEnd** - Emitted when a floating pane resize interaction ends\n- **layoutChange** - Emitted after the layout has been programmatically updated\n- **paneDragStart** - Emitted when a pane drag operation begins\n- **paneDragOver** - Emitted repeatedly as a pane is dragged\n- **paneDragEnd** - Emitted when a pane drag operation ends\n- **paneHeaderConnected** - Emitted when an `<igc-pane-header>` is connected\n- **paneHeaderDisconnected** - Emitted when an `<igc-pane-header>` is disconnected\n- **paneClose** - Emitted when a pane is closed\n- **panePinnedToggle** - Emitted when a pane is pinned or unpinned\n- **paneScroll** - Emitted when the user scrolls within a pane’s content\n- **splitterResizeStart** - Emitted when a splitter resize starts\n- **splitterResizeEnd** - Emitted when a splitter resize ends\n- **tabHeaderConnected** - Emitted when an `<igc-tab-header>` is connected\n- **tabHeaderDisconnected** - Emitted when an `<igc-tab-header>` is disconnected\n- **paneFlyoutToggle** - Emitted when an unpinned pane's flyout state changes (opens or closes).\n\n### **Slots:**\n - **paneHeaderCloseButton** - Custom close button for pane headers\n- **tabHeaderCloseButton** - Custom close button for tab headers\n- **closeButton** - Alias for pane/tab close button\n- **moreTabsButton** - Slot for the \"more tabs\" button\n- **maximizeButton** - Slot for maximize buttons\n- **minimizeButton** - Slot for minimize buttons\n- **pinButton** - Slot for pin buttons\n- **unpinButton** - Slot for unpin buttons\n- **moreOptionsButton** - Slot for more-options buttons on tab headers\n- **splitterHandle-** - Slot for custom splitter handle","attributes":[{"name":"enableDragCursor","description":"Enables changing the mouse cursor when hovering over a tab or pane header.\n\nWhen set to `true`, the cursor changes from the default to `pointer`,\nindicating that the header can be dragged (e.g., to dock or float the pane).","values":[]},{"name":"allowInnerDock","description":"Whether docking inside a pane is allowed.","values":[]},{"name":"allowMaximize","description":"Whether maximize action button is displayed for the panes.","values":[]},{"name":"autoScrollConfig","description":"Configuration for edge auto-scrolling behavior during drag & resize operations.\n\n- `edgeThreshold`: Distance in pixels from the container's edge that triggers scrolling.\n- `scrollSpeed`: Number of pixels to scroll per interval (affects scroll rate).","values":[{"name":"{ edgeThreshold: number"},{"name":"scrollSpeed: number }"}]},{"name":"proximityDock","description":"Determines whether docking indicators are displayed while docking","values":[]},{"name":"resourceStrings","description":"The resource strings of the dock manager.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"showPaneHeaders","description":"Determines when to display the pane headers - always or on hover of the pane.","values":[{"name":"always"},{"name":"onHoverOnly"}]},{"name":"unpinBehavior","description":"Determines which panes are affected by particular pane action such as closing or unpinning.","values":[{"name":"PaneActionBehavior"}]},{"name":"allowSplitterDock","description":"Whether docking over splitter is allowed","values":[]},{"name":"allowRootDock","description":"Determines whether docking into the root-level pane is allowed.\n\nWhen set to true (default), panes can be docked directly into the root container.\nThis is done by creating a new root pane and repositioning the existing root pane as a sibling to the newly docked content pane.","values":[]},{"name":"useFixedSizeOnDock","description":"Specifies which docking orientations should apply the `FixedSize` sizing mode\nwhen panes are dynamically created via docking.\n\nPossible values:\n- `\"none\"`: Do not apply `FixedSize` on docking (default behavior).\n- `\"vertical\"`: Apply `FixedSize` only when panes are docked vertically.\n- `\"horizontal\"`: Apply `FixedSize` only when panes are docked horizontally.\n- `\"both\"`: Apply `FixedSize` for both vertical and horizontal orientation.\n\nThis setting affects only dynamically created panes via user docking actions.\nIt does not apply to programmatically created panes or layout restorations.","values":[{"name":"none"},{"name":"vertical"},{"name":"horizontal"},{"name":"both"}]},{"name":"showHeaderIconOnHover","description":"Which header icons are shown on hover.","values":[{"name":"none"},{"name":"closeOnly"},{"name":"moreOptionsOnly"},{"name":"all"}]},{"name":"allowFloatingPanesResize","description":"Whether floating panes can be resized.","values":[]},{"name":"containedInBoundaries","description":"Whether pane dragging stops when any of the pane's sides goes outside the DockManager’s bounds.","values":[]},{"name":"disableKeyboardNavigation","description":"Disables all keyboard navigation within the dock manager.","values":[]},{"name":"contextMenuPosition","description":"Position to open the context menu.","values":[{"name":"ContextMenuPosition"}]},{"name":"closeBehavior","description":"Which panes get affected by close operations.","values":[{"name":"PaneActionBehavior"}]}],"references":[]},{"name":"igc-icon-component","description":"\n---\n","attributes":[{"name":"name","description":"The name of the icon to draw.","values":[{"name":"IconName"},{"name":"''"}]}],"references":[]},{"name":"sample-component","description":"\n---\n","attributes":[],"references":[]},{"name":"igc-tab-header","description":"\n---\n\n\n### **Events:**\n - **igcDragStarted** - Fired when drag operation has started.\n- **igcDragMoved** - Fired when a header is dragged.\n- **igcDragEnded** - Fired when drag operation has ended.\n- **igcIconClicked** - Fired when the action button is clicked.\n- **igcIconKeyDown** - Fired on key down of the action button.\n- **igcTabPointerDown** - Fired when pointer is down on the header.\n- **igcElementConnected** - Fired when the header is connected.\n- **igcElementDisconnected** - Fired when the header is disconnected.\n\n### **Slots:**\n - _default_ - Renders the title.\n\n### **CSS Parts:**\n - **tab-header** - Wrapper of the panel.\n- **top** - Added when the header is displayed at the top.\n- **active** - Indicates whether the header is active.\n- **selected** - Indicates whether the header is selected.\n- **disabled** - Indicates a disabled stated.\n- **hover-preview-close** - Indicates that close button is displayed on hover.\n- **hover-preview-options** - Indicates that more options button is displayed on hover.\n- **bottom** - Added when the header is displayed at the bottom.","attributes":[{"name":"selected","description":"Determines whether the header is selected.","values":[]},{"name":"hovered","description":"Determines whether the header is hovered.","values":[]},{"name":"position","description":"Sets the header position.","values":[]},{"name":"iconName","description":"Determines which icon to display in the tab header.\nSupported values are `close` and `more`.\nIf not set, no icon is rendered.","values":[{"name":"IconName"},{"name":"''"}]},{"name":"header","description":"Sets the header text.","values":[]},{"name":"isActive","description":"Determines whether the header is active.","values":[]},{"name":"resourceStrings","description":"The resource strings of the header.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"forcedDrag","description":"Determines whether the header is changing position with another header.","values":[]},{"name":"disabled","description":"Disables interaction with the header.","values":[]},{"name":"showHeaderIconOnHover","description":"Determines which buttons are displayed on hover.\n\n*","values":[{"name":""},{"name":"none"},{"name":"closeOnly"},{"name":"moreOptionsOnly"},{"name":"all"}]}],"references":[]},{"name":"igc-tab-panel","description":"\n---\n\n\n### **Events:**\n - **igcSelectedChanged** - Fired when the selected state of the header changes.\n\n### **Slots:**\n - _default_ - Renders the panel content.\n\n### **CSS Parts:**\n - **tab-panel** - Wrapper of the panel.\n- **selected** - Indicates that the tab-panel is selected.\n- **disabled** - Indicates a disabled state.","attributes":[{"name":"selected","description":"Determines whether the panel is selected.","values":[]},{"name":"disabled","description":"Disables interaction with the panel.","values":[]}],"references":[]},{"name":"igc-tabs-component","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Fired when the component is rendered.\n- **igcHiddenTabSelected** - Fired when a hidden tab is selected.\n- **igcMaximize** - Fired when the maximize button is clicked.\n- **igcMaximizeMinimizeFocus** - Fired when focus is on the minimize/maximize button.\n- **igcSelectedIndexChanged** - Fired when new tab is selected.\n- **igcSelectedTabOutOfView** - Fired when the newly selected tab is not currently in view.\n\n### **Slots:**\n - _default_ - Renders the tab content.\n- **tabHeader** - Renders the tab header.\n\n### **CSS Parts:**\n - **tabs-container-contentIds** - The tabs container.","attributes":[{"name":"size","description":"The default size of the tabs.","values":[]},{"name":"maximized","description":"Whether the component is maximized.","values":[]},{"name":"allowMaximize","description":"Determines whether maximization is allowed.","values":[]},{"name":"tabHeadersPosition","description":"Determines the header position.","values":[]},{"name":"selectedIndex","description":"Determines the index of the selected tab.","values":[]},{"name":"hasHeaders","description":"Whether the headers are displayed.","values":[]},{"name":"showHiddenTabsMenu","description":"Whether to display a button for the hidden headers.","values":[]},{"name":"resourceStrings","description":"The resource strings of the tabs.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"contentIds","description":"An array of identifiers.","values":[{"name":"string[]"}]},{"name":"parentUseFixedSize","values":[]}],"references":[]},{"name":"igc-edge-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **edge-docking-indicator** - The wrapper container for the edge docking indicator.","attributes":[{"name":"position","description":"The docking indicator position.","values":[{"name":"DockingIndicatorPosition"}]},{"name":"dropTargetPaneInfo","description":"An object that configures the drop target pane.","values":[{"name":"IgcDropTargetPaneInfo"}]}],"references":[]},{"name":"igc-joystick-icon","description":"\n---\n\n\n### **Slots:**\n - _default_ - Renders the panel content.\n\n### **CSS Parts:**\n - **docking-indicator** - Wrapper of the joystick icon.","attributes":[{"name":"isDocHost","description":"Determines whether the icon is in document host.\n\n*","values":[]},{"name":"position","description":"Specifies joystick icon position so that the proper icon is displayed.","values":[{"name":"DockingIndicatorPosition"}]},{"name":"direction","description":"Determines component's direction","values":[]},{"name":"empty","description":"Determines whether the icon is empty","values":[]}],"references":[]},{"name":"igc-joystick-indicator","description":"\n---\n","attributes":[{"name":"dropTargetPaneInfo","description":"An object that configures the drop target pane.","values":[{"name":"IgcDropTargetPaneInfo"}]},{"name":"documentOnlyDrag","description":"Determines whether docking is inside the document.\n\n*","values":[]},{"name":"allowCenterDock","description":"Determines whether docking in the center is allowed.\n\n*","values":[]}],"references":[]},{"name":"igc-root-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **root-docking-indicator** - The wrapper container for the root docking indicator.","attributes":[{"name":"position","description":"Determines splitter position.","values":[{"name":"DockingIndicatorPosition"}]}],"references":[]},{"name":"igc-splitter-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **splitter-docking-indicator** - The wrapper container for the splitter docking indicator.","attributes":[{"name":"position","description":"Determines splitter position.","values":[{"name":"DockingIndicatorPosition"}]}],"references":[]},{"name":"igc-pane-navigator","description":"\n---\n\n\n### **Events:**\n - **igcClosed** - Fired when pane navigator is closed.\n\n### **CSS Parts:**\n - **base** - Wrapper of the panel.\n- **header** - The header element which contains the header of the currently selected pane.\n- **body** - The section element where groups of panes and documents are displayed.\n- **group** - The article element which contains all items of the same group - panes or documents.\n- **title** - The header element displayed above the group of panes/documents.","attributes":[{"name":"activeDocuments","description":"Determines currently visible documents.","values":[{"name":"IgcContentPane[]"}]},{"name":"activePanes","description":"Determines currently visible panes.","values":[{"name":"IgcContentPane[]"}]},{"name":"selectedIndex","description":"Determines the index of the selected item.","values":[]},{"name":"previousActivePaneIndex","description":"Determines the index of the previously selected item.","values":[]},{"name":"resourceStrings","description":"The resource strings for the pane navigator.","values":[{"name":"IgcDockManagerResourceStrings"}]}],"references":[]},{"name":"igc-content-pane","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Emitted after the component has rendered.\n\n### **Slots:**\n - _default_ - Default slot for pane content.\n- **header** - Slot for projecting a custom header for the pane.\n\n### **CSS Parts:**\n - **content-pane** - The main wrapper of the content-pane component.\n- **disabled** - Applied when the pane is disabled.\n- **single-floating** - Applied when the pane is the only one in a floating container.","attributes":[{"name":"content-id","description":"Sets a unique identifier for the content pane.\nUsed for targeting slotted content.","values":[]},{"name":"is-flyout","description":"Indicates whether the pane is currently in a flyout state.","values":[]},{"name":"is-single-floating","description":"Indicates that the pane is a single floating item.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent uses fixed pixel sizes for its child panes.\nWhen enabled, pane sizes are treated as absolute values instead of relative weights.","values":[]},{"name":"unpinned-size","description":"Specifies the pane's unpinned size when in flyout state.","values":[]},{"name":"header","description":"Defines the header label for the pane.","values":[]},{"name":"disabled","description":"Disables the pane and makes it non-interactive.","values":[]},{"name":"size","description":"Specifies the pane size.\nThis value is relative by default and used as a weight against sibling panes.\nWhen the parent uses fixed size mode, it is treated as an absolute pixel value.","values":[]}],"references":[]},{"name":"igc-floating-pane","description":"\n---\n\n\n### **Events:**\n - **wndResizeStart** - Emitted when a resize interaction begins.\n- **wndResizeMove** - Emitted during the pane resize movement.\n- **wndResizeEnd** - Emitted when the resize interaction ends.\n\n### **Slots:**\n - **header** - Renders the floating pane header content.\n- _default_ - Renders the main content of the floating pane.\n\n### **CSS Parts:**\n - **floating-window** - The root floating pane container.","attributes":[{"name":"allowResize","description":"Indicates whether the floating pane can be resized.","values":[]},{"name":"floatingLocation","description":"The current location of the floating pane.\nDefaults to top-left corner position.","values":[{"name":"IgcDockManagerPoint"}]},{"name":"floatingWidth","description":"The current width of the floating pane.","values":[]},{"name":"floatingHeight","description":"The current height of the floating pane.","values":[]},{"name":"hasHeader","description":"Indicates whether the pane has a header section.","values":[]},{"name":"floatingMinHeight","description":"The minimum height constraint for the floating pane.","values":[]},{"name":"floatingMinWidth","description":"The minimum width constraint for the floating pane.","values":[]},{"name":"floatingId","description":"A unique identifier for the floating pane.","values":[]},{"name":"maximized","description":"Indicates whether the floating pane is currently maximized.","values":[]}],"references":[]},{"name":"igc-pane-header","description":"\n---\n\n\n### **Events:**\n - **igcPaneHeaderDragStart** - Emitted when dragging starts on the header.\n- **igcPaneHeaderDragMoved** - Emitted during header dragging.\n- **igcPaneHeaderDragEnd** - Emitted when dragging ends on the header.\n- **igcPinToggle** - Emitted when the pin button is clicked.\n- **igcMaximize** - Emitted when the maximize button is clicked.\n- **igcClose** - Emitted when the close button is clicked.\n- **elementConnected** - Emitted when the element is connected to the DOM.\n- **elementDisconnected** - Emitted when the element is disconnected from the DOM.\n\n### **Slots:**\n - _default_ - Renders the pane header title.\n- **paneHeaderCloseButton** - Renders a custom close button.\n- **paneHeaderMaximizeButton** - Renders a custom maximize button.\n- **paneHeaderMinimizeButton** - Renders a custom minimize button.\n- **paneHeaderPinButton** - Renders a custom pin button.\n- **paneHeaderUnpinButton** - Renders a custom unpin button.","attributes":[{"name":"is-floating","description":"Indicates whether the header is used in a floating window.","values":[]},{"name":"is-floating-pane-header","description":"Indicates that the header is used in a floating pane context.","values":[]},{"name":"is-active","description":"Marks the header as active.","values":[]},{"name":"forced-drag","description":"Forces drag behavior on the pane header.","values":[]},{"name":"allow-close","description":"Enables or disables closing.","values":[]},{"name":"allow-maximize","description":"Enables or disables maximizing.","values":[]},{"name":"allow-pinning","description":"Enables or disables pinning.","values":[]},{"name":"pinned","description":"Whether the pane is currently pinned.","values":[]},{"name":"maximized","description":"Whether the pane is currently maximized.","values":[]},{"name":"disabled","description":"Disables interaction with the pane header.","values":[]}],"references":[]},{"name":"igc-resizer","description":"\n---\n\n\n### **Events:**\n - **igcResizerDragStart** - Emitted when a drag operation starts on the resizer.\n- **igcResizerMoved** - Emitted during resizer moving.\n- **igcResizerDragEnd** - Emitted when dragging ends on the resizer.","attributes":[{"name":"orientation","description":"Specifies the orientation of the resizer.","values":[{"name":"ResizerLocation"}]}],"references":[]},{"name":"igc-split-pane","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Emitted when the component is updated and rendered.\n\n### **CSS Parts:**\n - **split-pane** - The root split pane container.","attributes":[{"name":"use-fixed-size","description":"Indicates whether the pane uses a fixed size.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent pane uses fixed pane sizes.","values":[]},{"name":"orientation","description":"Defines the layout direction of the split pane: `horizontal` or `vertical`.","values":[{"name":"SplitPaneOrientation"}]},{"name":"size","values":[]}],"references":[]},{"name":"igc-splitter","description":"\n---\n\n\n### **Events:**\n - **igcResizeStart** - Emitted when a resize interaction starts.\n- **igcResizeEnd** - Emitted when the resize ends, passing the final size.\n\n### **CSS Parts:**\n - **splitter** - The main container of the splitter.\n- **splitter-base** - The draggable element that users interact with.\n- **splitter-ghost** - The visual indicator (ghost element) shown during drag.","attributes":[{"name":"show-drag-ghost","description":"Indicates whether the drag ghost element is shown while resizing.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent pane uses fixed pane sizes.","values":[]},{"name":"split-pane-orientation","description":"Defines the orientation of the splitter based on the split pane orientation.","values":[]},{"name":"flyout-location","description":"Indicates the flyout location of the splitter.","values":[{"name":"UnpinnedLocation"}]},{"name":"scrollSpeed","values":[]}],"references":[]},{"name":"igc-unpinned-pane-header","description":"\n---\n\n\n### **Slots:**\n - _default_ - Default slot for the pane header content.\n\n### **CSS Parts:**\n - **unpinned-pane-header** - The main container of the pane header.\n- **horizontal** - Applied when the header is in a horizontal orientation.\n- **vertical** - Applied when the header is in a vertical orientation.\n- **start** - Applied when the header is on the left or top side.\n- **end** - Applied when the header is on the right or bottom side.\n- **active** - Applied when the header is in active state.\n- **disabled** - Applied when the header is disabled.","attributes":[{"name":"is-active","description":"Indicates whether the unpinned pane header is active.","values":[]},{"name":"disabled","description":"Indicates whether the unpinned pane header is disabled.","values":[]},{"name":"location","description":"The location where the unpinned pane is docked.","values":[]},{"name":"isActive","description":"Indicates whether the unpinned pane header is active.","values":[]}],"references":[]}]
|
|
4
|
+
"tags": [{"name":"igc-button-component","description":"\n---\n\n\n### **Slots:**\n - _default_ - Default slot for button content.","attributes":[{"name":"disabled","description":"Indicates whether the button is disabled.","values":[]},{"name":"type","description":"The type attribute of the control.","values":[{"name":"button"},{"name":"submit"},{"name":"reset"}]},{"name":"name","description":"The name attribute of the control.","values":[]},{"name":"value","description":"The value attribute of the control.","values":[]}],"references":[]},{"name":"igc-context-menu","description":"\n---\n\n\n### **Events:**\n - **igcMenuClosed** - Emitted when the context menu is closed.\n\n### **Slots:**\n - **contextMenuCloseButton** - The close icon.\n- **contextMenuUnpinButton** - The unpin icon.\n\n### **CSS Parts:**\n - **context-menu** - The outer container of the context menu.\n- **context-menu-item** - A single menu item container.\n- **context-menu-content** - The wrapper for all menu items.\n- **context-menu-close-button** - The default close button icon.\n- **context-menu-unpin-button** - The default unpin button icon.","attributes":[{"name":"orientation","values":[{"name":"ContextMenuOrientation"}]},{"name":"position","values":[{"name":"ContextMenuPosition"}]},{"name":"target","values":[{"name":"HTMLElement"}]},{"name":"items","values":[{"name":"IgcContextMenuItem[]"}]}],"references":[]},{"name":"igc-dockmanager","description":"A powerful, flexible dock manager component for laying out, docking,\nundocking, pinning, and floating panes of content.\n---\n\n\n### **Events:**\n - **activePaneChanged** - Emitted when the active content pane changes\n- **floatingPaneResizeStart** - Emitted when a floating pane resize interaction begins\n- **floatingPaneResizeMove** - Emitted while a floating pane is being resized\n- **floatingPaneResizeEnd** - Emitted when a floating pane resize interaction ends\n- **layoutChange** - Emitted after the layout has been programmatically updated\n- **paneDragStart** - Emitted when a pane drag operation begins\n- **paneDragOver** - Emitted repeatedly as a pane is dragged\n- **paneDragEnd** - Emitted when a pane drag operation ends\n- **paneHeaderConnected** - Emitted when an `<igc-pane-header>` is connected\n- **paneHeaderDisconnected** - Emitted when an `<igc-pane-header>` is disconnected\n- **paneClose** - Emitted when a pane is closed\n- **panePinnedToggle** - Emitted when a pane is pinned or unpinned\n- **paneScroll** - Emitted when the user scrolls within a pane’s content\n- **splitterResizeStart** - Emitted when a splitter resize starts\n- **splitterResizeEnd** - Emitted when a splitter resize ends\n- **tabHeaderConnected** - Emitted when an `<igc-tab-header>` is connected\n- **tabHeaderDisconnected** - Emitted when an `<igc-tab-header>` is disconnected\n- **paneFlyoutToggle** - Emitted when an unpinned pane's flyout state changes (opens or closes).\n\n### **Slots:**\n - **paneHeaderCloseButton** - Custom close button for pane headers\n- **tabHeaderCloseButton** - Custom close button for tab headers\n- **closeButton** - Alias for pane/tab close button\n- **moreTabsButton** - Slot for the \"more tabs\" button\n- **maximizeButton** - Slot for maximize buttons\n- **minimizeButton** - Slot for minimize buttons\n- **pinButton** - Slot for pin buttons\n- **unpinButton** - Slot for unpin buttons\n- **moreOptionsButton** - Slot for more-options buttons on tab headers\n- **splitterHandle-** - Slot for custom splitter handle","attributes":[{"name":"enableDragCursor","description":"Enables changing the mouse cursor when hovering over a tab or pane header.\n\nWhen set to `true`, the cursor changes from the default to `pointer`,\nindicating that the header can be dragged (e.g., to dock or float the pane).","values":[]},{"name":"allowInnerDock","description":"Whether docking inside a pane is allowed.","values":[]},{"name":"allowMaximize","description":"Whether maximize action button is displayed for the panes.","values":[]},{"name":"autoScrollConfig","description":"Configuration for edge auto-scrolling behavior during drag & resize operations.\n\n- `edgeThreshold`: Distance in pixels from the container's edge that triggers scrolling.\n- `scrollSpeed`: Number of pixels to scroll per interval (affects scroll rate).","values":[{"name":"{ edgeThreshold: number"},{"name":"scrollSpeed: number }"}]},{"name":"proximityDock","description":"Determines whether docking indicators are displayed while docking","values":[]},{"name":"resourceStrings","description":"The resource strings of the dock manager.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"showPaneHeaders","description":"Determines when to display the pane headers - always or on hover of the pane.","values":[{"name":"always"},{"name":"onHoverOnly"}]},{"name":"unpinBehavior","description":"Determines which panes are affected by particular pane action such as closing or unpinning.","values":[{"name":"PaneActionBehavior"}]},{"name":"allowSplitterDock","description":"Whether docking over splitter is allowed","values":[]},{"name":"allowRootDock","description":"Determines whether docking into the root-level pane is allowed.\n\nWhen set to true (default), panes can be docked directly into the root container.\nThis is done by creating a new root pane and repositioning the existing root pane as a sibling to the newly docked content pane.","values":[]},{"name":"useFixedSizeOnDock","description":"Specifies which docking orientations should apply the `FixedSize` sizing mode\nwhen panes are dynamically created via docking.\n\nPossible values:\n- `\"none\"`: Do not apply `FixedSize` on docking (default behavior).\n- `\"vertical\"`: Apply `FixedSize` only when panes are docked vertically.\n- `\"horizontal\"`: Apply `FixedSize` only when panes are docked horizontally.\n- `\"both\"`: Apply `FixedSize` for both vertical and horizontal orientation.\n\nThis setting affects only dynamically created panes via user docking actions.\nIt does not apply to programmatically created panes or layout restorations.","values":[{"name":"none"},{"name":"vertical"},{"name":"horizontal"},{"name":"both"}]},{"name":"showHeaderIconOnHover","description":"Which header icons are shown on hover.","values":[{"name":"none"},{"name":"closeOnly"},{"name":"moreOptionsOnly"},{"name":"all"}]},{"name":"allowFloatingPanesResize","description":"Whether floating panes can be resized.","values":[]},{"name":"containedInBoundaries","description":"Whether pane dragging stops when any of the pane's sides goes outside the DockManager’s bounds.","values":[]},{"name":"disableKeyboardNavigation","description":"Disables all keyboard navigation within the dock manager.","values":[]},{"name":"contextMenuPosition","description":"Position to open the context menu.","values":[{"name":"ContextMenuPosition"}]},{"name":"closeBehavior","description":"Which panes get affected by close operations.","values":[{"name":"PaneActionBehavior"}]}],"references":[]},{"name":"igc-icon-component","description":"\n---\n","attributes":[{"name":"name","description":"The name of the icon to draw.","values":[{"name":"IconName"},{"name":"''"}]}],"references":[]},{"name":"sample-component","description":"\n---\n","attributes":[],"references":[]},{"name":"igc-tab-header","description":"\n---\n\n\n### **Events:**\n - **igcDragStarted** - Fired when drag operation has started.\n- **igcDragMoved** - Fired when a header is dragged.\n- **igcDragEnded** - Fired when drag operation has ended.\n- **igcIconClicked** - Fired when the action button is clicked.\n- **igcIconKeyDown** - Fired on key down of the action button.\n- **igcTabPointerDown** - Fired when pointer is down on the header.\n- **igcElementConnected** - Fired when the header is connected.\n- **igcElementDisconnected** - Fired when the header is disconnected.\n\n### **Slots:**\n - _default_ - Renders the title.\n\n### **CSS Parts:**\n - **tab-header** - Wrapper of the panel.\n- **top** - Added when the header is displayed at the top.\n- **active** - Indicates whether the header is active.\n- **selected** - Indicates whether the header is selected.\n- **disabled** - Indicates a disabled stated.\n- **hover-preview-close** - Indicates that close button is displayed on hover.\n- **hover-preview-options** - Indicates that more options button is displayed on hover.\n- **bottom** - Added when the header is displayed at the bottom.","attributes":[{"name":"selected","description":"Determines whether the header is selected.","values":[]},{"name":"hovered","description":"Determines whether the header is hovered.","values":[]},{"name":"position","description":"Sets the header position.","values":[]},{"name":"iconName","description":"Determines which icon to display in the tab header.\nSupported values are `close` and `more`.\nIf not set, no icon is rendered.","values":[{"name":"IconName"},{"name":"''"}]},{"name":"header","description":"Sets the header text.","values":[]},{"name":"isActive","description":"Determines whether the header is active.","values":[]},{"name":"resourceStrings","description":"The resource strings of the header.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"forcedDrag","description":"Determines whether the header is changing position with another header.","values":[]},{"name":"disabled","description":"Disables interaction with the header.","values":[]},{"name":"showHeaderIconOnHover","description":"Determines which buttons are displayed on hover.\n\n*","values":[{"name":""},{"name":"none"},{"name":"closeOnly"},{"name":"moreOptionsOnly"},{"name":"all"}]}],"references":[]},{"name":"igc-tab-panel","description":"\n---\n\n\n### **Events:**\n - **igcSelectedChanged** - Fired when the selected state of the header changes.\n\n### **Slots:**\n - _default_ - Renders the panel content.\n\n### **CSS Parts:**\n - **tab-panel** - Wrapper of the panel.\n- **selected** - Indicates that the tab-panel is selected.\n- **disabled** - Indicates a disabled state.","attributes":[{"name":"selected","description":"Determines whether the panel is selected.","values":[]},{"name":"disabled","description":"Disables interaction with the panel.","values":[]}],"references":[]},{"name":"igc-tabs-component","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Fired when the component is rendered.\n- **igcHiddenTabSelected** - Fired when a hidden tab is selected.\n- **igcMaximize** - Fired when the maximize button is clicked.\n- **igcMaximizeMinimizeFocus** - Fired when focus is on the minimize/maximize button.\n- **igcSelectedIndexChanged** - Fired when new tab is selected.\n- **igcSelectedTabOutOfView** - Fired when the newly selected tab is not currently in view.\n\n### **Slots:**\n - _default_ - Renders the tab content.\n- **tabHeader** - Renders the tab header.\n\n### **CSS Parts:**\n - **tabs-container-contentIds** - The tabs container.","attributes":[{"name":"size","description":"The default size of the tabs.","values":[]},{"name":"maximized","description":"Whether the component is maximized.","values":[]},{"name":"allowMaximize","description":"Determines whether maximization is allowed.","values":[]},{"name":"tabHeadersPosition","description":"Determines the header position.","values":[]},{"name":"selectedIndex","description":"Determines the index of the selected tab.","values":[]},{"name":"hasHeaders","description":"Whether the headers are displayed.","values":[]},{"name":"showHiddenTabsMenu","description":"Whether to display a button for the hidden headers.","values":[]},{"name":"resourceStrings","description":"The resource strings of the tabs.","values":[{"name":"IgcDockManagerResourceStrings"}]},{"name":"contentIds","description":"An array of identifiers.","values":[{"name":"string[]"}]},{"name":"parentUseFixedSize","values":[]},{"name":"minResizeWidth","description":"The minimum width of the tab group in pixels during resizing.","values":[]},{"name":"minResizeHeight","description":"The minimum height of the tab group in pixels during resizing.","values":[]}],"references":[]},{"name":"igc-edge-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **edge-docking-indicator** - The wrapper container for the edge docking indicator.","attributes":[{"name":"position","description":"The docking indicator position.","values":[{"name":"DockingIndicatorPosition"}]},{"name":"dropTargetPaneInfo","description":"An object that configures the drop target pane.","values":[{"name":"IgcDropTargetPaneInfo"}]}],"references":[]},{"name":"igc-joystick-icon","description":"\n---\n\n\n### **Slots:**\n - _default_ - Renders the panel content.\n\n### **CSS Parts:**\n - **docking-indicator** - Wrapper of the joystick icon.","attributes":[{"name":"isDocHost","description":"Determines whether the icon is in document host.\n\n*","values":[]},{"name":"position","description":"Specifies joystick icon position so that the proper icon is displayed.","values":[{"name":"DockingIndicatorPosition"}]},{"name":"direction","description":"Determines component's direction","values":[]},{"name":"empty","description":"Determines whether the icon is empty","values":[]}],"references":[]},{"name":"igc-joystick-indicator","description":"\n---\n","attributes":[{"name":"dropTargetPaneInfo","description":"An object that configures the drop target pane.","values":[{"name":"IgcDropTargetPaneInfo"}]},{"name":"documentOnlyDrag","description":"Determines whether docking is inside the document.\n\n*","values":[]},{"name":"allowCenterDock","description":"Determines whether docking in the center is allowed.\n\n*","values":[]}],"references":[]},{"name":"igc-root-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **root-docking-indicator** - The wrapper container for the root docking indicator.","attributes":[{"name":"position","description":"Determines splitter position.","values":[{"name":"DockingIndicatorPosition"}]}],"references":[]},{"name":"igc-splitter-docking-indicator","description":"\n---\n\n\n### **CSS Parts:**\n - **splitter-docking-indicator** - The wrapper container for the splitter docking indicator.","attributes":[{"name":"position","description":"Determines splitter position.","values":[{"name":"DockingIndicatorPosition"}]}],"references":[]},{"name":"igc-pane-navigator","description":"\n---\n\n\n### **Events:**\n - **igcClosed** - Fired when pane navigator is closed.\n\n### **CSS Parts:**\n - **base** - Wrapper of the panel.\n- **header** - The header element which contains the header of the currently selected pane.\n- **body** - The section element where groups of panes and documents are displayed.\n- **group** - The article element which contains all items of the same group - panes or documents.\n- **title** - The header element displayed above the group of panes/documents.","attributes":[{"name":"activeDocuments","description":"Determines currently visible documents.","values":[{"name":"IgcContentPane[]"}]},{"name":"activePanes","description":"Determines currently visible panes.","values":[{"name":"IgcContentPane[]"}]},{"name":"selectedIndex","description":"Determines the index of the selected item.","values":[]},{"name":"previousActivePaneIndex","description":"Determines the index of the previously selected item.","values":[]},{"name":"resourceStrings","description":"The resource strings for the pane navigator.","values":[{"name":"IgcDockManagerResourceStrings"}]}],"references":[]},{"name":"igc-content-pane","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Emitted after the component has rendered.\n\n### **Slots:**\n - _default_ - Default slot for pane content.\n- **header** - Slot for projecting a custom header for the pane.\n\n### **CSS Parts:**\n - **content-pane** - The main wrapper of the content-pane component.\n- **disabled** - Applied when the pane is disabled.\n- **single-floating** - Applied when the pane is the only one in a floating container.","attributes":[{"name":"content-id","description":"Sets a unique identifier for the content pane.\nUsed for targeting slotted content.","values":[]},{"name":"is-flyout","description":"Indicates whether the pane is currently in a flyout state.","values":[]},{"name":"is-single-floating","description":"Indicates that the pane is a single floating item.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent uses fixed pixel sizes for its child panes.\nWhen enabled, pane sizes are treated as absolute values instead of relative weights.","values":[]},{"name":"unpinned-size","description":"Specifies the pane's unpinned size when in flyout state.","values":[]},{"name":"min-resize-width","description":"The minimum width of the pane in pixels during resizing.","values":[]},{"name":"min-resize-height","description":"The minimum height of the pane in pixels during resizing.","values":[]},{"name":"header","description":"Defines the header label for the pane.","values":[]},{"name":"disabled","description":"Disables the pane and makes it non-interactive.","values":[]},{"name":"size","description":"Specifies the pane size.\nThis value is relative by default and used as a weight against sibling panes.\nWhen the parent uses fixed size mode, it is treated as an absolute pixel value.","values":[]}],"references":[]},{"name":"igc-floating-pane","description":"\n---\n\n\n### **Events:**\n - **wndResizeStart** - Emitted when a resize interaction begins.\n- **wndResizeMove** - Emitted during the pane resize movement.\n- **wndResizeEnd** - Emitted when the resize interaction ends.\n\n### **Slots:**\n - **header** - Renders the floating pane header content.\n- _default_ - Renders the main content of the floating pane.\n\n### **CSS Parts:**\n - **floating-window** - The root floating pane container.","attributes":[{"name":"allowResize","description":"Indicates whether the floating pane can be resized.","values":[]},{"name":"floatingLocation","description":"The current location of the floating pane.\nDefaults to top-left corner position.","values":[{"name":"IgcDockManagerPoint"}]},{"name":"floatingWidth","description":"The current width of the floating pane.","values":[]},{"name":"floatingHeight","description":"The current height of the floating pane.","values":[]},{"name":"hasHeader","description":"Indicates whether the pane has a header section.","values":[]},{"name":"floatingMinHeight","description":"The minimum height constraint for the floating pane.","values":[]},{"name":"floatingMinWidth","description":"The minimum width constraint for the floating pane.","values":[]},{"name":"floatingId","description":"A unique identifier for the floating pane.","values":[]},{"name":"maximized","description":"Indicates whether the floating pane is currently maximized.","values":[]}],"references":[]},{"name":"igc-pane-header","description":"\n---\n\n\n### **Events:**\n - **igcPaneHeaderDragStart** - Emitted when dragging starts on the header.\n- **igcPaneHeaderDragMoved** - Emitted during header dragging.\n- **igcPaneHeaderDragEnd** - Emitted when dragging ends on the header.\n- **igcPinToggle** - Emitted when the pin button is clicked.\n- **igcMaximize** - Emitted when the maximize button is clicked.\n- **igcClose** - Emitted when the close button is clicked.\n- **elementConnected** - Emitted when the element is connected to the DOM.\n- **elementDisconnected** - Emitted when the element is disconnected from the DOM.\n\n### **Slots:**\n - _default_ - Renders the pane header title.\n- **paneHeaderCloseButton** - Renders a custom close button.\n- **paneHeaderMaximizeButton** - Renders a custom maximize button.\n- **paneHeaderMinimizeButton** - Renders a custom minimize button.\n- **paneHeaderPinButton** - Renders a custom pin button.\n- **paneHeaderUnpinButton** - Renders a custom unpin button.","attributes":[{"name":"is-floating","description":"Indicates whether the header is used in a floating window.","values":[]},{"name":"is-floating-pane-header","description":"Indicates that the header is used in a floating pane context.","values":[]},{"name":"is-active","description":"Marks the header as active.","values":[]},{"name":"forced-drag","description":"Forces drag behavior on the pane header.","values":[]},{"name":"allow-close","description":"Enables or disables closing.","values":[]},{"name":"allow-maximize","description":"Enables or disables maximizing.","values":[]},{"name":"allow-pinning","description":"Enables or disables pinning.","values":[]},{"name":"pinned","description":"Whether the pane is currently pinned.","values":[]},{"name":"maximized","description":"Whether the pane is currently maximized.","values":[]},{"name":"disabled","description":"Disables interaction with the pane header.","values":[]}],"references":[]},{"name":"igc-resizer","description":"\n---\n\n\n### **Events:**\n - **igcResizerDragStart** - Emitted when a drag operation starts on the resizer.\n- **igcResizerMoved** - Emitted during resizer moving.\n- **igcResizerDragEnd** - Emitted when dragging ends on the resizer.","attributes":[{"name":"orientation","description":"Specifies the orientation of the resizer.","values":[{"name":"ResizerLocation"}]}],"references":[]},{"name":"igc-split-pane","description":"\n---\n\n\n### **Events:**\n - **igcRendered** - Emitted when the component is updated and rendered.\n\n### **CSS Parts:**\n - **split-pane** - The root split pane container.","attributes":[{"name":"use-fixed-size","description":"Indicates whether the pane uses a fixed size.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent pane uses fixed pane sizes.","values":[]},{"name":"min-resize-width","description":"The minimum width of child panes in pixels during resizing.","values":[]},{"name":"min-resize-height","description":"The minimum height of child panes in pixels during resizing.","values":[]},{"name":"orientation","description":"Defines the layout direction of the split pane: `horizontal` or `vertical`.","values":[{"name":"SplitPaneOrientation"}]},{"name":"size","values":[]}],"references":[]},{"name":"igc-splitter","description":"\n---\n\n\n### **Events:**\n - **igcResizeStart** - Emitted when a resize interaction starts.\n- **igcResizeEnd** - Emitted when the resize ends, passing the final size.\n\n### **CSS Parts:**\n - **splitter** - The main container of the splitter.\n- **splitter-base** - The draggable element that users interact with.\n- **splitter-ghost** - The visual indicator (ghost element) shown during drag.","attributes":[{"name":"show-drag-ghost","description":"Indicates whether the drag ghost element is shown while resizing.","values":[]},{"name":"parent-use-fixed-size","description":"Indicates if the parent pane uses fixed pane sizes.","values":[]},{"name":"split-pane-orientation","description":"Defines the orientation of the splitter based on the split pane orientation.","values":[]},{"name":"flyout-location","description":"Indicates the flyout location of the splitter.","values":[{"name":"UnpinnedLocation"}]},{"name":"scrollSpeed","values":[]}],"references":[]},{"name":"igc-unpinned-pane-header","description":"\n---\n\n\n### **Slots:**\n - _default_ - Default slot for the pane header content.\n\n### **CSS Parts:**\n - **unpinned-pane-header** - The main container of the pane header.\n- **horizontal** - Applied when the header is in a horizontal orientation.\n- **vertical** - Applied when the header is in a vertical orientation.\n- **start** - Applied when the header is on the left or top side.\n- **end** - Applied when the header is on the right or bottom side.\n- **active** - Applied when the header is in active state.\n- **disabled** - Applied when the header is disabled.","attributes":[{"name":"is-active","description":"Indicates whether the unpinned pane header is active.","values":[]},{"name":"disabled","description":"Indicates whether the unpinned pane header is disabled.","values":[]},{"name":"location","description":"The location where the unpinned pane is docked.","values":[]},{"name":"isActive","description":"Indicates whether the unpinned pane header is active.","values":[]}],"references":[]}]
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "igniteui-dockmanager",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0-RC.0",
|
|
4
4
|
"description": "Ignite UI Dock Manager Web Component provides means to manage the layout of your application through panes, allowing your end-users to customize it further by pinning, resizing, moving and hiding panes.",
|
|
5
5
|
"author": "Infragistics",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
package/utils/test-utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PaneActionBehavior } from '../components/dockmanager/backfill-types-dockmanager.js';
|
|
2
|
-
import type { IgcContentPane, IgcDockManagerComponentBase, IgcDockManagerLayout, IgcDockManagerResourceStrings, IgcDropTargetPaneInfo, IgcFloatingPaneResizeEventArgs, IgcFloatingPaneResizeMoveEventArgs, IgcPaneCloseEventArgs, IgcPaneDragEndEventArgs, IgcPaneDragOverEventArgs, IgcPaneDragStartEventArgs, IgcPaneFlyoutEventArgs, IgcPaneNavigatorMetadata, IgcPanePinnedEventArgs, IgcPaneScrollEventArgs, IgcSplitPane, IgcTabGroupPane } from '../components/dockmanager/dockmanager.interfaces.js';
|
|
2
|
+
import type { IgcContentPane, IgcDockManagerComponentBase, IgcDockManagerLayout, IgcDockManagerResourceStrings, IgcDropTargetPaneInfo, IgcFloatingPaneResizeEventArgs, IgcFloatingPaneResizeMoveEventArgs, IgcLayoutChangeEventArgs, IgcPaneCloseEventArgs, IgcPaneDragEndEventArgs, IgcPaneDragOverEventArgs, IgcPaneDragStartEventArgs, IgcPaneFlyoutEventArgs, IgcPaneNavigatorMetadata, IgcPanePinnedEventArgs, IgcPaneScrollEventArgs, IgcSplitPane, IgcTabGroupPane } from '../components/dockmanager/dockmanager.interfaces.js';
|
|
3
3
|
import { IgcDockManagerService } from '../components/dockmanager/dockmanager.service.js';
|
|
4
4
|
import { IgcDockManagerKeyboardService } from '../components/dockmanager/keyboard/keyboard.service.js';
|
|
5
5
|
/**
|
|
@@ -52,5 +52,5 @@ export declare class IgcDockManagerComponentMock extends EventTarget implements
|
|
|
52
52
|
floatingPaneResizeStart(args: IgcFloatingPaneResizeEventArgs): CustomEvent<IgcFloatingPaneResizeEventArgs>;
|
|
53
53
|
floatingPaneResizeMove(args: IgcFloatingPaneResizeMoveEventArgs): CustomEvent<IgcFloatingPaneResizeMoveEventArgs>;
|
|
54
54
|
floatingPaneResizeEnd(args: IgcFloatingPaneResizeEventArgs): CustomEvent<IgcFloatingPaneResizeEventArgs>;
|
|
55
|
-
layoutChange(
|
|
55
|
+
layoutChange(): CustomEvent<IgcLayoutChangeEventArgs>;
|
|
56
56
|
}
|
package/utils/test-utils.js
CHANGED
|
@@ -26,7 +26,7 @@ export class IgcDockManagerComponentMock extends EventTarget {
|
|
|
26
26
|
set layout(value) {
|
|
27
27
|
this._layout = value;
|
|
28
28
|
this.service.processLayout();
|
|
29
|
-
this.layoutChange(
|
|
29
|
+
this.layoutChange();
|
|
30
30
|
}
|
|
31
31
|
focusElement() { }
|
|
32
32
|
getDockedPanesContainerRect() {
|
|
@@ -72,7 +72,9 @@ export class IgcDockManagerComponentMock extends EventTarget {
|
|
|
72
72
|
floatingPaneResizeEnd(args) {
|
|
73
73
|
return this._createAndDispatchEvent('floatingPaneResizeEnd', args);
|
|
74
74
|
}
|
|
75
|
-
layoutChange(
|
|
76
|
-
return this._createAndDispatchEvent('layoutChange',
|
|
75
|
+
layoutChange() {
|
|
76
|
+
return this._createAndDispatchEvent('layoutChange', {
|
|
77
|
+
layout: this._layout,
|
|
78
|
+
});
|
|
77
79
|
}
|
|
78
80
|
}
|
package/utils/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DockingIndicatorPosition } from '../components/dockmanager/backfill-types-dockmanager.js';
|
|
2
|
-
import type { IgcSplitPane, PartNameInfo } from '../components/dockmanager/dockmanager.interfaces.js';
|
|
2
|
+
import type { IgcDockManagerPane, IgcSplitPane, PartNameInfo } from '../components/dockmanager/dockmanager.interfaces.js';
|
|
3
3
|
import type { IgcDockManagerComponentMock } from './test-utils.js';
|
|
4
4
|
/**
|
|
5
5
|
* @hidden
|
|
@@ -45,3 +45,22 @@ export declare function getDirection(element: HTMLElement | IgcDockManagerCompon
|
|
|
45
45
|
* @hidden
|
|
46
46
|
*/
|
|
47
47
|
export declare function closestElement(selector: string, el: any): HTMLElement | null;
|
|
48
|
+
/**
|
|
49
|
+
* @hidden
|
|
50
|
+
* Recursively calculate minimum size for a pane in a given orientation.
|
|
51
|
+
* This handles split panes, tab groups, content panes, and document hosts.
|
|
52
|
+
* @param pane The pane to calculate min size for
|
|
53
|
+
* @param orientation The orientation to calculate ('horizontal' for width, 'vertical' for height)
|
|
54
|
+
* @param splitterSize The actual size of splitters in pixels (defaults to IGC_DEFAULT_SPLITTER_SIZE)
|
|
55
|
+
*/
|
|
56
|
+
export declare function calculatePaneMinSize(pane: IgcDockManagerPane | null | undefined, orientation: 'horizontal' | 'vertical', splitterSize?: number): number;
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
* Calculate minimum size for a split pane in a given orientation.
|
|
60
|
+
* For horizontal split panes: SUM widths, MAX heights
|
|
61
|
+
* For vertical split panes: MAX widths, SUM heights
|
|
62
|
+
* @param splitPane The split pane to calculate min size for
|
|
63
|
+
* @param orientation The orientation to calculate ('horizontal' for width, 'vertical' for height)
|
|
64
|
+
* @param splitterSize The actual size of splitters in pixels (defaults to IGC_DEFAULT_SPLITTER_SIZE)
|
|
65
|
+
*/
|
|
66
|
+
export declare function calculateSplitPaneMinSize(splitPane: IgcSplitPane, orientation: 'horizontal' | 'vertical', splitterSize?: number): number;
|
package/utils/utils.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { IGC_DEFAULT_PANE_SIZE, IGC_DEFAULT_SPLITTER_SIZE, IGC_RESIZING_MIN_SIZE, } from '../components/dockmanager/dockmanager.interfaces.js';
|
|
2
|
+
const TAB_HEADER_HEIGHT = 40;
|
|
1
3
|
export function isDockingIndicatorVertical(position) {
|
|
2
4
|
return (position === 'top' ||
|
|
3
5
|
position === 'bottom' ||
|
|
@@ -71,3 +73,104 @@ export function closestElement(selector, el) {
|
|
|
71
73
|
return null;
|
|
72
74
|
return (el.closest(selector) || closestElement(selector, el.getRootNode()?.host));
|
|
73
75
|
}
|
|
76
|
+
export function calculatePaneMinSize(pane, orientation, splitterSize = IGC_DEFAULT_SPLITTER_SIZE) {
|
|
77
|
+
if (!pane)
|
|
78
|
+
return IGC_RESIZING_MIN_SIZE;
|
|
79
|
+
const property = orientation === 'horizontal' ? 'minResizeWidth' : 'minResizeHeight';
|
|
80
|
+
switch (pane.type) {
|
|
81
|
+
case 'contentPane': {
|
|
82
|
+
const minSize = pane[property];
|
|
83
|
+
if (minSize !== undefined && minSize > 0) {
|
|
84
|
+
return minSize;
|
|
85
|
+
}
|
|
86
|
+
return IGC_RESIZING_MIN_SIZE;
|
|
87
|
+
}
|
|
88
|
+
case 'splitPane': {
|
|
89
|
+
return calculateSplitPaneMinSize(pane, orientation, splitterSize);
|
|
90
|
+
}
|
|
91
|
+
case 'tabGroupPane': {
|
|
92
|
+
if (!pane.panes || pane.panes.length === 0) {
|
|
93
|
+
const minSize = pane[property];
|
|
94
|
+
if (minSize !== undefined && minSize > 0) {
|
|
95
|
+
return orientation === 'vertical'
|
|
96
|
+
? minSize + TAB_HEADER_HEIGHT
|
|
97
|
+
: minSize;
|
|
98
|
+
}
|
|
99
|
+
return orientation === 'vertical'
|
|
100
|
+
? IGC_RESIZING_MIN_SIZE + TAB_HEADER_HEIGHT
|
|
101
|
+
: IGC_RESIZING_MIN_SIZE;
|
|
102
|
+
}
|
|
103
|
+
const tabMinSizes = pane.panes.map((child) => calculatePaneMinSize(child, orientation, splitterSize));
|
|
104
|
+
const childrenMaxMinSize = Math.max(...tabMinSizes, IGC_RESIZING_MIN_SIZE);
|
|
105
|
+
const minSize = pane[property];
|
|
106
|
+
if (minSize !== undefined &&
|
|
107
|
+
minSize > 0 &&
|
|
108
|
+
minSize > childrenMaxMinSize) {
|
|
109
|
+
return minSize;
|
|
110
|
+
}
|
|
111
|
+
return orientation === 'vertical'
|
|
112
|
+
? childrenMaxMinSize + TAB_HEADER_HEIGHT
|
|
113
|
+
: childrenMaxMinSize;
|
|
114
|
+
}
|
|
115
|
+
case 'documentHost': {
|
|
116
|
+
if (pane.rootPane) {
|
|
117
|
+
return calculatePaneMinSize(pane.rootPane, orientation, splitterSize);
|
|
118
|
+
}
|
|
119
|
+
return IGC_RESIZING_MIN_SIZE;
|
|
120
|
+
}
|
|
121
|
+
default:
|
|
122
|
+
return IGC_RESIZING_MIN_SIZE;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
export function calculateSplitPaneMinSize(splitPane, orientation, splitterSize = IGC_DEFAULT_SPLITTER_SIZE) {
|
|
126
|
+
const property = orientation === 'horizontal' ? 'minResizeWidth' : 'minResizeHeight';
|
|
127
|
+
const hasOwnMinSize = splitPane[property] !== undefined && splitPane[property] > 0;
|
|
128
|
+
const ownMinSize = hasOwnMinSize
|
|
129
|
+
? splitPane[property]
|
|
130
|
+
: IGC_RESIZING_MIN_SIZE;
|
|
131
|
+
if (!splitPane.panes || splitPane.panes.length === 0) {
|
|
132
|
+
return ownMinSize;
|
|
133
|
+
}
|
|
134
|
+
const childMinSizes = splitPane.panes.map((child) => calculatePaneMinSize(child, orientation, splitterSize));
|
|
135
|
+
const isHorizontalSplit = splitPane.orientation === 'horizontal';
|
|
136
|
+
const checkingHorizontal = orientation === 'horizontal';
|
|
137
|
+
const shouldSum = (isHorizontalSplit && checkingHorizontal) ||
|
|
138
|
+
(!isHorizontalSplit && !checkingHorizontal);
|
|
139
|
+
let adjustedChildMinSizes = childMinSizes;
|
|
140
|
+
if (shouldSum) {
|
|
141
|
+
let maxRatio = 0;
|
|
142
|
+
splitPane.panes.forEach((child, index) => {
|
|
143
|
+
if (!child)
|
|
144
|
+
return;
|
|
145
|
+
const effectiveSize = child.size !== undefined && child.size > 0
|
|
146
|
+
? child.size
|
|
147
|
+
: IGC_DEFAULT_PANE_SIZE;
|
|
148
|
+
const ratio = childMinSizes[index] / effectiveSize;
|
|
149
|
+
maxRatio = Math.max(maxRatio, ratio);
|
|
150
|
+
});
|
|
151
|
+
if (maxRatio > 0) {
|
|
152
|
+
adjustedChildMinSizes = splitPane.panes.map((child, index) => {
|
|
153
|
+
if (!child)
|
|
154
|
+
return childMinSizes[index];
|
|
155
|
+
const effectiveSize = child.size !== undefined && child.size > 0
|
|
156
|
+
? child.size
|
|
157
|
+
: IGC_DEFAULT_PANE_SIZE;
|
|
158
|
+
return Math.max(effectiveSize * maxRatio, childMinSizes[index]);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
let childrenMinSize;
|
|
163
|
+
if (shouldSum) {
|
|
164
|
+
childrenMinSize = adjustedChildMinSizes.reduce((sum, size) => sum + size, 0);
|
|
165
|
+
const splitterCount = splitPane.panes.length - 1;
|
|
166
|
+
if (splitterCount > 0) {
|
|
167
|
+
childrenMinSize += splitterCount * splitterSize;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
childrenMinSize = Math.max(...adjustedChildMinSizes, IGC_RESIZING_MIN_SIZE);
|
|
172
|
+
}
|
|
173
|
+
return hasOwnMinSize
|
|
174
|
+
? Math.max(ownMinSize, childrenMinSize)
|
|
175
|
+
: childrenMinSize;
|
|
176
|
+
}
|