igniteui-webcomponents 5.1.0 → 5.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport {\n eventOptions,\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\n\nimport { themes } from '../../theming/theming-decorator.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 type MutationControllerParams,\n createMutationController,\n} from '../common/controllers/mutation-observer.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.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 { createCounter, getOffset, isLTR, wrap } from '../common/util.js';\nimport IgcTabPanelComponent from './tab-panel.js';\nimport IgcTabComponent from './tab.js';\nimport { styles as shared } from './themes/shared/tabs/tabs.common.css.js';\nimport { all } from './themes/tabs-themes.js';\nimport { styles } from './themes/tabs.base.css.js';\n\nexport interface IgcTabsComponentEventMap {\n igcChange: CustomEvent<IgcTabComponent>;\n}\n\n/**\n * Represents tabs component\n *\n * @element igc-tabs\n *\n * @fires igcChange - Emitted when the selected tab changes.\n *\n * @slot - Renders the tab header.\n * @slot panel - Renders the tab content.\n *\n * @csspart headers - The wrapper of the tabs including the headers content and the scroll buttons.\n * @csspart headers-content - The container for the tab headers.\n * @csspart headers-wrapper - The wrapper for the tab headers and the selected indicator.\n * @csspart headers-scroll - The container for the headers.\n * @csspart selected-indicator - The selected indicator.\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 content - The container for the tabs content.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcTabComponent, IgcTabPanelComponent')\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() {\n registerComponent(\n IgcTabsComponent,\n IgcTabComponent,\n IgcTabPanelComponent,\n IgcIconButtonComponent\n );\n }\n\n private static readonly increment = createCounter();\n\n protected headerRef: Ref<HTMLDivElement> = createRef();\n\n @queryAssignedElements({ selector: IgcTabComponent.tagName })\n protected tabs!: Array<IgcTabComponent>;\n\n @queryAssignedElements({ slot: 'panel' })\n protected panels!: Array<IgcTabPanelComponent>;\n\n @query('[part=\"headers-wrapper\"]')\n protected wrapper!: HTMLElement;\n\n @query('[part=\"headers-content\"]')\n protected container!: HTMLElement;\n\n @query('[part=\"selected-indicator\"]')\n protected selectedIndicator!: HTMLElement;\n\n @state()\n protected showScrollButtons = false;\n\n @state()\n protected disableStartScrollButton = true;\n\n @state()\n protected disableEndScrollButton = false;\n\n @state()\n protected activeTab?: IgcTabComponent;\n\n protected resizeObserver!: ResizeObserver;\n\n private get _closestActiveTabIndex() {\n const root = this.getRootNode() as Document | ShadowRoot;\n const tabs = this.enabledTabs;\n const tab = root.activeElement\n ? root.activeElement.closest(IgcTabComponent.tagName)\n : null;\n\n return tabs.indexOf(tab!);\n }\n\n private _mutationCallback({\n changes: { attributes, added, removed },\n }: MutationControllerParams<IgcTabComponent>) {\n this.setSelectedTab(attributes.find((tab) => tab.selected));\n\n if (removed.length || added.length) {\n for (const tab of removed) {\n this.resizeObserver?.unobserve(tab);\n if (tab.selected && tab === this.activeTab) {\n this.activeTab = undefined;\n }\n }\n\n for (const tab of added) {\n this.resizeObserver?.observe(tab);\n if (tab.selected) {\n this.setSelectedTab(tab);\n }\n }\n\n this.syncAttributes();\n }\n\n this.updateSelectedTab();\n this.activeTab?.scrollIntoView({ block: 'nearest' });\n this.alignIndicator();\n }\n\n protected get enabledTabs() {\n return this.tabs.filter((tab) => !tab.disabled);\n }\n\n /** Returns the currently selected tab. */\n public get selected(): string {\n return this.activeTab?.panel ?? '';\n }\n\n /**\n * Sets the alignment for the tab headers\n * @attr\n */\n @property({ reflect: true })\n public alignment: 'start' | 'end' | 'center' | 'justify' = '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: 'auto' | 'manual' = 'auto';\n\n @watch('alignment', { waitUntilFirstUpdate: true })\n protected alignIndicator() {\n const styles: Partial<CSSStyleDeclaration> = {\n visibility: this.activeTab ? 'visible' : 'hidden',\n transitionDuration: '0.3s',\n };\n\n if (this.activeTab && this.wrapper) {\n Object.assign(styles, {\n width: `${this.activeTab.offsetWidth}px`,\n transform: `translate(${\n isLTR(this)\n ? getOffset(this.activeTab, this.wrapper).left\n : getOffset(this.activeTab, this.wrapper).right\n }px)`,\n });\n }\n\n Object.assign(this.selectedIndicator?.style ?? {}, styles);\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n ref: this.headerRef,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowLeft, this.onArrowLeft)\n .set(arrowRight, this.onArrowRight)\n .set(homeKey, this.onHomeKey)\n .set(endKey, this.onEndKey)\n .setActivateHandler(this.onActivationKey);\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 this.showScrollButtons =\n this.container.scrollWidth > this.container.clientWidth;\n\n await this.updateComplete;\n\n this.syncAttributes();\n this.setupObserver();\n this.setSelectedTab(\n this.tabs.filter((tab) => tab.selected).at(-1) ?? this.enabledTabs.at(0)\n );\n this.updateSelectedTab();\n }\n\n public override disconnectedCallback() {\n this.resizeObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n protected updateButtonsOnResize() {\n // Hide the buttons in the resize observer callback and synchronously update the DOM\n // in order to get the actual size\n this.showScrollButtons = false;\n this.performUpdate();\n\n this.showScrollButtons =\n this.container.scrollWidth > this.container.clientWidth;\n\n this.updateScrollButtons();\n }\n\n protected updateScrollButtons() {\n const { scrollLeft, offsetWidth } = this.container;\n const { scrollWidth } = this.wrapper;\n\n this.disableEndScrollButton =\n scrollWidth <= Math.abs(scrollLeft) + offsetWidth;\n this.disableStartScrollButton = scrollLeft === 0;\n }\n\n protected setupObserver() {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateButtonsOnResize();\n this.alignIndicator();\n });\n\n [this.container, this.wrapper, ...this.tabs].forEach((element) =>\n this.resizeObserver.observe(element)\n );\n }\n\n protected updateSelectedTab() {\n this.tabs.forEach((tab) => {\n tab.selected = tab === this.activeTab;\n });\n this.panels.forEach((panel) => {\n panel.hidden = panel.id !== this.activeTab?.panel;\n });\n }\n\n protected syncAttributes() {\n const prefix = this.id ? `${this.id}-` : '';\n this.tabs.forEach((tab, index) => {\n if (!tab.panel) {\n tab.panel =\n this.panels.at(index)?.id ??\n `${prefix}tab-${IgcTabsComponent.increment()}`;\n }\n this.panels\n .find((panel) => panel.id === tab.panel)\n ?.setAttribute('aria-labelledby', tab.id);\n });\n }\n\n private setSelectedTab(tab?: IgcTabComponent) {\n if (!tab || tab === this.activeTab) {\n return;\n }\n\n if (this.activeTab) {\n this.activeTab.selected = false;\n }\n\n this.activeTab = tab;\n this.activeTab.selected = true;\n }\n\n protected scrollByTabOffset(direction: 'start' | 'end') {\n const { scrollLeft, offsetWidth } = this.container;\n const LTR = isLTR(this);\n const next = direction === 'end';\n\n const pivot = Math.abs(next ? offsetWidth + scrollLeft : scrollLeft);\n\n let amount = this.tabs\n .map((tab) => ({\n start: LTR\n ? getOffset(tab, this.wrapper).left\n : Math.abs(getOffset(tab, this.wrapper).right),\n width: tab.offsetWidth,\n }))\n .filter((offset) =>\n next ? offset.start + offset.width > pivot : offset.start < pivot\n )\n .at(next ? 0 : -1)!.width;\n\n amount *= next ? 1 : -1;\n this.container.scrollBy({ left: LTR ? amount : -amount });\n }\n\n protected handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('igc-tab');\n\n if (!(tab && this.contains(tab)) || tab.disabled) {\n return;\n }\n\n tab.focus();\n this.setSelectedTab(tab);\n this.emitEvent('igcChange', { detail: tab });\n }\n\n private _scrollToAndFocus(tab: IgcTabComponent) {\n tab.scrollIntoView({ behavior: 'auto', block: 'nearest' });\n tab.focus();\n }\n\n private _kbActivateTab(tab: IgcTabComponent) {\n this._scrollToAndFocus(tab);\n\n if (this.activation === 'auto') {\n this.setSelectedTab(tab);\n this.emitEvent('igcChange', { detail: tab });\n }\n }\n\n private onArrowLeft() {\n const tabs = this.enabledTabs;\n const delta = isLTR(this) ? -1 : 1;\n\n this._kbActivateTab(\n tabs[wrap(0, tabs.length - 1, this._closestActiveTabIndex + delta)]\n );\n }\n\n private onArrowRight() {\n const tabs = this.enabledTabs;\n const delta = isLTR(this) ? 1 : -1;\n\n this._kbActivateTab(\n tabs[wrap(0, tabs.length - 1, this._closestActiveTabIndex + delta)]\n );\n }\n\n private onHomeKey() {\n this._kbActivateTab(this.enabledTabs.at(0)!);\n }\n\n private onEndKey() {\n this._kbActivateTab(this.enabledTabs.at(-1)!);\n }\n\n private onActivationKey() {\n const tabs = this.enabledTabs;\n const index = this._closestActiveTabIndex;\n\n this.setSelectedTab(tabs[index]);\n this._kbActivateTab(tabs[index]);\n }\n\n @eventOptions({ passive: true })\n protected handleScroll() {\n this.updateScrollButtons();\n }\n\n /** Selects the specified tab and displays the corresponding panel. */\n public select(name: string) {\n this.setSelectedTab(this.tabs.find((el) => el.panel === name));\n }\n\n protected renderScrollButton(direction: 'start' | 'end') {\n const start = direction === 'start';\n\n return this.showScrollButtons\n ? html`<igc-icon-button\n tabindex=\"-1\"\n aria-hidden=\"true\"\n variant=\"flat\"\n collection=\"default\"\n part=\"${direction}-scroll-button\"\n exportparts=\"icon\"\n name=\"${start ? 'prev' : 'next'}\"\n .disabled=${start\n ? this.disableStartScrollButton\n : this.disableEndScrollButton}\n @click=${() => this.scrollByTabOffset(direction)}\n ></igc-icon-button>`\n : nothing;\n }\n\n protected override render() {\n return html`\n <div part=\"headers\">\n ${this.renderScrollButton('start')}\n <div part=\"headers-content\" @scroll=${this.handleScroll}>\n <div part=\"headers-wrapper\">\n <div\n ${ref(this.headerRef)}\n part=\"headers-scroll\"\n role=\"tablist\"\n @click=${this.handleClick}\n >\n <slot></slot>\n </div>\n <div part=\"selected-indicator\"></div>\n </div>\n </div>\n ${this.renderScrollButton('end')}\n </div>\n <div part=\"content\">\n <slot name=\"panel\"></slot>\n </div>\n `;\n }\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 { LitElement, html, nothing } from 'lit';\nimport {\n eventOptions,\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\n\nimport { themes } from '../../theming/theming-decorator.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 type MutationControllerParams,\n createMutationController,\n} from '../common/controllers/mutation-observer.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.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 { createCounter, getOffset, isLTR, wrap } from '../common/util.js';\nimport IgcTabPanelComponent from './tab-panel.js';\nimport IgcTabComponent from './tab.js';\nimport { styles as shared } from './themes/shared/tabs/tabs.common.css.js';\nimport { all } from './themes/tabs-themes.js';\nimport { styles } from './themes/tabs.base.css.js';\n\nexport interface IgcTabsComponentEventMap {\n igcChange: CustomEvent<IgcTabComponent>;\n}\n\n/**\n * Represents tabs component\n *\n * @element igc-tabs\n *\n * @fires igcChange - Emitted when the selected tab changes.\n *\n * @slot - Renders the tab header.\n * @slot panel - Renders the tab content.\n *\n * @csspart headers - The wrapper of the tabs including the headers content and the scroll buttons.\n * @csspart headers-content - The container for the tab headers.\n * @csspart headers-wrapper - The wrapper for the tab headers and the selected indicator.\n * @csspart headers-scroll - The container for the headers.\n * @csspart selected-indicator - The selected indicator.\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 content - The container for the tabs content.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcTabComponent, IgcTabPanelComponent')\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() {\n registerComponent(\n IgcTabsComponent,\n IgcTabComponent,\n IgcTabPanelComponent,\n IgcIconButtonComponent\n );\n }\n\n private static readonly increment = createCounter();\n\n protected headerRef: Ref<HTMLDivElement> = createRef();\n\n @queryAssignedElements({ selector: IgcTabComponent.tagName })\n protected tabs!: Array<IgcTabComponent>;\n\n @queryAssignedElements({ slot: 'panel' })\n protected panels!: Array<IgcTabPanelComponent>;\n\n @query('[part=\"headers-wrapper\"]')\n protected wrapper!: HTMLElement;\n\n @query('[part=\"headers-content\"]')\n protected container!: HTMLElement;\n\n @query('[part=\"selected-indicator\"]')\n protected selectedIndicator!: HTMLElement;\n\n @state()\n protected showScrollButtons = false;\n\n @state()\n protected disableStartScrollButton = true;\n\n @state()\n protected disableEndScrollButton = false;\n\n @state()\n protected activeTab?: IgcTabComponent;\n\n protected resizeObserver!: ResizeObserver;\n\n private get _closestActiveTabIndex() {\n const root = this.getRootNode() as Document | ShadowRoot;\n const tabs = this.enabledTabs;\n const tab = root.activeElement\n ? root.activeElement.closest(IgcTabComponent.tagName)\n : null;\n\n return tabs.indexOf(tab!);\n }\n\n private _mutationCallback({\n changes: { attributes, added, removed },\n }: MutationControllerParams<IgcTabComponent>) {\n const ownAttributes = attributes.filter(\n (tab) => tab.closest(this.tagName) === this\n );\n const ownAdded = added.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n const ownRemoved = removed.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n\n this.setSelectedTab(ownAttributes.find((tab) => tab.selected));\n\n if (ownRemoved.length || ownAdded.length) {\n for (const { node: tab } of ownRemoved) {\n this.resizeObserver?.unobserve(tab);\n if (tab.selected && tab === this.activeTab) {\n this.activeTab = undefined;\n }\n }\n\n for (const { node: tab } of ownAdded) {\n this.resizeObserver?.observe(tab);\n if (tab.selected) {\n this.setSelectedTab(tab);\n }\n }\n\n this.syncAttributes();\n }\n\n this.updateSelectedTab();\n this.activeTab?.scrollIntoView({ block: 'nearest' });\n this.alignIndicator();\n }\n\n protected get enabledTabs() {\n return this.tabs.filter((tab) => !tab.disabled);\n }\n\n /** Returns the currently selected tab. */\n public get selected(): string {\n return this.activeTab?.panel ?? '';\n }\n\n /**\n * Sets the alignment for the tab headers\n * @attr\n */\n @property({ reflect: true })\n public alignment: 'start' | 'end' | 'center' | 'justify' = '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: 'auto' | 'manual' = 'auto';\n\n @watch('alignment', { waitUntilFirstUpdate: true })\n protected alignIndicator() {\n const styles: Partial<CSSStyleDeclaration> = {\n visibility: this.activeTab ? 'visible' : 'hidden',\n transitionDuration: '0.3s',\n };\n\n if (this.activeTab && this.wrapper) {\n Object.assign(styles, {\n width: `${this.activeTab.offsetWidth}px`,\n transform: `translate(${\n isLTR(this)\n ? getOffset(this.activeTab, this.wrapper).left\n : getOffset(this.activeTab, this.wrapper).right\n }px)`,\n });\n }\n\n Object.assign(this.selectedIndicator?.style ?? {}, styles);\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n ref: this.headerRef,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowLeft, this.onArrowLeft)\n .set(arrowRight, this.onArrowRight)\n .set(homeKey, this.onHomeKey)\n .set(endKey, this.onEndKey)\n .setActivateHandler(this.onActivationKey);\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 this.showScrollButtons =\n this.container.scrollWidth > this.container.clientWidth;\n\n await this.updateComplete;\n\n this.syncAttributes();\n this.setupObserver();\n this.setSelectedTab(\n this.tabs.filter((tab) => tab.selected).at(-1) ?? this.enabledTabs.at(0)\n );\n this.updateSelectedTab();\n }\n\n public override disconnectedCallback() {\n this.resizeObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n protected updateButtonsOnResize() {\n // Hide the buttons in the resize observer callback and synchronously update the DOM\n // in order to get the actual size\n this.showScrollButtons = false;\n this.performUpdate();\n\n this.showScrollButtons =\n this.container.scrollWidth > this.container.clientWidth;\n\n this.updateScrollButtons();\n }\n\n protected updateScrollButtons() {\n const { scrollLeft, offsetWidth } = this.container;\n const { scrollWidth } = this.wrapper;\n\n this.disableEndScrollButton =\n scrollWidth <= Math.abs(scrollLeft) + offsetWidth;\n this.disableStartScrollButton = scrollLeft === 0;\n }\n\n protected setupObserver() {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateButtonsOnResize();\n this.alignIndicator();\n });\n\n [this.container, this.wrapper, ...this.tabs].forEach((element) =>\n this.resizeObserver.observe(element)\n );\n }\n\n protected updateSelectedTab() {\n this.tabs.forEach((tab) => {\n tab.selected = tab === this.activeTab;\n });\n this.panels.forEach((panel) => {\n panel.hidden = panel.id !== this.activeTab?.panel;\n });\n }\n\n protected syncAttributes() {\n const prefix = this.id ? `${this.id}-` : '';\n this.tabs.forEach((tab, index) => {\n if (!tab.panel) {\n tab.panel =\n this.panels.at(index)?.id ??\n `${prefix}tab-${IgcTabsComponent.increment()}`;\n }\n this.panels\n .find((panel) => panel.id === tab.panel)\n ?.setAttribute('aria-labelledby', tab.id);\n });\n }\n\n private setSelectedTab(tab?: IgcTabComponent) {\n if (!tab || tab === this.activeTab) {\n return;\n }\n\n if (this.activeTab) {\n this.activeTab.selected = false;\n }\n\n this.activeTab = tab;\n this.activeTab.selected = true;\n }\n\n protected scrollByTabOffset(direction: 'start' | 'end') {\n const { scrollLeft, offsetWidth } = this.container;\n const LTR = isLTR(this);\n const next = direction === 'end';\n\n const pivot = Math.abs(next ? offsetWidth + scrollLeft : scrollLeft);\n\n let amount = this.tabs\n .map((tab) => ({\n start: LTR\n ? getOffset(tab, this.wrapper).left\n : Math.abs(getOffset(tab, this.wrapper).right),\n width: tab.offsetWidth,\n }))\n .filter((offset) =>\n next ? offset.start + offset.width > pivot : offset.start < pivot\n )\n .at(next ? 0 : -1)!.width;\n\n amount *= next ? 1 : -1;\n this.container.scrollBy({ left: LTR ? amount : -amount });\n }\n\n protected handleClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const tab = target.closest('igc-tab');\n\n if (!(tab && this.contains(tab)) || tab.disabled) {\n return;\n }\n\n tab.focus();\n this.setSelectedTab(tab);\n this.emitEvent('igcChange', { detail: tab });\n }\n\n private _scrollToAndFocus(tab: IgcTabComponent) {\n tab.scrollIntoView({ behavior: 'auto', block: 'nearest' });\n tab.focus();\n }\n\n private _kbActivateTab(tab: IgcTabComponent) {\n this._scrollToAndFocus(tab);\n\n if (this.activation === 'auto') {\n this.setSelectedTab(tab);\n this.emitEvent('igcChange', { detail: tab });\n }\n }\n\n private onArrowLeft() {\n const tabs = this.enabledTabs;\n const delta = isLTR(this) ? -1 : 1;\n\n this._kbActivateTab(\n tabs[wrap(0, tabs.length - 1, this._closestActiveTabIndex + delta)]\n );\n }\n\n private onArrowRight() {\n const tabs = this.enabledTabs;\n const delta = isLTR(this) ? 1 : -1;\n\n this._kbActivateTab(\n tabs[wrap(0, tabs.length - 1, this._closestActiveTabIndex + delta)]\n );\n }\n\n private onHomeKey() {\n this._kbActivateTab(this.enabledTabs.at(0)!);\n }\n\n private onEndKey() {\n this._kbActivateTab(this.enabledTabs.at(-1)!);\n }\n\n private onActivationKey() {\n const tabs = this.enabledTabs;\n const index = this._closestActiveTabIndex;\n\n this.setSelectedTab(tabs[index]);\n this._kbActivateTab(tabs[index]);\n }\n\n @eventOptions({ passive: true })\n protected handleScroll() {\n this.updateScrollButtons();\n }\n\n /** Selects the specified tab and displays the corresponding panel. */\n public select(name: string) {\n this.setSelectedTab(this.tabs.find((el) => el.panel === name));\n }\n\n protected renderScrollButton(direction: 'start' | 'end') {\n const start = direction === 'start';\n\n return this.showScrollButtons\n ? html`<igc-icon-button\n tabindex=\"-1\"\n aria-hidden=\"true\"\n variant=\"flat\"\n collection=\"default\"\n part=\"${direction}-scroll-button\"\n exportparts=\"icon\"\n name=\"${start ? 'prev' : 'next'}\"\n .disabled=${start\n ? this.disableStartScrollButton\n : this.disableEndScrollButton}\n @click=${() => this.scrollByTabOffset(direction)}\n ></igc-icon-button>`\n : nothing;\n }\n\n protected override render() {\n return html`\n <div part=\"headers\">\n ${this.renderScrollButton('start')}\n <div part=\"headers-content\" @scroll=${this.handleScroll}>\n <div part=\"headers-wrapper\">\n <div\n ${ref(this.headerRef)}\n part=\"headers-scroll\"\n role=\"tablist\"\n @click=${this.handleClick}\n >\n <slot></slot>\n </div>\n <div part=\"selected-indicator\"></div>\n </div>\n </div>\n ${this.renderScrollButton('end')}\n </div>\n <div part=\"content\">\n <slot name=\"panel\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tabs': IgcTabsComponent;\n }\n}\n"]}
@@ -12,7 +12,7 @@ import { themes } from '../../theming/theming-decorator.js';
12
12
  import { registerComponent } from '../common/definitions/register.js';
13
13
  import { isEmpty, partNameMap, toKebabCase } from '../common/util.js';
14
14
  import IgcIconComponent from '../icon/icon.js';
15
- import { styles as shared } from './themes/shared/validator.common.css';
15
+ import { styles as shared } from './themes/shared/validator.common.css.js';
16
16
  import { all } from './themes/themes.js';
17
17
  import { styles } from './themes/validator.base.css.js';
18
18
  function getValidationSlots(element) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,UAAU,EAAuB,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAaxD,SAAS,kBAAkB,CAAC,OAAwC;IAClE,OAAO,OAAO,CAAC,UAAU,CAAC,gBAAgB,CACxC,gCAAgC,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAwC;IAC7D,OAAO,KAAK,CAAC,IAAI,CACf,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAkB,MAAM,CAAC,CAC7D,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAwC,EACxC,QAAiB;IAEjB,MAAM,MAAM,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,OAAO,QAAQ;QACb,CAAC,CAAC,KAAK;aACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;aACxC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAWc,IAAM,+BAA+B,uCAArC,MAAM,+BAAgC,SAAQ,UAAU;IAAxD;;QAsCL,uBAAkB,GAAG,KAAK,CAAC;QAG5B,YAAO,GAAG,KAAK,CAAC;IAgGzB,CAAC;IApIQ,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,iCAA+B,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,IAAoB,EACpB,SAAoC;QAClC,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,IAAI;KACpB;QAED,MAAM,EAAE,qBAAqB,EAAE,GAAG,iCAA+B,CAAC,SAAS,CAAC;QAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa;YACrC,CAAC,CAAC,IAAI,CAAA,qDAAqD;YAC3D,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,IAAI,CAAA;;aAEF,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;eAClB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;eACtB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;kBACnB,IAAI;mBACH,IAAI,CAAC,OAAO;;;UAGrB,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;;KAE5D,CAAC;IACJ,CAAC;IAWD,IAAW,MAAM,CAAC,KAAqB;QACrC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEkB,gBAAgB;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,EAAE,IAAI,EAAS;QAChC,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,KAAK,YAAY,CAAC;QAE3C,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/C,IAAI,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAES,uBAAuB,CAAC,QAAgB;QAChD,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC;YACjD,CAAC,CAAC,IAAI,CAAA;;;;;;;SAOH;YACH,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,oBAAoB,EAAE,IAAI;YAC1B,KAAK,EAAE,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO,IAAI,CAAA;kBACG,KAAK;UACb,IAAI;qBACO,QAAQ;;KAExB,CAAC;IACJ,CAAC;IAES,CAAC,qBAAqB,CAAC,QAAuB,EAAE,SAAS,GAAG,KAAK;QACzE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,SAAS;oBACb,CAAC,CAAC,IAAI,CAAA,6CAA6C;oBACnD,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,QAAQ,CAAC,GAA0B,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAE9B,MAAM,SAAS;oBACb,CAAC,CAAC,IAAI,CAAA,cAAc,IAAI,SAAS,IAAI,UAAU;oBAC/C,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAES,YAAY;QACpB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB;YAC5C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAA,kCAAkC,CAAC;IAC7C,CAAC;IAEkB,MAAM;QACvB,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,aAAa,EAAE,IAAI;YACnB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,IAAI,CAAA;kBACG,KAAK;UACb,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClD,CAAC,CAAC,OAAO;UACT,IAAI,CAAC,YAAY,EAAE;;KAExB,CAAC;IACJ,CAAC;;AAvIsB,uCAAO,GAAG,eAAe,AAAlB,CAAmB;AAC1B,sCAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;AAoCzC;IADP,KAAK,EAAE;2EAC2B;AAG5B;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gEACL;AAGvB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DAS9B;AApDkB,+BAA+B;IADnD,MAAM,CAAC,GAAG,CAAC;GACS,+BAA+B,CAyInD;eAzIoB,+BAA+B","sourcesContent":["import { LitElement, type TemplateResult, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { IgcFormControl } from '../common/mixins/forms/types.js';\nimport { isEmpty, partNameMap, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nfunction getValidationSlots(element: IgcValidationContainerComponent) {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n \"slot:not([name='helper-text'])\"\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent) {\n return Array.from(\n element.renderRoot.querySelectorAll<HTMLSlotElement>('slot')\n ).every((slot) => isEmpty(slot.assignedElements({ flatten: true })));\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n) {\n const config: AssignedNodesOptions = { flatten: true };\n const slots = Array.from(getValidationSlots(element));\n return slotName\n ? slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => slot.assignedElements(config).length > 0)\n : slots.some((slot) => slot.assignedElements(config).length > 0);\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\n@themes(all)\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const { renderValidationSlots } = IgcValidationContainerComponent.prototype;\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : null;\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n .target=${host}\n ?invalid=${host.invalid}\n exportparts=\"helper-text validation-message validation-icon\"\n >\n ${helperText}${renderValidationSlots(host.validity, true)}\n </igc-validator>\n `;\n }\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._target?.removeEventListener('invalid', this);\n this._target = value;\n this._target.addEventListener('invalid', this);\n }\n\n public get target() {\n return this._target;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n public handleEvent({ type }: Event) {\n const isInvalid = type === 'invalid';\n const isSlotChange = type === 'slotchange';\n\n if (isInvalid || isSlotChange) {\n this.invalid = isInvalid ? true : this.invalid;\n this._hasSlottedContent = hasProjectedValidation(this);\n }\n\n this.requestUpdate();\n }\n\n protected renderValidationMessage(slotName: string) {\n const icon = hasProjectedValidation(this, slotName)\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n collection=\"default\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : null;\n\n const parts = partNameMap({\n 'validation-message': true,\n empty: !icon,\n });\n\n return html`\n <div part=${parts}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *renderValidationSlots(validity: ValidityState, projected = false) {\n for (const key in validity) {\n if (key === 'valid' && !validity[key]) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this.renderValidationMessage('invalid');\n } else if (validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this.renderValidationMessage(name);\n }\n }\n }\n\n protected renderHelper() {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render() {\n const parts = partNameMap({\n 'helper-text': true,\n empty: hasProjection(this),\n });\n return html`\n <div part=${parts}>\n ${this.invalid\n ? this.renderValidationSlots(this.target.validity)\n : nothing}\n ${this.renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, type TemplateResult, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { IgcFormControl } from '../common/mixins/forms/types.js';\nimport { isEmpty, partNameMap, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nfunction getValidationSlots(element: IgcValidationContainerComponent) {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n \"slot:not([name='helper-text'])\"\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent) {\n return Array.from(\n element.renderRoot.querySelectorAll<HTMLSlotElement>('slot')\n ).every((slot) => isEmpty(slot.assignedElements({ flatten: true })));\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n) {\n const config: AssignedNodesOptions = { flatten: true };\n const slots = Array.from(getValidationSlots(element));\n return slotName\n ? slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => slot.assignedElements(config).length > 0)\n : slots.some((slot) => slot.assignedElements(config).length > 0);\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\n@themes(all)\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const { renderValidationSlots } = IgcValidationContainerComponent.prototype;\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : null;\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n .target=${host}\n ?invalid=${host.invalid}\n exportparts=\"helper-text validation-message validation-icon\"\n >\n ${helperText}${renderValidationSlots(host.validity, true)}\n </igc-validator>\n `;\n }\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._target?.removeEventListener('invalid', this);\n this._target = value;\n this._target.addEventListener('invalid', this);\n }\n\n public get target() {\n return this._target;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n public handleEvent({ type }: Event) {\n const isInvalid = type === 'invalid';\n const isSlotChange = type === 'slotchange';\n\n if (isInvalid || isSlotChange) {\n this.invalid = isInvalid ? true : this.invalid;\n this._hasSlottedContent = hasProjectedValidation(this);\n }\n\n this.requestUpdate();\n }\n\n protected renderValidationMessage(slotName: string) {\n const icon = hasProjectedValidation(this, slotName)\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n collection=\"default\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : null;\n\n const parts = partNameMap({\n 'validation-message': true,\n empty: !icon,\n });\n\n return html`\n <div part=${parts}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *renderValidationSlots(validity: ValidityState, projected = false) {\n for (const key in validity) {\n if (key === 'valid' && !validity[key]) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this.renderValidationMessage('invalid');\n } else if (validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this.renderValidationMessage(name);\n }\n }\n }\n\n protected renderHelper() {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render() {\n const parts = partNameMap({\n 'helper-text': true,\n empty: hasProjection(this),\n });\n return html`\n <div part=${parts}>\n ${this.invalid\n ? this.renderValidationSlots(this.target.validity)\n : nothing}\n ${this.renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}
@@ -10646,7 +10646,7 @@
10646
10646
  "kind": "field",
10647
10647
  "name": "interval",
10648
10648
  "type": {
10649
- "text": "number"
10649
+ "text": "number | undefined"
10650
10650
  },
10651
10651
  "privacy": "public",
10652
10652
  "description": "The duration in milliseconds between changing the active slide.",
@@ -11042,7 +11042,7 @@
11042
11042
  "text": "Promise<boolean>"
11043
11043
  }
11044
11044
  },
11045
- "description": "Switches to the next slide running any animations and returns if the operation was a success."
11045
+ "description": "Switches to the next slide, runs any animations, and returns if the operation was successful."
11046
11046
  },
11047
11047
  {
11048
11048
  "kind": "method",
@@ -11053,7 +11053,7 @@
11053
11053
  "text": "Promise<boolean>"
11054
11054
  }
11055
11055
  },
11056
- "description": "Switches to the previous slide running any animations and returns if the operation was a success."
11056
+ "description": "Switches to the previous slide, runs any animations, and returns if the operation was successful."
11057
11057
  },
11058
11058
  {
11059
11059
  "kind": "method",
@@ -11072,14 +11072,65 @@
11072
11072
  }
11073
11073
  },
11074
11074
  {
11075
- "name": "direction",
11075
+ "name": "animationDirection",
11076
11076
  "optional": true,
11077
11077
  "type": {
11078
11078
  "text": "'next' | 'prev'"
11079
11079
  }
11080
11080
  }
11081
11081
  ],
11082
- "description": "Switches the passed in slide running any animations and returns if the operation was a success."
11082
+ "description": "Switches to the passed-in slide, runs any animations, and returns if the operation was successful."
11083
+ },
11084
+ {
11085
+ "kind": "method",
11086
+ "name": "select",
11087
+ "privacy": "public",
11088
+ "return": {
11089
+ "type": {
11090
+ "text": "Promise<boolean>"
11091
+ }
11092
+ },
11093
+ "parameters": [
11094
+ {
11095
+ "name": "index",
11096
+ "type": {
11097
+ "text": "number"
11098
+ }
11099
+ },
11100
+ {
11101
+ "name": "animationDirection",
11102
+ "optional": true,
11103
+ "type": {
11104
+ "text": "'next' | 'prev'"
11105
+ }
11106
+ }
11107
+ ],
11108
+ "description": "Switches to slide by index, runs any animations, and returns if the operation was successful."
11109
+ },
11110
+ {
11111
+ "kind": "method",
11112
+ "name": "select",
11113
+ "privacy": "public",
11114
+ "return": {
11115
+ "type": {
11116
+ "text": "Promise<boolean>"
11117
+ }
11118
+ },
11119
+ "parameters": [
11120
+ {
11121
+ "name": "slideOrIndex",
11122
+ "type": {
11123
+ "text": "IgcCarouselSlideComponent | number"
11124
+ }
11125
+ },
11126
+ {
11127
+ "name": "animationDirection",
11128
+ "optional": true,
11129
+ "type": {
11130
+ "text": "'next' | 'prev'"
11131
+ }
11132
+ }
11133
+ ]
11083
11134
  },
11084
11135
  {
11085
11136
  "kind": "method",
@@ -11324,7 +11375,7 @@
11324
11375
  {
11325
11376
  "name": "interval",
11326
11377
  "type": {
11327
- "text": "number"
11378
+ "text": "number | undefined"
11328
11379
  },
11329
11380
  "description": "The duration in milliseconds between changing the active slide.",
11330
11381
  "fieldName": "interval",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-webcomponents",
3
- "version": "5.1.0",
3
+ "version": "5.1.2",
4
4
  "description": "Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.",
5
5
  "author": "Infragistics",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -9,7 +9,8 @@
9
9
  ".": {
10
10
  "types": "./index.d.ts",
11
11
  "default": "./index.js"
12
- }
12
+ },
13
+ "./themes/*.css": "./themes/*.css"
13
14
  },
14
15
  "type": "module",
15
16
  "sideEffects": false,