@infineon/infineon-design-system-stencil 33.6.0--canary.1869.b1674220449fed92bf0dee5aead2bd511f2c78f1.0 → 33.6.0--canary.1869.7438a96be80961b83f2346f57d219844afbd5c18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -155,6 +155,7 @@ const TreeViewItem = class {
155
155
  if (this.shouldExpandFromParent()) {
156
156
  this.expandAllDescendants();
157
157
  }
158
+ this.host['__stencil_instance'] = this;
158
159
  }
159
160
  shouldExpandFromParent() {
160
161
  let parent = this.host.parentElement;
@@ -228,12 +229,38 @@ const TreeViewItem = class {
228
229
  setupEventListeners() {
229
230
  this.host.addEventListener('internal-check-state-change', this.handleStateChange);
230
231
  }
231
- async updateCheckState(checked) {
232
+ async updateCheckState(checked, fromParent = false) {
232
233
  if (this.disabled)
233
234
  return;
234
- this.setNodeState({ isChecked: checked, partialChecked: false });
235
- await this.updateChildrenState(checked);
236
- this.updateParentState();
235
+ if (!fromParent && this.hasChildren) {
236
+ const affected = this.collectDescendantStates(checked);
237
+ this.setNodeState({ isChecked: checked, partialChecked: false }, false);
238
+ await this.updateChildrenSilently(checked);
239
+ this.ifxTreeViewItemCheckChange.emit({
240
+ checked,
241
+ indeterminate: false,
242
+ affectedChildItems: affected,
243
+ });
244
+ this.updateParentState();
245
+ }
246
+ else if (fromParent) {
247
+ this.setNodeState({ isChecked: checked, partialChecked: false }, false);
248
+ }
249
+ else {
250
+ this.setNodeState({ isChecked: checked, partialChecked: false });
251
+ await this.updateChildrenState(checked);
252
+ this.updateParentState();
253
+ }
254
+ }
255
+ async updateChildrenSilently(checked) {
256
+ const children = this.findChildren();
257
+ for (const child of children) {
258
+ const childInstance = child['__stencil_instance'];
259
+ if (childInstance) {
260
+ childInstance.setNodeState({ isChecked: checked, partialChecked: false }, false);
261
+ await childInstance.updateChildrenSilently(checked);
262
+ }
263
+ }
237
264
  }
238
265
  handleExpandedChange(newValue) {
239
266
  this.ifxTreeViewItemExpandChange.emit(newValue);
@@ -241,13 +268,42 @@ const TreeViewItem = class {
241
268
  handleDisableItemChange(newValue) {
242
269
  this.ifxTreeViewItemDisableChange.emit(newValue);
243
270
  }
244
- setNodeState(state) {
271
+ setNodeState(state, emitEvent = true) {
245
272
  this.isChecked = state.isChecked;
246
273
  this.partialChecked = state.partialChecked;
247
- this.ifxTreeViewItemCheckChange.emit({
248
- checked: this.isChecked,
249
- indeterminate: this.partialChecked,
250
- });
274
+ if (emitEvent) {
275
+ this.ifxTreeViewItemCheckChange.emit({
276
+ checked: this.isChecked,
277
+ indeterminate: this.partialChecked,
278
+ });
279
+ }
280
+ }
281
+ collectDescendantStates(checked) {
282
+ const descendants = [];
283
+ const collect = (el) => {
284
+ var _a, _b;
285
+ let instance = null;
286
+ if (el === this.host) {
287
+ instance = this;
288
+ }
289
+ else if (el['__stencil_instance']) {
290
+ instance = el['__stencil_instance'];
291
+ }
292
+ const label = (_b = (_a = instance === null || instance === void 0 ? void 0 : instance.label) !== null && _a !== void 0 ? _a : el.label) !== null && _b !== void 0 ? _b : '';
293
+ descendants.push({
294
+ label,
295
+ checked,
296
+ indeterminate: false,
297
+ });
298
+ Array.from(el.children)
299
+ .forEach(child => {
300
+ if (child.tagName === 'IFX-TREE-VIEW-ITEM') {
301
+ collect(child);
302
+ }
303
+ });
304
+ };
305
+ collect(this.host);
306
+ return descendants;
251
307
  }
252
308
  async updateChildrenState(checked) {
253
309
  const children = this.findChildren();
@@ -294,12 +350,12 @@ const TreeViewItem = class {
294
350
  };
295
351
  }
296
352
  render() {
297
- return (index.h("div", { key: '10a31a82078320a73d026ec8d42ae23d78049a9b', class: {
353
+ return (index.h("div", { key: 'a626535eaa7807016da9b015daecc1c4ecba4283', class: {
298
354
  'tree-item': true,
299
355
  'tree-item--expanded': this.isExpanded,
300
356
  'tree-item--has-children': this.hasChildren,
301
357
  'tree-item--disabled': this.disabled,
302
- }, role: "treeitem", "aria-expanded": this.isExpanded ? 'true' : 'false', "data-level": this.level, "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel }, index.h("div", { key: 'ad1dcf1ca93fd3f35f00d411e8740bfc54dc7c9f', class: "tree-item__content" }, this.renderCheckbox(), this.renderHeader()), this.isExpanded && index.h("div", { key: '1023010ffb83954bc852cafc18f3b79003ffbf3e', class: "tree-item__children" }, index.h("slot", { key: 'c7cd0a61015b29a99b963576c8bc3fd0725541f3' }))));
358
+ }, role: "treeitem", "aria-expanded": this.isExpanded ? 'true' : 'false', "data-level": this.level, "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel }, index.h("div", { key: 'e6e9bf260e0c1f5584826189ae44de0abbeed4e0', class: "tree-item__content" }, this.renderCheckbox(), this.renderHeader()), this.isExpanded && index.h("div", { key: 'e24cad37fc29633023d9e2b7216c2281056fc76e', class: "tree-item__children" }, index.h("slot", { key: '65d7afa55a28667bed348cafd784636256cd23d5' }))));
303
359
  }
304
360
  renderHeader() {
305
361
  return (index.h("div", { class: "tree-item__header", style: { paddingLeft: `${this.level * 24 + 10}px` }, onClick: this.handleHeaderClick, tabIndex: -1, "aria-disabled": this.disabled ? 'true' : undefined }, this.renderControls()));
@@ -1 +1 @@
1
- {"file":"ifx-tree-view-item.entry.cjs.js","mappings":"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","names":["h","Fragment"],"sources":["src/components/tree-view/tree-view-item.scss?tag=ifx-tree-view-item&encapsulation=shadow","src/components/tree-view/tree-view-item.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n.tree-item {\n position: relative;\n cursor: pointer;\n list-style: none;\n\n &.tree-item--expanded {\n position: relative;\n }\n\n &.tree-item--has-children {\n position: relative;\n\n .tree-item__header > .tree-item__chevron-container {\n display: flex;\n }\n\n &.tree-item--expanded {\n .tree-item__header > .tree-item__chevron-container::after {\n display: block;\n }\n }\n }\n\n &--disabled {\n cursor: not-allowed;\n pointer-events: none;\n color: tokens.$ifxColorEngineering300;\n }\n\n &__content {\n display: flex;\n flex-direction: row;\n\n &:hover {\n .tree-item__checkbox-container,\n .tree-item__header {\n background-color: tokens.$ifxColorEngineering100;\n }\n }\n }\n\n &__checkbox-container {\n position: sticky;\n left: 0;\n z-index: 10;\n padding: tokens.$ifxSpace50;\n background-color: tokens.$ifxColorBaseWhite;\n }\n\n &__header {\n flex-grow: 1;\n display: flex;\n align-items: center;\n white-space: nowrap;\n height: tokens.$ifxSize250;\n padding-top: tokens.$ifxSpace50;\n padding-right: tokens.$ifxSpace200;\n padding-bottom: tokens.$ifxSpace50;\n padding-left: tokens.$ifxSpace100;\n }\n\n &__chevron-container {\n display: none;\n align-items: center;\n margin-right: tokens.$ifxSpace100;\n height: tokens.$ifxSize250;\n\n &::after {\n --height-line-start: 28px;\n\n display: none;\n content: '';\n position: absolute;\n z-index: 1;\n top: var(--height-line-start);\n left: auto;\n margin-left: tokens.$ifxSpace100;\n width: tokens.$ifxSize12;\n height: calc(100% - var(--height-line-start));\n background-color: tokens.$ifxColorEngineering200;\n\n .tree-item--disabled & {\n color: tokens.$ifxColorEngineering200;\n }\n }\n }\n\n &__chevron {\n &.chevron-down {\n transform: rotate(90deg);\n }\n\n &.chevron-right {\n transform: rotate(0);\n }\n }\n\n &__label-icon-container {\n display: flex;\n align-items: center;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n }\n\n &__icon-container {\n position: relative;\n width: tokens.$ifxSize200;\n height: tokens.$ifxSize200;\n\n ifx-icon {\n position: absolute;\n left: 0;\n top: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n\n &.icon--hidden {\n opacity: 0;\n }\n }\n }\n\n &__label {\n padding-left: tokens.$ifxSpace100;\n }\n\n &__children {\n display: none;\n\n .tree-item[aria-expanded=\"true\"] > & {\n display: block;\n }\n }\n}\n\n","import { Component, h, Prop, State, Element, Fragment, Event, EventEmitter, Watch } from '@stencil/core';\n\ninterface TreeState {\n isChecked: boolean;\n partialChecked: boolean;\n}\n\ntype HTMLIfxTreeViewItemElement = HTMLElement & { componentOnReady: () => Promise<unknown> };\n\n@Component({\n tag: 'ifx-tree-view-item',\n styleUrl: 'tree-view-item.scss',\n shadow: true,\n})\nexport class TreeViewItem {\n @Element() host: HTMLElement;\n @Prop() label: string;\n @Prop({ reflect: true, mutable: true }) expanded: boolean = false;\n @Prop() initiallyExpanded: boolean = false;\n @Prop() disableItem: boolean = false;\n @Prop() ariaLabel: string | null;\n\n @Event() ifxTreeViewItemExpandChange: EventEmitter<boolean>;\n @Event() ifxTreeViewItemCheckChange: EventEmitter<{ checked: boolean; indeterminate: boolean }>;\n @Event() ifxTreeViewItemDisableChange: EventEmitter<boolean>;\n\n @State() private hasChildren: boolean = false;\n @State() private isChecked: boolean = false;\n @State() private partialChecked: boolean = false;\n @State() private level: number = 0;\n @State() private disableAllItems: boolean = false;\n @State() private expandAllItems: boolean = false;\n\n private get disabled() {\n return this.disableAllItems || this.disableItem;\n }\n\n private get isExpanded() {\n return this.expandAllItems || this.expanded;\n }\n\n private findChildren = () => Array.from(this.host.children)\n .filter((child): child is HTMLElement =>\n child instanceof HTMLElement && child.tagName === 'IFX-TREE-VIEW-ITEM'\n );\n\n private calculateNodeLevel = (): number => {\n let level = 0, parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW-ITEM') level++;\n parent = parent.parentElement;\n }\n return level;\n };\n\n componentWillLoad() {\n this.initializeNode();\n this.setupEventListeners();\n }\n\n componentDidLoad() {\n this.observeDisableAllItems();\n this.observeExpandAllItems();\n if (this.shouldExpandFromParent()) {\n this.expandAllDescendants();\n }\n }\n\n private shouldExpandFromParent(): boolean {\n let parent = this.host.parentElement;\n while (parent) {\n if (\n parent.tagName === 'IFX-TREE-VIEW' &&\n (parent.hasAttribute('expand-all-items') || parent.hasAttribute('data-expand-all-items'))\n ) {\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private expandAllDescendants() {\n this.expanded = true;\n const children = this.findChildren();\n for (const child of children) {\n if (typeof (child as any).expanded !== 'undefined') {\n (child as any).expanded = true;\n }\n if (typeof (child as any).expandAllDescendants === 'function') {\n (child as any).expandAllDescendants();\n }\n }\n }\n\n private observeDisableAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW') {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'disable-all-items'\n ) {\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private observeExpandAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW' || parent.hasAttribute('data-expand-all-items')) {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'data-expand-all-items'\n ) {\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private initializeNode() {\n this.expanded = this.initiallyExpanded;\n this.hasChildren = this.findChildren().length > 0;\n this.level = this.calculateNodeLevel();\n this.host.setAttribute('data-level', this.level.toString());\n }\n\n private setupEventListeners() {\n this.host.addEventListener('internal-check-state-change', this.handleStateChange);\n }\n\n private handleStateChange = (event: CustomEvent) => {\n if (this.disabled) return;\n event.stopPropagation();\n this.updateCheckState(event.detail.checked);\n };\n\n private handleCheckboxChange = (event: CustomEvent) => {\n if (this.disabled) return;\n this.updateCheckState(event.detail?.checked ?? !this.isChecked);\n };\n\n private handleHeaderClick = ({ target }: MouseEvent) => {\n if (this.disabled) return;\n if (!(target as HTMLElement).closest('.tree-item__checkbox-container, .tree-item__chevron-container')) {\n this.updateCheckState(!this.isChecked);\n }\n };\n\n private async updateCheckState(checked: boolean) {\n if (this.disabled) return;\n this.setNodeState({ isChecked: checked, partialChecked: false });\n await this.updateChildrenState(checked);\n this.updateParentState();\n }\n\n @Watch('expanded')\n handleExpandedChange(newValue: boolean) {\n this.ifxTreeViewItemExpandChange.emit(newValue);\n }\n\n @Watch('disableItem')\n handleDisableItemChange(newValue: boolean) {\n this.ifxTreeViewItemDisableChange.emit(newValue);\n }\n\n private setNodeState(state: TreeState) {\n this.isChecked = state.isChecked;\n this.partialChecked = state.partialChecked;\n this.ifxTreeViewItemCheckChange.emit({\n checked: this.isChecked,\n indeterminate: this.partialChecked,\n });\n }\n\n private async updateChildrenState(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n await (child as HTMLIfxTreeViewItemElement).componentOnReady();\n child.dispatchEvent(new CustomEvent('internal-check-state-change', {\n detail: { checked },\n bubbles: false,\n composed: true\n }));\n }\n }\n\n private findSiblingNodes(parent: HTMLElement): HTMLIfxTreeViewItemElement[] {\n const parentEl = parent.parentElement;\n if (!parentEl) return [];\n return Array.from(\n parentEl.querySelectorAll('ifx-tree-view-item')\n ).map(el => el as HTMLIfxTreeViewItemElement);\n }\n\n private updateParentState() {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item') as HTMLIfxTreeViewItemElement;\n if (!parent) return;\n parent.componentOnReady().then(resolved => {\n const parentNode = resolved as unknown as TreeViewItem;\n if (!parentNode?.updateParentState) return;\n const siblings = this.findSiblingNodes(parent);\n const states = this.calculateSiblingStates(siblings);\n parentNode.setNodeState({\n isChecked: states.allChecked,\n partialChecked: !states.allChecked && states.someChecked\n });\n parentNode.updateParentState();\n });\n }\n\n private calculateSiblingStates(siblings: HTMLIfxTreeViewItemElement[]) {\n return {\n allChecked: siblings.every(sib => (sib as unknown as TreeViewItem).isChecked),\n someChecked: siblings.some(sib => {\n const node = sib as unknown as TreeViewItem;\n return node.isChecked || node.partialChecked;\n })\n };\n }\n\n private toggleExpand = () => {\n if (this.disabled) return;\n this.hasChildren && (this.expanded = !this.expanded);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n\n const allItems = Array.from(\n this.host\n .closest('ifx-tree-view')\n ?.querySelectorAll('ifx-tree-view-item') || []\n );\n\n const visibleItems = allItems.filter(item => {\n let parent = item.parentElement?.closest('ifx-tree-view-item');\n while (parent) {\n const parentCmp = parent as any;\n if (!(parentCmp.expandAllItems || parentCmp.expanded)) {\n return false;\n }\n parent = parent.parentElement?.closest('ifx-tree-view-item');\n }\n return true;\n });\n\n const currentIndex = visibleItems.findIndex(el => el === this.host);\n\n function focusLabelIcon(el: Element | null) {\n (el as HTMLElement | null)?.focus();\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = currentIndex + 1;\n while (nextIndex < visibleItems.length) {\n const next = visibleItems[nextIndex] as any;\n if (!next.disabled) {\n focusLabelIcon(next.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n nextIndex++;\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = currentIndex - 1;\n while (prevIndex >= 0) {\n const prev = visibleItems[prevIndex] as any;\n if (!prev.disabled) {\n focusLabelIcon(prev.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n prevIndex--;\n }\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (!this.isExpanded && this.hasChildren) {\n this.expanded = true;\n } else if (this.isExpanded && this.hasChildren) {\n const firstChild = this.host.querySelector('ifx-tree-view-item');\n if (firstChild && !(firstChild as any).disabled) {\n focusLabelIcon((firstChild as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (this.isExpanded && this.hasChildren) {\n this.expanded = false;\n } else {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item');\n if (parent && !(parent as any).disabled) {\n focusLabelIcon((parent as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n this.updateCheckState(!this.isChecked);\n break;\n }\n }\n };\n\n render() {\n return (\n <div\n class={{\n 'tree-item': true,\n 'tree-item--expanded': this.isExpanded,\n 'tree-item--has-children': this.hasChildren,\n 'tree-item--disabled': this.disabled,\n }}\n role=\"treeitem\"\n aria-expanded={this.isExpanded ? 'true' : 'false'}\n data-level={this.level}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.ariaLabel}\n >\n <div class=\"tree-item__content\">\n {this.renderCheckbox()}\n {this.renderHeader()}\n </div>\n {this.isExpanded && <div class=\"tree-item__children\"><slot/></div>}\n </div>\n );\n }\n\n private renderHeader() {\n return (\n <div\n class=\"tree-item__header\"\n style={{ paddingLeft: `${this.level * 24 + 10}px` }}\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n aria-disabled={this.disabled ? 'true' : undefined}\n >\n {this.renderControls()}\n </div>\n );\n }\n\n private renderCheckbox() {\n return (\n <div class=\"tree-item__checkbox-container\" onClick={e => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={this.isChecked}\n indeterminate={this.partialChecked}\n onIfxChange={this.handleCheckboxChange}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n private renderControls() {\n return [\n this.hasChildren && (\n <div class=\"tree-item__chevron-container\" onClick={this.toggleExpand}>\n <ifx-icon class={`tree-item__chevron ${this.isExpanded ? 'chevron-down' : 'chevron-right'}`}\n icon=\"chevron-right-16\"/>\n <div class=\"tree-item__line\"/>\n </div>\n ),\n <div\n class=\"tree-item__label-icon-container\"\n tabIndex={this.disabled ? -1 : 0}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tree-item__icon-container\">\n {\n this.hasChildren ? (\n <Fragment>\n <ifx-icon class={{'icon--hidden': this.isExpanded}} icon=\"folder-16\"/>\n <ifx-icon class={{'icon--hidden': !this.isExpanded}} icon=\"folder-open-16\"/>\n </Fragment>\n ) : (\n <ifx-icon icon=\"file-16\"/>\n )\n }\n </div>\n <span class=\"tree-item__label\">{this.label}</span>\n </div>\n ];\n }\n}\n"],"version":3}
1
+ {"file":"ifx-tree-view-item.entry.cjs.js","mappings":"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","names":["h","Fragment"],"sources":["src/components/tree-view/tree-view-item.scss?tag=ifx-tree-view-item&encapsulation=shadow","src/components/tree-view/tree-view-item.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n.tree-item {\n position: relative;\n cursor: pointer;\n list-style: none;\n\n &.tree-item--expanded {\n position: relative;\n }\n\n &.tree-item--has-children {\n position: relative;\n\n .tree-item__header > .tree-item__chevron-container {\n display: flex;\n }\n\n &.tree-item--expanded {\n .tree-item__header > .tree-item__chevron-container::after {\n display: block;\n }\n }\n }\n\n &--disabled {\n cursor: not-allowed;\n pointer-events: none;\n color: tokens.$ifxColorEngineering300;\n }\n\n &__content {\n display: flex;\n flex-direction: row;\n\n &:hover {\n .tree-item__checkbox-container,\n .tree-item__header {\n background-color: tokens.$ifxColorEngineering100;\n }\n }\n }\n\n &__checkbox-container {\n position: sticky;\n left: 0;\n z-index: 10;\n padding: tokens.$ifxSpace50;\n background-color: tokens.$ifxColorBaseWhite;\n }\n\n &__header {\n flex-grow: 1;\n display: flex;\n align-items: center;\n white-space: nowrap;\n height: tokens.$ifxSize250;\n padding-top: tokens.$ifxSpace50;\n padding-right: tokens.$ifxSpace200;\n padding-bottom: tokens.$ifxSpace50;\n padding-left: tokens.$ifxSpace100;\n }\n\n &__chevron-container {\n display: none;\n align-items: center;\n margin-right: tokens.$ifxSpace100;\n height: tokens.$ifxSize250;\n\n &::after {\n --height-line-start: 28px;\n\n display: none;\n content: '';\n position: absolute;\n z-index: 1;\n top: var(--height-line-start);\n left: auto;\n margin-left: tokens.$ifxSpace100;\n width: tokens.$ifxSize12;\n height: calc(100% - var(--height-line-start));\n background-color: tokens.$ifxColorEngineering200;\n\n .tree-item--disabled & {\n color: tokens.$ifxColorEngineering200;\n }\n }\n }\n\n &__chevron {\n &.chevron-down {\n transform: rotate(90deg);\n }\n\n &.chevron-right {\n transform: rotate(0);\n }\n }\n\n &__label-icon-container {\n display: flex;\n align-items: center;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n }\n\n &__icon-container {\n position: relative;\n width: tokens.$ifxSize200;\n height: tokens.$ifxSize200;\n\n ifx-icon {\n position: absolute;\n left: 0;\n top: 0;\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n\n &.icon--hidden {\n opacity: 0;\n }\n }\n }\n\n &__label {\n padding-left: tokens.$ifxSpace100;\n }\n\n &__children {\n display: none;\n\n .tree-item[aria-expanded=\"true\"] > & {\n display: block;\n }\n }\n}\n\n","import { Component, h, Prop, State, Element, Fragment, Event, EventEmitter, Watch } from '@stencil/core';\n\nexport interface TreeViewCheckChangeEvent {\n checked: boolean;\n indeterminate: boolean;\n affectedChildItems?: Array<{ label: string; checked: boolean; indeterminate: boolean }>;\n}\n\ninterface TreeState {\n isChecked: boolean;\n partialChecked: boolean;\n}\n\ntype HTMLIfxTreeViewItemElement = HTMLElement & { componentOnReady: () => Promise<unknown> };\n\n@Component({\n tag: 'ifx-tree-view-item',\n styleUrl: 'tree-view-item.scss',\n shadow: true,\n})\nexport class TreeViewItem {\n @Element() host: HTMLElement;\n @Prop() label: string;\n @Prop({ reflect: true, mutable: true }) expanded: boolean = false;\n @Prop() initiallyExpanded: boolean = false;\n @Prop() disableItem: boolean = false;\n @Prop() ariaLabel: string | null;\n\n @Event() ifxTreeViewItemExpandChange: EventEmitter<boolean>;\n @Event() ifxTreeViewItemCheckChange: EventEmitter<TreeViewCheckChangeEvent>;\n @Event() ifxTreeViewItemDisableChange: EventEmitter<boolean>;\n\n @State() private hasChildren: boolean = false;\n @State() private isChecked: boolean = false;\n @State() private partialChecked: boolean = false;\n @State() private level: number = 0;\n @State() private disableAllItems: boolean = false;\n @State() private expandAllItems: boolean = false;\n\n private get disabled() {\n return this.disableAllItems || this.disableItem;\n }\n\n private get isExpanded() {\n return this.expandAllItems || this.expanded;\n }\n\n private findChildren = () => Array.from(this.host.children)\n .filter((child): child is HTMLElement =>\n child instanceof HTMLElement && child.tagName === 'IFX-TREE-VIEW-ITEM'\n );\n\n private calculateNodeLevel = (): number => {\n let level = 0, parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW-ITEM') level++;\n parent = parent.parentElement;\n }\n return level;\n };\n\n componentWillLoad() {\n this.initializeNode();\n this.setupEventListeners();\n }\n\n componentDidLoad() {\n this.observeDisableAllItems();\n this.observeExpandAllItems();\n if (this.shouldExpandFromParent()) {\n this.expandAllDescendants();\n }\n (this.host as any)['__stencil_instance'] = this;\n }\n\n private shouldExpandFromParent(): boolean {\n let parent = this.host.parentElement;\n while (parent) {\n if (\n parent.tagName === 'IFX-TREE-VIEW' &&\n (parent.hasAttribute('expand-all-items') || parent.hasAttribute('data-expand-all-items'))\n ) {\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private expandAllDescendants() {\n this.expanded = true;\n const children = this.findChildren();\n for (const child of children) {\n if (typeof (child as any).expanded !== 'undefined') {\n (child as any).expanded = true;\n }\n if (typeof (child as any).expandAllDescendants === 'function') {\n (child as any).expandAllDescendants();\n }\n }\n }\n\n private observeDisableAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW') {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'disable-all-items'\n ) {\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private observeExpandAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW' || parent.hasAttribute('data-expand-all-items')) {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'data-expand-all-items'\n ) {\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private initializeNode() {\n this.expanded = this.initiallyExpanded;\n this.hasChildren = this.findChildren().length > 0;\n this.level = this.calculateNodeLevel();\n this.host.setAttribute('data-level', this.level.toString());\n }\n\n private setupEventListeners() {\n this.host.addEventListener('internal-check-state-change', this.handleStateChange);\n }\n\n private handleStateChange = (event: CustomEvent) => {\n if (this.disabled) return;\n event.stopPropagation();\n this.updateCheckState(event.detail.checked);\n };\n\n private handleCheckboxChange = (event: CustomEvent) => {\n if (this.disabled) return;\n this.updateCheckState(event.detail?.checked ?? !this.isChecked);\n };\n\n private handleHeaderClick = ({ target }: MouseEvent) => {\n if (this.disabled) return;\n if (!(target as HTMLElement).closest('.tree-item__checkbox-container, .tree-item__chevron-container')) {\n this.updateCheckState(!this.isChecked);\n }\n };\n\n private async updateCheckState(checked: boolean, fromParent = false) {\n if (this.disabled) return;\n\n if (!fromParent && this.hasChildren) {\n const affected = this.collectDescendantStates(checked);\n this.setNodeState({ isChecked: checked, partialChecked: false }, false);\n await this.updateChildrenSilently(checked);\n this.ifxTreeViewItemCheckChange.emit({\n checked,\n indeterminate: false,\n affectedChildItems: affected,\n });\n this.updateParentState();\n } else if (fromParent) {\n this.setNodeState({ isChecked: checked, partialChecked: false }, false);\n } else {\n this.setNodeState({ isChecked: checked, partialChecked: false });\n await this.updateChildrenState(checked);\n this.updateParentState();\n }\n }\n\n private async updateChildrenSilently(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n const childInstance = (child as any)['__stencil_instance'];\n if (childInstance) {\n childInstance.setNodeState({ isChecked: checked, partialChecked: false }, false);\n await childInstance.updateChildrenSilently(checked);\n }\n }\n }\n\n @Watch('expanded')\n handleExpandedChange(newValue: boolean) {\n this.ifxTreeViewItemExpandChange.emit(newValue);\n }\n\n @Watch('disableItem')\n handleDisableItemChange(newValue: boolean) {\n this.ifxTreeViewItemDisableChange.emit(newValue);\n }\n\n private setNodeState(state: TreeState, emitEvent = true) {\n this.isChecked = state.isChecked;\n this.partialChecked = state.partialChecked;\n if (emitEvent) {\n this.ifxTreeViewItemCheckChange.emit({\n checked: this.isChecked,\n indeterminate: this.partialChecked,\n });\n }\n }\n\n private collectDescendantStates(checked: boolean) {\n const descendants: Array<{ label: string; checked: boolean; indeterminate: boolean }> = [];\n const collect = (el: Element) => {\n let instance: any = null;\n if (el === this.host) {\n instance = this;\n } else if ((el as any)['__stencil_instance']) {\n instance = (el as any)['__stencil_instance'];\n }\n const label = instance?.label ?? (el as any).label ?? '';\n descendants.push({\n label,\n checked,\n indeterminate: false,\n });\n Array.from(el.children)\n .forEach(child => {\n if (child.tagName === 'IFX-TREE-VIEW-ITEM') {\n collect(child);\n }\n });\n };\n collect(this.host);\n return descendants;\n }\n\n private async updateChildrenState(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n await (child as HTMLIfxTreeViewItemElement).componentOnReady();\n child.dispatchEvent(new CustomEvent('internal-check-state-change', {\n detail: { checked },\n bubbles: false,\n composed: true\n }));\n }\n }\n\n private findSiblingNodes(parent: HTMLElement): HTMLIfxTreeViewItemElement[] {\n const parentEl = parent.parentElement;\n if (!parentEl) return [];\n return Array.from(\n parentEl.querySelectorAll('ifx-tree-view-item')\n ).map(el => el as HTMLIfxTreeViewItemElement);\n }\n\n private updateParentState() {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item') as HTMLIfxTreeViewItemElement;\n if (!parent) return;\n parent.componentOnReady().then(resolved => {\n const parentNode = resolved as unknown as TreeViewItem;\n if (!parentNode?.updateParentState) return;\n const siblings = this.findSiblingNodes(parent);\n const states = this.calculateSiblingStates(siblings);\n parentNode.setNodeState({\n isChecked: states.allChecked,\n partialChecked: !states.allChecked && states.someChecked\n });\n parentNode.updateParentState();\n });\n }\n\n private calculateSiblingStates(siblings: HTMLIfxTreeViewItemElement[]) {\n return {\n allChecked: siblings.every(sib => (sib as unknown as TreeViewItem).isChecked),\n someChecked: siblings.some(sib => {\n const node = sib as unknown as TreeViewItem;\n return node.isChecked || node.partialChecked;\n })\n };\n }\n\n private toggleExpand = () => {\n if (this.disabled) return;\n this.hasChildren && (this.expanded = !this.expanded);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n\n const allItems = Array.from(\n this.host\n .closest('ifx-tree-view')\n ?.querySelectorAll('ifx-tree-view-item') || []\n );\n\n const visibleItems = allItems.filter(item => {\n let parent = item.parentElement?.closest('ifx-tree-view-item');\n while (parent) {\n const parentCmp = parent as any;\n if (!(parentCmp.expandAllItems || parentCmp.expanded)) {\n return false;\n }\n parent = parent.parentElement?.closest('ifx-tree-view-item');\n }\n return true;\n });\n\n const currentIndex = visibleItems.findIndex(el => el === this.host);\n\n function focusLabelIcon(el: Element | null) {\n (el as HTMLElement | null)?.focus();\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = currentIndex + 1;\n while (nextIndex < visibleItems.length) {\n const next = visibleItems[nextIndex] as any;\n if (!next.disabled) {\n focusLabelIcon(next.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n nextIndex++;\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = currentIndex - 1;\n while (prevIndex >= 0) {\n const prev = visibleItems[prevIndex] as any;\n if (!prev.disabled) {\n focusLabelIcon(prev.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n prevIndex--;\n }\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (!this.isExpanded && this.hasChildren) {\n this.expanded = true;\n } else if (this.isExpanded && this.hasChildren) {\n const firstChild = this.host.querySelector('ifx-tree-view-item');\n if (firstChild && !(firstChild as any).disabled) {\n focusLabelIcon((firstChild as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (this.isExpanded && this.hasChildren) {\n this.expanded = false;\n } else {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item');\n if (parent && !(parent as any).disabled) {\n focusLabelIcon((parent as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n this.updateCheckState(!this.isChecked);\n break;\n }\n }\n };\n\n render() {\n return (\n <div\n class={{\n 'tree-item': true,\n 'tree-item--expanded': this.isExpanded,\n 'tree-item--has-children': this.hasChildren,\n 'tree-item--disabled': this.disabled,\n }}\n role=\"treeitem\"\n aria-expanded={this.isExpanded ? 'true' : 'false'}\n data-level={this.level}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.ariaLabel}\n >\n <div class=\"tree-item__content\">\n {this.renderCheckbox()}\n {this.renderHeader()}\n </div>\n {this.isExpanded && <div class=\"tree-item__children\"><slot/></div>}\n </div>\n );\n }\n\n private renderHeader() {\n return (\n <div\n class=\"tree-item__header\"\n style={{ paddingLeft: `${this.level * 24 + 10}px` }}\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n aria-disabled={this.disabled ? 'true' : undefined}\n >\n {this.renderControls()}\n </div>\n );\n }\n\n private renderCheckbox() {\n return (\n <div class=\"tree-item__checkbox-container\" onClick={e => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={this.isChecked}\n indeterminate={this.partialChecked}\n onIfxChange={this.handleCheckboxChange}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n private renderControls() {\n return [\n this.hasChildren && (\n <div class=\"tree-item__chevron-container\" onClick={this.toggleExpand}>\n <ifx-icon class={`tree-item__chevron ${this.isExpanded ? 'chevron-down' : 'chevron-right'}`}\n icon=\"chevron-right-16\"/>\n <div class=\"tree-item__line\"/>\n </div>\n ),\n <div\n class=\"tree-item__label-icon-container\"\n tabIndex={this.disabled ? -1 : 0}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tree-item__icon-container\">\n {\n this.hasChildren ? (\n <Fragment>\n <ifx-icon class={{'icon--hidden': this.isExpanded}} icon=\"folder-16\"/>\n <ifx-icon class={{'icon--hidden': !this.isExpanded}} icon=\"folder-open-16\"/>\n </Fragment>\n ) : (\n <ifx-icon icon=\"file-16\"/>\n )\n }\n </div>\n <span class=\"tree-item__label\">{this.label}</span>\n </div>\n ];\n }\n}\n"],"version":3}
@@ -143,6 +143,7 @@ export class TreeViewItem {
143
143
  if (this.shouldExpandFromParent()) {
144
144
  this.expandAllDescendants();
145
145
  }
146
+ this.host['__stencil_instance'] = this;
146
147
  }
147
148
  shouldExpandFromParent() {
148
149
  let parent = this.host.parentElement;
@@ -216,12 +217,38 @@ export class TreeViewItem {
216
217
  setupEventListeners() {
217
218
  this.host.addEventListener('internal-check-state-change', this.handleStateChange);
218
219
  }
219
- async updateCheckState(checked) {
220
+ async updateCheckState(checked, fromParent = false) {
220
221
  if (this.disabled)
221
222
  return;
222
- this.setNodeState({ isChecked: checked, partialChecked: false });
223
- await this.updateChildrenState(checked);
224
- this.updateParentState();
223
+ if (!fromParent && this.hasChildren) {
224
+ const affected = this.collectDescendantStates(checked);
225
+ this.setNodeState({ isChecked: checked, partialChecked: false }, false);
226
+ await this.updateChildrenSilently(checked);
227
+ this.ifxTreeViewItemCheckChange.emit({
228
+ checked,
229
+ indeterminate: false,
230
+ affectedChildItems: affected,
231
+ });
232
+ this.updateParentState();
233
+ }
234
+ else if (fromParent) {
235
+ this.setNodeState({ isChecked: checked, partialChecked: false }, false);
236
+ }
237
+ else {
238
+ this.setNodeState({ isChecked: checked, partialChecked: false });
239
+ await this.updateChildrenState(checked);
240
+ this.updateParentState();
241
+ }
242
+ }
243
+ async updateChildrenSilently(checked) {
244
+ const children = this.findChildren();
245
+ for (const child of children) {
246
+ const childInstance = child['__stencil_instance'];
247
+ if (childInstance) {
248
+ childInstance.setNodeState({ isChecked: checked, partialChecked: false }, false);
249
+ await childInstance.updateChildrenSilently(checked);
250
+ }
251
+ }
225
252
  }
226
253
  handleExpandedChange(newValue) {
227
254
  this.ifxTreeViewItemExpandChange.emit(newValue);
@@ -229,13 +256,42 @@ export class TreeViewItem {
229
256
  handleDisableItemChange(newValue) {
230
257
  this.ifxTreeViewItemDisableChange.emit(newValue);
231
258
  }
232
- setNodeState(state) {
259
+ setNodeState(state, emitEvent = true) {
233
260
  this.isChecked = state.isChecked;
234
261
  this.partialChecked = state.partialChecked;
235
- this.ifxTreeViewItemCheckChange.emit({
236
- checked: this.isChecked,
237
- indeterminate: this.partialChecked,
238
- });
262
+ if (emitEvent) {
263
+ this.ifxTreeViewItemCheckChange.emit({
264
+ checked: this.isChecked,
265
+ indeterminate: this.partialChecked,
266
+ });
267
+ }
268
+ }
269
+ collectDescendantStates(checked) {
270
+ const descendants = [];
271
+ const collect = (el) => {
272
+ var _a, _b;
273
+ let instance = null;
274
+ if (el === this.host) {
275
+ instance = this;
276
+ }
277
+ else if (el['__stencil_instance']) {
278
+ instance = el['__stencil_instance'];
279
+ }
280
+ const label = (_b = (_a = instance === null || instance === void 0 ? void 0 : instance.label) !== null && _a !== void 0 ? _a : el.label) !== null && _b !== void 0 ? _b : '';
281
+ descendants.push({
282
+ label,
283
+ checked,
284
+ indeterminate: false,
285
+ });
286
+ Array.from(el.children)
287
+ .forEach(child => {
288
+ if (child.tagName === 'IFX-TREE-VIEW-ITEM') {
289
+ collect(child);
290
+ }
291
+ });
292
+ };
293
+ collect(this.host);
294
+ return descendants;
239
295
  }
240
296
  async updateChildrenState(checked) {
241
297
  const children = this.findChildren();
@@ -282,12 +338,12 @@ export class TreeViewItem {
282
338
  };
283
339
  }
284
340
  render() {
285
- return (h("div", { key: '10a31a82078320a73d026ec8d42ae23d78049a9b', class: {
341
+ return (h("div", { key: 'a626535eaa7807016da9b015daecc1c4ecba4283', class: {
286
342
  'tree-item': true,
287
343
  'tree-item--expanded': this.isExpanded,
288
344
  'tree-item--has-children': this.hasChildren,
289
345
  'tree-item--disabled': this.disabled,
290
- }, role: "treeitem", "aria-expanded": this.isExpanded ? 'true' : 'false', "data-level": this.level, "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel }, h("div", { key: 'ad1dcf1ca93fd3f35f00d411e8740bfc54dc7c9f', class: "tree-item__content" }, this.renderCheckbox(), this.renderHeader()), this.isExpanded && h("div", { key: '1023010ffb83954bc852cafc18f3b79003ffbf3e', class: "tree-item__children" }, h("slot", { key: 'c7cd0a61015b29a99b963576c8bc3fd0725541f3' }))));
346
+ }, role: "treeitem", "aria-expanded": this.isExpanded ? 'true' : 'false', "data-level": this.level, "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel }, h("div", { key: 'e6e9bf260e0c1f5584826189ae44de0abbeed4e0', class: "tree-item__content" }, this.renderCheckbox(), this.renderHeader()), this.isExpanded && h("div", { key: 'e24cad37fc29633023d9e2b7216c2281056fc76e', class: "tree-item__children" }, h("slot", { key: '65d7afa55a28667bed348cafd784636256cd23d5' }))));
291
347
  }
292
348
  renderHeader() {
293
349
  return (h("div", { class: "tree-item__header", style: { paddingLeft: `${this.level * 24 + 10}px` }, onClick: this.handleHeaderClick, tabIndex: -1, "aria-disabled": this.disabled ? 'true' : undefined }, this.renderControls()));
@@ -452,9 +508,15 @@ export class TreeViewItem {
452
508
  "text": ""
453
509
  },
454
510
  "complexType": {
455
- "original": "{ checked: boolean; indeterminate: boolean }",
456
- "resolved": "{ checked: boolean; indeterminate: boolean; }",
457
- "references": {}
511
+ "original": "TreeViewCheckChangeEvent",
512
+ "resolved": "TreeViewCheckChangeEvent",
513
+ "references": {
514
+ "TreeViewCheckChangeEvent": {
515
+ "location": "local",
516
+ "path": "/home/runner/work/infineon-design-system-stencil/infineon-design-system-stencil/packages/components/src/components/tree-view/tree-view-item.tsx",
517
+ "id": "src/components/tree-view/tree-view-item.tsx::TreeViewCheckChangeEvent"
518
+ }
519
+ }
458
520
  }
459
521
  }, {
460
522
  "method": "ifxTreeViewItemDisableChange",
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view-item.js","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Element, Fragment, Event, EventEmitter, Watch } from '@stencil/core';\n\ninterface TreeState {\n isChecked: boolean;\n partialChecked: boolean;\n}\n\ntype HTMLIfxTreeViewItemElement = HTMLElement & { componentOnReady: () => Promise<unknown> };\n\n@Component({\n tag: 'ifx-tree-view-item',\n styleUrl: 'tree-view-item.scss',\n shadow: true,\n})\nexport class TreeViewItem {\n @Element() host: HTMLElement;\n @Prop() label: string;\n @Prop({ reflect: true, mutable: true }) expanded: boolean = false;\n @Prop() initiallyExpanded: boolean = false;\n @Prop() disableItem: boolean = false;\n @Prop() ariaLabel: string | null;\n\n @Event() ifxTreeViewItemExpandChange: EventEmitter<boolean>;\n @Event() ifxTreeViewItemCheckChange: EventEmitter<{ checked: boolean; indeterminate: boolean }>;\n @Event() ifxTreeViewItemDisableChange: EventEmitter<boolean>;\n\n @State() private hasChildren: boolean = false;\n @State() private isChecked: boolean = false;\n @State() private partialChecked: boolean = false;\n @State() private level: number = 0;\n @State() private disableAllItems: boolean = false;\n @State() private expandAllItems: boolean = false;\n\n private get disabled() {\n return this.disableAllItems || this.disableItem;\n }\n\n private get isExpanded() {\n return this.expandAllItems || this.expanded;\n }\n\n private findChildren = () => Array.from(this.host.children)\n .filter((child): child is HTMLElement =>\n child instanceof HTMLElement && child.tagName === 'IFX-TREE-VIEW-ITEM'\n );\n\n private calculateNodeLevel = (): number => {\n let level = 0, parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW-ITEM') level++;\n parent = parent.parentElement;\n }\n return level;\n };\n\n componentWillLoad() {\n this.initializeNode();\n this.setupEventListeners();\n }\n\n componentDidLoad() {\n this.observeDisableAllItems();\n this.observeExpandAllItems();\n if (this.shouldExpandFromParent()) {\n this.expandAllDescendants();\n }\n }\n\n private shouldExpandFromParent(): boolean {\n let parent = this.host.parentElement;\n while (parent) {\n if (\n parent.tagName === 'IFX-TREE-VIEW' &&\n (parent.hasAttribute('expand-all-items') || parent.hasAttribute('data-expand-all-items'))\n ) {\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private expandAllDescendants() {\n this.expanded = true;\n const children = this.findChildren();\n for (const child of children) {\n if (typeof (child as any).expanded !== 'undefined') {\n (child as any).expanded = true;\n }\n if (typeof (child as any).expandAllDescendants === 'function') {\n (child as any).expandAllDescendants();\n }\n }\n }\n\n private observeDisableAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW') {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'disable-all-items'\n ) {\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private observeExpandAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW' || parent.hasAttribute('data-expand-all-items')) {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'data-expand-all-items'\n ) {\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private initializeNode() {\n this.expanded = this.initiallyExpanded;\n this.hasChildren = this.findChildren().length > 0;\n this.level = this.calculateNodeLevel();\n this.host.setAttribute('data-level', this.level.toString());\n }\n\n private setupEventListeners() {\n this.host.addEventListener('internal-check-state-change', this.handleStateChange);\n }\n\n private handleStateChange = (event: CustomEvent) => {\n if (this.disabled) return;\n event.stopPropagation();\n this.updateCheckState(event.detail.checked);\n };\n\n private handleCheckboxChange = (event: CustomEvent) => {\n if (this.disabled) return;\n this.updateCheckState(event.detail?.checked ?? !this.isChecked);\n };\n\n private handleHeaderClick = ({ target }: MouseEvent) => {\n if (this.disabled) return;\n if (!(target as HTMLElement).closest('.tree-item__checkbox-container, .tree-item__chevron-container')) {\n this.updateCheckState(!this.isChecked);\n }\n };\n\n private async updateCheckState(checked: boolean) {\n if (this.disabled) return;\n this.setNodeState({ isChecked: checked, partialChecked: false });\n await this.updateChildrenState(checked);\n this.updateParentState();\n }\n\n @Watch('expanded')\n handleExpandedChange(newValue: boolean) {\n this.ifxTreeViewItemExpandChange.emit(newValue);\n }\n\n @Watch('disableItem')\n handleDisableItemChange(newValue: boolean) {\n this.ifxTreeViewItemDisableChange.emit(newValue);\n }\n\n private setNodeState(state: TreeState) {\n this.isChecked = state.isChecked;\n this.partialChecked = state.partialChecked;\n this.ifxTreeViewItemCheckChange.emit({\n checked: this.isChecked,\n indeterminate: this.partialChecked,\n });\n }\n\n private async updateChildrenState(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n await (child as HTMLIfxTreeViewItemElement).componentOnReady();\n child.dispatchEvent(new CustomEvent('internal-check-state-change', {\n detail: { checked },\n bubbles: false,\n composed: true\n }));\n }\n }\n\n private findSiblingNodes(parent: HTMLElement): HTMLIfxTreeViewItemElement[] {\n const parentEl = parent.parentElement;\n if (!parentEl) return [];\n return Array.from(\n parentEl.querySelectorAll('ifx-tree-view-item')\n ).map(el => el as HTMLIfxTreeViewItemElement);\n }\n\n private updateParentState() {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item') as HTMLIfxTreeViewItemElement;\n if (!parent) return;\n parent.componentOnReady().then(resolved => {\n const parentNode = resolved as unknown as TreeViewItem;\n if (!parentNode?.updateParentState) return;\n const siblings = this.findSiblingNodes(parent);\n const states = this.calculateSiblingStates(siblings);\n parentNode.setNodeState({\n isChecked: states.allChecked,\n partialChecked: !states.allChecked && states.someChecked\n });\n parentNode.updateParentState();\n });\n }\n\n private calculateSiblingStates(siblings: HTMLIfxTreeViewItemElement[]) {\n return {\n allChecked: siblings.every(sib => (sib as unknown as TreeViewItem).isChecked),\n someChecked: siblings.some(sib => {\n const node = sib as unknown as TreeViewItem;\n return node.isChecked || node.partialChecked;\n })\n };\n }\n\n private toggleExpand = () => {\n if (this.disabled) return;\n this.hasChildren && (this.expanded = !this.expanded);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n\n const allItems = Array.from(\n this.host\n .closest('ifx-tree-view')\n ?.querySelectorAll('ifx-tree-view-item') || []\n );\n\n const visibleItems = allItems.filter(item => {\n let parent = item.parentElement?.closest('ifx-tree-view-item');\n while (parent) {\n const parentCmp = parent as any;\n if (!(parentCmp.expandAllItems || parentCmp.expanded)) {\n return false;\n }\n parent = parent.parentElement?.closest('ifx-tree-view-item');\n }\n return true;\n });\n\n const currentIndex = visibleItems.findIndex(el => el === this.host);\n\n function focusLabelIcon(el: Element | null) {\n (el as HTMLElement | null)?.focus();\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = currentIndex + 1;\n while (nextIndex < visibleItems.length) {\n const next = visibleItems[nextIndex] as any;\n if (!next.disabled) {\n focusLabelIcon(next.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n nextIndex++;\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = currentIndex - 1;\n while (prevIndex >= 0) {\n const prev = visibleItems[prevIndex] as any;\n if (!prev.disabled) {\n focusLabelIcon(prev.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n prevIndex--;\n }\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (!this.isExpanded && this.hasChildren) {\n this.expanded = true;\n } else if (this.isExpanded && this.hasChildren) {\n const firstChild = this.host.querySelector('ifx-tree-view-item');\n if (firstChild && !(firstChild as any).disabled) {\n focusLabelIcon((firstChild as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (this.isExpanded && this.hasChildren) {\n this.expanded = false;\n } else {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item');\n if (parent && !(parent as any).disabled) {\n focusLabelIcon((parent as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n this.updateCheckState(!this.isChecked);\n break;\n }\n }\n };\n\n render() {\n return (\n <div\n class={{\n 'tree-item': true,\n 'tree-item--expanded': this.isExpanded,\n 'tree-item--has-children': this.hasChildren,\n 'tree-item--disabled': this.disabled,\n }}\n role=\"treeitem\"\n aria-expanded={this.isExpanded ? 'true' : 'false'}\n data-level={this.level}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.ariaLabel}\n >\n <div class=\"tree-item__content\">\n {this.renderCheckbox()}\n {this.renderHeader()}\n </div>\n {this.isExpanded && <div class=\"tree-item__children\"><slot/></div>}\n </div>\n );\n }\n\n private renderHeader() {\n return (\n <div\n class=\"tree-item__header\"\n style={{ paddingLeft: `${this.level * 24 + 10}px` }}\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n aria-disabled={this.disabled ? 'true' : undefined}\n >\n {this.renderControls()}\n </div>\n );\n }\n\n private renderCheckbox() {\n return (\n <div class=\"tree-item__checkbox-container\" onClick={e => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={this.isChecked}\n indeterminate={this.partialChecked}\n onIfxChange={this.handleCheckboxChange}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n private renderControls() {\n return [\n this.hasChildren && (\n <div class=\"tree-item__chevron-container\" onClick={this.toggleExpand}>\n <ifx-icon class={`tree-item__chevron ${this.isExpanded ? 'chevron-down' : 'chevron-right'}`}\n icon=\"chevron-right-16\"/>\n <div class=\"tree-item__line\"/>\n </div>\n ),\n <div\n class=\"tree-item__label-icon-container\"\n tabIndex={this.disabled ? -1 : 0}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tree-item__icon-container\">\n {\n this.hasChildren ? (\n <Fragment>\n <ifx-icon class={{'icon--hidden': this.isExpanded}} icon=\"folder-16\"/>\n <ifx-icon class={{'icon--hidden': !this.isExpanded}} icon=\"folder-open-16\"/>\n </Fragment>\n ) : (\n <ifx-icon icon=\"file-16\"/>\n )\n }\n </div>\n <span class=\"tree-item__label\">{this.label}</span>\n </div>\n ];\n }\n}\n"]}
1
+ {"version":3,"file":"tree-view-item.js","sourceRoot":"","sources":["../../../src/components/tree-view/tree-view-item.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Element, Fragment, Event, EventEmitter, Watch } from '@stencil/core';\n\nexport interface TreeViewCheckChangeEvent {\n checked: boolean;\n indeterminate: boolean;\n affectedChildItems?: Array<{ label: string; checked: boolean; indeterminate: boolean }>;\n}\n\ninterface TreeState {\n isChecked: boolean;\n partialChecked: boolean;\n}\n\ntype HTMLIfxTreeViewItemElement = HTMLElement & { componentOnReady: () => Promise<unknown> };\n\n@Component({\n tag: 'ifx-tree-view-item',\n styleUrl: 'tree-view-item.scss',\n shadow: true,\n})\nexport class TreeViewItem {\n @Element() host: HTMLElement;\n @Prop() label: string;\n @Prop({ reflect: true, mutable: true }) expanded: boolean = false;\n @Prop() initiallyExpanded: boolean = false;\n @Prop() disableItem: boolean = false;\n @Prop() ariaLabel: string | null;\n\n @Event() ifxTreeViewItemExpandChange: EventEmitter<boolean>;\n @Event() ifxTreeViewItemCheckChange: EventEmitter<TreeViewCheckChangeEvent>;\n @Event() ifxTreeViewItemDisableChange: EventEmitter<boolean>;\n\n @State() private hasChildren: boolean = false;\n @State() private isChecked: boolean = false;\n @State() private partialChecked: boolean = false;\n @State() private level: number = 0;\n @State() private disableAllItems: boolean = false;\n @State() private expandAllItems: boolean = false;\n\n private get disabled() {\n return this.disableAllItems || this.disableItem;\n }\n\n private get isExpanded() {\n return this.expandAllItems || this.expanded;\n }\n\n private findChildren = () => Array.from(this.host.children)\n .filter((child): child is HTMLElement =>\n child instanceof HTMLElement && child.tagName === 'IFX-TREE-VIEW-ITEM'\n );\n\n private calculateNodeLevel = (): number => {\n let level = 0, parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW-ITEM') level++;\n parent = parent.parentElement;\n }\n return level;\n };\n\n componentWillLoad() {\n this.initializeNode();\n this.setupEventListeners();\n }\n\n componentDidLoad() {\n this.observeDisableAllItems();\n this.observeExpandAllItems();\n if (this.shouldExpandFromParent()) {\n this.expandAllDescendants();\n }\n (this.host as any)['__stencil_instance'] = this;\n }\n\n private shouldExpandFromParent(): boolean {\n let parent = this.host.parentElement;\n while (parent) {\n if (\n parent.tagName === 'IFX-TREE-VIEW' &&\n (parent.hasAttribute('expand-all-items') || parent.hasAttribute('data-expand-all-items'))\n ) {\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private expandAllDescendants() {\n this.expanded = true;\n const children = this.findChildren();\n for (const child of children) {\n if (typeof (child as any).expanded !== 'undefined') {\n (child as any).expanded = true;\n }\n if (typeof (child as any).expandAllDescendants === 'function') {\n (child as any).expandAllDescendants();\n }\n }\n }\n\n private observeDisableAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW') {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'disable-all-items'\n ) {\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n const disableAll = (parent as any).disableAllItems;\n this.disableAllItems = !!disableAll || parent.hasAttribute('disable-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private observeExpandAllItems() {\n let parent = this.host.parentElement;\n while (parent) {\n if (parent.tagName === 'IFX-TREE-VIEW' || parent.hasAttribute('data-expand-all-items')) {\n const observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'data-expand-all-items'\n ) {\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n }\n }\n });\n observer.observe(parent, { attributes: true });\n this.expandAllItems = parent.hasAttribute('data-expand-all-items');\n break;\n }\n parent = parent.parentElement;\n }\n }\n\n private initializeNode() {\n this.expanded = this.initiallyExpanded;\n this.hasChildren = this.findChildren().length > 0;\n this.level = this.calculateNodeLevel();\n this.host.setAttribute('data-level', this.level.toString());\n }\n\n private setupEventListeners() {\n this.host.addEventListener('internal-check-state-change', this.handleStateChange);\n }\n\n private handleStateChange = (event: CustomEvent) => {\n if (this.disabled) return;\n event.stopPropagation();\n this.updateCheckState(event.detail.checked);\n };\n\n private handleCheckboxChange = (event: CustomEvent) => {\n if (this.disabled) return;\n this.updateCheckState(event.detail?.checked ?? !this.isChecked);\n };\n\n private handleHeaderClick = ({ target }: MouseEvent) => {\n if (this.disabled) return;\n if (!(target as HTMLElement).closest('.tree-item__checkbox-container, .tree-item__chevron-container')) {\n this.updateCheckState(!this.isChecked);\n }\n };\n\n private async updateCheckState(checked: boolean, fromParent = false) {\n if (this.disabled) return;\n\n if (!fromParent && this.hasChildren) {\n const affected = this.collectDescendantStates(checked);\n this.setNodeState({ isChecked: checked, partialChecked: false }, false);\n await this.updateChildrenSilently(checked);\n this.ifxTreeViewItemCheckChange.emit({\n checked,\n indeterminate: false,\n affectedChildItems: affected,\n });\n this.updateParentState();\n } else if (fromParent) {\n this.setNodeState({ isChecked: checked, partialChecked: false }, false);\n } else {\n this.setNodeState({ isChecked: checked, partialChecked: false });\n await this.updateChildrenState(checked);\n this.updateParentState();\n }\n }\n\n private async updateChildrenSilently(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n const childInstance = (child as any)['__stencil_instance'];\n if (childInstance) {\n childInstance.setNodeState({ isChecked: checked, partialChecked: false }, false);\n await childInstance.updateChildrenSilently(checked);\n }\n }\n }\n\n @Watch('expanded')\n handleExpandedChange(newValue: boolean) {\n this.ifxTreeViewItemExpandChange.emit(newValue);\n }\n\n @Watch('disableItem')\n handleDisableItemChange(newValue: boolean) {\n this.ifxTreeViewItemDisableChange.emit(newValue);\n }\n\n private setNodeState(state: TreeState, emitEvent = true) {\n this.isChecked = state.isChecked;\n this.partialChecked = state.partialChecked;\n if (emitEvent) {\n this.ifxTreeViewItemCheckChange.emit({\n checked: this.isChecked,\n indeterminate: this.partialChecked,\n });\n }\n }\n\n private collectDescendantStates(checked: boolean) {\n const descendants: Array<{ label: string; checked: boolean; indeterminate: boolean }> = [];\n const collect = (el: Element) => {\n let instance: any = null;\n if (el === this.host) {\n instance = this;\n } else if ((el as any)['__stencil_instance']) {\n instance = (el as any)['__stencil_instance'];\n }\n const label = instance?.label ?? (el as any).label ?? '';\n descendants.push({\n label,\n checked,\n indeterminate: false,\n });\n Array.from(el.children)\n .forEach(child => {\n if (child.tagName === 'IFX-TREE-VIEW-ITEM') {\n collect(child);\n }\n });\n };\n collect(this.host);\n return descendants;\n }\n\n private async updateChildrenState(checked: boolean) {\n const children = this.findChildren();\n for (const child of children) {\n await (child as HTMLIfxTreeViewItemElement).componentOnReady();\n child.dispatchEvent(new CustomEvent('internal-check-state-change', {\n detail: { checked },\n bubbles: false,\n composed: true\n }));\n }\n }\n\n private findSiblingNodes(parent: HTMLElement): HTMLIfxTreeViewItemElement[] {\n const parentEl = parent.parentElement;\n if (!parentEl) return [];\n return Array.from(\n parentEl.querySelectorAll('ifx-tree-view-item')\n ).map(el => el as HTMLIfxTreeViewItemElement);\n }\n\n private updateParentState() {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item') as HTMLIfxTreeViewItemElement;\n if (!parent) return;\n parent.componentOnReady().then(resolved => {\n const parentNode = resolved as unknown as TreeViewItem;\n if (!parentNode?.updateParentState) return;\n const siblings = this.findSiblingNodes(parent);\n const states = this.calculateSiblingStates(siblings);\n parentNode.setNodeState({\n isChecked: states.allChecked,\n partialChecked: !states.allChecked && states.someChecked\n });\n parentNode.updateParentState();\n });\n }\n\n private calculateSiblingStates(siblings: HTMLIfxTreeViewItemElement[]) {\n return {\n allChecked: siblings.every(sib => (sib as unknown as TreeViewItem).isChecked),\n someChecked: siblings.some(sib => {\n const node = sib as unknown as TreeViewItem;\n return node.isChecked || node.partialChecked;\n })\n };\n }\n\n private toggleExpand = () => {\n if (this.disabled) return;\n this.hasChildren && (this.expanded = !this.expanded);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n\n const allItems = Array.from(\n this.host\n .closest('ifx-tree-view')\n ?.querySelectorAll('ifx-tree-view-item') || []\n );\n\n const visibleItems = allItems.filter(item => {\n let parent = item.parentElement?.closest('ifx-tree-view-item');\n while (parent) {\n const parentCmp = parent as any;\n if (!(parentCmp.expandAllItems || parentCmp.expanded)) {\n return false;\n }\n parent = parent.parentElement?.closest('ifx-tree-view-item');\n }\n return true;\n });\n\n const currentIndex = visibleItems.findIndex(el => el === this.host);\n\n function focusLabelIcon(el: Element | null) {\n (el as HTMLElement | null)?.focus();\n }\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n let nextIndex = currentIndex + 1;\n while (nextIndex < visibleItems.length) {\n const next = visibleItems[nextIndex] as any;\n if (!next.disabled) {\n focusLabelIcon(next.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n nextIndex++;\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n let prevIndex = currentIndex - 1;\n while (prevIndex >= 0) {\n const prev = visibleItems[prevIndex] as any;\n if (!prev.disabled) {\n focusLabelIcon(prev.shadowRoot?.querySelector('.tree-item__label-icon-container'));\n break;\n }\n prevIndex--;\n }\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (!this.isExpanded && this.hasChildren) {\n this.expanded = true;\n } else if (this.isExpanded && this.hasChildren) {\n const firstChild = this.host.querySelector('ifx-tree-view-item');\n if (firstChild && !(firstChild as any).disabled) {\n focusLabelIcon((firstChild as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (this.isExpanded && this.hasChildren) {\n this.expanded = false;\n } else {\n const parent = this.host.parentElement?.closest('ifx-tree-view-item');\n if (parent && !(parent as any).disabled) {\n focusLabelIcon((parent as HTMLElement).shadowRoot?.querySelector('.tree-item__label-icon-container'));\n }\n }\n break;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n this.updateCheckState(!this.isChecked);\n break;\n }\n }\n };\n\n render() {\n return (\n <div\n class={{\n 'tree-item': true,\n 'tree-item--expanded': this.isExpanded,\n 'tree-item--has-children': this.hasChildren,\n 'tree-item--disabled': this.disabled,\n }}\n role=\"treeitem\"\n aria-expanded={this.isExpanded ? 'true' : 'false'}\n data-level={this.level}\n aria-disabled={this.disabled ? 'true' : undefined}\n aria-label={this.ariaLabel}\n >\n <div class=\"tree-item__content\">\n {this.renderCheckbox()}\n {this.renderHeader()}\n </div>\n {this.isExpanded && <div class=\"tree-item__children\"><slot/></div>}\n </div>\n );\n }\n\n private renderHeader() {\n return (\n <div\n class=\"tree-item__header\"\n style={{ paddingLeft: `${this.level * 24 + 10}px` }}\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n aria-disabled={this.disabled ? 'true' : undefined}\n >\n {this.renderControls()}\n </div>\n );\n }\n\n private renderCheckbox() {\n return (\n <div class=\"tree-item__checkbox-container\" onClick={e => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={this.isChecked}\n indeterminate={this.partialChecked}\n onIfxChange={this.handleCheckboxChange}\n disabled={this.disabled}\n />\n </div>\n );\n }\n\n private renderControls() {\n return [\n this.hasChildren && (\n <div class=\"tree-item__chevron-container\" onClick={this.toggleExpand}>\n <ifx-icon class={`tree-item__chevron ${this.isExpanded ? 'chevron-down' : 'chevron-right'}`}\n icon=\"chevron-right-16\"/>\n <div class=\"tree-item__line\"/>\n </div>\n ),\n <div\n class=\"tree-item__label-icon-container\"\n tabIndex={this.disabled ? -1 : 0}\n onKeyDown={this.handleKeyDown}\n >\n <div class=\"tree-item__icon-container\">\n {\n this.hasChildren ? (\n <Fragment>\n <ifx-icon class={{'icon--hidden': this.isExpanded}} icon=\"folder-16\"/>\n <ifx-icon class={{'icon--hidden': !this.isExpanded}} icon=\"folder-open-16\"/>\n </Fragment>\n ) : (\n <ifx-icon icon=\"file-16\"/>\n )\n }\n </div>\n <span class=\"tree-item__label\">{this.label}</span>\n </div>\n ];\n }\n}\n"]}
@@ -87,7 +87,7 @@ const meta = {
87
87
  ifxTreeViewItemCheckChange: {
88
88
  action: 'ifxTreeViewItemCheckChange',
89
89
  table: { category: 'Custom Events' },
90
- description: 'Fired when a tree item is checked/unchecked.',
90
+ description: 'Fired when a tree item is checked/unchecked. For parent items, includes affectedChildItems array with all affected descendants.',
91
91
  },
92
92
  ifxTreeViewItemDisableChange: {
93
93
  action: 'ifxTreeViewItemDisableChange',
@@ -143,7 +143,14 @@ const BaseTemplate = (args) => {
143
143
  el.addEventListener('ifxTreeViewExpandAllChange', action('ifxTreeViewExpandAllChange'));
144
144
  el.addEventListener('ifxTreeViewDisableAllChange', action('ifxTreeViewDisableAllChange'));
145
145
  el.addEventListener('ifxTreeViewItemExpandChange', action('ifxTreeViewItemExpandChange'));
146
- el.addEventListener('ifxTreeViewItemCheckChange', action('ifxTreeViewItemCheckChange'));
146
+ el.addEventListener('ifxTreeViewItemCheckChange', (event) => {
147
+ const customEvent = event;
148
+ action('ifxTreeViewItemCheckChange')({
149
+ checked: customEvent.detail.checked,
150
+ indeterminate: customEvent.detail.indeterminate,
151
+ affectedChildItems: customEvent.detail.affectedChildItems || []
152
+ });
153
+ });
147
154
  el.addEventListener('ifxTreeViewItemDisableChange', action('ifxTreeViewItemDisableChange'));
148
155
  return el;
149
156
  };
@@ -170,7 +177,7 @@ Default.argTypes = Object.assign(Object.assign(Object.assign({}, hideAllControls
170
177
  }, ifxTreeViewItemCheckChange: {
171
178
  action: 'ifxTreeViewItemCheckChange',
172
179
  table: { category: 'Custom Events' },
173
- description: 'Fired when a tree item is checked/unchecked.',
180
+ description: 'Fired when a tree item is checked/unchecked. For parent items, includes affectedChildItems array with all affected descendants.',
174
181
  }, ifxTreeViewItemDisableChange: {
175
182
  action: 'ifxTreeViewItemDisableChange',
176
183
  table: { category: 'Custom Events' },
@@ -222,7 +229,14 @@ export const ContainerDemo = (args) => {
222
229
  el.addEventListener('ifxTreeViewExpandAllChange', action('ifxTreeViewExpandAllChange'));
223
230
  el.addEventListener('ifxTreeViewDisableAllChange', action('ifxTreeViewDisableAllChange'));
224
231
  el.addEventListener('ifxTreeViewItemExpandChange', action('ifxTreeViewItemExpandChange'));
225
- el.addEventListener('ifxTreeViewItemCheckChange', action('ifxTreeViewItemCheckChange'));
232
+ el.addEventListener('ifxTreeViewItemCheckChange', (event) => {
233
+ const customEvent = event;
234
+ action('ifxTreeViewItemCheckChange')({
235
+ checked: customEvent.detail.checked,
236
+ indeterminate: customEvent.detail.indeterminate,
237
+ affectedChildItems: customEvent.detail.affectedChildItems || []
238
+ });
239
+ });
226
240
  el.addEventListener('ifxTreeViewItemDisableChange', action('ifxTreeViewItemDisableChange'));
227
241
  wrapper.appendChild(el);
228
242
  return wrapper;
@@ -257,7 +271,14 @@ export const SingleItemStates = (args) => {
257
271
  el.addEventListener('ifxTreeViewExpandAllChange', action('ifxTreeViewExpandAllChange'));
258
272
  el.addEventListener('ifxTreeViewDisableAllChange', action('ifxTreeViewDisableAllChange'));
259
273
  el.addEventListener('ifxTreeViewItemExpandChange', action('ifxTreeViewItemExpandChange'));
260
- el.addEventListener('ifxTreeViewItemCheckChange', action('ifxTreeViewItemCheckChange'));
274
+ el.addEventListener('ifxTreeViewItemCheckChange', (event) => {
275
+ const customEvent = event;
276
+ action('ifxTreeViewItemCheckChange')({
277
+ checked: customEvent.detail.checked,
278
+ indeterminate: customEvent.detail.indeterminate,
279
+ affectedChildItems: customEvent.detail.affectedChildItems || []
280
+ });
281
+ });
261
282
  el.addEventListener('ifxTreeViewItemDisableChange', action('ifxTreeViewItemDisableChange'));
262
283
  return el;
263
284
  };