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.
- package/CHANGELOG.md +23 -0
- package/animations/player.d.ts +4 -11
- package/animations/player.js +3 -9
- package/animations/player.js.map +1 -1
- package/animations/view-transition.d.ts +44 -0
- package/animations/view-transition.js +81 -0
- package/animations/view-transition.js.map +1 -0
- package/components/avatar/avatar.js +7 -7
- package/components/avatar/avatar.js.map +1 -1
- package/components/button/button-base.d.ts +1 -1
- package/components/button/button-base.js +7 -5
- package/components/button/button-base.js.map +1 -1
- package/components/button/icon-button.js +9 -9
- package/components/button/icon-button.js.map +1 -1
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/carousel/carousel.js +1 -2
- package/components/carousel/carousel.js.map +1 -1
- package/components/chat/chat-input.js +4 -4
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat.js +6 -6
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/types.js.map +1 -1
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/combo/combo.d.ts +1 -4
- package/components/combo/combo.js +9 -1
- package/components/combo/combo.js.map +1 -1
- package/components/combo/types.d.ts +4 -0
- package/components/combo/types.js.map +1 -1
- package/components/common/context.d.ts +2 -0
- package/components/common/context.js.map +1 -1
- package/components/common/controllers/drag.d.ts +10 -0
- package/components/common/controllers/drag.js +11 -0
- package/components/common/controllers/drag.js.map +1 -1
- package/components/common/controllers/gestures.js.map +1 -1
- package/components/common/controllers/internals.d.ts +9 -0
- package/components/common/controllers/internals.js +4 -0
- package/components/common/controllers/internals.js.map +1 -1
- package/components/common/controllers/mutation-observer.d.ts +2 -2
- package/components/common/controllers/mutation-observer.js +10 -7
- package/components/common/controllers/mutation-observer.js.map +1 -1
- package/components/common/controllers/slot.d.ts +1 -1
- package/components/common/controllers/slot.js +4 -1
- package/components/common/controllers/slot.js.map +1 -1
- package/components/common/i18n/utils.js.map +1 -1
- package/components/common/mixins/forms/associated.d.ts +1 -1
- package/components/common/mixins/forms/associated.js +21 -13
- package/components/common/mixins/forms/associated.js.map +1 -1
- package/components/common/mixins/forms/types.d.ts +2 -1
- package/components/common/mixins/forms/types.js.map +1 -1
- package/components/common/templates/masked-input.d.ts +2 -0
- package/components/common/templates/masked-input.js +2 -1
- package/components/common/templates/masked-input.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +2 -1
- package/components/date-picker/date-picker.js +6 -0
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-range-picker/date-range-mask-parser.d.ts +11 -2
- package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +2 -1
- package/components/date-range-picker/date-range-picker.js +10 -8
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-time-input/date-part.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +15 -0
- package/components/date-time-input/date-time-input.base.js +9 -1
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/dialog/dialog.js +4 -4
- package/components/dialog/dialog.js.map +1 -1
- package/components/file-input/file-input.js.map +1 -1
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.d.ts +3 -2
- package/components/icon/icon.js +7 -2
- package/components/icon/icon.js.map +1 -1
- package/components/input/input-base.d.ts +15 -0
- package/components/input/input-base.js +8 -1
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.js +1 -0
- package/components/input/input.js.map +1 -1
- package/components/mask-input/mask-input.js +1 -0
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/popover/popover.d.ts +10 -1
- package/components/popover/popover.js +31 -14
- package/components/popover/popover.js.map +1 -1
- package/components/popover/themes/light/popover.base.css.js +1 -1
- package/components/popover/themes/light/popover.base.css.js.map +1 -1
- package/components/select/select.d.ts +7 -1
- package/components/select/select.js +12 -1
- package/components/select/select.js.map +1 -1
- package/components/slider/range-slider.js +5 -5
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +9 -9
- package/components/slider/slider-base.js.map +1 -1
- package/components/snackbar/snackbar.js +4 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/splitter/splitter.js.map +1 -1
- package/components/stepper/common/animations.js.map +1 -1
- package/components/stepper/step.js.map +1 -1
- package/components/tabs/tabs.js +29 -10
- package/components/tabs/tabs.js.map +1 -1
- package/components/textarea/textarea.js +1 -0
- package/components/textarea/textarea.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +11 -0
- package/components/tile-manager/tile-manager.js +15 -0
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.js +15 -14
- package/components/tile-manager/tile.js.map +1 -1
- package/components/tooltip/tooltip.js +8 -8
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.js +31 -31
- package/components/tree/tree-item.js.map +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +32 -5
- package/components/validation-container/validation-container.js +74 -64
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +809 -189
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +6 -2
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { EaseOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { fadeOut } from '../../animations/presets/fade/index.js';\nimport { scaleInCenter } from '../../animations/presets/scale/index.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.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 { asNumber, isLTR } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent, {\n type PopoverPlacement,\n} from '../popover/popover.js';\nimport { addTooltipController, TooltipRegexes } from './controller.js';\nimport { styles as shared } from './themes/shared/tooltip.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/tooltip.base.css.js';\n\nexport interface IgcTooltipComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n}\n\ntype TooltipStateOptions = {\n show: boolean;\n withDelay?: boolean;\n withEvents?: boolean;\n};\n\n/**\n * Provides a way to display supplementary information related to an element when a user interacts with it (e.g., hover, focus).\n * It offers features such as placement customization, delays, sticky mode, and animations.\n *\n * @element igc-tooltip\n *\n * @slot - Default slot of the tooltip component.\n * @slot close-button - Slot for custom sticky-mode close action (e.g., an icon/button).\n *\n * @csspart base - The wrapping container of the tooltip content.\n * @csspart simple-text - The container where the message property of the tooltip is rendered.\n *\n * @fires igcOpening - Emitted before the tooltip begins to open. Can be canceled to prevent opening.\n * @fires igcOpened - Emitted after the tooltip has successfully opened and is visible.\n * @fires igcClosing - Emitted before the tooltip begins to close. Can be canceled to prevent closing.\n * @fires igcClosed - Emitted after the tooltip has been fully removed from view.\n */\nexport default class IgcTooltipComponent extends EventEmitterMixin<\n IgcTooltipComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tooltip';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTooltipComponent,\n IgcPopoverComponent,\n IgcIconComponent\n );\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: {\n role: 'tooltip',\n ariaAtomic: 'true',\n ariaLive: 'polite',\n },\n });\n\n private readonly _controller = addTooltipController(this, {\n onShow: this._showOnInteraction,\n onHide: this._hideOnInteraction,\n onEscape: this._hideOnEscape,\n onClick: this._stopTimeoutAndAnimation,\n });\n\n private readonly _containerRef = createRef<HTMLElement>();\n private readonly _player = addAnimationController(this, this._containerRef);\n private readonly _slots = addSlotController(this, {\n slots: setSlots('close-button'),\n });\n\n private readonly _showAnimation = scaleInCenter({\n duration: 150,\n easing: EaseOut.Quad,\n });\n\n private readonly _hideAnimation = fadeOut({\n duration: 75,\n easing: EaseOut.Sine,\n });\n\n private _timeoutId?: number;\n private _autoHideDelay = 180;\n private _showDelay = 200;\n private _hideDelay = 300;\n\n @query('#arrow')\n private _arrowElement!: HTMLElement;\n\n private get _arrowOffset() {\n if (this.placement.includes('-')) {\n // Horizontal start | end placement\n\n if (TooltipRegexes.horizontalStart.test(this.placement)) {\n return -8;\n }\n\n if (TooltipRegexes.horizontalEnd.test(this.placement)) {\n return 8;\n }\n\n // Vertical start | end placement\n\n if (TooltipRegexes.start.test(this.placement)) {\n return isLTR(this) ? -8 : 8;\n }\n\n if (TooltipRegexes.end.test(this.placement)) {\n return isLTR(this) ? 8 : -8;\n }\n }\n\n return 0;\n }\n\n /**\n * Whether the tooltip is showing.\n *\n * @attr open\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public set open(value: boolean) {\n this._controller.open = value;\n }\n\n public get open(): boolean {\n return this._controller.open;\n }\n\n /**\n * Whether to render an arrow indicator for the tooltip.\n *\n * @attr with-arrow\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'with-arrow' })\n public withArrow = false;\n\n /**\n * The offset of the tooltip from the anchor in pixels.\n *\n * @attr offset\n * @default 6\n */\n @property({ type: Number })\n public offset = 6;\n\n /**\n * Where to place the floating element relative to the parent anchor element.\n *\n * @attr placement\n * @default bottom\n */\n @property()\n public placement: PopoverPlacement = 'bottom';\n\n /**\n * An element instance or an IDREF to use as the anchor for the tooltip.\n *\n * @remarks\n * Trying to bind to an IDREF that does not exist in the current DOM root at will not work.\n * In such scenarios, it is better to get a DOM reference and pass it to the tooltip instance.\n *\n * @attr anchor\n */\n @property()\n public anchor?: Element | string;\n\n /**\n * Which event triggers will show the tooltip.\n * Expects a comma separate string of different event triggers.\n *\n * @attr show-triggers\n * @default pointerenter\n */\n @property({ attribute: 'show-triggers' })\n public set showTriggers(value: string) {\n this._controller.showTriggers = value;\n }\n\n public get showTriggers(): string {\n return this._controller.showTriggers;\n }\n\n /**\n * Which event triggers will hide the tooltip.\n * Expects a comma separate string of different event triggers.\n *\n * @attr hide-triggers\n * @default pointerleave, click\n */\n @property({ attribute: 'hide-triggers' })\n public set hideTriggers(value: string) {\n this._controller.hideTriggers = value;\n }\n\n public get hideTriggers(): string {\n return this._controller.hideTriggers;\n }\n\n /**\n * Specifies the number of milliseconds that should pass before showing the tooltip.\n *\n * @attr show-delay\n * @default 200\n */\n @property({ attribute: 'show-delay', type: Number })\n public set showDelay(value: number) {\n this._showDelay = Math.max(0, asNumber(value));\n }\n\n public get showDelay(): number {\n return this._showDelay;\n }\n\n /**\n * Specifies the number of milliseconds that should pass before hiding the tooltip.\n *\n * @attr hide-delay\n * @default 300\n */\n @property({ attribute: 'hide-delay', type: Number })\n public set hideDelay(value: number) {\n this._hideDelay = Math.max(0, asNumber(value));\n }\n\n public get hideDelay(): number {\n return this._hideDelay;\n }\n\n /**\n * Specifies a plain text as tooltip content.\n *\n * @attr message\n */\n @property()\n public message = '';\n\n /**\n * Specifies if the tooltip remains visible until the user closes it via the close button or Esc key.\n *\n * @attr sticky\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public sticky = false;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n if (this.open) {\n this.updateComplete.then(() => {\n this._player.playExclusive(this._showAnimation);\n this.requestUpdate();\n });\n }\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('anchor')) {\n this._controller.resolveAnchor(this.anchor);\n }\n\n if (changedProperties.has('sticky')) {\n this._internals.setARIA({ role: this.sticky ? 'status' : 'tooltip' });\n }\n }\n\n private _emitEvent(name: keyof IgcTooltipComponentEventMap): boolean {\n return this.emitEvent(name, {\n cancelable: name === 'igcOpening' || name === 'igcClosing',\n });\n }\n\n private async _applyTooltipState({\n show,\n withDelay = false,\n withEvents = false,\n }: TooltipStateOptions): Promise<boolean> {\n if (show === this.open) {\n return false;\n }\n\n if (withEvents && !this._emitEvent(show ? 'igcOpening' : 'igcClosing')) {\n return false;\n }\n\n const commitStateChange = async () => {\n if (show) {\n this.open = true;\n }\n\n // Make the tooltip ignore most interactions while the animation\n // is running. In the rare case when the popover overlaps its anchor\n // this will prevent looping between the anchor and tooltip handlers.\n this.inert = true;\n\n const animationComplete = await this._player.playExclusive(\n show ? this._showAnimation : this._hideAnimation\n );\n\n this.inert = false;\n this.open = show;\n\n if (animationComplete && withEvents) {\n this._emitEvent(show ? 'igcOpened' : 'igcClosed');\n }\n\n return animationComplete;\n };\n\n if (withDelay) {\n clearTimeout(this._timeoutId);\n\n return new Promise(() => {\n this._timeoutId = setTimeout(\n async () => await commitStateChange(),\n show ? this.showDelay : this.hideDelay\n );\n });\n }\n\n return commitStateChange();\n }\n\n /**\n * Shows the tooltip if not already showing.\n * If a target is provided, sets it as a transient anchor.\n */\n public async show(target?: Element | string): Promise<boolean> {\n if (target) {\n this._stopTimeoutAndAnimation();\n this._controller.setAnchor(target, true);\n }\n\n return await this._applyTooltipState({ show: true });\n }\n\n /** Hides the tooltip if not already hidden. */\n public async hide(): Promise<boolean> {\n return await this._applyTooltipState({ show: false });\n }\n\n /** Toggles the tooltip between shown/hidden state */\n public async toggle(): Promise<boolean> {\n return await (this.open ? this.hide() : this.show());\n }\n\n protected _showWithEvent(): Promise<boolean> {\n return this._applyTooltipState({\n show: true,\n withDelay: true,\n withEvents: true,\n });\n }\n\n protected _hideWithEvent(): Promise<boolean> {\n return this._applyTooltipState({\n show: false,\n withDelay: true,\n withEvents: true,\n });\n }\n\n private _showOnInteraction(): void {\n this._stopTimeoutAndAnimation();\n this._showWithEvent();\n }\n\n private _stopTimeoutAndAnimation(): void {\n clearTimeout(this._timeoutId);\n this._player.cancelAll();\n }\n\n private _setAutoHide(): void {\n this._stopTimeoutAndAnimation();\n\n this._timeoutId = setTimeout(\n this._hideWithEvent.bind(this),\n this._autoHideDelay\n );\n }\n\n private _hideOnInteraction(): void {\n if (!this.sticky) {\n this._setAutoHide();\n }\n }\n\n private async _hideOnEscape(): Promise<void> {\n await this.hide();\n this._emitEvent('igcClosed');\n }\n\n protected override render() {\n const parts = {\n base: true,\n 'simple-text': !this._slots.hasAssignedNodes('[default]', true),\n };\n\n return html`\n <igc-popover\n .inert=${!this.open}\n .placement=${this.placement}\n .offset=${this.offset}\n .anchor=${this._controller.anchor ?? undefined}\n .arrow=${this.withArrow ? this._arrowElement : null}\n .arrowOffset=${this._arrowOffset}\n .shiftPadding=${8}\n ?open=${this.open}\n flip\n shift\n >\n <div ${ref(this._containerRef)} part=${partMap(parts)}>\n <slot>${this.message}</slot>\n ${this.sticky\n ? html`\n <slot name=\"close-button\" @click=${this._setAutoHide}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n `\n : nothing}\n ${this.withArrow ? html`<div id=\"arrow\"></div>` : nothing}\n </div>\n </igc-popover>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tooltip': IgcTooltipComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/components/tooltip/tooltip.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { EaseOut } from '../../animations/easings.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { fadeOut } from '../../animations/presets/fade/index.js';\nimport { scaleInCenter } from '../../animations/presets/scale/index.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { addInternalsController } from '../common/controllers/internals.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 { asNumber, isLTR } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent, {\n type PopoverPlacement,\n} from '../popover/popover.js';\nimport { addTooltipController, TooltipRegexes } from './controller.js';\nimport { styles as shared } from './themes/shared/tooltip.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/tooltip.base.css.js';\n\nexport interface IgcTooltipComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n}\n\ntype TooltipStateOptions = {\n show: boolean;\n withDelay?: boolean;\n withEvents?: boolean;\n};\n\n/**\n * Provides a way to display supplementary information related to an element when a user interacts with it (e.g., hover, focus).\n * It offers features such as placement customization, delays, sticky mode, and animations.\n *\n * @element igc-tooltip\n *\n * @slot - Default slot of the tooltip component.\n * @slot close-button - Slot for custom sticky-mode close action (e.g., an icon/button).\n *\n * @csspart base - The wrapping container of the tooltip content.\n * @csspart simple-text - The container where the message property of the tooltip is rendered.\n *\n * @fires igcOpening - Emitted before the tooltip begins to open. Can be canceled to prevent opening.\n * @fires igcOpened - Emitted after the tooltip has successfully opened and is visible.\n * @fires igcClosing - Emitted before the tooltip begins to close. Can be canceled to prevent closing.\n * @fires igcClosed - Emitted after the tooltip has been fully removed from view.\n */\nexport default class IgcTooltipComponent extends EventEmitterMixin<\n IgcTooltipComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tooltip';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTooltipComponent,\n IgcPopoverComponent,\n IgcIconComponent\n );\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: {\n role: 'tooltip',\n ariaAtomic: 'true',\n ariaLive: 'polite',\n },\n });\n\n private readonly _controller = addTooltipController(this, {\n onShow: this._showOnInteraction,\n onHide: this._hideOnInteraction,\n onEscape: this._hideOnEscape,\n onClick: this._stopTimeoutAndAnimation,\n });\n\n private readonly _containerRef = createRef<HTMLElement>();\n private readonly _player = addAnimationController(this, this._containerRef);\n private readonly _slots = addSlotController(this, {\n slots: setSlots('close-button'),\n });\n\n private readonly _showAnimation = scaleInCenter({\n duration: 150,\n easing: EaseOut.Quad,\n });\n\n private readonly _hideAnimation = fadeOut({\n duration: 75,\n easing: EaseOut.Sine,\n });\n\n private _timeoutId?: number;\n private _autoHideDelay = 180;\n private _showDelay = 200;\n private _hideDelay = 300;\n\n @query('#arrow')\n private _arrowElement!: HTMLElement;\n\n private get _arrowOffset() {\n if (this.placement.includes('-')) {\n // Horizontal start | end placement\n\n if (TooltipRegexes.horizontalStart.test(this.placement)) {\n return -8;\n }\n\n if (TooltipRegexes.horizontalEnd.test(this.placement)) {\n return 8;\n }\n\n // Vertical start | end placement\n\n if (TooltipRegexes.start.test(this.placement)) {\n return isLTR(this) ? -8 : 8;\n }\n\n if (TooltipRegexes.end.test(this.placement)) {\n return isLTR(this) ? 8 : -8;\n }\n }\n\n return 0;\n }\n\n /**\n * Whether the tooltip is showing.\n *\n * @attr open\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public set open(value: boolean) {\n this._controller.open = value;\n }\n\n public get open(): boolean {\n return this._controller.open;\n }\n\n /**\n * Whether to render an arrow indicator for the tooltip.\n *\n * @attr with-arrow\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'with-arrow' })\n public withArrow = false;\n\n /**\n * The offset of the tooltip from the anchor in pixels.\n *\n * @attr offset\n * @default 6\n */\n @property({ type: Number })\n public offset = 6;\n\n /**\n * Where to place the floating element relative to the parent anchor element.\n *\n * @attr placement\n * @default bottom\n */\n @property()\n public placement: PopoverPlacement = 'bottom';\n\n /**\n * An element instance or an IDREF to use as the anchor for the tooltip.\n *\n * @remarks\n * Trying to bind to an IDREF that does not exist in the current DOM root at will not work.\n * In such scenarios, it is better to get a DOM reference and pass it to the tooltip instance.\n *\n * @attr anchor\n */\n @property()\n public anchor?: Element | string;\n\n /**\n * Which event triggers will show the tooltip.\n * Expects a comma separate string of different event triggers.\n *\n * @attr show-triggers\n * @default pointerenter\n */\n @property({ attribute: 'show-triggers' })\n public set showTriggers(value: string) {\n this._controller.showTriggers = value;\n }\n\n public get showTriggers(): string {\n return this._controller.showTriggers;\n }\n\n /**\n * Which event triggers will hide the tooltip.\n * Expects a comma separate string of different event triggers.\n *\n * @attr hide-triggers\n * @default pointerleave, click\n */\n @property({ attribute: 'hide-triggers' })\n public set hideTriggers(value: string) {\n this._controller.hideTriggers = value;\n }\n\n public get hideTriggers(): string {\n return this._controller.hideTriggers;\n }\n\n /**\n * Specifies the number of milliseconds that should pass before showing the tooltip.\n *\n * @attr show-delay\n * @default 200\n */\n @property({ attribute: 'show-delay', type: Number })\n public set showDelay(value: number) {\n this._showDelay = Math.max(0, asNumber(value));\n }\n\n public get showDelay(): number {\n return this._showDelay;\n }\n\n /**\n * Specifies the number of milliseconds that should pass before hiding the tooltip.\n *\n * @attr hide-delay\n * @default 300\n */\n @property({ attribute: 'hide-delay', type: Number })\n public set hideDelay(value: number) {\n this._hideDelay = Math.max(0, asNumber(value));\n }\n\n public get hideDelay(): number {\n return this._hideDelay;\n }\n\n /**\n * Specifies a plain text as tooltip content.\n *\n * @attr message\n */\n @property()\n public message = '';\n\n /**\n * Specifies if the tooltip remains visible until the user closes it via the close button or Esc key.\n *\n * @attr sticky\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public sticky = false;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n if (this.open) {\n this.updateComplete.then(() => {\n this._player.playExclusive(this._showAnimation);\n this.requestUpdate();\n });\n }\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('anchor')) {\n this._controller.resolveAnchor(this.anchor);\n }\n\n if (changedProperties.has('sticky')) {\n this._internals.setARIA({ role: this.sticky ? 'status' : 'tooltip' });\n }\n }\n\n private _emitEvent(name: keyof IgcTooltipComponentEventMap): boolean {\n return this.emitEvent(name, {\n cancelable: name === 'igcOpening' || name === 'igcClosing',\n });\n }\n\n private async _applyTooltipState({\n show,\n withDelay = false,\n withEvents = false,\n }: TooltipStateOptions): Promise<boolean> {\n if (show === this.open) {\n return false;\n }\n\n if (withEvents && !this._emitEvent(show ? 'igcOpening' : 'igcClosing')) {\n return false;\n }\n\n const commitStateChange = async () => {\n if (show) {\n this.open = true;\n }\n\n // Make the tooltip ignore most interactions while the animation\n // is running. In the rare case when the popover overlaps its anchor\n // this will prevent looping between the anchor and tooltip handlers.\n this.inert = true;\n\n const animationComplete = await this._player.playExclusive(\n show ? this._showAnimation : this._hideAnimation\n );\n\n this.inert = false;\n this.open = show;\n\n if (animationComplete && withEvents) {\n this._emitEvent(show ? 'igcOpened' : 'igcClosed');\n }\n\n return animationComplete;\n };\n\n if (withDelay) {\n clearTimeout(this._timeoutId);\n\n return new Promise(() => {\n this._timeoutId = setTimeout(\n async () => await commitStateChange(),\n show ? this.showDelay : this.hideDelay\n );\n });\n }\n\n return commitStateChange();\n }\n\n /**\n * Shows the tooltip if not already showing.\n * If a target is provided, sets it as a transient anchor.\n */\n public async show(target?: Element | string): Promise<boolean> {\n if (target) {\n this._stopTimeoutAndAnimation();\n this._controller.setAnchor(target, true);\n }\n\n return await this._applyTooltipState({ show: true });\n }\n\n /** Hides the tooltip if not already hidden. */\n public async hide(): Promise<boolean> {\n return await this._applyTooltipState({ show: false });\n }\n\n /** Toggles the tooltip between shown/hidden state */\n public async toggle(): Promise<boolean> {\n return await (this.open ? this.hide() : this.show());\n }\n\n protected _showWithEvent(): Promise<boolean> {\n return this._applyTooltipState({\n show: true,\n withDelay: true,\n withEvents: true,\n });\n }\n\n protected _hideWithEvent(): Promise<boolean> {\n return this._applyTooltipState({\n show: false,\n withDelay: true,\n withEvents: true,\n });\n }\n\n private _showOnInteraction(): void {\n this._stopTimeoutAndAnimation();\n this._showWithEvent();\n }\n\n private _stopTimeoutAndAnimation(): void {\n clearTimeout(this._timeoutId);\n this._player.cancelAll();\n }\n\n private _setAutoHide(): void {\n this._stopTimeoutAndAnimation();\n\n this._timeoutId = setTimeout(\n this._hideWithEvent.bind(this),\n this._autoHideDelay\n );\n }\n\n private _hideOnInteraction(): void {\n if (!this.sticky) {\n this._setAutoHide();\n }\n }\n\n private async _hideOnEscape(): Promise<void> {\n await this.hide();\n this._emitEvent('igcClosed');\n }\n\n protected override render() {\n const parts = {\n base: true,\n 'simple-text': !this._slots.hasAssignedNodes('[default]', true),\n };\n\n return html`\n <igc-popover\n .inert=${!this.open}\n .placement=${this.placement}\n .offset=${this.offset}\n .anchor=${this._controller.anchor ?? undefined}\n .arrow=${this.withArrow ? this._arrowElement : null}\n .arrowOffset=${this._arrowOffset}\n .shiftPadding=${8}\n ?open=${this.open}\n flip\n shift\n >\n <div ${ref(this._containerRef)} part=${partMap(parts)}>\n <slot>${this.message}</slot>\n ${\n this.sticky\n ? html`\n <slot name=\"close-button\" @click=${this._setAutoHide}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n `\n : nothing\n }\n ${this.withArrow ? html`<div id=\"arrow\"></div>` : nothing}\n </div>\n </igc-popover>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tooltip': IgcTooltipComponent;\n }\n}\n"]}
|
|
@@ -335,47 +335,47 @@ export default class IgcTreeItemComponent extends LitElement {
|
|
|
335
335
|
<div part=${partMap(indicatorParts)} aria-hidden="true">
|
|
336
336
|
${this.loading
|
|
337
337
|
? html `
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
338
|
+
<slot name="loading">
|
|
339
|
+
<igc-circular-progress
|
|
340
|
+
indeterminate
|
|
341
|
+
></igc-circular-progress>
|
|
342
|
+
</slot>
|
|
343
|
+
`
|
|
342
344
|
: html `
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
345
|
+
<slot
|
|
346
|
+
name="indicator"
|
|
347
|
+
@click=${this.tree?.toggleNodeOnClick
|
|
346
348
|
? nothing
|
|
347
349
|
: this.expandIndicatorClick}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
>
|
|
351
|
+
${this.hasChildren
|
|
350
352
|
? html `
|
|
351
|
-
|
|
352
|
-
|
|
353
|
+
<igc-icon
|
|
354
|
+
aria-label=${ifDefined(this.expanded
|
|
353
355
|
? this.tree?.resourceStrings.collapse
|
|
354
356
|
: this.tree?.resourceStrings.expand)}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
</igc-icon>
|
|
361
|
-
`
|
|
357
|
+
name=${this.expanded ? 'tree_collapse' : 'tree_expand'}
|
|
358
|
+
collection="default"
|
|
359
|
+
>
|
|
360
|
+
</igc-icon>
|
|
361
|
+
`
|
|
362
362
|
: ''}
|
|
363
|
-
|
|
364
|
-
|
|
363
|
+
</slot>
|
|
364
|
+
`}
|
|
365
365
|
</div>
|
|
366
366
|
${this.tree?.selection !== 'none'
|
|
367
367
|
? html `
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
368
|
+
<div part="select" aria-hidden="true">
|
|
369
|
+
<igc-checkbox
|
|
370
|
+
@click=${this.selectorClick}
|
|
371
|
+
.checked=${this.selected}
|
|
372
|
+
.indeterminate=${this.indeterminate}
|
|
373
|
+
.disabled=${this.disabled}
|
|
374
|
+
tabindex="-1"
|
|
375
|
+
>
|
|
376
|
+
</igc-checkbox>
|
|
377
|
+
</div>
|
|
378
|
+
`
|
|
379
379
|
: ''}
|
|
380
380
|
<div part="label">
|
|
381
381
|
<slot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-item.js","sourceRoot":"","sources":["../../../src/components/tree/tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { growVerIn, growVerOut } from '../../animations/presets/grow/index.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCheckboxComponent from '../checkbox/checkbox.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n getElementFromPath,\n isLTR,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcCircularProgressComponent from '../progress/circular-progress.js';\nimport { styles } from './themes/item.base.css.js';\nimport { all } from './themes/item.js';\nimport { styles as shared } from './themes/shared/item.common.css.js';\nimport type IgcTreeComponent from './tree.js';\nimport type { IgcTreeNavigationService } from './tree.navigation.js';\nimport type { IgcTreeSelectionService } from './tree.selection.js';\n\n/**\n * The tree-item component represents a child item of the tree component or another tree item.\n *\n * @element igc-tree-item\n *\n * @slot - Renders nested tree-item component.\n * @slot label - Renders the tree item container.\n * @slot indicator - Renders the expand indicator container.\n * @slot loading - Renders the tree item loading indicator container.\n * @slot indentation - Renders the container (by default the space) before the tree item.\n *\n * @csspart wrapper - The wrapper for the tree item.\n * @csspart selected - Indicates selected state. Applies to `wrapper`.\n * @csspart focused - Indicates focused state. Applies to `wrapper`.\n * @csspart active - Indicates an active state. Applies to `wrapper`.\n * @csspart indicator - The expand indicator of the tree item.\n * @csspart label - The tree item content.\n * @csspart text - The tree item displayed text.\n * @csspart select - The checkbox of the tree item when selection is enabled.\n */\nexport default class IgcTreeItemComponent extends LitElement {\n public static readonly tagName = 'igc-tree-item';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcTreeItemComponent,\n IgcIconComponent,\n IgcCheckboxComponent,\n IgcCircularProgressComponent\n );\n }\n\n private tabbableEl?: HTMLElement[];\n private focusedProgrammatically = false;\n\n private groupRef: Ref<HTMLElement> = createRef();\n\n private animationPlayer = addAnimationController(this, this.groupRef);\n\n /* blazorSuppress */\n /** A reference to the tree the item is a part of. */\n public tree?: IgcTreeComponent;\n /** The parent item of the current tree item (if any) */\n public parent: IgcTreeItemComponent | null = null;\n\n /** @private @hidden @internal */\n public init = false;\n\n @queryAssignedElements({ slot: 'label', flatten: true })\n private contentList!: Array<HTMLElement>;\n\n /** @private @hidden @internal */\n @query('#wrapper')\n public wrapper!: HTMLElement;\n\n @state()\n private isFocused = false;\n\n /** @private @hidden @internal */\n @state()\n public hasChildren = false;\n\n /** The depth of the item, relative to the root. */\n @state()\n public level = 0;\n\n /** @private @hidden @internal */\n @state()\n public indeterminate = false;\n\n /**\n * The tree item label.\n * @attr\n */\n @property()\n public label = '';\n\n /**\n * The tree item expansion state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public expanded = false;\n\n /**\n * Marks the item as the tree's active item.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public active = false;\n\n /**\n * Get/Set whether the tree item is disabled. Disabled items are ignored for user interactions.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public disabled = false;\n\n /**\n * The tree item selection state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public selected = false;\n\n /**\n * To be used for load-on-demand scenarios in order to specify whether the item is loading data.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public loading = false;\n\n /**\n * The value entry that the tree item is visualizing. Required for searching through items.\n * @type any\n * @attr\n */\n @property({ attribute: true })\n public value: any = undefined;\n\n private async toggleAnimation(dir: 'open' | 'close') {\n const animation = dir === 'open' ? growVerIn : growVerOut;\n return this.animationPlayer.playExclusive(animation());\n }\n\n @watch('expanded', { waitUntilFirstUpdate: true })\n @watch('hasChildren', { waitUntilFirstUpdate: true })\n protected bothChange(): void {\n if (this.hasChildren) {\n this.setAttribute('aria-expanded', this.expanded.toString());\n } else {\n this.removeAttribute('aria-expanded');\n }\n }\n\n @watch('expanded')\n protected expandedChange(oldValue: boolean): void {\n // always update the visible cache\n this.navService?.update_visible_cache(this, this.expanded);\n if (!oldValue) {\n return;\n }\n // await for load on demand children\n Promise.resolve().then(() => {\n if (this.navService?.focusedItem !== this && !this.isFocused) {\n this.navService?.focusedItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n });\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChange(): void {\n if ((this.active && this.navService?.activeItem === this) || !this.active) {\n return;\n }\n if (this.navService) {\n this.navService.setActiveItem(this, false);\n }\n // Expand and scroll to the newly active item\n this.tree?.expandToItem(this);\n // Await for expanding\n Promise.resolve().then(() => {\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n });\n }\n\n @watch('disabled')\n protected disabledChange(): void {\n this.navService?.update_disabled_cache(this);\n }\n\n @watch('selected', { waitUntilFirstUpdate: true })\n protected selectedChange(): void {\n if (this.selected && !this.selectionService?.isItemSelected(this)) {\n this.selectionService?.selectItemsWithNoEvent([this]);\n }\n if (!this.selected && this.selectionService?.isItemSelected(this)) {\n this.selectionService?.deselectItemsWithNoEvent([this]);\n }\n }\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'click', this.itemClick);\n addSafeEventListener(this, 'focus', this.onFocus);\n addSafeEventListener(this, 'blur', this.onBlur);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.tree = this.closest('igc-tree') as IgcTreeComponent;\n this.parent = this.parentElement?.closest(\n 'igc-tree-item'\n ) as IgcTreeItemComponent | null;\n this.level = this.parent ? this.parent.level + 1 : 0;\n this.setAttribute('role', 'treeitem');\n this.activeChange();\n // if the item is not added/moved runtime\n if (this.init) {\n this.selectedChange();\n } else {\n // retriger the item selection state in order to update the collections within the selectionService\n // and to handle correctly the itemParents recursively to the top-most ancestor\n this.selectionService?.retriggerItemState(this);\n }\n this.init = false;\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.selectionService?.ensureStateOnItemDelete(this);\n this.navService?.delete_item(this);\n }\n\n private get selectionService(): IgcTreeSelectionService | undefined {\n return this.tree?.selectionService;\n }\n\n private get navService(): IgcTreeNavigationService | undefined {\n return this.tree?.navService;\n }\n\n private get parts() {\n return {\n wrapper: true,\n selected: this.selected,\n focused: this.isFocused,\n active: this.active,\n };\n }\n\n private get directChildren(): Array<IgcTreeItemComponent> {\n return this.allChildren.filter(\n (x) => (x.parent ?? x.parentElement?.closest('igc-tree-item')) === this\n ) as IgcTreeItemComponent[];\n }\n\n private get allChildren(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll('igc-tree-item'));\n }\n\n /** The full path to the tree item, starting from the top-most ancestor. */\n public get path(): IgcTreeItemComponent[] {\n return this.parent?.path ? [...this.parent.path, this] : [this];\n }\n\n private itemClick(event: MouseEvent): void {\n if (this.disabled || this !== getElementFromPath(this.tagName, event)) {\n return;\n }\n this.tabIndex = 0;\n if (this.tree?.toggleNodeOnClick && event.button === 0) {\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n this.navService?.setFocusedAndActiveItem(this, true, true);\n }\n\n private expandIndicatorClick(): void {\n if (this.disabled) {\n return;\n }\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n\n private selectorClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.tree?.toggleNodeOnClick) {\n event.stopPropagation();\n }\n if (event.shiftKey) {\n this.selectionService?.selectMultipleItems(this);\n return;\n }\n if (this.selected) {\n this.selectionService?.deselectItem(this);\n } else {\n this.selectionService?.selectItem(this);\n }\n }\n\n private onFocus(): void {\n if (this.disabled) {\n return;\n }\n if (this.navService?.focusedItem !== this) {\n this.navService?.focusItem(this, false);\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n if (this.tabbableEl?.length) {\n // set tabIndex = 0 to all tabbable elements\n // focus the first one\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n this.focusedProgrammatically = true;\n this.tabbableEl[0].focus();\n return;\n }\n this.isFocused = true;\n }\n\n private onBlur(): void {\n this.isFocused = false;\n }\n\n private onFocusIn(ev: Event): void {\n ev?.stopPropagation();\n if (!this.disabled) {\n // clicking directly over tabbable element when the item is not focused\n if (!this.focusedProgrammatically) {\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n }\n this.removeAttribute('tabIndex');\n this.isFocused = true;\n this.focusedProgrammatically = false;\n }\n }\n\n private onFocusOut(ev: Event): void {\n ev?.stopPropagation();\n this.isFocused = false;\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n\n if (this.navService?.focusedItem === this) {\n // called twice when clicking on already focused item with link (itemClick handler)\n this.setAttribute('tabindex', '0');\n }\n }\n\n private labelChange(): void {\n const firstElement = this.contentList[0];\n const tabbableSelector =\n 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n this.tabbableEl = [\n ...firstElement.querySelectorAll<HTMLElement>(tabbableSelector),\n ];\n if (firstElement.matches(tabbableSelector)) {\n this.tabbableEl.splice(0, 0, firstElement);\n }\n\n if (this.tabbableEl?.length) {\n this.setAttribute('role', 'none');\n this.tabbableEl[0].setAttribute('role', 'treeitem');\n\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n } else {\n this.setAttribute('role', 'treeitem');\n }\n }\n\n private handleChange(): void {\n this.hasChildren = !!this.directChildren.length;\n // there is no need to update nested children beacuse they're state is already up to date\n this.navService?.update_visible_cache(this, this.expanded, false);\n }\n\n /* blazorSuppress */\n /**\n * Returns a collection of child items.\n * If the parameter value is true returns all tree item's direct children,\n * otherwise - only the direct children.\n */\n public getChildren(\n options: { flatten: boolean } = { flatten: false }\n ): IgcTreeItemComponent[] {\n if (options.flatten) {\n return this.allChildren;\n }\n return this.directChildren;\n }\n\n /**\n * @private\n * Expands the tree item.\n */\n public async expandWithEvent() {\n if (this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemExpanding', args);\n\n if (!allowed) {\n return;\n }\n\n if (this.tree?.singleBranchExpand) {\n const pathSet = new Set(this.path.splice(0, this.path.length - 1));\n this.tree.items.forEach((item: IgcTreeItemComponent) => {\n if (!pathSet.has(item)) {\n item.collapseWithEvent();\n }\n });\n }\n\n this.expanded = true;\n if (await this.toggleAnimation('open')) {\n this.tree?.emitEvent('igcItemExpanded', { detail: this });\n }\n }\n\n /**\n * @private\n * Collapses the tree item.\n */\n public async collapseWithEvent() {\n if (!this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemCollapsing', args);\n\n if (!allowed) {\n return;\n }\n\n this.expanded = false;\n if (await this.toggleAnimation('close')) {\n this.tree?.emitEvent('igcItemCollapsed', { detail: this });\n }\n }\n\n /** Toggles tree item expansion state. */\n public toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Expands the tree item. */\n public expand(): void {\n this.expanded = true;\n }\n\n /** Collapses the tree item. */\n public collapse(): void {\n this.expanded = false;\n }\n\n protected override render() {\n const indicatorParts = {\n indicator: true,\n rtl: !(this.tree ? isLTR(this.tree) : true),\n };\n\n return html`\n <div id=\"wrapper\" part=${partMap(this.parts)}>\n <div\n style=\"width: calc(${this.level} * var(--igc-tree-indentation-size))\"\n part=\"indentation\"\n aria-hidden=\"true\"\n >\n <slot name=\"indentation\"></slot>\n </div>\n <div part=${partMap(indicatorParts)} aria-hidden=\"true\">\n ${this.loading\n ? html`\n <slot name=\"loading\">\n <igc-circular-progress indeterminate></igc-circular-progress>\n </slot>\n `\n : html`\n <slot\n name=\"indicator\"\n @click=${this.tree?.toggleNodeOnClick\n ? nothing\n : this.expandIndicatorClick}\n >\n ${this.hasChildren\n ? html`\n <igc-icon\n aria-label=${ifDefined(\n this.expanded\n ? this.tree?.resourceStrings.collapse\n : this.tree?.resourceStrings.expand\n )}\n name=${this.expanded\n ? 'tree_collapse'\n : 'tree_expand'}\n collection=\"default\"\n >\n </igc-icon>\n `\n : ''}\n </slot>\n `}\n </div>\n ${this.tree?.selection !== 'none'\n ? html`\n <div part=\"select\" aria-hidden=\"true\">\n <igc-checkbox\n @click=${this.selectorClick}\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n .disabled=${this.disabled}\n tabindex=\"-1\"\n >\n </igc-checkbox>\n </div>\n `\n : ''}\n <div part=\"label\">\n <slot\n name=\"label\"\n @slotchange=${this.labelChange}\n @focusin=${this.onFocusIn}\n @focusout=${this.onFocusOut}\n >\n <span part=\"text\">${this.label}</span>\n </slot>\n </div>\n </div>\n <div ${ref(this.groupRef)} role=\"group\" aria-hidden=${!this.expanded}>\n <slot @slotchange=${this.handleChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree-item': IgcTreeItemComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tree-item.js","sourceRoot":"","sources":["../../../src/components/tree/tree-item.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\nimport { addAnimationController } from '../../animations/player.js';\nimport { growVerIn, growVerOut } from '../../animations/presets/grow/index.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCheckboxComponent from '../checkbox/checkbox.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n getElementFromPath,\n isLTR,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcCircularProgressComponent from '../progress/circular-progress.js';\nimport { styles } from './themes/item.base.css.js';\nimport { all } from './themes/item.js';\nimport { styles as shared } from './themes/shared/item.common.css.js';\nimport type IgcTreeComponent from './tree.js';\nimport type { IgcTreeNavigationService } from './tree.navigation.js';\nimport type { IgcTreeSelectionService } from './tree.selection.js';\n\n/**\n * The tree-item component represents a child item of the tree component or another tree item.\n *\n * @element igc-tree-item\n *\n * @slot - Renders nested tree-item component.\n * @slot label - Renders the tree item container.\n * @slot indicator - Renders the expand indicator container.\n * @slot loading - Renders the tree item loading indicator container.\n * @slot indentation - Renders the container (by default the space) before the tree item.\n *\n * @csspart wrapper - The wrapper for the tree item.\n * @csspart selected - Indicates selected state. Applies to `wrapper`.\n * @csspart focused - Indicates focused state. Applies to `wrapper`.\n * @csspart active - Indicates an active state. Applies to `wrapper`.\n * @csspart indicator - The expand indicator of the tree item.\n * @csspart label - The tree item content.\n * @csspart text - The tree item displayed text.\n * @csspart select - The checkbox of the tree item when selection is enabled.\n */\nexport default class IgcTreeItemComponent extends LitElement {\n public static readonly tagName = 'igc-tree-item';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcTreeItemComponent,\n IgcIconComponent,\n IgcCheckboxComponent,\n IgcCircularProgressComponent\n );\n }\n\n private tabbableEl?: HTMLElement[];\n private focusedProgrammatically = false;\n\n private groupRef: Ref<HTMLElement> = createRef();\n\n private animationPlayer = addAnimationController(this, this.groupRef);\n\n /* blazorSuppress */\n /** A reference to the tree the item is a part of. */\n public tree?: IgcTreeComponent;\n /** The parent item of the current tree item (if any) */\n public parent: IgcTreeItemComponent | null = null;\n\n /** @private @hidden @internal */\n public init = false;\n\n @queryAssignedElements({ slot: 'label', flatten: true })\n private contentList!: Array<HTMLElement>;\n\n /** @private @hidden @internal */\n @query('#wrapper')\n public wrapper!: HTMLElement;\n\n @state()\n private isFocused = false;\n\n /** @private @hidden @internal */\n @state()\n public hasChildren = false;\n\n /** The depth of the item, relative to the root. */\n @state()\n public level = 0;\n\n /** @private @hidden @internal */\n @state()\n public indeterminate = false;\n\n /**\n * The tree item label.\n * @attr\n */\n @property()\n public label = '';\n\n /**\n * The tree item expansion state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public expanded = false;\n\n /**\n * Marks the item as the tree's active item.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public active = false;\n\n /**\n * Get/Set whether the tree item is disabled. Disabled items are ignored for user interactions.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public disabled = false;\n\n /**\n * The tree item selection state.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public selected = false;\n\n /**\n * To be used for load-on-demand scenarios in order to specify whether the item is loading data.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public loading = false;\n\n /**\n * The value entry that the tree item is visualizing. Required for searching through items.\n * @type any\n * @attr\n */\n @property({ attribute: true })\n public value: any = undefined;\n\n private async toggleAnimation(dir: 'open' | 'close') {\n const animation = dir === 'open' ? growVerIn : growVerOut;\n return this.animationPlayer.playExclusive(animation());\n }\n\n @watch('expanded', { waitUntilFirstUpdate: true })\n @watch('hasChildren', { waitUntilFirstUpdate: true })\n protected bothChange(): void {\n if (this.hasChildren) {\n this.setAttribute('aria-expanded', this.expanded.toString());\n } else {\n this.removeAttribute('aria-expanded');\n }\n }\n\n @watch('expanded')\n protected expandedChange(oldValue: boolean): void {\n // always update the visible cache\n this.navService?.update_visible_cache(this, this.expanded);\n if (!oldValue) {\n return;\n }\n // await for load on demand children\n Promise.resolve().then(() => {\n if (this.navService?.focusedItem !== this && !this.isFocused) {\n this.navService?.focusedItem?.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n });\n }\n\n @watch('active', { waitUntilFirstUpdate: true })\n protected activeChange(): void {\n if ((this.active && this.navService?.activeItem === this) || !this.active) {\n return;\n }\n if (this.navService) {\n this.navService.setActiveItem(this, false);\n }\n // Expand and scroll to the newly active item\n this.tree?.expandToItem(this);\n // Await for expanding\n Promise.resolve().then(() => {\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n });\n }\n\n @watch('disabled')\n protected disabledChange(): void {\n this.navService?.update_disabled_cache(this);\n }\n\n @watch('selected', { waitUntilFirstUpdate: true })\n protected selectedChange(): void {\n if (this.selected && !this.selectionService?.isItemSelected(this)) {\n this.selectionService?.selectItemsWithNoEvent([this]);\n }\n if (!this.selected && this.selectionService?.isItemSelected(this)) {\n this.selectionService?.deselectItemsWithNoEvent([this]);\n }\n }\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n addSafeEventListener(this, 'click', this.itemClick);\n addSafeEventListener(this, 'focus', this.onFocus);\n addSafeEventListener(this, 'blur', this.onBlur);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.tree = this.closest('igc-tree') as IgcTreeComponent;\n this.parent = this.parentElement?.closest(\n 'igc-tree-item'\n ) as IgcTreeItemComponent | null;\n this.level = this.parent ? this.parent.level + 1 : 0;\n this.setAttribute('role', 'treeitem');\n this.activeChange();\n // if the item is not added/moved runtime\n if (this.init) {\n this.selectedChange();\n } else {\n // retriger the item selection state in order to update the collections within the selectionService\n // and to handle correctly the itemParents recursively to the top-most ancestor\n this.selectionService?.retriggerItemState(this);\n }\n this.init = false;\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.selectionService?.ensureStateOnItemDelete(this);\n this.navService?.delete_item(this);\n }\n\n private get selectionService(): IgcTreeSelectionService | undefined {\n return this.tree?.selectionService;\n }\n\n private get navService(): IgcTreeNavigationService | undefined {\n return this.tree?.navService;\n }\n\n private get parts() {\n return {\n wrapper: true,\n selected: this.selected,\n focused: this.isFocused,\n active: this.active,\n };\n }\n\n private get directChildren(): Array<IgcTreeItemComponent> {\n return this.allChildren.filter(\n (x) => (x.parent ?? x.parentElement?.closest('igc-tree-item')) === this\n ) as IgcTreeItemComponent[];\n }\n\n private get allChildren(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll('igc-tree-item'));\n }\n\n /** The full path to the tree item, starting from the top-most ancestor. */\n public get path(): IgcTreeItemComponent[] {\n return this.parent?.path ? [...this.parent.path, this] : [this];\n }\n\n private itemClick(event: MouseEvent): void {\n if (this.disabled || this !== getElementFromPath(this.tagName, event)) {\n return;\n }\n this.tabIndex = 0;\n if (this.tree?.toggleNodeOnClick && event.button === 0) {\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n this.navService?.setFocusedAndActiveItem(this, true, true);\n }\n\n private expandIndicatorClick(): void {\n if (this.disabled) {\n return;\n }\n if (this.expanded) {\n this.collapseWithEvent();\n } else {\n this.expandWithEvent();\n }\n }\n\n private selectorClick(event: MouseEvent): void {\n event.preventDefault();\n if (this.tree?.toggleNodeOnClick) {\n event.stopPropagation();\n }\n if (event.shiftKey) {\n this.selectionService?.selectMultipleItems(this);\n return;\n }\n if (this.selected) {\n this.selectionService?.deselectItem(this);\n } else {\n this.selectionService?.selectItem(this);\n }\n }\n\n private onFocus(): void {\n if (this.disabled) {\n return;\n }\n if (this.navService?.focusedItem !== this) {\n this.navService?.focusItem(this, false);\n this.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n if (this.tabbableEl?.length) {\n // set tabIndex = 0 to all tabbable elements\n // focus the first one\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n this.focusedProgrammatically = true;\n this.tabbableEl[0].focus();\n return;\n }\n this.isFocused = true;\n }\n\n private onBlur(): void {\n this.isFocused = false;\n }\n\n private onFocusIn(ev: Event): void {\n ev?.stopPropagation();\n if (!this.disabled) {\n // clicking directly over tabbable element when the item is not focused\n if (!this.focusedProgrammatically) {\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = 0;\n });\n }\n this.removeAttribute('tabIndex');\n this.isFocused = true;\n this.focusedProgrammatically = false;\n }\n }\n\n private onFocusOut(ev: Event): void {\n ev?.stopPropagation();\n this.isFocused = false;\n this.tabbableEl?.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n\n if (this.navService?.focusedItem === this) {\n // called twice when clicking on already focused item with link (itemClick handler)\n this.setAttribute('tabindex', '0');\n }\n }\n\n private labelChange(): void {\n const firstElement = this.contentList[0];\n const tabbableSelector =\n 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])';\n\n this.tabbableEl = [\n ...firstElement.querySelectorAll<HTMLElement>(tabbableSelector),\n ];\n if (firstElement.matches(tabbableSelector)) {\n this.tabbableEl.splice(0, 0, firstElement);\n }\n\n if (this.tabbableEl?.length) {\n this.setAttribute('role', 'none');\n this.tabbableEl[0].setAttribute('role', 'treeitem');\n\n this.tabbableEl.forEach((element: HTMLElement) => {\n element.tabIndex = -1;\n });\n } else {\n this.setAttribute('role', 'treeitem');\n }\n }\n\n private handleChange(): void {\n this.hasChildren = !!this.directChildren.length;\n // there is no need to update nested children beacuse they're state is already up to date\n this.navService?.update_visible_cache(this, this.expanded, false);\n }\n\n /* blazorSuppress */\n /**\n * Returns a collection of child items.\n * If the parameter value is true returns all tree item's direct children,\n * otherwise - only the direct children.\n */\n public getChildren(\n options: { flatten: boolean } = { flatten: false }\n ): IgcTreeItemComponent[] {\n if (options.flatten) {\n return this.allChildren;\n }\n return this.directChildren;\n }\n\n /**\n * @private\n * Expands the tree item.\n */\n public async expandWithEvent() {\n if (this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemExpanding', args);\n\n if (!allowed) {\n return;\n }\n\n if (this.tree?.singleBranchExpand) {\n const pathSet = new Set(this.path.splice(0, this.path.length - 1));\n this.tree.items.forEach((item: IgcTreeItemComponent) => {\n if (!pathSet.has(item)) {\n item.collapseWithEvent();\n }\n });\n }\n\n this.expanded = true;\n if (await this.toggleAnimation('open')) {\n this.tree?.emitEvent('igcItemExpanded', { detail: this });\n }\n }\n\n /**\n * @private\n * Collapses the tree item.\n */\n public async collapseWithEvent() {\n if (!this.expanded) {\n return;\n }\n const args = {\n detail: this,\n cancelable: true,\n };\n\n const allowed = this.tree?.emitEvent('igcItemCollapsing', args);\n\n if (!allowed) {\n return;\n }\n\n this.expanded = false;\n if (await this.toggleAnimation('close')) {\n this.tree?.emitEvent('igcItemCollapsed', { detail: this });\n }\n }\n\n /** Toggles tree item expansion state. */\n public toggle(): void {\n this.expanded = !this.expanded;\n }\n\n /** Expands the tree item. */\n public expand(): void {\n this.expanded = true;\n }\n\n /** Collapses the tree item. */\n public collapse(): void {\n this.expanded = false;\n }\n\n protected override render() {\n const indicatorParts = {\n indicator: true,\n rtl: !(this.tree ? isLTR(this.tree) : true),\n };\n\n return html`\n <div id=\"wrapper\" part=${partMap(this.parts)}>\n <div\n style=\"width: calc(${this.level} * var(--igc-tree-indentation-size))\"\n part=\"indentation\"\n aria-hidden=\"true\"\n >\n <slot name=\"indentation\"></slot>\n </div>\n <div part=${partMap(indicatorParts)} aria-hidden=\"true\">\n ${\n this.loading\n ? html`\n <slot name=\"loading\">\n <igc-circular-progress\n indeterminate\n ></igc-circular-progress>\n </slot>\n `\n : html`\n <slot\n name=\"indicator\"\n @click=${\n this.tree?.toggleNodeOnClick\n ? nothing\n : this.expandIndicatorClick\n }\n >\n ${\n this.hasChildren\n ? html`\n <igc-icon\n aria-label=${ifDefined(\n this.expanded\n ? this.tree?.resourceStrings.collapse\n : this.tree?.resourceStrings.expand\n )}\n name=${\n this.expanded ? 'tree_collapse' : 'tree_expand'\n }\n collection=\"default\"\n >\n </igc-icon>\n `\n : ''\n }\n </slot>\n `\n }\n </div>\n ${\n this.tree?.selection !== 'none'\n ? html`\n <div part=\"select\" aria-hidden=\"true\">\n <igc-checkbox\n @click=${this.selectorClick}\n .checked=${this.selected}\n .indeterminate=${this.indeterminate}\n .disabled=${this.disabled}\n tabindex=\"-1\"\n >\n </igc-checkbox>\n </div>\n `\n : ''\n }\n <div part=\"label\">\n <slot\n name=\"label\"\n @slotchange=${this.labelChange}\n @focusin=${this.onFocusIn}\n @focusout=${this.onFocusOut}\n >\n <span part=\"text\">${this.label}</span>\n </slot>\n </div>\n </div>\n <div ${ref(this.groupRef)} role=\"group\" aria-hidden=${!this.expanded}>\n <slot @slotchange=${this.handleChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree-item': IgcTreeItemComponent;\n }\n}\n"]}
|
package/components/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"","sourcesContent":["// Public API types\n// NOTE: use default value as first in order where possible for union types\n\n//#region shared types\nexport type AbsolutePosition = 'bottom' | 'middle' | 'top';\nexport type ContentOrientation = 'horizontal' | 'vertical';\nexport type HorizontalTransitionAnimation = 'slide' | 'fade' | 'none';\nexport type NotificationPositioning = 'viewport' | 'container';\nexport type PickerMode = 'dropdown' | 'dialog';\nexport type PopoverScrollStrategy = 'scroll' | 'block' | 'close';\nexport type RangeTextSelectMode = 'preserve' | 'select' | 'start' | 'end';\nexport type SelectionRangeDirection = 'none' | 'backward' | 'forward';\nexport type StyleVariant =\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"","sourcesContent":["// Public API types\n// NOTE: use default value as first in order where possible for union types\n\n//#region shared types\nexport type AbsolutePosition = 'bottom' | 'middle' | 'top';\nexport type ContentOrientation = 'horizontal' | 'vertical';\nexport type HorizontalTransitionAnimation = 'slide' | 'fade' | 'none';\nexport type NotificationPositioning = 'viewport' | 'container';\nexport type PickerMode = 'dropdown' | 'dialog';\nexport type PopoverScrollStrategy = 'scroll' | 'block' | 'close';\nexport type RangeTextSelectMode = 'preserve' | 'select' | 'start' | 'end';\nexport type SelectionRangeDirection = 'none' | 'backward' | 'forward';\nexport type StyleVariant =\n 'primary' | 'info' | 'success' | 'warning' | 'danger';\nexport type ToggleLabelPosition = 'after' | 'before';\nexport type TreeSelection = 'none' | 'multiple' | 'cascade';\n//#endregion\n\n//#region component-specific\nexport type AvatarShape = 'square' | 'circle' | 'rounded';\nexport type BadgeShape = 'rounded' | 'square';\nexport type ButtonGroupSelection = 'single' | 'single-required' | 'multiple';\nexport type ButtonVariant = 'contained' | 'flat' | 'outlined' | 'fab';\nexport type CarouselIndicatorsOrientation = 'end' | 'start';\nexport type DateRangeValue = { start: Date | null; end: Date | null };\nexport type DividerType = 'solid' | 'dashed';\nexport type ExpansionPanelIndicatorPosition = 'start' | 'end' | 'none';\nexport type IconButtonVariant = 'contained' | 'flat' | 'outlined';\nexport type InputType =\n 'text' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'url';\nexport type LinearProgressLabelAlign =\n 'top-start' | 'top' | 'top-end' | 'bottom-start' | 'bottom' | 'bottom-end';\nexport type MaskInputValueMode = 'raw' | 'withFormatting';\nexport type NavDrawerPosition = 'start' | 'end' | 'top' | 'bottom' | 'relative';\nexport type SliderTickLabelRotation = 0 | 90 | -90;\nexport type SliderTickOrientation = 'end' | 'mirror' | 'start';\nexport type SplitterOrientation = 'horizontal' | 'vertical';\nexport type StepperOrientation = 'horizontal' | 'vertical';\nexport type StepperStepType = 'full' | 'indicator' | 'title';\nexport type StepperTitlePosition = 'auto' | 'bottom' | 'top' | 'end' | 'start';\nexport type StepperVerticalAnimation = 'grow' | 'fade' | 'none';\nexport type TabsActivation = 'auto' | 'manual';\nexport type TabsAlignment = 'start' | 'end' | 'center' | 'justify';\nexport type TextareaResize = 'vertical' | 'auto' | 'none';\nexport type TileManagerDragMode = 'none' | 'tile-header' | 'tile';\nexport type TileManagerResizeMode = 'none' | 'hover' | 'always';\n//#endregion\n"]}
|
|
@@ -21,21 +21,48 @@ interface ValidationContainerConfig {
|
|
|
21
21
|
export default class IgcValidationContainerComponent extends LitElement {
|
|
22
22
|
static readonly tagName = "igc-validator";
|
|
23
23
|
static styles: import("lit").CSSResult[];
|
|
24
|
-
protected readonly _themes: import("../../theming/theming-controller.js").ThemingController;
|
|
25
24
|
static register(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a validation container for the given form control.
|
|
27
|
+
*
|
|
28
|
+
* The container will render validation messages based on the control's validity state
|
|
29
|
+
* and projected content, and reflect the control's `invalid` state.
|
|
30
|
+
*/
|
|
26
31
|
static create(host: IgcFormControl, config?: ValidationContainerConfig): TemplateResult;
|
|
27
32
|
private readonly _abortHandle;
|
|
28
33
|
private _target;
|
|
29
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Whether the container is in an invalid state.
|
|
36
|
+
*
|
|
37
|
+
* This is reflected from the target's `invalid` property,
|
|
38
|
+
* and is used to determine whether to render the validation message slots.
|
|
39
|
+
*/
|
|
30
40
|
invalid: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The form control whose validity state is being rendered. The target's `invalid`
|
|
43
|
+
* property is reflected to the container, and its validity state is used to
|
|
44
|
+
* determine which validation message slots to render.
|
|
45
|
+
*
|
|
46
|
+
* @remarks The target must be set for the container to function, and should be
|
|
47
|
+
* set before the first update cycle for SSR compatibility. When using the
|
|
48
|
+
* `create` method, the target is set automatically.
|
|
49
|
+
*/
|
|
31
50
|
set target(value: IgcFormControl);
|
|
32
51
|
get target(): IgcFormControl;
|
|
52
|
+
constructor();
|
|
33
53
|
protected createRenderRoot(): HTMLElement | DocumentFragment;
|
|
34
54
|
/** @internal */
|
|
35
55
|
handleEvent(event: Event): void;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Collects the projection state of the container slots in a single DOM pass.
|
|
58
|
+
*
|
|
59
|
+
* @returns Whether every slot is empty and the set of non-empty validation
|
|
60
|
+
* slot names (i.e. excluding `helper-text`).
|
|
61
|
+
*/
|
|
62
|
+
private _collectProjectedSlots;
|
|
63
|
+
protected _renderValidationMessage(slotName: string, projectedSlots: ReadonlySet<string>): TemplateResult;
|
|
64
|
+
protected _renderHelper(hasValidationProjection: boolean): TemplateResult | typeof nothing;
|
|
65
|
+
protected firstUpdated(): void;
|
|
39
66
|
protected render(): TemplateResult;
|
|
40
67
|
}
|
|
41
68
|
declare global {
|
|
@@ -4,9 +4,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { html, LitElement, nothing } from 'lit';
|
|
8
|
-
import { property
|
|
9
|
-
import { cache } from 'lit/directives/cache.js';
|
|
7
|
+
import { html, isServer, LitElement, nothing } from 'lit';
|
|
8
|
+
import { property } from 'lit/decorators.js';
|
|
10
9
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
11
10
|
import { addThemingController } from '../../theming/theming-controller.js';
|
|
12
11
|
import { createAbortHandle } from '../common/abort-handler.js';
|
|
@@ -18,33 +17,31 @@ import IgcIconComponent from '../icon/icon.js';
|
|
|
18
17
|
import { all as inputThemes } from '../input/themes/themes.js';
|
|
19
18
|
import { styles as shared } from './themes/shared/validator.common.css.js';
|
|
20
19
|
import { styles } from './themes/validator.base.css.js';
|
|
21
|
-
const VALIDATION_SLOTS_SELECTOR = 'slot:not([name="helper-text"])';
|
|
22
20
|
const ALL_SLOTS_SELECTOR = 'slot';
|
|
23
21
|
const QUERY_CONFIG = { flatten: true };
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
const VALIDITY_KEYS = [
|
|
23
|
+
'badInput',
|
|
24
|
+
'customError',
|
|
25
|
+
'patternMismatch',
|
|
26
|
+
'rangeOverflow',
|
|
27
|
+
'rangeUnderflow',
|
|
28
|
+
'stepMismatch',
|
|
29
|
+
'tooLong',
|
|
30
|
+
'tooShort',
|
|
31
|
+
'typeMismatch',
|
|
32
|
+
'valueMissing',
|
|
33
|
+
];
|
|
34
|
+
function* activeValidationSlots(validity) {
|
|
35
|
+
if (!validity.valid) {
|
|
36
|
+
yield 'invalid';
|
|
37
|
+
}
|
|
38
|
+
for (const key of VALIDITY_KEYS) {
|
|
39
|
+
if (validity[key]) {
|
|
40
|
+
yield toKebabCase(key);
|
|
41
|
+
}
|
|
37
42
|
}
|
|
38
|
-
return slots.some((slot) => !isEmpty(slot.assignedElements(QUERY_CONFIG)));
|
|
39
43
|
}
|
|
40
44
|
export default class IgcValidationContainerComponent extends LitElement {
|
|
41
|
-
constructor() {
|
|
42
|
-
super(...arguments);
|
|
43
|
-
this._themes = addThemingController(this, inputThemes);
|
|
44
|
-
this._abortHandle = createAbortHandle();
|
|
45
|
-
this._hasSlottedContent = false;
|
|
46
|
-
this.invalid = false;
|
|
47
|
-
}
|
|
48
45
|
static { this.tagName = 'igc-validator'; }
|
|
49
46
|
static { this.styles = [styles, shared]; }
|
|
50
47
|
static register() {
|
|
@@ -57,7 +54,11 @@ export default class IgcValidationContainerComponent extends LitElement {
|
|
|
57
54
|
const helperText = config.hasHelperText
|
|
58
55
|
? html `<slot name="helper-text" slot="helper-text"></slot>`
|
|
59
56
|
: nothing;
|
|
60
|
-
const validationSlots =
|
|
57
|
+
const validationSlots = host.hasUpdated
|
|
58
|
+
? Iterator.from(activeValidationSlots(host.validity))
|
|
59
|
+
.map((name) => html `<slot name=${name} slot=${name}></slot>`)
|
|
60
|
+
.toArray()
|
|
61
|
+
: nothing;
|
|
61
62
|
return html `
|
|
62
63
|
<igc-validator
|
|
63
64
|
id=${ifDefined(config.id)}
|
|
@@ -84,6 +85,12 @@ export default class IgcValidationContainerComponent extends LitElement {
|
|
|
84
85
|
get target() {
|
|
85
86
|
return this._target;
|
|
86
87
|
}
|
|
88
|
+
constructor() {
|
|
89
|
+
super();
|
|
90
|
+
this._abortHandle = createAbortHandle();
|
|
91
|
+
this.invalid = false;
|
|
92
|
+
addThemingController(this, inputThemes);
|
|
93
|
+
}
|
|
87
94
|
createRenderRoot() {
|
|
88
95
|
const root = super.createRenderRoot();
|
|
89
96
|
root.addEventListener('slotchange', this);
|
|
@@ -97,18 +104,29 @@ export default class IgcValidationContainerComponent extends LitElement {
|
|
|
97
104
|
case InternalResetEvent:
|
|
98
105
|
this.invalid = false;
|
|
99
106
|
break;
|
|
100
|
-
case 'slotchange': {
|
|
101
|
-
const newHasSlottedContent = hasProjectedValidation(this);
|
|
102
|
-
if (this._hasSlottedContent !== newHasSlottedContent) {
|
|
103
|
-
this._hasSlottedContent = newHasSlottedContent;
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
107
|
}
|
|
108
108
|
this.requestUpdate();
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
const
|
|
110
|
+
_collectProjectedSlots() {
|
|
111
|
+
const validation = new Set();
|
|
112
|
+
if (isServer || !this.hasUpdated) {
|
|
113
|
+
return { isProjectionEmpty: false, validation };
|
|
114
|
+
}
|
|
115
|
+
const slots = Array.from(this.renderRoot.querySelectorAll(ALL_SLOTS_SELECTOR));
|
|
116
|
+
let isProjectionEmpty = true;
|
|
117
|
+
for (const slot of slots) {
|
|
118
|
+
if (isEmpty(slot.assignedElements(QUERY_CONFIG))) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
isProjectionEmpty = false;
|
|
122
|
+
if (slot.name && slot.name !== 'helper-text') {
|
|
123
|
+
validation.add(slot.name);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { isProjectionEmpty, validation };
|
|
127
|
+
}
|
|
128
|
+
_renderValidationMessage(slotName, projectedSlots) {
|
|
129
|
+
const hasProjectedIcon = projectedSlots.has(slotName);
|
|
112
130
|
const parts = { 'validation-message': true, empty: !hasProjectedIcon };
|
|
113
131
|
const icon = hasProjectedIcon
|
|
114
132
|
? html `
|
|
@@ -119,45 +137,37 @@ export default class IgcValidationContainerComponent extends LitElement {
|
|
|
119
137
|
></igc-icon>
|
|
120
138
|
`
|
|
121
139
|
: nothing;
|
|
122
|
-
return html
|
|
123
|
-
<
|
|
124
|
-
|
|
125
|
-
<slot name=${slotName}></slot>
|
|
126
|
-
</div>
|
|
127
|
-
`;
|
|
128
|
-
}
|
|
129
|
-
*_renderValidationSlots(validity, projected = false) {
|
|
130
|
-
if (!validity.valid) {
|
|
131
|
-
yield projected
|
|
132
|
-
? html `<slot name="invalid" slot="invalid"></slot>`
|
|
133
|
-
: this._renderValidationMessage('invalid');
|
|
134
|
-
}
|
|
135
|
-
for (const key in validity) {
|
|
136
|
-
if (key !== 'valid' && validity[key]) {
|
|
137
|
-
const name = toKebabCase(key);
|
|
138
|
-
yield projected
|
|
139
|
-
? html `<slot name=${name} slot=${name}></slot>`
|
|
140
|
-
: this._renderValidationMessage(name);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
140
|
+
return html `<div part=${partMap(parts)}>
|
|
141
|
+
${icon}<slot name=${slotName}></slot>
|
|
142
|
+
</div>`;
|
|
143
143
|
}
|
|
144
|
-
_renderHelper() {
|
|
145
|
-
return this.invalid &&
|
|
144
|
+
_renderHelper(hasValidationProjection) {
|
|
145
|
+
return this.invalid && hasValidationProjection
|
|
146
146
|
? nothing
|
|
147
147
|
: html `<slot name="helper-text"></slot>`;
|
|
148
148
|
}
|
|
149
|
+
firstUpdated() {
|
|
150
|
+
if (this.invalid) {
|
|
151
|
+
queueMicrotask(() => this.requestUpdate());
|
|
152
|
+
}
|
|
153
|
+
}
|
|
149
154
|
render() {
|
|
150
|
-
const
|
|
155
|
+
const { isProjectionEmpty, validation } = this._collectProjectedSlots();
|
|
156
|
+
const messages = this.hasUpdated && this.invalid
|
|
157
|
+
? Iterator.from(activeValidationSlots(this.target.validity))
|
|
158
|
+
.map((name) => this._renderValidationMessage(name, validation))
|
|
159
|
+
.toArray()
|
|
160
|
+
: nothing;
|
|
151
161
|
return html `
|
|
152
|
-
<div
|
|
153
|
-
|
|
162
|
+
<div
|
|
163
|
+
part=${partMap({ 'helper-text': true, empty: isProjectionEmpty })}
|
|
164
|
+
aria-live="polite"
|
|
165
|
+
>
|
|
166
|
+
${messages}${this._renderHelper(!isEmpty(validation))}
|
|
154
167
|
</div>
|
|
155
168
|
`;
|
|
156
169
|
}
|
|
157
170
|
}
|
|
158
|
-
__decorate([
|
|
159
|
-
state()
|
|
160
|
-
], IgcValidationContainerComponent.prototype, "_hasSlottedContent", void 0);
|
|
161
171
|
__decorate([
|
|
162
172
|
property({ type: Boolean })
|
|
163
173
|
], IgcValidationContainerComponent.prototype, "invalid", void 0);
|