igniteui-webcomponents 7.2.2 → 7.2.4

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 (125) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/animations/player.d.ts +4 -11
  3. package/animations/player.js +3 -9
  4. package/animations/player.js.map +1 -1
  5. package/animations/view-transition.d.ts +44 -0
  6. package/animations/view-transition.js +81 -0
  7. package/animations/view-transition.js.map +1 -0
  8. package/components/avatar/avatar.js +7 -7
  9. package/components/avatar/avatar.js.map +1 -1
  10. package/components/button/button-base.d.ts +1 -1
  11. package/components/button/button-base.js +7 -5
  12. package/components/button/button-base.js.map +1 -1
  13. package/components/button/icon-button.js +9 -9
  14. package/components/button/icon-button.js.map +1 -1
  15. package/components/calendar/calendar.js.map +1 -1
  16. package/components/calendar/days-view/days-view.js.map +1 -1
  17. package/components/carousel/carousel.js +1 -2
  18. package/components/carousel/carousel.js.map +1 -1
  19. package/components/chat/chat-input.js +4 -4
  20. package/components/chat/chat-input.js.map +1 -1
  21. package/components/chat/chat.js +6 -6
  22. package/components/chat/chat.js.map +1 -1
  23. package/components/chat/message-attachments.js.map +1 -1
  24. package/components/chat/types.js.map +1 -1
  25. package/components/checkbox/checkbox.js.map +1 -1
  26. package/components/combo/combo.d.ts +1 -4
  27. package/components/combo/combo.js +9 -1
  28. package/components/combo/combo.js.map +1 -1
  29. package/components/combo/types.d.ts +4 -0
  30. package/components/combo/types.js.map +1 -1
  31. package/components/common/context.d.ts +2 -0
  32. package/components/common/context.js.map +1 -1
  33. package/components/common/controllers/drag.d.ts +10 -0
  34. package/components/common/controllers/drag.js +11 -0
  35. package/components/common/controllers/drag.js.map +1 -1
  36. package/components/common/controllers/gestures.js.map +1 -1
  37. package/components/common/controllers/internals.d.ts +9 -0
  38. package/components/common/controllers/internals.js +4 -0
  39. package/components/common/controllers/internals.js.map +1 -1
  40. package/components/common/controllers/mutation-observer.d.ts +2 -2
  41. package/components/common/controllers/mutation-observer.js +10 -7
  42. package/components/common/controllers/mutation-observer.js.map +1 -1
  43. package/components/common/controllers/slot.d.ts +1 -1
  44. package/components/common/controllers/slot.js +4 -1
  45. package/components/common/controllers/slot.js.map +1 -1
  46. package/components/common/i18n/utils.js.map +1 -1
  47. package/components/common/mixins/forms/associated.d.ts +1 -1
  48. package/components/common/mixins/forms/associated.js +21 -13
  49. package/components/common/mixins/forms/associated.js.map +1 -1
  50. package/components/common/mixins/forms/types.d.ts +2 -1
  51. package/components/common/mixins/forms/types.js.map +1 -1
  52. package/components/common/templates/masked-input.d.ts +2 -0
  53. package/components/common/templates/masked-input.js +2 -1
  54. package/components/common/templates/masked-input.js.map +1 -1
  55. package/components/date-picker/date-picker.d.ts +2 -1
  56. package/components/date-picker/date-picker.js +6 -0
  57. package/components/date-picker/date-picker.js.map +1 -1
  58. package/components/date-range-picker/date-range-mask-parser.d.ts +11 -2
  59. package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
  60. package/components/date-range-picker/date-range-picker.d.ts +2 -1
  61. package/components/date-range-picker/date-range-picker.js +10 -8
  62. package/components/date-range-picker/date-range-picker.js.map +1 -1
  63. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  64. package/components/date-time-input/date-part.js.map +1 -1
  65. package/components/date-time-input/date-time-input.base.d.ts +15 -0
  66. package/components/date-time-input/date-time-input.base.js +9 -1
  67. package/components/date-time-input/date-time-input.base.js.map +1 -1
  68. package/components/dialog/dialog.js +4 -4
  69. package/components/dialog/dialog.js.map +1 -1
  70. package/components/file-input/file-input.js.map +1 -1
  71. package/components/icon/icon-state.broadcast.js.map +1 -1
  72. package/components/icon/icon.d.ts +3 -2
  73. package/components/icon/icon.js +7 -2
  74. package/components/icon/icon.js.map +1 -1
  75. package/components/input/input-base.d.ts +15 -0
  76. package/components/input/input-base.js +8 -1
  77. package/components/input/input-base.js.map +1 -1
  78. package/components/input/input.js +1 -0
  79. package/components/input/input.js.map +1 -1
  80. package/components/mask-input/mask-input.js +1 -0
  81. package/components/mask-input/mask-input.js.map +1 -1
  82. package/components/popover/popover.d.ts +10 -1
  83. package/components/popover/popover.js +31 -14
  84. package/components/popover/popover.js.map +1 -1
  85. package/components/popover/themes/light/popover.base.css.js +1 -1
  86. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  87. package/components/select/select.d.ts +7 -1
  88. package/components/select/select.js +12 -1
  89. package/components/select/select.js.map +1 -1
  90. package/components/slider/range-slider.js +5 -5
  91. package/components/slider/range-slider.js.map +1 -1
  92. package/components/slider/slider-base.js +9 -9
  93. package/components/slider/slider-base.js.map +1 -1
  94. package/components/snackbar/snackbar.js +4 -4
  95. package/components/snackbar/snackbar.js.map +1 -1
  96. package/components/splitter/splitter.js.map +1 -1
  97. package/components/stepper/common/animations.js.map +1 -1
  98. package/components/stepper/step.js.map +1 -1
  99. package/components/tabs/tabs.js +29 -10
  100. package/components/tabs/tabs.js.map +1 -1
  101. package/components/textarea/textarea.js +1 -0
  102. package/components/textarea/textarea.js.map +1 -1
  103. package/components/tile-manager/tile-manager.d.ts +11 -0
  104. package/components/tile-manager/tile-manager.js +15 -0
  105. package/components/tile-manager/tile-manager.js.map +1 -1
  106. package/components/tile-manager/tile.js +15 -14
  107. package/components/tile-manager/tile.js.map +1 -1
  108. package/components/tooltip/tooltip.js +8 -8
  109. package/components/tooltip/tooltip.js.map +1 -1
  110. package/components/tree/tree-item.js +31 -31
  111. package/components/tree/tree-item.js.map +1 -1
  112. package/components/types.js.map +1 -1
  113. package/components/validation-container/validation-container.d.ts +32 -5
  114. package/components/validation-container/validation-container.js +74 -64
  115. package/components/validation-container/validation-container.js.map +1 -1
  116. package/custom-elements.json +809 -189
  117. package/igniteui-webcomponents.html-data.json +1 -1
  118. package/index.d.ts +6 -2
  119. package/index.js +3 -2
  120. package/index.js.map +1 -1
  121. package/package.json +1 -1
  122. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -1
  123. package/themes/dark/indigo.css +1 -1
  124. package/themes/light/indigo.css +1 -1
  125. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../src/components/splitter/splitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n asNumber,\n asPercent,\n bindIf,\n clamp,\n isLTR,\n roundPrecise,\n} from '../common/util.js';\nimport type { SplitterOrientation } from '../types.js';\nimport IgcVisuallyHiddenComponent from '../visually-hidden/visually-hidden.js';\nimport { styles as shared } from './themes/shared/splitter.common.css.js';\nimport { styles } from './themes/splitter.base.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n IgcSplitterComponentEventMap,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n PanePosition,\n PaneResizeSnapshot,\n SplitterPaneState,\n SplitterResizeState,\n} from './types.js';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nconst DEFAULT_RESIZE_STATE: SplitterResizeState = {\n startPane: null,\n endPane: null,\n isDragging: false,\n dragStartPosition: { x: 0, y: 0 },\n dragPointerId: -1,\n};\n\n/**\n * The `igc-splitter` component provides a resizable split-pane layout that divides the view\n * into two panels — *start* and *end* — separated by a draggable bar.\n *\n * Panels can be resized by dragging the bar, using keyboard shortcuts, or collapsed/expanded\n * using the built-in collapse buttons or the programmatic `toggle()` API.\n * Nested splitters are supported for more complex layouts.\n *\n * @example\n * ```html\n * <!-- Basic horizontal splitter -->\n * <igc-splitter>\n * <div slot=\"start\">Start panel</div>\n * <div slot=\"end\">End panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Vertical splitter with size constraints -->\n * <igc-splitter orientation=\"vertical\" start-min-size=\"100px\" end-min-size=\"100px\">\n * <div slot=\"start\">Top panel</div>\n * <div slot=\"end\">Bottom panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Nested splitters for a multi-pane layout -->\n * <igc-splitter style=\"height: 600px;\">\n * <igc-splitter slot=\"start\" orientation=\"vertical\">\n * <div slot=\"start\">Top left</div>\n * <div slot=\"end\">Bottom left</div>\n * </igc-splitter>\n * <div slot=\"end\">Right panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```ts\n * // Programmatically collapse/expand a pane\n * const splitter = document.querySelector('igc-splitter');\n * splitter.toggle('start'); // collapse start pane\n * splitter.toggle('start'); // expand start pane\n * ```\n *\n * ## Keyboard interactions\n *\n * When the splitter bar is focused:\n *\n * | Key | Action |\n * |---|---|\n * | `Arrow Left` / `Arrow Right` | Resize panes (horizontal orientation) |\n * | `Arrow Up` / `Arrow Down` | Resize panes (vertical orientation) |\n * | `Home` | Snap start pane to its minimum size |\n * | `End` | Snap start pane to its maximum size |\n * | `Ctrl + Arrow Left` / `Ctrl + Arrow Up` | Collapse or expand the start pane |\n * | `Ctrl + Arrow Right` / `Ctrl + Arrow Down` | Collapse or expand the end pane |\n *\n * @element igc-splitter\n *\n * @fires igcResizeStart - Emitted once when a resize operation begins (pointer drag or keyboard).\n * @fires igcResizing - Emitted continuously while a pane is being resized.\n * @fires igcResizeEnd - Emitted once when a resize operation completes.\n *\n * @slot start - Content projected into the start (left/top) panel.\n * @slot end - Content projected into the end (right/bottom) panel.\n *\n * @csspart splitter-bar - The resizable bar element between the two panels.\n * @csspart drag-handle - The drag handle icon/element on the splitter bar.\n * @csspart start-pane - The container for the start panel content.\n * @csspart end-pane - The container for the end panel content.\n * @csspart start-collapse-btn - The button to collapse the start panel.\n * @csspart end-collapse-btn - The button to collapse the end panel.\n * @csspart start-expand-btn - The button to expand the start panel when collapsed.\n * @csspart end-expand-btn - The button to expand the end panel when collapsed.\n */\nexport default class IgcSplitterComponent extends EventEmitterMixin<\n IgcSplitterComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-splitter';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcSplitterComponent, IgcVisuallyHiddenComponent);\n }\n\n //#region Private Properties\n\n private readonly _internals = addInternalsController(this);\n\n private readonly _separatorRef = createRef<HTMLElement>();\n\n private _startPaneState: SplitterPaneState = { size: 'auto', styles: {} };\n private _endPaneState: SplitterPaneState = { size: 'auto', styles: {} };\n\n @state()\n private _collapsedPane: PanePosition | null = null;\n\n @state()\n private _resizeState: SplitterResizeState = { ...DEFAULT_RESIZE_STATE };\n\n @query('[part~=\"base\"]', true)\n private readonly _base!: HTMLElement;\n\n @query('[part~=\"start-pane\"]', true)\n private readonly _startPane!: HTMLElement;\n\n @query('[part~=\"end-pane\"]', true)\n private readonly _endPane!: HTMLElement;\n\n private get _separator(): HTMLElement | undefined {\n return this._separatorRef.value;\n }\n\n private get _resizeDisallowed(): boolean {\n return this.disableResize || this._collapsedPane != null;\n }\n\n private get _isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n private get _separatorCursor(): string {\n if (this._resizeDisallowed) {\n return 'default';\n }\n return this._isHorizontal ? 'col-resize' : 'row-resize';\n }\n\n //#endregion\n\n //#region Public Properties\n\n /**\n * The orientation of the splitter, which determines the direction of resizing and collapsing.\n *\n * @attr orientation\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public orientation: SplitterOrientation = 'horizontal';\n\n /**\n * When true, prevents the user from collapsing either pane.\n * This also hides the expand/collapse buttons on the splitter bar.\n *\n * @attr disable-collapse\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-collapse' })\n public disableCollapse = false;\n\n /**\n * When true, prevents the user from resizing the panes by dragging the splitter bar or using keyboard shortcuts.\n * This also hides the drag handle on the splitter bar.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * When true, hides the expand/collapse buttons on the splitter bar.\n *\n * Note that the buttons will also be hidden if `disable-collapse` is true or\n * if a pane is currently collapsed.\n *\n * @attr hide-collapse-buttons\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-collapse-buttons',\n })\n public hideCollapseButtons = false;\n\n /**\n * When true, hides the drag handle on the splitter bar.\n *\n * Note that the drag handle will also be hidden if `disable-resize` is true.\n *\n * @attr hide-drag-handle\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-drag-handle',\n })\n public hideDragHandle = false;\n\n /**\n * The minimum size of the start pane.\n *\n * @attr start-min-size\n */\n @property({ attribute: 'start-min-size' })\n public set startMinSize(value: string | undefined) {\n this._startPaneState.minSize = this._normalizeValue(value);\n }\n\n public get startMinSize(): string | undefined {\n return this._startPaneState.minSize;\n }\n\n /**\n * The minimum size of the end pane.\n *\n * @attr end-min-size\n */\n @property({ attribute: 'end-min-size' })\n public set endMinSize(value: string | undefined) {\n this._endPaneState.minSize = this._normalizeValue(value);\n }\n\n public get endMinSize(): string | undefined {\n return this._endPaneState.minSize;\n }\n\n /**\n * The maximum size of the start pane.\n *\n * @attr start-max-size\n */\n @property({ attribute: 'start-max-size' })\n public set startMaxSize(value: string | undefined) {\n this._startPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get startMaxSize(): string | undefined {\n return this._startPaneState.maxSize;\n }\n\n /**\n * The maximum size of the end pane.\n *\n * @attr end-max-size\n */\n @property({ attribute: 'end-max-size' })\n public set endMaxSize(value: string | undefined) {\n this._endPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get endMaxSize(): string | undefined {\n return this._endPaneState.maxSize;\n }\n\n /**\n * The size of the start pane.\n *\n * @attr start-size\n */\n @property({ attribute: 'start-size' })\n public set startSize(value: string | undefined) {\n this._startPaneState.size = this._normalizeValue(value, 'auto');\n }\n\n public get startSize(): string | undefined {\n return this._startPaneState.size;\n }\n\n /**\n * The size of the end pane.\n *\n * @attr end-size\n */\n @property({ attribute: 'end-size' })\n public set endSize(value: string | undefined) {\n this._endPaneState.size = this._normalizeValue(value, 'auto');\n }\n\n public get endSize(): string | undefined {\n return this._endPaneState.size;\n }\n\n //#endregion\n\n //#region Lifecycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSlotController(this, { slots: setSlots('start', 'end') });\n\n createResizeObserverController(this, {\n callback: () => this.requestUpdate(),\n });\n\n addKeybindings(this, {\n ref: this._separatorRef,\n })\n .set(arrowUp, () => this._handleResizePanes(-1, 'vertical'))\n .set(arrowDown, () => this._handleResizePanes(1, 'vertical'))\n .set(arrowLeft, () => this._handleResizePanes(-1, 'horizontal'))\n .set(arrowRight, () => this._handleResizePanes(1, 'horizontal'))\n .set(homeKey, () => this._handleMinMaxResize('min'))\n .set(endKey, () => this._handleMinMaxResize('max'))\n .set([ctrlKey, arrowUp], () =>\n this._handleArrowsExpandCollapse('start', 'vertical')\n )\n .set([ctrlKey, arrowDown], () =>\n this._handleArrowsExpandCollapse('end', 'vertical')\n )\n .set([ctrlKey, arrowLeft], () =>\n this._handleArrowsExpandCollapse('start', 'horizontal')\n )\n .set([ctrlKey, arrowRight], () =>\n this._handleArrowsExpandCollapse('end', 'horizontal')\n );\n }\n\n protected override update(changed: PropertyValues<this>): void {\n if (changed.get('orientation') != null) {\n for (const pane of ['start', 'end'] as PanePosition[]) {\n const state = this._getPaneState(pane);\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n }\n }\n\n if (this.hasUpdated) {\n this._updatePanes();\n }\n\n super.update(changed);\n }\n\n protected override updated(): void {\n this._updateBarAria();\n }\n\n //#endregion\n\n //#region Resize Event Handlers\n\n private _handleBarPointerDown(e: PointerEvent): void {\n if (e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n this._resizeState = {\n ...this._resizeState,\n isDragging: true,\n dragPointerId: e.pointerId,\n dragStartPosition: { x: e.clientX, y: e.clientY },\n };\n\n this._resizeStart();\n this._separator?.setPointerCapture(this._resizeState.dragPointerId);\n }\n\n private _getDragDelta(e: PointerEvent): number {\n const deltaX = e.clientX - this._resizeState.dragStartPosition.x;\n const deltaY = e.clientY - this._resizeState.dragStartPosition.y;\n return this._resolveDelta(deltaX, deltaY);\n }\n\n private _handleBarPointerMove(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizing(delta);\n }\n }\n\n private _handleEndDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizeEnd(delta);\n }\n\n this._endDrag();\n }\n\n private _endDrag(): void {\n if (this._resizeState.dragPointerId !== -1) {\n this._separator?.releasePointerCapture(this._resizeState.dragPointerId);\n }\n this._resizeState = { ...DEFAULT_RESIZE_STATE };\n }\n\n //#endregion\n\n //#region Public Methods\n\n /** Toggles the collapsed state of the specified pane. */\n public toggle(position: PanePosition): void {\n if (this._collapsedPane === null) {\n this._savePaneSizes();\n }\n\n // If the requested pane is already collapsed, expand it (set to null)\n // Otherwise, collapse the requested pane (this also handles switching from one collapsed pane to another)\n this._collapsedPane = this._collapsedPane === position ? null : position;\n\n this._internals.setState('start-collapsed', this._isCollapsed('start'));\n this._internals.setState('end-collapsed', this._isCollapsed('end'));\n\n this._restoreSizesOnExpandCollapse();\n }\n\n //#endregion\n\n //#region Internal API\n\n private _savePaneSizes(): void {\n this._startPaneState.savedSize = `${this._paneRectAsPercent(0)}%`;\n this._endPaneState.savedSize = `${this._paneRectAsPercent(1)}%`;\n }\n\n /* Reset sizes on collapse; restore saved sizes on expand */\n private _restoreSizesOnExpandCollapse(): void {\n if (this._collapsedPane !== null) {\n this._startPaneState.size = 'auto';\n this._endPaneState.size = 'auto';\n } else {\n this._startPaneState.size =\n this._startPaneState.savedSize ?? this.startSize;\n this._endPaneState.size = this._endPaneState.savedSize ?? this.endSize;\n }\n }\n\n /** Measures the actual rendered size of a pane and returns it as a percentage of total size. */\n private _paneRectAsPercent(paneIndex: 0 | 1): number {\n const totalSize = this._getTotalSize();\n if (totalSize === 0) {\n return 0;\n }\n return roundPrecise(asPercent(this._rectSize()[paneIndex], totalSize), 0);\n }\n\n /** Converts a CSS size string (px or %) to a percentage of total size. */\n private _sizeToPercent(sizeValue: string): number {\n const totalSize = this._getTotalSize();\n if (totalSize === 0) {\n return 0;\n }\n\n if (sizeValue.includes('%')) {\n return asNumber(sizeValue);\n }\n\n const pxValue = asNumber(sizeValue);\n return roundPrecise(asPercent(pxValue, totalSize), 0);\n }\n\n private _getStartPaneSizePercent(): number {\n if (!this._startPane || this._isCollapsed('start')) {\n return 0;\n }\n\n if (this._isCollapsed('end')) {\n return 100;\n }\n\n return this._paneRectAsPercent(0);\n }\n\n private _getMinMaxAsPercent(type: 'min' | 'max'): number {\n const value = type === 'min' ? this.startMinSize : this.startMaxSize;\n const defaultValue = type === 'min' ? 0 : 100;\n\n return value ? this._sizeToPercent(value) : defaultValue;\n }\n\n private _isCollapsed(which: PanePosition): boolean {\n return this._collapsedPane === which;\n }\n\n private _updateBarAria(): void {\n if (this._separator) {\n this._separator.ariaValueNow = this._getStartPaneSizePercent().toString();\n this._separator.ariaValueMin = this._getMinMaxAsPercent('min').toString();\n this._separator.ariaValueMax = this._getMinMaxAsPercent('max').toString();\n }\n }\n\n private _getPaneState(which: PanePosition): SplitterPaneState {\n return which === 'start' ? this._startPaneState : this._endPaneState;\n }\n\n private _isPercentageSize(which: PanePosition): boolean {\n const { size } = this._getPaneState(which);\n return !!size && size.includes('%');\n }\n\n private _isAutoSize(which: PanePosition): boolean {\n return this._getPaneState(which).size === 'auto';\n }\n\n private _normalizeValue(\n value: string | undefined,\n fallback?: 'auto'\n ): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed || trimmed === 'auto') {\n return fallback;\n }\n\n const numericValue = asNumber(trimmed, -1);\n if (numericValue < 0) return fallback;\n if (trimmed.includes('%') && numericValue > 100) return fallback;\n\n return trimmed;\n }\n\n private _getFlex(which: PanePosition): string {\n const isAuto = this._isAutoSize(which);\n const size = isAuto ? '0px' : this._getPaneState(which).size;\n return `${isAuto ? 1 : 0} 1 ${size}`;\n }\n\n private _handleResizePanes(\n direction: -1 | 1,\n validOrientation: SplitterOrientation\n ): void {\n if (this._resizeDisallowed || this.orientation !== validOrientation) {\n return;\n }\n const delta = this._resolveDelta(\n KEYBOARD_RESIZE_STEP,\n KEYBOARD_RESIZE_STEP,\n direction\n );\n\n this._resizeStart();\n this._resizing(delta);\n this._resizeEnd(delta);\n }\n\n @eventOptions({ passive: false })\n private _preventDefaultForEvent(e: Event): void {\n e.preventDefault();\n }\n\n private _resolveDelta(\n deltaX: number,\n deltaY: number,\n direction?: -1 | 1\n ): number {\n const isHorizontal = this._isHorizontal;\n const rtlMultiplier = isHorizontal && !isLTR(this) ? -1 : 1;\n const delta = isHorizontal ? deltaX : deltaY;\n return delta * rtlMultiplier * (direction ?? 1);\n }\n\n private _handleMinMaxResize(type: 'min' | 'max'): void {\n if (this._resizeDisallowed) {\n return;\n }\n\n const totalSize = this._getTotalSize();\n const boundaryValue =\n type === 'min' ? this.startMinSize : this.startMaxSize;\n const isPercentage = boundaryValue\n ? boundaryValue.includes('%')\n : type === 'max';\n\n const targetStartSizePx =\n this._setMinMaxInPx('start', type) ?? (type === 'min' ? 0 : totalSize);\n const targetEndSizePx = totalSize - targetStartSizePx;\n\n if (isPercentage) {\n this.startSize = `${roundPrecise(asPercent(targetStartSizePx, totalSize), 2)}%`;\n this.endSize = `${roundPrecise(asPercent(targetEndSizePx, totalSize), 2)}%`;\n } else {\n this.startSize = `${targetStartSizePx}px`;\n this.endSize = `${targetEndSizePx}px`;\n }\n }\n\n private _handleExpanderAction(pane: PanePosition): void {\n const other: PanePosition = pane === 'start' ? 'end' : 'start';\n this.toggle(this._collapsedPane === other ? other : pane);\n }\n\n private _handleArrowsExpandCollapse(\n target: PanePosition,\n validOrientation: SplitterOrientation\n ): void {\n if (this.disableCollapse || this.orientation !== validOrientation) {\n return;\n }\n const effectiveTarget: PanePosition =\n validOrientation === 'horizontal' && !isLTR(this)\n ? target === 'start'\n ? 'end'\n : 'start'\n : target;\n this._handleExpanderAction(effectiveTarget);\n }\n\n private _resizeStart(): void {\n const [startSize, endSize] = this._rectSize();\n const totalSize = this._getTotalSize();\n\n this._resizeState.startPane = this._createPaneState(\n 'start',\n startSize,\n totalSize\n );\n this._resizeState.endPane = this._createPaneState(\n 'end',\n endSize,\n totalSize\n );\n\n this.emitEvent('igcResizeStart', {\n detail: { startPanelSize: startSize, endPanelSize: endSize },\n });\n }\n\n private _createPaneState(\n pane: PanePosition,\n size: number,\n totalSize?: number\n ): PaneResizeSnapshot {\n return {\n initialSize: size,\n isPercentageBased: this._isPercentageSize(pane) || this._isAutoSize(pane),\n minSizePx: this._setMinMaxInPx(pane, 'min', totalSize),\n maxSizePx: this._setMinMaxInPx(pane, 'max', totalSize),\n };\n }\n\n private _setMinMaxInPx(\n pane: PanePosition,\n type: 'min' | 'max',\n totalSize?: number\n ): number | undefined {\n const paneState = this._getPaneState(pane);\n const value = type === 'max' ? paneState.maxSize : paneState.minSize;\n const valueAsNumber = asNumber(value);\n\n if (!value) {\n return undefined;\n }\n\n return value.includes('%')\n ? (valueAsNumber / 100) * (totalSize ?? this._getTotalSize())\n : valueAsNumber;\n }\n\n private _resizing(delta: number): void {\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n\n this.startSize = `${startPaneSize}px`;\n this.endSize = `${endPaneSize}px`;\n\n this.emitEvent('igcResizing', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _computeSize(\n pane: PaneResizeSnapshot,\n paneSize: number,\n totalSize: number\n ): string {\n return pane.isPercentageBased\n ? `${asPercent(paneSize, totalSize)}%`\n : `${roundPrecise(paneSize, 0)}px`;\n }\n\n private _resizeEnd(delta: number): void {\n if (!this._resizeState.startPane || !this._resizeState.endPane) {\n return;\n }\n\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n const totalSize = this._getTotalSize();\n\n this.startSize = this._computeSize(\n this._resizeState.startPane,\n startPaneSize,\n totalSize\n );\n this.endSize = this._computeSize(\n this._resizeState.endPane,\n endPaneSize,\n totalSize\n );\n\n this.emitEvent('igcResizeEnd', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _rectSize(): [number, number] {\n const axis = this._isHorizontal ? 'width' : 'height';\n const startPaneRect = this._startPane.getBoundingClientRect();\n const endPaneRect = this._endPane.getBoundingClientRect();\n\n return [startPaneRect[axis], endPaneRect[axis]];\n }\n\n private _calcNewSizes(delta: number): [number, number] {\n if (!this._resizeState.startPane || !this._resizeState.endPane)\n return [0, 0];\n\n const start = this._resizeState.startPane;\n const end = this._resizeState.endPane;\n const minStart = start.minSizePx || 0;\n const minEnd = end.minSizePx || 0;\n const maxStart =\n start.maxSizePx || start.initialSize + end.initialSize - minEnd;\n const maxEnd =\n end.maxSizePx || start.initialSize + end.initialSize - minStart;\n\n const maxPosDelta = Math.min(\n maxStart - start.initialSize,\n end.initialSize - minEnd\n );\n const maxNegDelta = Math.min(\n start.initialSize - minStart,\n maxEnd - end.initialSize\n );\n const finalDelta = clamp(delta, -maxNegDelta, maxPosDelta);\n\n return [start.initialSize + finalDelta, end.initialSize - finalDelta];\n }\n\n private _getTotalSize(): number {\n if (!this._base) {\n return 0;\n }\n\n const axis = this._isHorizontal ? 'width' : 'height';\n const barSize = this._separator\n ? roundPrecise(this._separator.getBoundingClientRect()[axis])\n : 0;\n\n const rect = this._base.getBoundingClientRect();\n const size = rect[axis];\n return size - barSize;\n }\n\n private _updatePanes(): void {\n const totalSize = this._getTotalSize();\n const isCollapsed = this._collapsedPane !== null;\n\n for (const pane of ['start', 'end'] as PanePosition[]) {\n const state = this._getPaneState(pane);\n if (isCollapsed) {\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n }\n this._setPaneMinMaxSizes(\n pane,\n isCollapsed ? '0' : state.minSize,\n isCollapsed ? '100%' : state.maxSize,\n totalSize\n );\n this._updatePaneStyles(pane, { flex: this._getFlex(pane) });\n }\n }\n\n private _updatePaneStyles(pane: PanePosition, styles: StyleInfo): void {\n Object.assign(this._getPaneState(pane).styles, styles);\n }\n\n private _setPaneMinMaxSizes(\n pane: PanePosition,\n minSize?: string,\n maxSize?: string,\n totalSize?: number\n ): void {\n const min =\n this._ensureMinConstraintIsWithinBounds(pane, minSize, totalSize) ?? 0;\n const max = maxSize ?? '100%';\n\n this._updatePaneStyles(\n pane,\n this._isHorizontal\n ? { minWidth: min, maxWidth: max, minHeight: 0, maxHeight: '100%' }\n : { minWidth: 0, maxWidth: '100%', minHeight: min, maxHeight: max }\n );\n }\n\n private _ensureMinConstraintIsWithinBounds(\n pane: PanePosition,\n minSize?: string,\n totalSize?: number\n ): string | undefined {\n const total = totalSize ?? this._getTotalSize();\n\n if (minSize && total > 0) {\n const minPx = this._setMinMaxInPx(pane, 'min', total) ?? 0;\n const other: PanePosition = pane === 'start' ? 'end' : 'start';\n const otherMinPx = this._getPaneState(other).minSize\n ? (this._setMinMaxInPx(other, 'min', total) ?? 0)\n : 0;\n\n // Ignore constraint if it exceeds total or combined exceeds total to prevent content overflow\n // Once container grows to accommodate the constraint, it will be applied\n if (minPx > total || minPx + otherMinPx > total) {\n return undefined;\n }\n }\n return minSize;\n }\n\n private _handleExpanderClick(pane: PanePosition, event: PointerEvent): void {\n // Prevent resize action being initiated\n event.stopPropagation();\n this._handleExpanderAction(pane);\n }\n\n //#endregion\n\n //#region Rendering\n\n private _resolvePartNames(expander: PanePosition): Record<string, boolean> {\n const other: PanePosition = expander === 'start' ? 'end' : 'start';\n const otherIsCollapsed = this._isCollapsed(other);\n\n return {\n [`${other}-expand-btn`]: otherIsCollapsed,\n [`${expander}-collapse-btn`]: !otherIsCollapsed,\n };\n }\n\n private _renderBarControls() {\n const dragHandleHidden = this.hideDragHandle || this.disableResize;\n const hidden = this.disableCollapse || this.hideCollapseButtons;\n const prevButtonHidden = hidden || this._isCollapsed('start');\n const nextButtonHidden = hidden || this._isCollapsed('end');\n\n return html`\n <div\n part=\"${partMap(this._resolvePartNames('start'))}\"\n ?hidden=${prevButtonHidden}\n @pointerdown=${(e: PointerEvent) =>\n this._handleExpanderClick('start', e)}\n ></div>\n <div part=\"drag-handle\" ?hidden=${dragHandleHidden}></div>\n <div\n part=\"${partMap(this._resolvePartNames('end'))}\"\n ?hidden=${nextButtonHidden}\n @pointerdown=${(e: PointerEvent) => this._handleExpanderClick('end', e)}\n ></div>\n `;\n }\n\n private _renderAccessibleLabel() {\n return html`\n <igc-visually-hidden id=\"splitter-label\">\n ${this._isCollapsed('start')\n ? 'Start pane collapsed'\n : 'Start pane expanded'}\n and\n ${this._isCollapsed('end') ? 'End pane collapsed' : 'End pane expanded'}\n </igc-visually-hidden>\n `;\n }\n\n private _renderSeparator() {\n const isDragging = this._resizeState.isDragging;\n const canResize = !this._resizeDisallowed;\n\n return html`\n <div\n ${ref(this._separatorRef)}\n part=\"splitter-bar\"\n role=\"separator\"\n tabindex=${this.disableCollapse && this.disableResize ? -1 : 0}\n aria-controls=\"start-pane end-pane\"\n aria-labelledby=\"splitter-label\"\n aria-orientation=${this.orientation}\n style=${styleMap({ '--cursor': this._separatorCursor })}\n @touchstart=${bindIf(canResize, this._preventDefaultForEvent)}\n @contextmenu=${bindIf(canResize, this._preventDefaultForEvent)}\n @pointerdown=${bindIf(canResize, this._handleBarPointerDown)}\n @pointermove=${bindIf(isDragging, this._handleBarPointerMove)}\n @pointerup=${bindIf(isDragging, this._handleEndDrag)}\n @lostpointercapture=${bindIf(isDragging, this._handleEndDrag)}\n @pointercancel=${bindIf(isDragging, this._endDrag)}\n >\n ${this._renderBarControls()}\n </div>\n `;\n }\n\n protected override render() {\n return html`\n ${this._renderAccessibleLabel()}\n <div part=\"base\">\n <div\n part=\"start-pane\"\n id=\"start-pane\"\n style=${styleMap(this._startPaneState.styles)}\n >\n <slot name=\"start\"></slot>\n </div>\n ${this._renderSeparator()}\n <div\n part=\"end-pane\"\n id=\"end-pane\"\n style=${styleMap(this._endPaneState.styles)}\n >\n <slot name=\"end\"></slot>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\nexport type {\n IgcSplitterComponentEventMap,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-splitter': IgcSplitterComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"splitter.js","sourceRoot":"","sources":["../../../src/components/splitter/splitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, type PropertyValues } from 'lit';\nimport { eventOptions, property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n asNumber,\n asPercent,\n bindIf,\n clamp,\n isLTR,\n roundPrecise,\n} from '../common/util.js';\nimport type { SplitterOrientation } from '../types.js';\nimport IgcVisuallyHiddenComponent from '../visually-hidden/visually-hidden.js';\nimport { styles as shared } from './themes/shared/splitter.common.css.js';\nimport { styles } from './themes/splitter.base.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n IgcSplitterComponentEventMap,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n PanePosition,\n PaneResizeSnapshot,\n SplitterPaneState,\n SplitterResizeState,\n} from './types.js';\n\nconst KEYBOARD_RESIZE_STEP = 10;\n\nconst DEFAULT_RESIZE_STATE: SplitterResizeState = {\n startPane: null,\n endPane: null,\n isDragging: false,\n dragStartPosition: { x: 0, y: 0 },\n dragPointerId: -1,\n};\n\n/**\n * The `igc-splitter` component provides a resizable split-pane layout that divides the view\n * into two panels — *start* and *end* — separated by a draggable bar.\n *\n * Panels can be resized by dragging the bar, using keyboard shortcuts, or collapsed/expanded\n * using the built-in collapse buttons or the programmatic `toggle()` API.\n * Nested splitters are supported for more complex layouts.\n *\n * @example\n * ```html\n * <!-- Basic horizontal splitter -->\n * <igc-splitter>\n * <div slot=\"start\">Start panel</div>\n * <div slot=\"end\">End panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Vertical splitter with size constraints -->\n * <igc-splitter orientation=\"vertical\" start-min-size=\"100px\" end-min-size=\"100px\">\n * <div slot=\"start\">Top panel</div>\n * <div slot=\"end\">Bottom panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```html\n * <!-- Nested splitters for a multi-pane layout -->\n * <igc-splitter style=\"height: 600px;\">\n * <igc-splitter slot=\"start\" orientation=\"vertical\">\n * <div slot=\"start\">Top left</div>\n * <div slot=\"end\">Bottom left</div>\n * </igc-splitter>\n * <div slot=\"end\">Right panel</div>\n * </igc-splitter>\n * ```\n *\n * @example\n * ```ts\n * // Programmatically collapse/expand a pane\n * const splitter = document.querySelector('igc-splitter');\n * splitter.toggle('start'); // collapse start pane\n * splitter.toggle('start'); // expand start pane\n * ```\n *\n * ## Keyboard interactions\n *\n * When the splitter bar is focused:\n *\n * | Key | Action |\n * |---|---|\n * | `Arrow Left` / `Arrow Right` | Resize panes (horizontal orientation) |\n * | `Arrow Up` / `Arrow Down` | Resize panes (vertical orientation) |\n * | `Home` | Snap start pane to its minimum size |\n * | `End` | Snap start pane to its maximum size |\n * | `Ctrl + Arrow Left` / `Ctrl + Arrow Up` | Collapse or expand the start pane |\n * | `Ctrl + Arrow Right` / `Ctrl + Arrow Down` | Collapse or expand the end pane |\n *\n * @element igc-splitter\n *\n * @fires igcResizeStart - Emitted once when a resize operation begins (pointer drag or keyboard).\n * @fires igcResizing - Emitted continuously while a pane is being resized.\n * @fires igcResizeEnd - Emitted once when a resize operation completes.\n *\n * @slot start - Content projected into the start (left/top) panel.\n * @slot end - Content projected into the end (right/bottom) panel.\n *\n * @csspart splitter-bar - The resizable bar element between the two panels.\n * @csspart drag-handle - The drag handle icon/element on the splitter bar.\n * @csspart start-pane - The container for the start panel content.\n * @csspart end-pane - The container for the end panel content.\n * @csspart start-collapse-btn - The button to collapse the start panel.\n * @csspart end-collapse-btn - The button to collapse the end panel.\n * @csspart start-expand-btn - The button to expand the start panel when collapsed.\n * @csspart end-expand-btn - The button to expand the end panel when collapsed.\n */\nexport default class IgcSplitterComponent extends EventEmitterMixin<\n IgcSplitterComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-splitter';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcSplitterComponent, IgcVisuallyHiddenComponent);\n }\n\n //#region Private Properties\n\n private readonly _internals = addInternalsController(this);\n\n private readonly _separatorRef = createRef<HTMLElement>();\n\n private _startPaneState: SplitterPaneState = { size: 'auto', styles: {} };\n private _endPaneState: SplitterPaneState = { size: 'auto', styles: {} };\n\n @state()\n private _collapsedPane: PanePosition | null = null;\n\n @state()\n private _resizeState: SplitterResizeState = { ...DEFAULT_RESIZE_STATE };\n\n @query('[part~=\"base\"]', true)\n private readonly _base!: HTMLElement;\n\n @query('[part~=\"start-pane\"]', true)\n private readonly _startPane!: HTMLElement;\n\n @query('[part~=\"end-pane\"]', true)\n private readonly _endPane!: HTMLElement;\n\n private get _separator(): HTMLElement | undefined {\n return this._separatorRef.value;\n }\n\n private get _resizeDisallowed(): boolean {\n return this.disableResize || this._collapsedPane != null;\n }\n\n private get _isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n private get _separatorCursor(): string {\n if (this._resizeDisallowed) {\n return 'default';\n }\n return this._isHorizontal ? 'col-resize' : 'row-resize';\n }\n\n //#endregion\n\n //#region Public Properties\n\n /**\n * The orientation of the splitter, which determines the direction of resizing and collapsing.\n *\n * @attr orientation\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public orientation: SplitterOrientation = 'horizontal';\n\n /**\n * When true, prevents the user from collapsing either pane.\n * This also hides the expand/collapse buttons on the splitter bar.\n *\n * @attr disable-collapse\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-collapse' })\n public disableCollapse = false;\n\n /**\n * When true, prevents the user from resizing the panes by dragging the splitter bar or using keyboard shortcuts.\n * This also hides the drag handle on the splitter bar.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * When true, hides the expand/collapse buttons on the splitter bar.\n *\n * Note that the buttons will also be hidden if `disable-collapse` is true or\n * if a pane is currently collapsed.\n *\n * @attr hide-collapse-buttons\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-collapse-buttons',\n })\n public hideCollapseButtons = false;\n\n /**\n * When true, hides the drag handle on the splitter bar.\n *\n * Note that the drag handle will also be hidden if `disable-resize` is true.\n *\n * @attr hide-drag-handle\n * @default false\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'hide-drag-handle',\n })\n public hideDragHandle = false;\n\n /**\n * The minimum size of the start pane.\n *\n * @attr start-min-size\n */\n @property({ attribute: 'start-min-size' })\n public set startMinSize(value: string | undefined) {\n this._startPaneState.minSize = this._normalizeValue(value);\n }\n\n public get startMinSize(): string | undefined {\n return this._startPaneState.minSize;\n }\n\n /**\n * The minimum size of the end pane.\n *\n * @attr end-min-size\n */\n @property({ attribute: 'end-min-size' })\n public set endMinSize(value: string | undefined) {\n this._endPaneState.minSize = this._normalizeValue(value);\n }\n\n public get endMinSize(): string | undefined {\n return this._endPaneState.minSize;\n }\n\n /**\n * The maximum size of the start pane.\n *\n * @attr start-max-size\n */\n @property({ attribute: 'start-max-size' })\n public set startMaxSize(value: string | undefined) {\n this._startPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get startMaxSize(): string | undefined {\n return this._startPaneState.maxSize;\n }\n\n /**\n * The maximum size of the end pane.\n *\n * @attr end-max-size\n */\n @property({ attribute: 'end-max-size' })\n public set endMaxSize(value: string | undefined) {\n this._endPaneState.maxSize = this._normalizeValue(value);\n }\n\n public get endMaxSize(): string | undefined {\n return this._endPaneState.maxSize;\n }\n\n /**\n * The size of the start pane.\n *\n * @attr start-size\n */\n @property({ attribute: 'start-size' })\n public set startSize(value: string | undefined) {\n this._startPaneState.size = this._normalizeValue(value, 'auto');\n }\n\n public get startSize(): string | undefined {\n return this._startPaneState.size;\n }\n\n /**\n * The size of the end pane.\n *\n * @attr end-size\n */\n @property({ attribute: 'end-size' })\n public set endSize(value: string | undefined) {\n this._endPaneState.size = this._normalizeValue(value, 'auto');\n }\n\n public get endSize(): string | undefined {\n return this._endPaneState.size;\n }\n\n //#endregion\n\n //#region Lifecycle\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSlotController(this, { slots: setSlots('start', 'end') });\n\n createResizeObserverController(this, {\n callback: () => this.requestUpdate(),\n });\n\n addKeybindings(this, {\n ref: this._separatorRef,\n })\n .set(arrowUp, () => this._handleResizePanes(-1, 'vertical'))\n .set(arrowDown, () => this._handleResizePanes(1, 'vertical'))\n .set(arrowLeft, () => this._handleResizePanes(-1, 'horizontal'))\n .set(arrowRight, () => this._handleResizePanes(1, 'horizontal'))\n .set(homeKey, () => this._handleMinMaxResize('min'))\n .set(endKey, () => this._handleMinMaxResize('max'))\n .set([ctrlKey, arrowUp], () =>\n this._handleArrowsExpandCollapse('start', 'vertical')\n )\n .set([ctrlKey, arrowDown], () =>\n this._handleArrowsExpandCollapse('end', 'vertical')\n )\n .set([ctrlKey, arrowLeft], () =>\n this._handleArrowsExpandCollapse('start', 'horizontal')\n )\n .set([ctrlKey, arrowRight], () =>\n this._handleArrowsExpandCollapse('end', 'horizontal')\n );\n }\n\n protected override update(changed: PropertyValues<this>): void {\n if (changed.get('orientation') != null) {\n for (const pane of ['start', 'end'] as PanePosition[]) {\n const state = this._getPaneState(pane);\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n }\n }\n\n if (this.hasUpdated) {\n this._updatePanes();\n }\n\n super.update(changed);\n }\n\n protected override updated(): void {\n this._updateBarAria();\n }\n\n //#endregion\n\n //#region Resize Event Handlers\n\n private _handleBarPointerDown(e: PointerEvent): void {\n if (e.button !== 0) {\n return;\n }\n\n e.preventDefault();\n\n this._resizeState = {\n ...this._resizeState,\n isDragging: true,\n dragPointerId: e.pointerId,\n dragStartPosition: { x: e.clientX, y: e.clientY },\n };\n\n this._resizeStart();\n this._separator?.setPointerCapture(this._resizeState.dragPointerId);\n }\n\n private _getDragDelta(e: PointerEvent): number {\n const deltaX = e.clientX - this._resizeState.dragStartPosition.x;\n const deltaY = e.clientY - this._resizeState.dragStartPosition.y;\n return this._resolveDelta(deltaX, deltaY);\n }\n\n private _handleBarPointerMove(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizing(delta);\n }\n }\n\n private _handleEndDrag(e: PointerEvent): void {\n if (e.pointerId !== this._resizeState.dragPointerId) {\n return;\n }\n\n const delta = this._getDragDelta(e);\n\n if (delta !== 0) {\n this._resizeEnd(delta);\n }\n\n this._endDrag();\n }\n\n private _endDrag(): void {\n if (this._resizeState.dragPointerId !== -1) {\n this._separator?.releasePointerCapture(this._resizeState.dragPointerId);\n }\n this._resizeState = { ...DEFAULT_RESIZE_STATE };\n }\n\n //#endregion\n\n //#region Public Methods\n\n /** Toggles the collapsed state of the specified pane. */\n public toggle(position: PanePosition): void {\n if (this._collapsedPane === null) {\n this._savePaneSizes();\n }\n\n // If the requested pane is already collapsed, expand it (set to null)\n // Otherwise, collapse the requested pane (this also handles switching from one collapsed pane to another)\n this._collapsedPane = this._collapsedPane === position ? null : position;\n\n this._internals.setState('start-collapsed', this._isCollapsed('start'));\n this._internals.setState('end-collapsed', this._isCollapsed('end'));\n\n this._restoreSizesOnExpandCollapse();\n }\n\n //#endregion\n\n //#region Internal API\n\n private _savePaneSizes(): void {\n this._startPaneState.savedSize = `${this._paneRectAsPercent(0)}%`;\n this._endPaneState.savedSize = `${this._paneRectAsPercent(1)}%`;\n }\n\n /* Reset sizes on collapse; restore saved sizes on expand */\n private _restoreSizesOnExpandCollapse(): void {\n if (this._collapsedPane !== null) {\n this._startPaneState.size = 'auto';\n this._endPaneState.size = 'auto';\n } else {\n this._startPaneState.size =\n this._startPaneState.savedSize ?? this.startSize;\n this._endPaneState.size = this._endPaneState.savedSize ?? this.endSize;\n }\n }\n\n /** Measures the actual rendered size of a pane and returns it as a percentage of total size. */\n private _paneRectAsPercent(paneIndex: 0 | 1): number {\n const totalSize = this._getTotalSize();\n if (totalSize === 0) {\n return 0;\n }\n return roundPrecise(asPercent(this._rectSize()[paneIndex], totalSize), 0);\n }\n\n /** Converts a CSS size string (px or %) to a percentage of total size. */\n private _sizeToPercent(sizeValue: string): number {\n const totalSize = this._getTotalSize();\n if (totalSize === 0) {\n return 0;\n }\n\n if (sizeValue.includes('%')) {\n return asNumber(sizeValue);\n }\n\n const pxValue = asNumber(sizeValue);\n return roundPrecise(asPercent(pxValue, totalSize), 0);\n }\n\n private _getStartPaneSizePercent(): number {\n if (!this._startPane || this._isCollapsed('start')) {\n return 0;\n }\n\n if (this._isCollapsed('end')) {\n return 100;\n }\n\n return this._paneRectAsPercent(0);\n }\n\n private _getMinMaxAsPercent(type: 'min' | 'max'): number {\n const value = type === 'min' ? this.startMinSize : this.startMaxSize;\n const defaultValue = type === 'min' ? 0 : 100;\n\n return value ? this._sizeToPercent(value) : defaultValue;\n }\n\n private _isCollapsed(which: PanePosition): boolean {\n return this._collapsedPane === which;\n }\n\n private _updateBarAria(): void {\n if (this._separator) {\n this._separator.ariaValueNow = this._getStartPaneSizePercent().toString();\n this._separator.ariaValueMin = this._getMinMaxAsPercent('min').toString();\n this._separator.ariaValueMax = this._getMinMaxAsPercent('max').toString();\n }\n }\n\n private _getPaneState(which: PanePosition): SplitterPaneState {\n return which === 'start' ? this._startPaneState : this._endPaneState;\n }\n\n private _isPercentageSize(which: PanePosition): boolean {\n const { size } = this._getPaneState(which);\n return !!size && size.includes('%');\n }\n\n private _isAutoSize(which: PanePosition): boolean {\n return this._getPaneState(which).size === 'auto';\n }\n\n private _normalizeValue(\n value: string | undefined,\n fallback?: 'auto'\n ): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed || trimmed === 'auto') {\n return fallback;\n }\n\n const numericValue = asNumber(trimmed, -1);\n if (numericValue < 0) return fallback;\n if (trimmed.includes('%') && numericValue > 100) return fallback;\n\n return trimmed;\n }\n\n private _getFlex(which: PanePosition): string {\n const isAuto = this._isAutoSize(which);\n const size = isAuto ? '0px' : this._getPaneState(which).size;\n return `${isAuto ? 1 : 0} 1 ${size}`;\n }\n\n private _handleResizePanes(\n direction: -1 | 1,\n validOrientation: SplitterOrientation\n ): void {\n if (this._resizeDisallowed || this.orientation !== validOrientation) {\n return;\n }\n const delta = this._resolveDelta(\n KEYBOARD_RESIZE_STEP,\n KEYBOARD_RESIZE_STEP,\n direction\n );\n\n this._resizeStart();\n this._resizing(delta);\n this._resizeEnd(delta);\n }\n\n @eventOptions({ passive: false })\n private _preventDefaultForEvent(e: Event): void {\n e.preventDefault();\n }\n\n private _resolveDelta(\n deltaX: number,\n deltaY: number,\n direction?: -1 | 1\n ): number {\n const isHorizontal = this._isHorizontal;\n const rtlMultiplier = isHorizontal && !isLTR(this) ? -1 : 1;\n const delta = isHorizontal ? deltaX : deltaY;\n return delta * rtlMultiplier * (direction ?? 1);\n }\n\n private _handleMinMaxResize(type: 'min' | 'max'): void {\n if (this._resizeDisallowed) {\n return;\n }\n\n const totalSize = this._getTotalSize();\n const boundaryValue =\n type === 'min' ? this.startMinSize : this.startMaxSize;\n const isPercentage = boundaryValue\n ? boundaryValue.includes('%')\n : type === 'max';\n\n const targetStartSizePx =\n this._setMinMaxInPx('start', type) ?? (type === 'min' ? 0 : totalSize);\n const targetEndSizePx = totalSize - targetStartSizePx;\n\n if (isPercentage) {\n this.startSize = `${roundPrecise(asPercent(targetStartSizePx, totalSize), 2)}%`;\n this.endSize = `${roundPrecise(asPercent(targetEndSizePx, totalSize), 2)}%`;\n } else {\n this.startSize = `${targetStartSizePx}px`;\n this.endSize = `${targetEndSizePx}px`;\n }\n }\n\n private _handleExpanderAction(pane: PanePosition): void {\n const other: PanePosition = pane === 'start' ? 'end' : 'start';\n this.toggle(this._collapsedPane === other ? other : pane);\n }\n\n private _handleArrowsExpandCollapse(\n target: PanePosition,\n validOrientation: SplitterOrientation\n ): void {\n if (this.disableCollapse || this.orientation !== validOrientation) {\n return;\n }\n const effectiveTarget: PanePosition =\n validOrientation === 'horizontal' && !isLTR(this)\n ? target === 'start'\n ? 'end'\n : 'start'\n : target;\n this._handleExpanderAction(effectiveTarget);\n }\n\n private _resizeStart(): void {\n const [startSize, endSize] = this._rectSize();\n const totalSize = this._getTotalSize();\n\n this._resizeState.startPane = this._createPaneState(\n 'start',\n startSize,\n totalSize\n );\n this._resizeState.endPane = this._createPaneState(\n 'end',\n endSize,\n totalSize\n );\n\n this.emitEvent('igcResizeStart', {\n detail: { startPanelSize: startSize, endPanelSize: endSize },\n });\n }\n\n private _createPaneState(\n pane: PanePosition,\n size: number,\n totalSize?: number\n ): PaneResizeSnapshot {\n return {\n initialSize: size,\n isPercentageBased: this._isPercentageSize(pane) || this._isAutoSize(pane),\n minSizePx: this._setMinMaxInPx(pane, 'min', totalSize),\n maxSizePx: this._setMinMaxInPx(pane, 'max', totalSize),\n };\n }\n\n private _setMinMaxInPx(\n pane: PanePosition,\n type: 'min' | 'max',\n totalSize?: number\n ): number | undefined {\n const paneState = this._getPaneState(pane);\n const value = type === 'max' ? paneState.maxSize : paneState.minSize;\n const valueAsNumber = asNumber(value);\n\n if (!value) {\n return undefined;\n }\n\n return value.includes('%')\n ? (valueAsNumber / 100) * (totalSize ?? this._getTotalSize())\n : valueAsNumber;\n }\n\n private _resizing(delta: number): void {\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n\n this.startSize = `${startPaneSize}px`;\n this.endSize = `${endPaneSize}px`;\n\n this.emitEvent('igcResizing', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _computeSize(\n pane: PaneResizeSnapshot,\n paneSize: number,\n totalSize: number\n ): string {\n return pane.isPercentageBased\n ? `${asPercent(paneSize, totalSize)}%`\n : `${roundPrecise(paneSize, 0)}px`;\n }\n\n private _resizeEnd(delta: number): void {\n if (!this._resizeState.startPane || !this._resizeState.endPane) {\n return;\n }\n\n const [startPaneSize, endPaneSize] = this._calcNewSizes(delta);\n const totalSize = this._getTotalSize();\n\n this.startSize = this._computeSize(\n this._resizeState.startPane,\n startPaneSize,\n totalSize\n );\n this.endSize = this._computeSize(\n this._resizeState.endPane,\n endPaneSize,\n totalSize\n );\n\n this.emitEvent('igcResizeEnd', {\n detail: {\n startPanelSize: startPaneSize,\n endPanelSize: endPaneSize,\n delta,\n },\n });\n }\n\n private _rectSize(): [number, number] {\n const axis = this._isHorizontal ? 'width' : 'height';\n const startPaneRect = this._startPane.getBoundingClientRect();\n const endPaneRect = this._endPane.getBoundingClientRect();\n\n return [startPaneRect[axis], endPaneRect[axis]];\n }\n\n private _calcNewSizes(delta: number): [number, number] {\n if (!this._resizeState.startPane || !this._resizeState.endPane)\n return [0, 0];\n\n const start = this._resizeState.startPane;\n const end = this._resizeState.endPane;\n const minStart = start.minSizePx || 0;\n const minEnd = end.minSizePx || 0;\n const maxStart =\n start.maxSizePx || start.initialSize + end.initialSize - minEnd;\n const maxEnd =\n end.maxSizePx || start.initialSize + end.initialSize - minStart;\n\n const maxPosDelta = Math.min(\n maxStart - start.initialSize,\n end.initialSize - minEnd\n );\n const maxNegDelta = Math.min(\n start.initialSize - minStart,\n maxEnd - end.initialSize\n );\n const finalDelta = clamp(delta, -maxNegDelta, maxPosDelta);\n\n return [start.initialSize + finalDelta, end.initialSize - finalDelta];\n }\n\n private _getTotalSize(): number {\n if (!this._base) {\n return 0;\n }\n\n const axis = this._isHorizontal ? 'width' : 'height';\n const barSize = this._separator\n ? roundPrecise(this._separator.getBoundingClientRect()[axis])\n : 0;\n\n const rect = this._base.getBoundingClientRect();\n const size = rect[axis];\n return size - barSize;\n }\n\n private _updatePanes(): void {\n const totalSize = this._getTotalSize();\n const isCollapsed = this._collapsedPane !== null;\n\n for (const pane of ['start', 'end'] as PanePosition[]) {\n const state = this._getPaneState(pane);\n if (isCollapsed) {\n state.size = 'auto';\n state.minSize = undefined;\n state.maxSize = undefined;\n }\n this._setPaneMinMaxSizes(\n pane,\n isCollapsed ? '0' : state.minSize,\n isCollapsed ? '100%' : state.maxSize,\n totalSize\n );\n this._updatePaneStyles(pane, { flex: this._getFlex(pane) });\n }\n }\n\n private _updatePaneStyles(pane: PanePosition, styles: StyleInfo): void {\n Object.assign(this._getPaneState(pane).styles, styles);\n }\n\n private _setPaneMinMaxSizes(\n pane: PanePosition,\n minSize?: string,\n maxSize?: string,\n totalSize?: number\n ): void {\n const min =\n this._ensureMinConstraintIsWithinBounds(pane, minSize, totalSize) ?? 0;\n const max = maxSize ?? '100%';\n\n this._updatePaneStyles(\n pane,\n this._isHorizontal\n ? { minWidth: min, maxWidth: max, minHeight: 0, maxHeight: '100%' }\n : { minWidth: 0, maxWidth: '100%', minHeight: min, maxHeight: max }\n );\n }\n\n private _ensureMinConstraintIsWithinBounds(\n pane: PanePosition,\n minSize?: string,\n totalSize?: number\n ): string | undefined {\n const total = totalSize ?? this._getTotalSize();\n\n if (minSize && total > 0) {\n const minPx = this._setMinMaxInPx(pane, 'min', total) ?? 0;\n const other: PanePosition = pane === 'start' ? 'end' : 'start';\n const otherMinPx = this._getPaneState(other).minSize\n ? (this._setMinMaxInPx(other, 'min', total) ?? 0)\n : 0;\n\n // Ignore constraint if it exceeds total or combined exceeds total to prevent content overflow\n // Once container grows to accommodate the constraint, it will be applied\n if (minPx > total || minPx + otherMinPx > total) {\n return undefined;\n }\n }\n return minSize;\n }\n\n private _handleExpanderClick(pane: PanePosition, event: PointerEvent): void {\n // Prevent resize action being initiated\n event.stopPropagation();\n this._handleExpanderAction(pane);\n }\n\n //#endregion\n\n //#region Rendering\n\n private _resolvePartNames(expander: PanePosition): Record<string, boolean> {\n const other: PanePosition = expander === 'start' ? 'end' : 'start';\n const otherIsCollapsed = this._isCollapsed(other);\n\n return {\n [`${other}-expand-btn`]: otherIsCollapsed,\n [`${expander}-collapse-btn`]: !otherIsCollapsed,\n };\n }\n\n private _renderBarControls() {\n const dragHandleHidden = this.hideDragHandle || this.disableResize;\n const hidden = this.disableCollapse || this.hideCollapseButtons;\n const prevButtonHidden = hidden || this._isCollapsed('start');\n const nextButtonHidden = hidden || this._isCollapsed('end');\n\n return html`\n <div\n part=\"${partMap(this._resolvePartNames('start'))}\"\n ?hidden=${prevButtonHidden}\n @pointerdown=${(e: PointerEvent) =>\n this._handleExpanderClick('start', e)}\n ></div>\n <div part=\"drag-handle\" ?hidden=${dragHandleHidden}></div>\n <div\n part=\"${partMap(this._resolvePartNames('end'))}\"\n ?hidden=${nextButtonHidden}\n @pointerdown=${(e: PointerEvent) => this._handleExpanderClick('end', e)}\n ></div>\n `;\n }\n\n private _renderAccessibleLabel() {\n return html`\n <igc-visually-hidden id=\"splitter-label\">\n ${\n this._isCollapsed('start')\n ? 'Start pane collapsed'\n : 'Start pane expanded'\n }\n and\n ${this._isCollapsed('end') ? 'End pane collapsed' : 'End pane expanded'}\n </igc-visually-hidden>\n `;\n }\n\n private _renderSeparator() {\n const isDragging = this._resizeState.isDragging;\n const canResize = !this._resizeDisallowed;\n\n return html`\n <div\n ${ref(this._separatorRef)}\n part=\"splitter-bar\"\n role=\"separator\"\n tabindex=${this.disableCollapse && this.disableResize ? -1 : 0}\n aria-controls=\"start-pane end-pane\"\n aria-labelledby=\"splitter-label\"\n aria-orientation=${this.orientation}\n style=${styleMap({ '--cursor': this._separatorCursor })}\n @touchstart=${bindIf(canResize, this._preventDefaultForEvent)}\n @contextmenu=${bindIf(canResize, this._preventDefaultForEvent)}\n @pointerdown=${bindIf(canResize, this._handleBarPointerDown)}\n @pointermove=${bindIf(isDragging, this._handleBarPointerMove)}\n @pointerup=${bindIf(isDragging, this._handleEndDrag)}\n @lostpointercapture=${bindIf(isDragging, this._handleEndDrag)}\n @pointercancel=${bindIf(isDragging, this._endDrag)}\n >\n ${this._renderBarControls()}\n </div>\n `;\n }\n\n protected override render() {\n return html`\n ${this._renderAccessibleLabel()}\n <div part=\"base\">\n <div\n part=\"start-pane\"\n id=\"start-pane\"\n style=${styleMap(this._startPaneState.styles)}\n >\n <slot name=\"start\"></slot>\n </div>\n ${this._renderSeparator()}\n <div\n part=\"end-pane\"\n id=\"end-pane\"\n style=${styleMap(this._endPaneState.styles)}\n >\n <slot name=\"end\"></slot>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\nexport type {\n IgcSplitterComponentEventMap,\n IgcSplitterResizeEventArgs,\n IgcSplitterResizeEventDetail,\n};\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-splitter': IgcSplitterComponent;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"animations.js","sourceRoot":"","sources":["../../../../src/components/stepper/common/animations.ts"],"names":[],"mappings":"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","sourcesContent":["import { EaseOut } from '../../../animations/easings.js';\nimport {\n type AnimationReferenceMetadata,\n animation,\n} from '../../../animations/types.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperVerticalAnimation,\n} from '../../types.js';\n\nconst baseOptions: KeyframeAnimationOptions = {\n duration: 320,\n easing: EaseOut.Quad,\n};\n\nexport type Animation =\n | StepperVerticalAnimation\n | HorizontalTransitionAnimation;\n\nexport type AnimationOptions = {\n keyframe: KeyframeAnimationOptions;\n step?: object;\n};\n\nconst fadeIn = (options: AnimationOptions = { keyframe: baseOptions }) =>\n animation([{ opacity: 0 }, { opacity: 1 }], options.keyframe);\n\nconst fadeOut = (options: AnimationOptions = { keyframe: baseOptions }) =>\n animation([{ opacity: 1 }, { opacity: 0 }], options.keyframe);\n\nconst slideInHor = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n }\n) =>\n animation(\n [{ transform: 'translateX(100%)' }, { transform: 'translateX(0)' }],\n options.keyframe\n );\n\nconst slideOutHor = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n }\n) =>\n animation(\n [{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }],\n options.keyframe\n );\n\nconst growVerIn = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n step: {},\n }\n) =>\n animation(\n [\n { opacity: 1, ...options.step },\n { opacity: 1, height: 'auto' },\n ],\n options.keyframe\n );\n\nconst growVerOut = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n step: {},\n }\n) =>\n animation(\n [\n { opacity: 1, height: 'auto' },\n { opacity: 1, ...options.step },\n ],\n options.keyframe\n );\n\nconst noopAnimation = () => animation([], {});\n\nconst animationPair = (animations: {\n in: (options: AnimationOptions) => AnimationReferenceMetadata;\n out: (options: AnimationOptions) => AnimationReferenceMetadata;\n}) => {\n return new Map(\n Object.entries({\n in: animations.in,\n out: animations.out,\n })\n );\n};\n\nexport const bodyAnimations = new Map(\n Object.entries({\n grow: animationPair({\n in: growVerIn,\n out: growVerOut,\n }),\n fade: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n slide: animationPair({\n in: slideInHor,\n out: slideOutHor,\n }),\n none: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n })\n);\n\nexport const contentAnimations = new Map(\n Object.entries({\n grow: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n fade: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n slide: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n none: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n })\n);\n"]}
1
+ {"version":3,"file":"animations.js","sourceRoot":"","sources":["../../../../src/components/stepper/common/animations.ts"],"names":[],"mappings":"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","sourcesContent":["import { EaseOut } from '../../../animations/easings.js';\nimport {\n type AnimationReferenceMetadata,\n animation,\n} from '../../../animations/types.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperVerticalAnimation,\n} from '../../types.js';\n\nconst baseOptions: KeyframeAnimationOptions = {\n duration: 320,\n easing: EaseOut.Quad,\n};\n\nexport type Animation =\n StepperVerticalAnimation | HorizontalTransitionAnimation;\n\nexport type AnimationOptions = {\n keyframe: KeyframeAnimationOptions;\n step?: object;\n};\n\nconst fadeIn = (options: AnimationOptions = { keyframe: baseOptions }) =>\n animation([{ opacity: 0 }, { opacity: 1 }], options.keyframe);\n\nconst fadeOut = (options: AnimationOptions = { keyframe: baseOptions }) =>\n animation([{ opacity: 1 }, { opacity: 0 }], options.keyframe);\n\nconst slideInHor = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n }\n) =>\n animation(\n [{ transform: 'translateX(100%)' }, { transform: 'translateX(0)' }],\n options.keyframe\n );\n\nconst slideOutHor = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n }\n) =>\n animation(\n [{ transform: 'translateX(0)' }, { transform: 'translateX(-100%)' }],\n options.keyframe\n );\n\nconst growVerIn = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n step: {},\n }\n) =>\n animation(\n [\n { opacity: 1, ...options.step },\n { opacity: 1, height: 'auto' },\n ],\n options.keyframe\n );\n\nconst growVerOut = (\n options: AnimationOptions = {\n keyframe: baseOptions,\n step: {},\n }\n) =>\n animation(\n [\n { opacity: 1, height: 'auto' },\n { opacity: 1, ...options.step },\n ],\n options.keyframe\n );\n\nconst noopAnimation = () => animation([], {});\n\nconst animationPair = (animations: {\n in: (options: AnimationOptions) => AnimationReferenceMetadata;\n out: (options: AnimationOptions) => AnimationReferenceMetadata;\n}) => {\n return new Map(\n Object.entries({\n in: animations.in,\n out: animations.out,\n })\n );\n};\n\nexport const bodyAnimations = new Map(\n Object.entries({\n grow: animationPair({\n in: growVerIn,\n out: growVerOut,\n }),\n fade: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n slide: animationPair({\n in: slideInHor,\n out: slideOutHor,\n }),\n none: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n })\n);\n\nexport const contentAnimations = new Map(\n Object.entries({\n grow: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n fade: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n slide: animationPair({\n in: fadeIn,\n out: fadeOut,\n }),\n none: animationPair({\n in: noopAnimation,\n out: noopAnimation,\n }),\n })\n);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/components/stepper/step.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { EaseInOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createAsyncContext } from '../common/controllers/async-consumer.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperOrientation,\n StepperStepType,\n StepperTitlePosition,\n StepperVerticalAnimation,\n} from '../types.js';\nimport { bodyAnimations, contentAnimations } from './common/animations.js';\nimport { STEPPER_CONTEXT, type StepperContext } from './common/context.js';\nimport type { StepperState } from './common/state.js';\nimport type IgcStepperComponent from './stepper.js';\nimport { styles as shared } from './themes/step/shared/step.common.css.js';\nimport { styles } from './themes/step/step.base.css.js';\nimport { all } from './themes/step/themes.js';\n\n/**\n * A step component used within an `igc-stepper` to represent an individual step in a wizard-like workflow.\n *\n * @remarks\n * Each step has a header (with an indicator, title, and subtitle) and a content area.\n * Steps can be marked as `active`, `complete`, `disabled`, `optional`, or `invalid`\n * to control their appearance and behavior within the stepper.\n *\n * Custom indicators can be provided via the `indicator` slot, and the content area\n * is rendered in the default slot.\n *\n * @element igc-step\n *\n * @slot - Renders the content of the step.\n * @slot indicator - Renders the indicator of the step. By default, it displays the step index + 1.\n * @slot title - Renders the title of the step.\n * @slot subtitle - Renders the subtitle of the step.\n *\n * @csspart header-container - Wrapper of the step's `header` and its separators.\n * @csspart disabled - Indicates a disabled state. Applies to `header-container`.\n * @csspart complete-start - Indicates a complete state of the current step. Applies to `header-container`.\n * @csspart complete-end - Indicates a complete state of the previous step. Applies to `header-container`.\n * @csspart optional - Indicates an optional state. Applies to `header-container`.\n * @csspart invalid - Indicates an invalid state. Applies to `header-container`.\n * @csspart top - Indicates that the title should be above the indicator. Applies to `header-container`.\n * @csspart bottom - Indicates that the title should be below the indicator. Applies to `header-container`.\n * @csspart start - Indicates that the title should be before the indicator. Applies to `header-container`.\n * @csspart end - Indicates that the title should be after the indicator. Applies to `header-container`.\n * @csspart header - Wrapper of the step's `indicator` and `text`.\n * @csspart indicator - The indicator of the step.\n * @csspart text - Wrapper of the step's `title` and `subtitle`.\n * @csspart empty - Indicates that no title and subtitle have been provided to the step. Applies to `text`.\n * @csspart title - The title of the step.\n * @csspart subtitle - The subtitle of the step.\n * @csspart body - Wrapper of the step's `content`.\n * @csspart content - The step's `content`.\n *\n * @example\n * ```html\n * <igc-step>\n * <igc-icon slot=\"indicator\" name=\"home\"></igc-icon>\n * <span slot=\"title\">Home</span>\n * <span slot=\"subtitle\">Return to the home page</span>\n * <p>Welcome! This is the first step.</p>\n * </igc-step>\n * ```\n *\n * @example Step with state attributes\n * ```html\n * <igc-step complete>\n * <span slot=\"title\">Completed step</span>\n * <p>This step has been completed.</p>\n * </igc-step>\n *\n * <igc-step active invalid>\n * <span slot=\"title\">Current step</span>\n * <p>This step has validation errors.</p>\n * </igc-step>\n *\n * <igc-step disabled>\n * <span slot=\"title\">Disabled step</span>\n * <p>This step is not accessible.</p>\n * </igc-step>\n * ```\n */\nexport default class IgcStepComponent extends LitElement {\n public static readonly tagName = 'igc-step';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcStepComponent);\n }\n\n //#region Internal state and properties\n\n private readonly _bodyRef = createRef<HTMLElement>();\n private readonly _contentRef = createRef<HTMLElement>();\n\n private readonly _bodyPlayer = addAnimationController(this, this._bodyRef);\n private readonly _contentPlayer = addAnimationController(\n this,\n this._contentRef\n );\n\n private readonly _slots = addSlotController(this, {\n slots: setSlots('indicator', 'title', 'subtitle'),\n });\n\n private _stepperContext?: StepperContext;\n\n private get _stepper(): IgcStepperComponent | undefined {\n return this._stepperContext?.stepper;\n }\n\n private get _state(): StepperState | undefined {\n return this._stepperContext?.state;\n }\n\n private get _isHorizontal(): boolean {\n return this._orientation === 'horizontal';\n }\n\n private get _hasTitle(): boolean {\n return this._slots.hasAssignedElements('title');\n }\n\n private get _hasSubtitle(): boolean {\n return this._slots.hasAssignedElements('subtitle');\n }\n\n private get _animation():\n | StepperVerticalAnimation\n | HorizontalTransitionAnimation {\n const animation = this._isHorizontal\n ? this._stepper?.horizontalAnimation\n : this._stepper?.verticalAnimation;\n\n return animation ?? (this._isHorizontal ? 'slide' : 'grow');\n }\n\n private get _animationDuration(): number {\n return this._stepper?.animationDuration ?? 320;\n }\n\n private get _contentTop(): boolean {\n return this._stepper?.contentTop ?? false;\n }\n\n private get _index(): number {\n return this._stepper?.steps.indexOf(this) ?? -1;\n }\n\n private get _orientation(): StepperOrientation {\n return this._stepper?.orientation ?? 'horizontal';\n }\n\n private get _titlePosition(): StepperTitlePosition {\n return this._stepper?.titlePosition ?? 'auto';\n }\n\n private get _stepType(): StepperStepType {\n return this._stepper?.stepType ?? 'full';\n }\n\n private get _previousComplete(): boolean {\n return this._state?.get(this)?.previousCompleted ?? false;\n }\n\n private get _visited(): boolean {\n return this._state?.get(this)?.visited ?? false;\n }\n\n private get _isAccessible(): boolean {\n return this._state?.isAccessible(this) ?? true;\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether the step is invalid.\n *\n * Invalid steps are styled with an error state and are not\n * interactive when the stepper is in linear mode.\n *\n * @attr invalid\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n /**\n * Whether the step is active.\n *\n * Active steps are styled with an active state and their content is visible.\n *\n * @attr active\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /**\n * Whether the step is optional.\n *\n * Optional steps validity does not affect the default behavior when the stepper is in linear mode i.e.\n * if optional step is invalid the user could still move to the next step.\n *\n * @attr optional\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public optional = false;\n\n /**\n * Whether the step is disabled.\n *\n * Disabled steps are styled with a disabled state and are not interactive.\n *\n * @attr disabled\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Whether the step is completed.\n *\n * @attr complete\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public complete = false;\n\n //#endregion\n\n constructor() {\n super();\n\n addThemingController(this, all);\n createAsyncContext(this, STEPPER_CONTEXT, (context) => {\n this._stepperContext = context;\n });\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (\n changed.has('active') ||\n changed.has('complete') ||\n changed.has('disabled') ||\n changed.has('invalid') ||\n changed.has('optional')\n ) {\n this._state?.onStepPropertyChanged(this, changed);\n }\n }\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use the Stepper's `navigateTo` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ) {\n const bodyAnimation = bodyAnimations.get(this._animation)!.get(type)!;\n const contentAnimation = contentAnimations.get(this._animation)!.get(type)!;\n const bodyHeight = getComputedStyle(this).getPropertyValue(\n '--vertical-body-height'\n );\n\n const options: KeyframeAnimationOptions = {\n duration: this._animationDuration,\n easing: EaseInOut.Quad,\n direction,\n };\n\n const step = {\n height: bodyHeight,\n };\n\n const result = await Promise.all([\n this._bodyPlayer.playExclusive(\n bodyAnimation({ keyframe: options, step })\n ),\n this._contentPlayer.playExclusive(\n contentAnimation({ keyframe: options, step })\n ),\n ]);\n\n return result.every(Boolean);\n }\n\n private get _headerContainerParts() {\n return {\n 'header-container': true,\n disabled: !this._isAccessible,\n 'complete-start': this.complete,\n 'complete-end': this._previousComplete,\n optional: this.optional,\n invalid:\n this.invalid && this._visited && !this.active && this._isAccessible,\n top: this._titlePosition === 'top',\n bottom:\n this._titlePosition === 'bottom' ||\n (this._isHorizontal && this._titlePosition === 'auto'),\n start: this._titlePosition === 'start',\n end:\n this._titlePosition === 'end' ||\n (!this._isHorizontal && this._titlePosition === 'auto'),\n };\n }\n\n private get _textParts() {\n const hasText = this._hasTitle || this._hasSubtitle;\n\n return {\n text: true,\n empty:\n this._stepType === 'indicator' ||\n (this._stepType === 'full' && !hasText),\n };\n }\n\n private _renderIndicator() {\n return this._stepType !== 'title'\n ? html`\n <div part=\"indicator\">\n <slot name=\"indicator\">\n <span>${this._index + 1}</span>\n </slot>\n </div>\n `\n : nothing;\n }\n\n private _renderTitleAndSubtitle() {\n return html`\n <div part=${partMap(this._textParts)}>\n <div part=\"title\">\n <slot name=\"title\"></slot>\n </div>\n <div part=\"subtitle\">\n <slot name=\"subtitle\"></slot>\n </div>\n </div>\n `;\n }\n\n private _renderHeader() {\n const index = this._index + 1;\n const size = this._stepper?.steps.length ?? 0;\n\n return html`\n <div part=${partMap(this._headerContainerParts)}>\n <div\n data-step-header\n role=\"tab\"\n part=\"header\"\n id=\"igc-step-header-${index}\"\n aria-selected=${this.active}\n aria-controls=\"igc-step-content-${index}\"\n aria-posinset=${index}\n aria-setsize=${size}\n tabindex=${this.active ? 0 : -1}\n >\n ${this._renderIndicator()} ${this._renderTitleAndSubtitle()}\n </div>\n </div>\n `;\n }\n\n private _renderContent() {\n const index = this._index + 1;\n\n return html`\n <div\n ${ref(this._bodyRef)}\n id=\"igc-step-content-${index}\"\n part=\"body\"\n role=\"tabpanel\"\n aria-labelledby=\"igc-step-header-${index}\"\n >\n <div ${ref(this._contentRef)} part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected override render() {\n const renderBeforeHeader = this._contentTop && this._isHorizontal;\n\n return html`\n ${cache(\n renderBeforeHeader\n ? html`${this._renderContent()} ${this._renderHeader()}`\n : html`${this._renderHeader()} ${this._renderContent()}`\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-step': IgcStepComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/components/stepper/step.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { EaseInOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createAsyncContext } from '../common/controllers/async-consumer.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperOrientation,\n StepperStepType,\n StepperTitlePosition,\n StepperVerticalAnimation,\n} from '../types.js';\nimport { bodyAnimations, contentAnimations } from './common/animations.js';\nimport { STEPPER_CONTEXT, type StepperContext } from './common/context.js';\nimport type { StepperState } from './common/state.js';\nimport type IgcStepperComponent from './stepper.js';\nimport { styles as shared } from './themes/step/shared/step.common.css.js';\nimport { styles } from './themes/step/step.base.css.js';\nimport { all } from './themes/step/themes.js';\n\n/**\n * A step component used within an `igc-stepper` to represent an individual step in a wizard-like workflow.\n *\n * @remarks\n * Each step has a header (with an indicator, title, and subtitle) and a content area.\n * Steps can be marked as `active`, `complete`, `disabled`, `optional`, or `invalid`\n * to control their appearance and behavior within the stepper.\n *\n * Custom indicators can be provided via the `indicator` slot, and the content area\n * is rendered in the default slot.\n *\n * @element igc-step\n *\n * @slot - Renders the content of the step.\n * @slot indicator - Renders the indicator of the step. By default, it displays the step index + 1.\n * @slot title - Renders the title of the step.\n * @slot subtitle - Renders the subtitle of the step.\n *\n * @csspart header-container - Wrapper of the step's `header` and its separators.\n * @csspart disabled - Indicates a disabled state. Applies to `header-container`.\n * @csspart complete-start - Indicates a complete state of the current step. Applies to `header-container`.\n * @csspart complete-end - Indicates a complete state of the previous step. Applies to `header-container`.\n * @csspart optional - Indicates an optional state. Applies to `header-container`.\n * @csspart invalid - Indicates an invalid state. Applies to `header-container`.\n * @csspart top - Indicates that the title should be above the indicator. Applies to `header-container`.\n * @csspart bottom - Indicates that the title should be below the indicator. Applies to `header-container`.\n * @csspart start - Indicates that the title should be before the indicator. Applies to `header-container`.\n * @csspart end - Indicates that the title should be after the indicator. Applies to `header-container`.\n * @csspart header - Wrapper of the step's `indicator` and `text`.\n * @csspart indicator - The indicator of the step.\n * @csspart text - Wrapper of the step's `title` and `subtitle`.\n * @csspart empty - Indicates that no title and subtitle have been provided to the step. Applies to `text`.\n * @csspart title - The title of the step.\n * @csspart subtitle - The subtitle of the step.\n * @csspart body - Wrapper of the step's `content`.\n * @csspart content - The step's `content`.\n *\n * @example\n * ```html\n * <igc-step>\n * <igc-icon slot=\"indicator\" name=\"home\"></igc-icon>\n * <span slot=\"title\">Home</span>\n * <span slot=\"subtitle\">Return to the home page</span>\n * <p>Welcome! This is the first step.</p>\n * </igc-step>\n * ```\n *\n * @example Step with state attributes\n * ```html\n * <igc-step complete>\n * <span slot=\"title\">Completed step</span>\n * <p>This step has been completed.</p>\n * </igc-step>\n *\n * <igc-step active invalid>\n * <span slot=\"title\">Current step</span>\n * <p>This step has validation errors.</p>\n * </igc-step>\n *\n * <igc-step disabled>\n * <span slot=\"title\">Disabled step</span>\n * <p>This step is not accessible.</p>\n * </igc-step>\n * ```\n */\nexport default class IgcStepComponent extends LitElement {\n public static readonly tagName = 'igc-step';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcStepComponent);\n }\n\n //#region Internal state and properties\n\n private readonly _bodyRef = createRef<HTMLElement>();\n private readonly _contentRef = createRef<HTMLElement>();\n\n private readonly _bodyPlayer = addAnimationController(this, this._bodyRef);\n private readonly _contentPlayer = addAnimationController(\n this,\n this._contentRef\n );\n\n private readonly _slots = addSlotController(this, {\n slots: setSlots('indicator', 'title', 'subtitle'),\n });\n\n private _stepperContext?: StepperContext;\n\n private get _stepper(): IgcStepperComponent | undefined {\n return this._stepperContext?.stepper;\n }\n\n private get _state(): StepperState | undefined {\n return this._stepperContext?.state;\n }\n\n private get _isHorizontal(): boolean {\n return this._orientation === 'horizontal';\n }\n\n private get _hasTitle(): boolean {\n return this._slots.hasAssignedElements('title');\n }\n\n private get _hasSubtitle(): boolean {\n return this._slots.hasAssignedElements('subtitle');\n }\n\n private get _animation():\n StepperVerticalAnimation | HorizontalTransitionAnimation {\n const animation = this._isHorizontal\n ? this._stepper?.horizontalAnimation\n : this._stepper?.verticalAnimation;\n\n return animation ?? (this._isHorizontal ? 'slide' : 'grow');\n }\n\n private get _animationDuration(): number {\n return this._stepper?.animationDuration ?? 320;\n }\n\n private get _contentTop(): boolean {\n return this._stepper?.contentTop ?? false;\n }\n\n private get _index(): number {\n return this._stepper?.steps.indexOf(this) ?? -1;\n }\n\n private get _orientation(): StepperOrientation {\n return this._stepper?.orientation ?? 'horizontal';\n }\n\n private get _titlePosition(): StepperTitlePosition {\n return this._stepper?.titlePosition ?? 'auto';\n }\n\n private get _stepType(): StepperStepType {\n return this._stepper?.stepType ?? 'full';\n }\n\n private get _previousComplete(): boolean {\n return this._state?.get(this)?.previousCompleted ?? false;\n }\n\n private get _visited(): boolean {\n return this._state?.get(this)?.visited ?? false;\n }\n\n private get _isAccessible(): boolean {\n return this._state?.isAccessible(this) ?? true;\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * Whether the step is invalid.\n *\n * Invalid steps are styled with an error state and are not\n * interactive when the stepper is in linear mode.\n *\n * @attr invalid\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public invalid = false;\n\n /**\n * Whether the step is active.\n *\n * Active steps are styled with an active state and their content is visible.\n *\n * @attr active\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /**\n * Whether the step is optional.\n *\n * Optional steps validity does not affect the default behavior when the stepper is in linear mode i.e.\n * if optional step is invalid the user could still move to the next step.\n *\n * @attr optional\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public optional = false;\n\n /**\n * Whether the step is disabled.\n *\n * Disabled steps are styled with a disabled state and are not interactive.\n *\n * @attr disabled\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * Whether the step is completed.\n *\n * @attr complete\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public complete = false;\n\n //#endregion\n\n constructor() {\n super();\n\n addThemingController(this, all);\n createAsyncContext(this, STEPPER_CONTEXT, (context) => {\n this._stepperContext = context;\n });\n }\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (\n changed.has('active') ||\n changed.has('complete') ||\n changed.has('disabled') ||\n changed.has('invalid') ||\n changed.has('optional')\n ) {\n this._state?.onStepPropertyChanged(this, changed);\n }\n }\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use the Stepper's `navigateTo` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ) {\n const bodyAnimation = bodyAnimations.get(this._animation)!.get(type)!;\n const contentAnimation = contentAnimations.get(this._animation)!.get(type)!;\n const bodyHeight = getComputedStyle(this).getPropertyValue(\n '--vertical-body-height'\n );\n\n const options: KeyframeAnimationOptions = {\n duration: this._animationDuration,\n easing: EaseInOut.Quad,\n direction,\n };\n\n const step = {\n height: bodyHeight,\n };\n\n const result = await Promise.all([\n this._bodyPlayer.playExclusive(\n bodyAnimation({ keyframe: options, step })\n ),\n this._contentPlayer.playExclusive(\n contentAnimation({ keyframe: options, step })\n ),\n ]);\n\n return result.every(Boolean);\n }\n\n private get _headerContainerParts() {\n return {\n 'header-container': true,\n disabled: !this._isAccessible,\n 'complete-start': this.complete,\n 'complete-end': this._previousComplete,\n optional: this.optional,\n invalid:\n this.invalid && this._visited && !this.active && this._isAccessible,\n top: this._titlePosition === 'top',\n bottom:\n this._titlePosition === 'bottom' ||\n (this._isHorizontal && this._titlePosition === 'auto'),\n start: this._titlePosition === 'start',\n end:\n this._titlePosition === 'end' ||\n (!this._isHorizontal && this._titlePosition === 'auto'),\n };\n }\n\n private get _textParts() {\n const hasText = this._hasTitle || this._hasSubtitle;\n\n return {\n text: true,\n empty:\n this._stepType === 'indicator' ||\n (this._stepType === 'full' && !hasText),\n };\n }\n\n private _renderIndicator() {\n return this._stepType !== 'title'\n ? html`\n <div part=\"indicator\">\n <slot name=\"indicator\">\n <span>${this._index + 1}</span>\n </slot>\n </div>\n `\n : nothing;\n }\n\n private _renderTitleAndSubtitle() {\n return html`\n <div part=${partMap(this._textParts)}>\n <div part=\"title\">\n <slot name=\"title\"></slot>\n </div>\n <div part=\"subtitle\">\n <slot name=\"subtitle\"></slot>\n </div>\n </div>\n `;\n }\n\n private _renderHeader() {\n const index = this._index + 1;\n const size = this._stepper?.steps.length ?? 0;\n\n return html`\n <div part=${partMap(this._headerContainerParts)}>\n <div\n data-step-header\n role=\"tab\"\n part=\"header\"\n id=\"igc-step-header-${index}\"\n aria-selected=${this.active}\n aria-controls=\"igc-step-content-${index}\"\n aria-posinset=${index}\n aria-setsize=${size}\n tabindex=${this.active ? 0 : -1}\n >\n ${this._renderIndicator()} ${this._renderTitleAndSubtitle()}\n </div>\n </div>\n `;\n }\n\n private _renderContent() {\n const index = this._index + 1;\n\n return html`\n <div\n ${ref(this._bodyRef)}\n id=\"igc-step-content-${index}\"\n part=\"body\"\n role=\"tabpanel\"\n aria-labelledby=\"igc-step-header-${index}\"\n >\n <div ${ref(this._contentRef)} part=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n protected override render() {\n const renderBeforeHeader = this._contentTop && this._isHorizontal;\n\n return html`\n ${cache(\n renderBeforeHeader\n ? html`${this._renderContent()} ${this._renderHeader()}`\n : html`${this._renderHeader()} ${this._renderContent()}`\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-step': IgcStepComponent;\n }\n}\n"]}
@@ -84,7 +84,11 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
84
84
  const selectedTab = this._tabs.findLast((tab) => tab.selected) ?? first(this._enabledTabs);
85
85
  this._domHelpers.setStyleProperties();
86
86
  this._domHelpers.setScrollButtonState();
87
- this._setSelectedTab(selectedTab, false);
87
+ this._setSelectedTab({
88
+ tab: selectedTab,
89
+ shouldEmit: false,
90
+ shouldScroll: false,
91
+ });
88
92
  this._resizeController.observe(this._headerRef.value);
89
93
  }
90
94
  connectedCallback() {
@@ -111,12 +115,20 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
111
115
  }
112
116
  _selectedAttributeChanged({ changes, }) {
113
117
  const selected = changes.attributes.find(({ node: tab }) => this._tabs.includes(tab) && tab.selected)?.node;
114
- this._setSelectedTab(selected, false);
118
+ this._setSelectedTab({
119
+ tab: selected,
120
+ shouldEmit: false,
121
+ shouldScroll: false,
122
+ });
115
123
  }
116
124
  _handleTabsAdded({ changes, }) {
117
125
  if (!isEmpty(changes.added)) {
118
126
  const lastAdded = changes.added.findLast((change) => change.target.closest(this.tagName) === this && change.node.selected)?.node;
119
- this._setSelectedTab(lastAdded, false);
127
+ this._setSelectedTab({
128
+ tab: lastAdded,
129
+ shouldEmit: false,
130
+ shouldScroll: false,
131
+ });
120
132
  }
121
133
  }
122
134
  _handleTabsRemoved({ changes, }) {
@@ -130,7 +142,11 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
130
142
  }
131
143
  }
132
144
  if (nextSelectedTab) {
133
- this._setSelectedTab(nextSelectedTab, false);
145
+ this._setSelectedTab({
146
+ tab: nextSelectedTab,
147
+ shouldEmit: false,
148
+ shouldScroll: false,
149
+ });
134
150
  }
135
151
  }
136
152
  }
@@ -139,7 +155,8 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
139
155
  const tab = active ? active.closest(IgcTabComponent.tagName) : null;
140
156
  return tab ? this._enabledTabs.indexOf(tab) : -1;
141
157
  }
142
- _setSelectedTab(tab, shouldEmit = true) {
158
+ _setSelectedTab(options) {
159
+ const { tab, shouldEmit = true, shouldScroll = true } = options;
143
160
  if (!tab || tab === this._activeTab) {
144
161
  return;
145
162
  }
@@ -148,7 +165,9 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
148
165
  }
149
166
  tab.selected = true;
150
167
  this._activeTab = tab;
151
- scrollIntoView(getTabHeader(tab));
168
+ if (shouldScroll) {
169
+ scrollIntoView(getTabHeader(tab));
170
+ }
152
171
  this._domHelpers.setIndicator(this._activeTab);
153
172
  if (shouldEmit) {
154
173
  this.emitEvent('igcChange', { detail: this._activeTab });
@@ -160,7 +179,7 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
160
179
  scrollIntoView(header);
161
180
  header.focus({ preventScroll: true });
162
181
  if (this.activation === 'auto') {
163
- this._setSelectedTab(tab);
182
+ this._setSelectedTab({ tab });
164
183
  }
165
184
  }
166
185
  _skipKeyboard(node, event) {
@@ -184,7 +203,7 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
184
203
  const tabs = this._enabledTabs;
185
204
  const index = this._getClosestActiveTabIndex();
186
205
  if (index > -1) {
187
- this._setSelectedTab(tabs[index], false);
206
+ this._setSelectedTab({ tab: tabs[index], shouldEmit: false });
188
207
  this._keyboardActivateTab(tabs[index]);
189
208
  }
190
209
  }
@@ -198,7 +217,7 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
198
217
  }
199
218
  this._domHelpers.setScrollSnap();
200
219
  getTabHeader(tab).focus();
201
- this._setSelectedTab(tab);
220
+ this._setSelectedTab({ tab });
202
221
  }
203
222
  _handleScroll() {
204
223
  this._domHelpers.setScrollButtonState();
@@ -206,7 +225,7 @@ export default class IgcTabsComponent extends EventEmitterMixin(LitElement) {
206
225
  select(ref) {
207
226
  const tab = isString(ref) ? this._tabs.find((t) => t.id === ref) : ref;
208
227
  if (tab) {
209
- this._setSelectedTab(tab, false);
228
+ this._setSelectedTab({ tab, shouldEmit: false });
210
229
  }
211
230
  }
212
231
  _renderScrollButton(direction) {
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n eventOptions,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\n\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n first,\n getElementFromPath,\n getRoot,\n isEmpty,\n isLTR,\n isString,\n last,\n scrollIntoView,\n wrap,\n} from '../common/util.js';\nimport type { TabsActivation, TabsAlignment } from '../types.js';\nimport IgcTabComponent from './tab.js';\nimport { createTabHelpers, getTabHeader } from './tab-dom.js';\nimport { styles as shared } from './themes/shared/tabs/tabs.common.css.js';\nimport { styles } from './themes/tabs.base.css.js';\nimport { all } from './themes/tabs-themes.js';\n\nexport interface IgcTabsComponentEventMap {\n igcChange: CustomEvent<IgcTabComponent>;\n}\n\n/* blazorAdditionalDependency: IgcTabComponent */\n/**\n * Tabs organize and allow navigation between groups of content that are related and at the same level of hierarchy.\n *\n * The `<igc-tabs>` component allows the user to navigate between multiple `<igc-tab>` elements.\n * It supports keyboard navigation and provides API methods to control the selected tab.\n *\n * @element igc-tabs\n *\n * @fires igcChange - Emitted when the selected tab changes.\n *\n * @slot - Renders the `IgcTabComponents` inside default slot.\n *\n * @csspart start-scroll-button - The start scroll button displayed when the tabs overflow.\n * @csspart end-scroll-button - The end scroll button displayed when the tabs overflow.\n * @csspart selected-indicator - The indicator that shows which tab is selected.\n */\nexport default class IgcTabsComponent extends EventEmitterMixin<\n IgcTabsComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tabs';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTabsComponent,\n IgcTabComponent,\n IgcIconButtonComponent\n );\n }\n\n //#region Private state & properties\n\n private readonly _resizeController = createResizeObserverController(this, {\n callback: this._resizeCallback,\n options: { box: 'border-box' },\n target: null,\n });\n\n /** The tabs container reference holding the tab headers. */\n private readonly _headerRef = createRef<HTMLElement>();\n\n /** The selected tab indicator reference. */\n private readonly _indicatorRef = createRef<HTMLElement>();\n\n private readonly _domHelpers = createTabHelpers(\n this,\n this._headerRef,\n this._indicatorRef\n );\n\n @queryAssignedElements({ selector: IgcTabComponent.tagName })\n private _tabs!: IgcTabComponent[];\n\n protected get _enabledTabs(): IgcTabComponent[] {\n return this._tabs.filter((tab) => !tab.disabled);\n }\n\n @state()\n private _activeTab?: IgcTabComponent;\n\n //#endregion\n\n //#region Public properties\n\n /**\n * Sets the alignment for the tab headers\n * @attr\n */\n @property({ reflect: true })\n public alignment: TabsAlignment = 'start';\n\n /**\n * Determines the tab activation. When set to auto,\n * the tab is instantly selected while navigating with the Left/Right Arrows, Home or End keys\n * and the corresponding panel is displayed.\n * When set to manual, the tab is only focused. The selection happens after pressing Space or Enter.\n * @attr\n */\n @property()\n public activation: TabsActivation = 'auto';\n\n /* blazorSuppress */\n /** Returns the direct `igc-tab` elements that are children of this element. */\n public get tabs(): IgcTabComponent[] {\n return this._tabs;\n }\n\n /** Returns the currently selected tab label or IDREF if no label property is set. */\n public get selected(): string {\n if (this._activeTab) {\n return this._activeTab.label || this._activeTab.id;\n }\n\n return '';\n }\n\n //#endregion\n\n @watch('alignment', { waitUntilFirstUpdate: true })\n protected _alignmentChanged(): void {\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addKeybindings(this, {\n ref: this._headerRef,\n skip: this._skipKeyboard,\n })\n .set(arrowLeft, () => this._handleArrowKeys(isLTR(this) ? -1 : 1))\n .set(arrowRight, () => this._handleArrowKeys(isLTR(this) ? 1 : -1))\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey)\n .setActivateHandler(this._handleActivationKeys, {\n preventDefault: false,\n });\n\n createMutationController(this, {\n callback: this._mutationCallback,\n config: {\n attributeFilter: ['selected'],\n childList: true,\n subtree: true,\n },\n filter: [IgcTabComponent.tagName],\n });\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n\n const selectedTab =\n this._tabs.findLast((tab) => tab.selected) ?? first(this._enabledTabs);\n\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._setSelectedTab(selectedTab, false);\n\n this._resizeController.observe(this._headerRef.value!);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.role = 'tablist';\n }\n\n protected override updated(): void {\n if (this._domHelpers.isLeftToRightChanged) {\n this._domHelpers.setIndicator(this._activeTab);\n }\n }\n\n //#endregion\n\n //#region Observers callbacks\n\n private _resizeCallback(): void {\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n private _mutationCallback(\n parameters: MutationControllerParams<IgcTabComponent>\n ): void {\n this._selectedAttributeChanged(parameters);\n this._handleTabsRemoved(parameters);\n this._handleTabsAdded(parameters);\n\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n private _selectedAttributeChanged({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n const selected = changes.attributes.find(\n ({ node: tab }) => this._tabs.includes(tab) && tab.selected\n )?.node;\n this._setSelectedTab(selected, false);\n }\n\n private _handleTabsAdded({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n if (!isEmpty(changes.added)) {\n const lastAdded = changes.added.findLast(\n (change) =>\n change.target.closest(this.tagName) === this && change.node.selected\n )?.node;\n\n this._setSelectedTab(lastAdded, false);\n }\n }\n\n private _handleTabsRemoved({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n if (!isEmpty(changes.removed)) {\n let nextSelectedTab: IgcTabComponent | null = null;\n\n const removed = changes.removed.filter(\n (change) => change.target.closest(this.tagName) === this\n );\n\n for (const each of removed) {\n if (each.node.selected && each.node === this._activeTab) {\n nextSelectedTab = first(this._enabledTabs);\n break;\n }\n }\n\n if (nextSelectedTab) {\n this._setSelectedTab(nextSelectedTab, false);\n }\n }\n }\n\n //#endregion\n\n //#region Private API\n\n private _getClosestActiveTabIndex(): number {\n const active = getRoot(this).activeElement;\n const tab = active ? active.closest(IgcTabComponent.tagName) : null;\n return tab ? this._enabledTabs.indexOf(tab) : -1;\n }\n\n private _setSelectedTab(tab?: IgcTabComponent, shouldEmit = true): void {\n if (!tab || tab === this._activeTab) {\n return;\n }\n\n if (this._activeTab) {\n this._activeTab.selected = false;\n }\n\n tab.selected = true;\n this._activeTab = tab;\n\n scrollIntoView(getTabHeader(tab));\n this._domHelpers.setIndicator(this._activeTab);\n\n if (shouldEmit) {\n this.emitEvent('igcChange', { detail: this._activeTab });\n }\n }\n\n private _keyboardActivateTab(tab: IgcTabComponent) {\n const header = getTabHeader(tab);\n\n this._domHelpers.setScrollSnap();\n scrollIntoView(header);\n header.focus({ preventScroll: true });\n\n if (this.activation === 'auto') {\n this._setSelectedTab(tab);\n }\n }\n\n private _skipKeyboard(node: Element, event: KeyboardEvent): boolean {\n return !(\n this._isEventFromTabHeader(event) &&\n this._tabs.includes(node.closest(IgcTabComponent.tagName)!)\n );\n }\n\n private _isEventFromTabHeader(event: Event) {\n return getElementFromPath('[part~=\"tab-header\"]', event);\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleArrowKeys(delta: -1 | 1): void {\n const tabs = this._enabledTabs;\n this._keyboardActivateTab(\n tabs[wrap(0, tabs.length - 1, this._getClosestActiveTabIndex() + delta)]\n );\n }\n\n protected _handleHomeKey(): void {\n this._keyboardActivateTab(first(this._enabledTabs));\n }\n\n protected _handleEndKey(): void {\n this._keyboardActivateTab(last(this._enabledTabs));\n }\n\n protected _handleActivationKeys(): void {\n const tabs = this._enabledTabs;\n const index = this._getClosestActiveTabIndex();\n\n if (index > -1) {\n this._setSelectedTab(tabs[index], false);\n this._keyboardActivateTab(tabs[index]);\n }\n }\n\n protected _handleClick(event: PointerEvent): void {\n if (!this._isEventFromTabHeader(event)) {\n return;\n }\n\n const tab = getElementFromPath(IgcTabComponent.tagName, event);\n\n if (!(tab && this._tabs.includes(tab)) || tab?.disabled) {\n return;\n }\n\n this._domHelpers.setScrollSnap();\n getTabHeader(tab).focus();\n this._setSelectedTab(tab);\n }\n\n @eventOptions({ passive: true })\n protected _handleScroll(): void {\n this._domHelpers.setScrollButtonState();\n }\n\n //#endregion\n\n //#region Public API methods\n\n /** Selects the specified tab and displays the corresponding panel. */\n public select(id: string): void;\n /* blazorSuppress (ref is reserved) */\n public select(ref: IgcTabComponent): void;\n /* blazorSuppress (ref is reserved) */\n public select(ref: IgcTabComponent | string): void {\n const tab = isString(ref) ? this._tabs.find((t) => t.id === ref) : ref;\n\n if (tab) {\n this._setSelectedTab(tab, false);\n }\n }\n\n //#endregion\n\n //#region Render\n\n protected _renderScrollButton(direction: 'start' | 'end') {\n const isStart = direction === 'start';\n const { start, end } = this._domHelpers.scrollButtonsDisabled;\n\n return html`${cache(\n this._domHelpers.hasScrollButtons\n ? html`\n <igc-icon-button\n tabindex=\"-1\"\n variant=\"flat\"\n collection=\"default\"\n part=\"${direction}-scroll-button\"\n exportparts=\"icon\"\n name=${isStart ? 'prev' : 'next'}\n ?disabled=${isStart ? start : end}\n @click=${() => this._domHelpers.scrollTabs(direction)}\n >\n </igc-icon-button>\n `\n : nothing\n )}`;\n }\n\n protected override render() {\n return html`\n <div\n ${ref(this._headerRef)}\n part=\"tabs\"\n style=${styleMap(this._domHelpers.styleProperties)}\n @scroll=${this._handleScroll}\n >\n <div\n part=${partMap({\n inner: true,\n scrollable: this._domHelpers.hasScrollButtons,\n })}\n >\n ${this._renderScrollButton('start')}\n <slot @click=${this._handleClick}></slot>\n ${this._renderScrollButton('end')}\n <div part=\"selected-indicator\">\n <span ${ref(this._indicatorRef)}></span>\n </div>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tabs': IgcTabsComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n eventOptions,\n property,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\n\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport {\n addKeybindings,\n arrowLeft,\n arrowRight,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n first,\n getElementFromPath,\n getRoot,\n isEmpty,\n isLTR,\n isString,\n last,\n scrollIntoView,\n wrap,\n} from '../common/util.js';\nimport type { TabsActivation, TabsAlignment } from '../types.js';\nimport IgcTabComponent from './tab.js';\nimport { createTabHelpers, getTabHeader } from './tab-dom.js';\nimport { styles as shared } from './themes/shared/tabs/tabs.common.css.js';\nimport { styles } from './themes/tabs.base.css.js';\nimport { all } from './themes/tabs-themes.js';\n\ntype TabSelectionOptions = {\n tab?: IgcTabComponent;\n shouldEmit?: boolean;\n shouldScroll?: boolean;\n};\n\nexport interface IgcTabsComponentEventMap {\n igcChange: CustomEvent<IgcTabComponent>;\n}\n\n/* blazorAdditionalDependency: IgcTabComponent */\n/**\n * Tabs organize and allow navigation between groups of content that are related and at the same level of hierarchy.\n *\n * The `<igc-tabs>` component allows the user to navigate between multiple `<igc-tab>` elements.\n * It supports keyboard navigation and provides API methods to control the selected tab.\n *\n * @element igc-tabs\n *\n * @fires igcChange - Emitted when the selected tab changes.\n *\n * @slot - Renders the `IgcTabComponents` inside default slot.\n *\n * @csspart start-scroll-button - The start scroll button displayed when the tabs overflow.\n * @csspart end-scroll-button - The end scroll button displayed when the tabs overflow.\n * @csspart selected-indicator - The indicator that shows which tab is selected.\n */\nexport default class IgcTabsComponent extends EventEmitterMixin<\n IgcTabsComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tabs';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTabsComponent,\n IgcTabComponent,\n IgcIconButtonComponent\n );\n }\n\n //#region Private state & properties\n\n private readonly _resizeController = createResizeObserverController(this, {\n callback: this._resizeCallback,\n options: { box: 'border-box' },\n target: null,\n });\n\n /** The tabs container reference holding the tab headers. */\n private readonly _headerRef = createRef<HTMLElement>();\n\n /** The selected tab indicator reference. */\n private readonly _indicatorRef = createRef<HTMLElement>();\n\n private readonly _domHelpers = createTabHelpers(\n this,\n this._headerRef,\n this._indicatorRef\n );\n\n @queryAssignedElements({ selector: IgcTabComponent.tagName })\n private _tabs!: IgcTabComponent[];\n\n protected get _enabledTabs(): IgcTabComponent[] {\n return this._tabs.filter((tab) => !tab.disabled);\n }\n\n @state()\n private _activeTab?: IgcTabComponent;\n\n //#endregion\n\n //#region Public properties\n\n /**\n * Sets the alignment for the tab headers\n * @attr\n */\n @property({ reflect: true })\n public alignment: TabsAlignment = 'start';\n\n /**\n * Determines the tab activation. When set to auto,\n * the tab is instantly selected while navigating with the Left/Right Arrows, Home or End keys\n * and the corresponding panel is displayed.\n * When set to manual, the tab is only focused. The selection happens after pressing Space or Enter.\n * @attr\n */\n @property()\n public activation: TabsActivation = 'auto';\n\n /* blazorSuppress */\n /** Returns the direct `igc-tab` elements that are children of this element. */\n public get tabs(): IgcTabComponent[] {\n return this._tabs;\n }\n\n /** Returns the currently selected tab label or IDREF if no label property is set. */\n public get selected(): string {\n if (this._activeTab) {\n return this._activeTab.label || this._activeTab.id;\n }\n\n return '';\n }\n\n //#endregion\n\n @watch('alignment', { waitUntilFirstUpdate: true })\n protected _alignmentChanged(): void {\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addKeybindings(this, {\n ref: this._headerRef,\n skip: this._skipKeyboard,\n })\n .set(arrowLeft, () => this._handleArrowKeys(isLTR(this) ? -1 : 1))\n .set(arrowRight, () => this._handleArrowKeys(isLTR(this) ? 1 : -1))\n .set(homeKey, this._handleHomeKey)\n .set(endKey, this._handleEndKey)\n .setActivateHandler(this._handleActivationKeys, {\n preventDefault: false,\n });\n\n createMutationController(this, {\n callback: this._mutationCallback,\n config: {\n attributeFilter: ['selected'],\n childList: true,\n subtree: true,\n },\n filter: [IgcTabComponent.tagName],\n });\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n\n const selectedTab =\n this._tabs.findLast((tab) => tab.selected) ?? first(this._enabledTabs);\n\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._setSelectedTab({\n tab: selectedTab,\n shouldEmit: false,\n shouldScroll: false,\n });\n\n this._resizeController.observe(this._headerRef.value!);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.role = 'tablist';\n }\n\n protected override updated(): void {\n if (this._domHelpers.isLeftToRightChanged) {\n this._domHelpers.setIndicator(this._activeTab);\n }\n }\n\n //#endregion\n\n //#region Observers callbacks\n\n private _resizeCallback(): void {\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n private _mutationCallback(\n parameters: MutationControllerParams<IgcTabComponent>\n ): void {\n this._selectedAttributeChanged(parameters);\n this._handleTabsRemoved(parameters);\n this._handleTabsAdded(parameters);\n\n this._domHelpers.setStyleProperties();\n this._domHelpers.setScrollButtonState();\n this._domHelpers.setIndicator(this._activeTab);\n }\n\n private _selectedAttributeChanged({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n const selected = changes.attributes.find(\n ({ node: tab }) => this._tabs.includes(tab) && tab.selected\n )?.node;\n this._setSelectedTab({\n tab: selected,\n shouldEmit: false,\n shouldScroll: false,\n });\n }\n\n private _handleTabsAdded({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n if (!isEmpty(changes.added)) {\n const lastAdded = changes.added.findLast(\n (change) =>\n change.target.closest(this.tagName) === this && change.node.selected\n )?.node;\n\n this._setSelectedTab({\n tab: lastAdded,\n shouldEmit: false,\n shouldScroll: false,\n });\n }\n }\n\n private _handleTabsRemoved({\n changes,\n }: MutationControllerParams<IgcTabComponent>): void {\n if (!isEmpty(changes.removed)) {\n let nextSelectedTab: IgcTabComponent | null = null;\n\n const removed = changes.removed.filter(\n (change) => change.target.closest(this.tagName) === this\n );\n\n for (const each of removed) {\n if (each.node.selected && each.node === this._activeTab) {\n nextSelectedTab = first(this._enabledTabs);\n break;\n }\n }\n\n if (nextSelectedTab) {\n this._setSelectedTab({\n tab: nextSelectedTab,\n shouldEmit: false,\n shouldScroll: false,\n });\n }\n }\n }\n\n //#endregion\n\n //#region Private API\n\n private _getClosestActiveTabIndex(): number {\n const active = getRoot(this).activeElement;\n const tab = active ? active.closest(IgcTabComponent.tagName) : null;\n return tab ? this._enabledTabs.indexOf(tab) : -1;\n }\n\n private _setSelectedTab(options: TabSelectionOptions): void {\n const { tab, shouldEmit = true, shouldScroll = true } = options;\n\n if (!tab || tab === this._activeTab) {\n return;\n }\n\n if (this._activeTab) {\n this._activeTab.selected = false;\n }\n\n tab.selected = true;\n this._activeTab = tab;\n\n if (shouldScroll) {\n scrollIntoView(getTabHeader(tab));\n }\n this._domHelpers.setIndicator(this._activeTab);\n\n if (shouldEmit) {\n this.emitEvent('igcChange', { detail: this._activeTab });\n }\n }\n\n private _keyboardActivateTab(tab: IgcTabComponent) {\n const header = getTabHeader(tab);\n\n this._domHelpers.setScrollSnap();\n scrollIntoView(header);\n header.focus({ preventScroll: true });\n\n if (this.activation === 'auto') {\n this._setSelectedTab({ tab });\n }\n }\n\n private _skipKeyboard(node: Element, event: KeyboardEvent): boolean {\n return !(\n this._isEventFromTabHeader(event) &&\n this._tabs.includes(node.closest(IgcTabComponent.tagName)!)\n );\n }\n\n private _isEventFromTabHeader(event: Event) {\n return getElementFromPath('[part~=\"tab-header\"]', event);\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleArrowKeys(delta: -1 | 1): void {\n const tabs = this._enabledTabs;\n this._keyboardActivateTab(\n tabs[wrap(0, tabs.length - 1, this._getClosestActiveTabIndex() + delta)]\n );\n }\n\n protected _handleHomeKey(): void {\n this._keyboardActivateTab(first(this._enabledTabs));\n }\n\n protected _handleEndKey(): void {\n this._keyboardActivateTab(last(this._enabledTabs));\n }\n\n protected _handleActivationKeys(): void {\n const tabs = this._enabledTabs;\n const index = this._getClosestActiveTabIndex();\n\n if (index > -1) {\n this._setSelectedTab({ tab: tabs[index], shouldEmit: false });\n this._keyboardActivateTab(tabs[index]);\n }\n }\n\n protected _handleClick(event: PointerEvent): void {\n if (!this._isEventFromTabHeader(event)) {\n return;\n }\n\n const tab = getElementFromPath(IgcTabComponent.tagName, event);\n\n if (!(tab && this._tabs.includes(tab)) || tab?.disabled) {\n return;\n }\n\n this._domHelpers.setScrollSnap();\n getTabHeader(tab).focus();\n this._setSelectedTab({ tab });\n }\n\n @eventOptions({ passive: true })\n protected _handleScroll(): void {\n this._domHelpers.setScrollButtonState();\n }\n\n //#endregion\n\n //#region Public API methods\n\n /** Selects the specified tab and displays the corresponding panel. */\n public select(id: string): void;\n /* blazorSuppress (ref is reserved) */\n public select(ref: IgcTabComponent): void;\n /* blazorSuppress (ref is reserved) */\n public select(ref: IgcTabComponent | string): void {\n const tab = isString(ref) ? this._tabs.find((t) => t.id === ref) : ref;\n\n if (tab) {\n this._setSelectedTab({ tab, shouldEmit: false });\n }\n }\n\n //#endregion\n\n //#region Render\n\n protected _renderScrollButton(direction: 'start' | 'end') {\n const isStart = direction === 'start';\n const { start, end } = this._domHelpers.scrollButtonsDisabled;\n\n return html`${cache(\n this._domHelpers.hasScrollButtons\n ? html`\n <igc-icon-button\n tabindex=\"-1\"\n variant=\"flat\"\n collection=\"default\"\n part=\"${direction}-scroll-button\"\n exportparts=\"icon\"\n name=${isStart ? 'prev' : 'next'}\n ?disabled=${isStart ? start : end}\n @click=${() => this._domHelpers.scrollTabs(direction)}\n >\n </igc-icon-button>\n `\n : nothing\n )}`;\n }\n\n protected override render() {\n return html`\n <div\n ${ref(this._headerRef)}\n part=\"tabs\"\n style=${styleMap(this._domHelpers.styleProperties)}\n @scroll=${this._handleScroll}\n >\n <div\n part=${partMap({\n inner: true,\n scrollable: this._domHelpers.hasScrollButtons,\n })}\n >\n ${this._renderScrollButton('start')}\n <slot @click=${this._handleClick}></slot>\n ${this._renderScrollButton('end')}\n <div part=\"selected-indicator\">\n <span ${ref(this._indicatorRef)}></span>\n </div>\n </div>\n </div>\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tabs': IgcTabsComponent;\n }\n}\n"]}