igniteui-webcomponents 6.1.0 → 6.1.1-alpha.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.
Files changed (304) hide show
  1. package/components/accordion/accordion.js +3 -3
  2. package/components/accordion/accordion.js.map +1 -1
  3. package/components/avatar/avatar.d.ts +8 -10
  4. package/components/avatar/avatar.js +26 -26
  5. package/components/avatar/avatar.js.map +1 -1
  6. package/components/badge/badge.d.ts +3 -4
  7. package/components/badge/badge.js +13 -13
  8. package/components/badge/badge.js.map +1 -1
  9. package/components/banner/banner.d.ts +2 -3
  10. package/components/banner/banner.js +8 -4
  11. package/components/banner/banner.js.map +1 -1
  12. package/components/button/button-base.d.ts +4 -11
  13. package/components/button/button-base.js +14 -15
  14. package/components/button/button-base.js.map +1 -1
  15. package/components/button/button.js.map +1 -1
  16. package/components/button/icon-button.d.ts +2 -2
  17. package/components/button/icon-button.js +1 -1
  18. package/components/button/icon-button.js.map +1 -1
  19. package/components/button-group/button-group.js +2 -2
  20. package/components/button-group/button-group.js.map +1 -1
  21. package/components/button-group/toggle-button.d.ts +0 -6
  22. package/components/button-group/toggle-button.js +4 -6
  23. package/components/button-group/toggle-button.js.map +1 -1
  24. package/components/calendar/calendar.js +1 -1
  25. package/components/calendar/calendar.js.map +1 -1
  26. package/components/calendar/days-view/days-view.js +3 -3
  27. package/components/calendar/days-view/days-view.js.map +1 -1
  28. package/components/calendar/months-view/months-view.js +5 -5
  29. package/components/calendar/months-view/months-view.js.map +1 -1
  30. package/components/calendar/years-view/years-view.js +5 -5
  31. package/components/calendar/years-view/years-view.js.map +1 -1
  32. package/components/card/card.actions.js +1 -1
  33. package/components/card/card.actions.js.map +1 -1
  34. package/components/card/card.content.js +1 -1
  35. package/components/card/card.content.js.map +1 -1
  36. package/components/card/card.header.js +1 -1
  37. package/components/card/card.header.js.map +1 -1
  38. package/components/card/card.js +1 -1
  39. package/components/card/card.js.map +1 -1
  40. package/components/card/card.media.js +1 -1
  41. package/components/card/card.media.js.map +1 -1
  42. package/components/carousel/carousel-indicator-container.js +1 -1
  43. package/components/carousel/carousel-indicator-container.js.map +1 -1
  44. package/components/carousel/carousel-indicator.d.ts +5 -7
  45. package/components/carousel/carousel-indicator.js +19 -19
  46. package/components/carousel/carousel-indicator.js.map +1 -1
  47. package/components/carousel/carousel-slide.d.ts +2 -3
  48. package/components/carousel/carousel-slide.js +17 -11
  49. package/components/carousel/carousel-slide.js.map +1 -1
  50. package/components/carousel/carousel.d.ts +0 -1
  51. package/components/carousel/carousel.js +15 -11
  52. package/components/carousel/carousel.js.map +1 -1
  53. package/components/chat/chat-input.d.ts +41 -0
  54. package/components/chat/chat-input.js +254 -0
  55. package/components/chat/chat-input.js.map +1 -0
  56. package/components/chat/chat-message-list.d.ts +24 -0
  57. package/components/chat/chat-message-list.js +88 -0
  58. package/components/chat/chat-message-list.js.map +1 -0
  59. package/components/chat/chat-message.d.ts +21 -0
  60. package/components/chat/chat-message.js +52 -0
  61. package/components/chat/chat-message.js.map +1 -0
  62. package/components/chat/chat.d.ts +41 -0
  63. package/components/chat/chat.js +98 -0
  64. package/components/chat/chat.js.map +1 -0
  65. package/components/chat/markdown-util.d.ts +2 -0
  66. package/components/chat/markdown-util.js +22 -0
  67. package/components/chat/markdown-util.js.map +1 -0
  68. package/components/chat/message-attachments.d.ts +28 -0
  69. package/components/chat/message-attachments.js +168 -0
  70. package/components/chat/message-attachments.js.map +1 -0
  71. package/components/chat/themes/chat.base.css.d.ts +1 -0
  72. package/components/chat/themes/chat.base.css.js +3 -0
  73. package/components/chat/themes/chat.base.css.js.map +1 -0
  74. package/components/chat/themes/input.base.css.d.ts +1 -0
  75. package/components/chat/themes/input.base.css.js +3 -0
  76. package/components/chat/themes/input.base.css.js.map +1 -0
  77. package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
  78. package/components/chat/themes/message-attachments.base.css.js +3 -0
  79. package/components/chat/themes/message-attachments.base.css.js.map +1 -0
  80. package/components/chat/themes/message-list.base.css.d.ts +1 -0
  81. package/components/chat/themes/message-list.base.css.js +3 -0
  82. package/components/chat/themes/message-list.base.css.js.map +1 -0
  83. package/components/chat/themes/message.base.css.d.ts +1 -0
  84. package/components/chat/themes/message.base.css.js +3 -0
  85. package/components/chat/themes/message.base.css.js.map +1 -0
  86. package/components/chat/types.d.ts +46 -0
  87. package/components/chat/types.js +8 -0
  88. package/components/chat/types.js.map +1 -0
  89. package/components/checkbox/checkbox-base.js.map +1 -1
  90. package/components/checkbox/checkbox.js +1 -1
  91. package/components/checkbox/checkbox.js.map +1 -1
  92. package/components/checkbox/switch.js +1 -1
  93. package/components/checkbox/switch.js.map +1 -1
  94. package/components/checkbox/validators.js.map +1 -1
  95. package/components/chip/chip.js +1 -1
  96. package/components/chip/chip.js.map +1 -1
  97. package/components/combo/combo-header.js +1 -1
  98. package/components/combo/combo-header.js.map +1 -1
  99. package/components/combo/combo-item.d.ts +4 -6
  100. package/components/combo/combo-item.js +20 -18
  101. package/components/combo/combo-item.js.map +1 -1
  102. package/components/combo/combo.d.ts +1 -1
  103. package/components/combo/combo.js +14 -14
  104. package/components/combo/combo.js.map +1 -1
  105. package/components/common/abort-handler.d.ts +39 -0
  106. package/components/common/abort-handler.js +19 -0
  107. package/components/common/abort-handler.js.map +1 -0
  108. package/components/common/context.d.ts +5 -1
  109. package/components/common/context.js +2 -1
  110. package/components/common/context.js.map +1 -1
  111. package/components/common/controllers/drag.d.ts +3 -2
  112. package/components/common/controllers/drag.js +7 -6
  113. package/components/common/controllers/drag.js.map +1 -1
  114. package/components/common/controllers/focus-ring.d.ts +1 -0
  115. package/components/common/controllers/focus-ring.js +5 -4
  116. package/components/common/controllers/focus-ring.js.map +1 -1
  117. package/components/common/controllers/gestures.d.ts +6 -2
  118. package/components/common/controllers/gestures.js +15 -11
  119. package/components/common/controllers/gestures.js.map +1 -1
  120. package/components/common/controllers/internals.d.ts +33 -0
  121. package/components/common/controllers/internals.js +25 -0
  122. package/components/common/controllers/internals.js.map +1 -0
  123. package/components/common/controllers/key-bindings.d.ts +1 -0
  124. package/components/common/controllers/key-bindings.js +6 -4
  125. package/components/common/controllers/key-bindings.js.map +1 -1
  126. package/components/common/controllers/mutation-observer.d.ts +25 -15
  127. package/components/common/controllers/mutation-observer.js +23 -12
  128. package/components/common/controllers/mutation-observer.js.map +1 -1
  129. package/components/common/controllers/resize-observer.js.map +1 -1
  130. package/components/common/controllers/root-click.d.ts +58 -13
  131. package/components/common/controllers/root-click.js +47 -35
  132. package/components/common/controllers/root-click.js.map +1 -1
  133. package/components/common/decorators/shadow-options.d.ts +10 -0
  134. package/components/common/decorators/shadow-options.js +10 -0
  135. package/components/common/decorators/shadow-options.js.map +1 -0
  136. package/components/common/definitions/defineAllComponents.js +14 -12
  137. package/components/common/definitions/defineAllComponents.js.map +1 -1
  138. package/components/common/mixins/alert.d.ts +1 -2
  139. package/components/common/mixins/alert.js +13 -9
  140. package/components/common/mixins/alert.js.map +1 -1
  141. package/components/common/mixins/combo-box.d.ts +2 -1
  142. package/components/common/mixins/combo-box.js +0 -2
  143. package/components/common/mixins/combo-box.js.map +1 -1
  144. package/components/common/mixins/forms/associated.js +2 -2
  145. package/components/common/mixins/forms/associated.js.map +1 -1
  146. package/components/common/mixins/option.d.ts +1 -2
  147. package/components/common/mixins/option.js +13 -11
  148. package/components/common/mixins/option.js.map +1 -1
  149. package/components/common/part-map.js +1 -1
  150. package/components/common/part-map.js.map +1 -1
  151. package/components/common/util.d.ts +9 -0
  152. package/components/common/util.js +9 -1
  153. package/components/common/util.js.map +1 -1
  154. package/components/date-picker/date-picker.d.ts +1 -6
  155. package/components/date-picker/date-picker.js +11 -10
  156. package/components/date-picker/date-picker.js.map +1 -1
  157. package/components/date-picker/validators.js.map +1 -1
  158. package/components/date-range-picker/date-range-picker.d.ts +2 -7
  159. package/components/date-range-picker/date-range-picker.js +11 -10
  160. package/components/date-range-picker/date-range-picker.js.map +1 -1
  161. package/components/date-range-picker/predefined-ranges-area.js +1 -1
  162. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  163. package/components/date-time-input/date-time-input.js.map +1 -1
  164. package/components/date-time-input/validators.js.map +1 -1
  165. package/components/dialog/dialog.js +1 -1
  166. package/components/dialog/dialog.js.map +1 -1
  167. package/components/divider/divider.d.ts +5 -3
  168. package/components/divider/divider.js +17 -15
  169. package/components/divider/divider.js.map +1 -1
  170. package/components/dropdown/dropdown-group.d.ts +0 -1
  171. package/components/dropdown/dropdown-group.js +7 -3
  172. package/components/dropdown/dropdown-group.js.map +1 -1
  173. package/components/dropdown/dropdown-header.js +1 -1
  174. package/components/dropdown/dropdown-header.js.map +1 -1
  175. package/components/dropdown/dropdown.d.ts +2 -1
  176. package/components/dropdown/dropdown.js +5 -2
  177. package/components/dropdown/dropdown.js.map +1 -1
  178. package/components/expansion-panel/expansion-panel.js +1 -1
  179. package/components/expansion-panel/expansion-panel.js.map +1 -1
  180. package/components/file-input/file-input.js.map +1 -1
  181. package/components/file-input/validators.js.map +1 -1
  182. package/components/focus-trap/focus-trap.js +4 -4
  183. package/components/focus-trap/focus-trap.js.map +1 -1
  184. package/components/icon/icon.d.ts +1 -1
  185. package/components/icon/icon.js +7 -5
  186. package/components/icon/icon.js.map +1 -1
  187. package/components/input/input-base.d.ts +1 -7
  188. package/components/input/input-base.js +4 -6
  189. package/components/input/input-base.js.map +1 -1
  190. package/components/input/input.js.map +1 -1
  191. package/components/input/themes/shared/input.material.css.js +1 -1
  192. package/components/input/themes/shared/input.material.css.js.map +1 -1
  193. package/components/input/validators.js.map +1 -1
  194. package/components/list/list-header.d.ts +0 -1
  195. package/components/list/list-header.js +5 -3
  196. package/components/list/list-header.js.map +1 -1
  197. package/components/list/list-item.d.ts +0 -1
  198. package/components/list/list-item.js +7 -3
  199. package/components/list/list-item.js.map +1 -1
  200. package/components/list/list.d.ts +0 -1
  201. package/components/list/list.js +7 -3
  202. package/components/list/list.js.map +1 -1
  203. package/components/mask-input/mask-input.js.map +1 -1
  204. package/components/mask-input/validators.js.map +1 -1
  205. package/components/nav-drawer/nav-drawer-header-item.js +1 -1
  206. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  207. package/components/nav-drawer/nav-drawer-item.js +1 -1
  208. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  209. package/components/nav-drawer/nav-drawer.js +1 -1
  210. package/components/nav-drawer/nav-drawer.js.map +1 -1
  211. package/components/navbar/navbar.js +1 -1
  212. package/components/navbar/navbar.js.map +1 -1
  213. package/components/popover/popover.js +1 -1
  214. package/components/popover/popover.js.map +1 -1
  215. package/components/progress/base.d.ts +1 -2
  216. package/components/progress/base.js +28 -26
  217. package/components/progress/base.js.map +1 -1
  218. package/components/radio/radio.js +1 -1
  219. package/components/radio/radio.js.map +1 -1
  220. package/components/radio/utils.js.map +1 -1
  221. package/components/radio-group/radio-group.d.ts +1 -1
  222. package/components/radio-group/radio-group.js +9 -8
  223. package/components/radio-group/radio-group.js.map +1 -1
  224. package/components/rating/rating-symbol.js +1 -1
  225. package/components/rating/rating-symbol.js.map +1 -1
  226. package/components/rating/rating.js +1 -1
  227. package/components/rating/rating.js.map +1 -1
  228. package/components/resize-container/resize-container.js +1 -1
  229. package/components/resize-container/resize-container.js.map +1 -1
  230. package/components/resize-container/resize-controller.d.ts +3 -2
  231. package/components/resize-container/resize-controller.js +6 -4
  232. package/components/resize-container/resize-controller.js.map +1 -1
  233. package/components/ripple/ripple.js +3 -2
  234. package/components/ripple/ripple.js.map +1 -1
  235. package/components/select/select-group.d.ts +1 -1
  236. package/components/select/select-group.js +9 -5
  237. package/components/select/select-group.js.map +1 -1
  238. package/components/select/select-header.js +1 -1
  239. package/components/select/select-header.js.map +1 -1
  240. package/components/select/select.d.ts +1 -0
  241. package/components/select/select.js +9 -6
  242. package/components/select/select.js.map +1 -1
  243. package/components/select/validators.js.map +1 -1
  244. package/components/slider/slider-base.js +6 -6
  245. package/components/slider/slider-base.js.map +1 -1
  246. package/components/slider/slider-label.js +1 -1
  247. package/components/slider/slider-label.js.map +1 -1
  248. package/components/slider/slider.js.map +1 -1
  249. package/components/snackbar/snackbar.js.map +1 -1
  250. package/components/stepper/step.js +1 -1
  251. package/components/stepper/step.js.map +1 -1
  252. package/components/stepper/stepper.js +1 -1
  253. package/components/stepper/stepper.js.map +1 -1
  254. package/components/tabs/tab.js +2 -2
  255. package/components/tabs/tab.js.map +1 -1
  256. package/components/tabs/tabs.js +4 -4
  257. package/components/tabs/tabs.js.map +1 -1
  258. package/components/textarea/textarea.d.ts +1 -7
  259. package/components/textarea/textarea.js +7 -9
  260. package/components/textarea/textarea.js.map +1 -1
  261. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  262. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  263. package/components/textarea/validators.js.map +1 -1
  264. package/components/tile-manager/position.d.ts +1 -1
  265. package/components/tile-manager/position.js.map +1 -1
  266. package/components/tile-manager/themes/container.js.map +1 -1
  267. package/components/tile-manager/tile-manager.d.ts +0 -1
  268. package/components/tile-manager/tile-manager.js +4 -6
  269. package/components/tile-manager/tile-manager.js.map +1 -1
  270. package/components/tile-manager/tile.js +1 -1
  271. package/components/tile-manager/tile.js.map +1 -1
  272. package/components/tooltip/controller.d.ts +2 -4
  273. package/components/tooltip/controller.js +11 -20
  274. package/components/tooltip/controller.js.map +1 -1
  275. package/components/tooltip/themes/themes.js +1 -1
  276. package/components/tooltip/themes/themes.js.map +1 -1
  277. package/components/tooltip/tooltip.d.ts +0 -1
  278. package/components/tooltip/tooltip.js +37 -33
  279. package/components/tooltip/tooltip.js.map +1 -1
  280. package/components/tree/tree-item.d.ts +1 -0
  281. package/components/tree/tree-item.js +24 -24
  282. package/components/tree/tree-item.js.map +1 -1
  283. package/components/tree/tree.d.ts +1 -1
  284. package/components/tree/tree.js +4 -3
  285. package/components/tree/tree.js.map +1 -1
  286. package/components/tree/tree.navigation.d.ts +1 -1
  287. package/components/tree/tree.navigation.js.map +1 -1
  288. package/components/tree/tree.selection.d.ts +1 -1
  289. package/components/tree/tree.selection.js.map +1 -1
  290. package/components/validation-container/themes/themes.js.map +1 -1
  291. package/components/validation-container/validation-container.d.ts +1 -1
  292. package/components/validation-container/validation-container.js +1 -1
  293. package/components/validation-container/validation-container.js.map +1 -1
  294. package/custom-elements.json +20068 -19253
  295. package/igniteui-webcomponents.css-data.json +1 -1
  296. package/igniteui-webcomponents.html-data.json +1 -1
  297. package/index.d.ts +7 -0
  298. package/index.js +5 -0
  299. package/index.js.map +1 -1
  300. package/package.json +1 -1
  301. package/theming/theming-controller.d.ts +1 -1
  302. package/theming/theming-controller.js +1 -1
  303. package/theming/theming-controller.js.map +1 -1
  304. package/web-types.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/components/tree/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport type { TreeSelection } from '../types.js';\nimport { styles } from './themes/container.base.css.js';\nimport { all } from './themes/container.js';\nimport IgcTreeItemComponent from './tree-item.js';\nimport type { IgcTreeComponentEventMap } from './tree.common.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\n\n/**\n * The tree allows users to represent hierarchical data in a tree-view structure,\n * maintaining parent-child relationships, as well as to define static tree-view structure without a corresponding data model.\n *\n * @element igc-tree\n *\n * @slot - Renders the tree items inside default slot.\n *\n * @fires igcSelection - Emitted when item selection is changing, before the selection completes.\n * @fires igcItemCollapsed - Emitted when tree item is collapsed.\n * @fires igcItemCollapsing - Emitted when tree item is about to collapse.\n * @fires igcItemExpanded - Emitted when tree item is expanded.\n * @fires igcItemExpanding - Emitted when tree item is about to expand.\n * @fires igcActiveItem - Emitted when the tree's `active` item changes.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcTreeItemComponent')\nexport default class IgcTreeComponent extends EventEmitterMixin<\n IgcTreeComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tree';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcTreeComponent, IgcTreeItemComponent);\n }\n\n /** @private @hidden @internal */\n public selectionService!: IgcTreeSelectionService;\n\n /** @private @hidden @internal */\n public navService!: IgcTreeNavigationService;\n\n /**\n * Whether a single or multiple of a parent's child items can be expanded.\n * @attr single-branch-expand\n */\n @property({ attribute: 'single-branch-expand', reflect: true, type: Boolean })\n public singleBranchExpand = false;\n\n /**\n * Whether clicking over nodes will change their expanded state or not.\n * @attr toggle-node-on-click\n */\n @property({ attribute: 'toggle-node-on-click', reflect: true, type: Boolean })\n public toggleNodeOnClick = false;\n\n /**\n * The selection state of the tree.\n * @attr\n */\n @property({ reflect: true })\n public selection: TreeSelection = 'none';\n\n @watch('dir')\n protected onDirChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('selection', { waitUntilFirstUpdate: true })\n protected selectionModeChange(): void {\n this.selectionService.clearItemsSelection();\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('singleBranchExpand')\n protected singleBranchExpandChange(): void {\n if (this.singleBranchExpand) {\n // if activeItem -> do not collapse its branch\n if (this.navService.activeItem) {\n const path = this.navService.activeItem.path;\n const remainExpanded = new Set(path.splice(0, path.length - 1));\n this.items.forEach((item) => {\n if (!remainExpanded.has(item)) {\n item.collapseWithEvent();\n }\n });\n } else {\n this.items.forEach((item) => item.collapseWithEvent());\n }\n }\n }\n\n constructor() {\n super();\n this.selectionService = new IgcTreeSelectionService(this);\n this.navService = new IgcTreeNavigationService(this, this.selectionService);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tree');\n this.addEventListener('keydown', this.handleKeydown);\n // set init to true for all items which are rendered along with the tree\n this.items.forEach((i: IgcTreeItemComponent) => {\n i.init = true;\n });\n const firstNotDisabledItem = this.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisabledItem) {\n firstNotDisabledItem.tabIndex = 0;\n this.navService.focusItem(firstNotDisabledItem);\n }\n }\n\n /* blazorSuppress */\n /** Returns all of the tree's items. */\n public get items(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll('igc-tree-item'));\n }\n\n private handleKeydown(event: KeyboardEvent) {\n this.navService.handleKeydown(event);\n }\n\n /** @private */\n public expandToItem(item: IgcTreeItemComponent): void {\n if (item?.parent) {\n item.path.forEach((i) => {\n if (i !== item && !i.expanded) {\n i.expanded = true;\n }\n });\n }\n }\n\n /* blazorSuppress */\n /** Select all items if the items collection is empty. Otherwise, select the items in the items collection. */\n public select(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n if (!items) {\n this.selectionService.selectItemsWithNoEvent(\n this.selection === 'cascade'\n ? this.items.filter((item) => item.level === 0)\n : this.items\n );\n } else {\n this.selectionService.selectItemsWithNoEvent(items);\n }\n }\n\n /* blazorSuppress */\n /** Deselect all items if the items collection is empty. Otherwise, deselect the items in the items collection. */\n public deselect(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n this.selectionService.deselectItemsWithNoEvent(items);\n }\n\n /* blazorSuppress */\n /**\n * Expands all of the passed items.\n * If no items are passed, expands ALL items.\n */\n public expand(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n const _items = items || this.items;\n _items.forEach((item) => {\n item.expanded = true;\n });\n }\n\n /* blazorSuppress */\n /**\n * Collapses all of the passed items.\n * If no items are passed, collapses ALL items.\n */\n public collapse(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n const _items = items || this.items;\n _items.forEach((item) => {\n item.expanded = false;\n });\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree': IgcTreeComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/components/tree/tree.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { addSafeEventListener } from '../common/util.js';\nimport type { TreeSelection } from '../types.js';\nimport { styles } from './themes/container.base.css.js';\nimport { all } from './themes/container.js';\nimport type { IgcTreeComponentEventMap } from './tree.common.js';\nimport { IgcTreeNavigationService } from './tree.navigation.js';\nimport { IgcTreeSelectionService } from './tree.selection.js';\nimport IgcTreeItemComponent from './tree-item.js';\n\n/**\n * The tree allows users to represent hierarchical data in a tree-view structure,\n * maintaining parent-child relationships, as well as to define static tree-view structure without a corresponding data model.\n *\n * @element igc-tree\n *\n * @slot - Renders the tree items inside default slot.\n *\n * @fires igcSelection - Emitted when item selection is changing, before the selection completes.\n * @fires igcItemCollapsed - Emitted when tree item is collapsed.\n * @fires igcItemCollapsing - Emitted when tree item is about to collapse.\n * @fires igcItemExpanded - Emitted when tree item is expanded.\n * @fires igcItemExpanding - Emitted when tree item is about to expand.\n * @fires igcActiveItem - Emitted when the tree's `active` item changes.\n */\n@themes(all)\n@blazorAdditionalDependencies('IgcTreeItemComponent')\nexport default class IgcTreeComponent extends EventEmitterMixin<\n IgcTreeComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tree';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcTreeComponent, IgcTreeItemComponent);\n }\n\n /** @private @hidden @internal */\n public selectionService!: IgcTreeSelectionService;\n\n /** @private @hidden @internal */\n public navService!: IgcTreeNavigationService;\n\n /**\n * Whether a single or multiple of a parent's child items can be expanded.\n * @attr single-branch-expand\n */\n @property({ attribute: 'single-branch-expand', reflect: true, type: Boolean })\n public singleBranchExpand = false;\n\n /**\n * Whether clicking over nodes will change their expanded state or not.\n * @attr toggle-node-on-click\n */\n @property({ attribute: 'toggle-node-on-click', reflect: true, type: Boolean })\n public toggleNodeOnClick = false;\n\n /**\n * The selection state of the tree.\n * @attr\n */\n @property({ reflect: true })\n public selection: TreeSelection = 'none';\n\n @watch('dir')\n protected onDirChange(): void {\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('selection', { waitUntilFirstUpdate: true })\n protected selectionModeChange(): void {\n this.selectionService.clearItemsSelection();\n this.items?.forEach((item: IgcTreeItemComponent) => {\n item.requestUpdate();\n });\n }\n\n @watch('singleBranchExpand')\n protected singleBranchExpandChange(): void {\n if (this.singleBranchExpand) {\n // if activeItem -> do not collapse its branch\n if (this.navService.activeItem) {\n const path = this.navService.activeItem.path;\n const remainExpanded = new Set(path.splice(0, path.length - 1));\n this.items.forEach((item) => {\n if (!remainExpanded.has(item)) {\n item.collapseWithEvent();\n }\n });\n } else {\n this.items.forEach((item) => item.collapseWithEvent());\n }\n }\n }\n\n constructor() {\n super();\n this.selectionService = new IgcTreeSelectionService(this);\n this.navService = new IgcTreeNavigationService(this, this.selectionService);\n\n addSafeEventListener(this, 'keydown', this.handleKeydown);\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tree');\n // set init to true for all items which are rendered along with the tree\n this.items.forEach((i: IgcTreeItemComponent) => {\n i.init = true;\n });\n const firstNotDisabledItem = this.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisabledItem) {\n firstNotDisabledItem.tabIndex = 0;\n this.navService.focusItem(firstNotDisabledItem);\n }\n }\n\n /* blazorSuppress */\n /** Returns all of the tree's items. */\n public get items(): Array<IgcTreeItemComponent> {\n return Array.from(this.querySelectorAll('igc-tree-item'));\n }\n\n private handleKeydown(event: KeyboardEvent) {\n this.navService.handleKeydown(event);\n }\n\n /** @private */\n public expandToItem(item: IgcTreeItemComponent): void {\n if (item?.parent) {\n item.path.forEach((i) => {\n if (i !== item && !i.expanded) {\n i.expanded = true;\n }\n });\n }\n }\n\n /* blazorSuppress */\n /** Select all items if the items collection is empty. Otherwise, select the items in the items collection. */\n public select(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n if (!items) {\n this.selectionService.selectItemsWithNoEvent(\n this.selection === 'cascade'\n ? this.items.filter((item) => item.level === 0)\n : this.items\n );\n } else {\n this.selectionService.selectItemsWithNoEvent(items);\n }\n }\n\n /* blazorSuppress */\n /** Deselect all items if the items collection is empty. Otherwise, deselect the items in the items collection. */\n public deselect(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n this.selectionService.deselectItemsWithNoEvent(items);\n }\n\n /* blazorSuppress */\n /**\n * Expands all of the passed items.\n * If no items are passed, expands ALL items.\n */\n public expand(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n const _items = items || this.items;\n _items.forEach((item) => {\n item.expanded = true;\n });\n }\n\n /* blazorSuppress */\n /**\n * Collapses all of the passed items.\n * If no items are passed, collapses ALL items.\n */\n public collapse(\n /* alternateType: TreeItemCollection */\n items?: IgcTreeItemComponent[]\n ): void {\n const _items = items || this.items;\n _items.forEach((item) => {\n item.expanded = false;\n });\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tree': IgcTreeComponent;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type IgcTreeItemComponent from './tree-item.js';
2
1
  import type IgcTreeComponent from './tree.js';
3
2
  import type { IgcTreeSelectionService } from './tree.selection.js';
3
+ import type IgcTreeItemComponent from './tree-item.js';
4
4
  export declare const NAVIGATION_KEYS: Set<string>;
5
5
  export declare class IgcTreeNavigationService {
6
6
  private tree;
@@ -1 +1 @@
1
- {"version":3,"file":"tree.navigation.js","sourceRoot":"","sources":["../../../src/components/tree/tree.navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import { isLTR } from '../common/util.js';\nimport type IgcTreeItemComponent from './tree-item.js';\nimport type IgcTreeComponent from './tree.js';\nimport type { IgcTreeSelectionService } from './tree.selection.js';\n\nexport const NAVIGATION_KEYS = new Set([\n 'down',\n 'up',\n 'left',\n 'right',\n 'arrowdown',\n 'arrowup',\n 'arrowleft',\n 'arrowright',\n 'home',\n 'end',\n 'space',\n 'spacebar',\n ' ',\n]);\n\n/* blazorSuppress */\nexport class IgcTreeNavigationService {\n private tree!: IgcTreeComponent;\n private selectionService!: IgcTreeSelectionService;\n\n private _focusedItem: IgcTreeItemComponent | null = null;\n\n private _lastFocusedItem: IgcTreeItemComponent | null = null;\n private _activeItem: IgcTreeItemComponent | null = null;\n\n private _visibleChildren: IgcTreeItemComponent[] = [];\n private _invisibleChildren: Set<IgcTreeItemComponent> = new Set();\n private _disabledChildren: Set<IgcTreeItemComponent> = new Set();\n\n constructor(\n tree: IgcTreeComponent,\n selectionService: IgcTreeSelectionService\n ) {\n this.tree = tree;\n this.selectionService = selectionService;\n }\n\n public updateVisChild(): void {\n this._visibleChildren = this.tree?.items\n ? this.tree.items.filter(\n (i: IgcTreeItemComponent) =>\n !(this._invisibleChildren.has(i) || this._disabledChildren.has(i))\n )\n : [];\n }\n\n public get focusedItem(): IgcTreeItemComponent | null {\n return this._focusedItem;\n }\n\n public focusItem(value: IgcTreeItemComponent | null, shouldFocus = true) {\n if (this._focusedItem === value) {\n return;\n }\n this._lastFocusedItem = this._focusedItem;\n if (this._lastFocusedItem) {\n this._lastFocusedItem.removeAttribute('tabindex');\n }\n this._focusedItem = value;\n if (this._focusedItem !== null && shouldFocus) {\n this._focusedItem.tabIndex = 0;\n this._focusedItem.focus({\n preventScroll: true,\n });\n this._focusedItem.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n public get activeItem(): IgcTreeItemComponent | null {\n return this._activeItem;\n }\n\n public setActiveItem(value: IgcTreeItemComponent | null, shouldEmit = true) {\n if (this._activeItem === value) {\n return;\n }\n if (this._activeItem && value) {\n this._activeItem.active = false;\n }\n this._activeItem = value;\n if (this._activeItem) {\n this._activeItem.active = true;\n }\n if (shouldEmit && this._activeItem) {\n this.tree.emitEvent('igcActiveItem', { detail: this._activeItem });\n }\n }\n\n public get visibleChildren(): IgcTreeItemComponent[] {\n return this._visibleChildren;\n }\n\n public update_disabled_cache(item: IgcTreeItemComponent): void {\n if (item.disabled) {\n this._disabledChildren.add(item);\n } else {\n this._disabledChildren.delete(item);\n }\n this.updateVisChild();\n }\n\n public delete_item(item: IgcTreeItemComponent) {\n if (this.activeItem === item) {\n this.setActiveItem(null);\n }\n if (this.focusedItem === item) {\n this.focusItem(null, false);\n const firstNotDisableItem = this.tree.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisableItem) {\n firstNotDisableItem.tabIndex = 0;\n this.focusItem(firstNotDisableItem, false);\n }\n }\n }\n\n public update_visible_cache(\n item: IgcTreeItemComponent,\n expanded: boolean,\n shouldUpdateNestedChildren = true,\n shouldUpdate = true\n ): void {\n if (expanded && !this._invisibleChildren.has(item)) {\n item.getChildren()?.forEach((child: IgcTreeItemComponent) => {\n this._invisibleChildren.delete(child);\n if (shouldUpdateNestedChildren) {\n this.update_visible_cache(child, child.expanded, true, false);\n }\n });\n } else {\n item\n .getChildren({ flatten: true })\n ?.forEach((c: IgcTreeItemComponent) => this._invisibleChildren.add(c));\n }\n\n if (shouldUpdate) {\n this.updateVisChild();\n }\n }\n\n /**\n * Sets the item as focused (and active)\n *\n * @param item target item\n * @param isActive if true, sets the item as active\n */\n public setFocusedAndActiveItem(\n item: IgcTreeItemComponent,\n isActive = true,\n shouldFocus = true\n ): void {\n if (isActive) {\n this.setActiveItem(item);\n }\n this.focusItem(item, shouldFocus);\n }\n\n /** Handler for keydown events. Used in tree.component.ts */\n public handleKeydown(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n if (!this.focusedItem) {\n return;\n }\n if (!(NAVIGATION_KEYS.has(key) || key === '*')) {\n if (key === 'enter') {\n this.setActiveItem(this.focusedItem);\n }\n return;\n }\n event.preventDefault();\n this.handleNavigation(event);\n }\n\n private handleNavigation(event: KeyboardEvent) {\n switch (event.key.toLowerCase()) {\n case 'home':\n this.setFocusedAndActiveItem(this.visibleChildren[0]);\n break;\n case 'end':\n this.setFocusedAndActiveItem(\n this.visibleChildren[this.visibleChildren.length - 1]\n );\n break;\n case 'arrowleft':\n case 'left':\n if (!isLTR(this.tree)) {\n this.handleArrowRight();\n } else {\n this.handleArrowLeft();\n }\n break;\n case 'arrowright':\n case 'right':\n if (!isLTR(this.tree)) {\n this.handleArrowLeft();\n } else {\n this.handleArrowRight();\n }\n break;\n case 'arrowup':\n case 'up':\n this.handleUpDownArrow(true, event);\n break;\n case 'arrowdown':\n case 'down':\n this.handleUpDownArrow(false, event);\n break;\n case '*':\n this.handleAsterisk();\n break;\n case ' ':\n case 'spacebar':\n case 'space':\n this.handleSpace(event.shiftKey);\n break;\n default:\n return;\n }\n }\n\n private handleArrowLeft(): void {\n if (this.focusedItem?.expanded && this.focusedItem.getChildren()?.length) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem.collapseWithEvent();\n } else {\n const parentItem = this.focusedItem?.parent;\n if (parentItem && !parentItem.disabled) {\n this.setFocusedAndActiveItem(parentItem);\n }\n }\n }\n\n private handleArrowRight(): void {\n if (this.focusedItem!.getChildren()?.length > 0) {\n if (!this.focusedItem?.expanded) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem!.expandWithEvent();\n } else {\n const firstChild = this.focusedItem\n .getChildren()\n .find((item: IgcTreeItemComponent) => !item.disabled);\n if (firstChild) {\n this.setFocusedAndActiveItem(firstChild);\n }\n }\n }\n }\n\n private handleUpDownArrow(isUp: boolean, event: KeyboardEvent): void {\n const next = this.getVisibleItem(this.focusedItem!, isUp ? -1 : 1);\n if (next === this.focusedItem) {\n return;\n }\n\n if (event.ctrlKey) {\n this.setFocusedAndActiveItem(next, false);\n } else {\n this.setFocusedAndActiveItem(next);\n }\n }\n\n private handleAsterisk(): void {\n const items = this.focusedItem?.parent\n ? this.focusedItem!.parent?.getChildren()\n : this.tree.items?.filter(\n (item: IgcTreeItemComponent) => item.level === 0\n );\n items?.forEach((item: IgcTreeItemComponent) => {\n if (!item.disabled && !item.expanded && item.hasChildren) {\n item.expandWithEvent();\n }\n });\n }\n\n private handleSpace(shiftKey = false): void {\n if (this.tree.selection === 'none') {\n this.setActiveItem(this.focusedItem);\n return;\n }\n\n this.setActiveItem(this.focusedItem);\n if (shiftKey) {\n this.selectionService.selectMultipleItems(this.focusedItem!);\n return;\n }\n\n if (this.focusedItem!.selected) {\n this.selectionService.deselectItem(this.focusedItem!);\n } else {\n this.selectionService.selectItem(this.focusedItem!);\n }\n }\n\n /** Gets the next visible item in the given direction - 1 -> next, -1 -> previous */\n private getVisibleItem(\n item: IgcTreeItemComponent,\n dir: 1 | -1 = 1\n ): IgcTreeItemComponent {\n const itemIndex = this.visibleChildren.indexOf(item);\n return this.visibleChildren[itemIndex + dir] || item;\n }\n}\n"]}
1
+ {"version":3,"file":"tree.navigation.js","sourceRoot":"","sources":["../../../src/components/tree/tree.navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import { isLTR } from '../common/util.js';\nimport type IgcTreeComponent from './tree.js';\nimport type { IgcTreeSelectionService } from './tree.selection.js';\nimport type IgcTreeItemComponent from './tree-item.js';\n\nexport const NAVIGATION_KEYS = new Set([\n 'down',\n 'up',\n 'left',\n 'right',\n 'arrowdown',\n 'arrowup',\n 'arrowleft',\n 'arrowright',\n 'home',\n 'end',\n 'space',\n 'spacebar',\n ' ',\n]);\n\n/* blazorSuppress */\nexport class IgcTreeNavigationService {\n private tree!: IgcTreeComponent;\n private selectionService!: IgcTreeSelectionService;\n\n private _focusedItem: IgcTreeItemComponent | null = null;\n\n private _lastFocusedItem: IgcTreeItemComponent | null = null;\n private _activeItem: IgcTreeItemComponent | null = null;\n\n private _visibleChildren: IgcTreeItemComponent[] = [];\n private _invisibleChildren: Set<IgcTreeItemComponent> = new Set();\n private _disabledChildren: Set<IgcTreeItemComponent> = new Set();\n\n constructor(\n tree: IgcTreeComponent,\n selectionService: IgcTreeSelectionService\n ) {\n this.tree = tree;\n this.selectionService = selectionService;\n }\n\n public updateVisChild(): void {\n this._visibleChildren = this.tree?.items\n ? this.tree.items.filter(\n (i: IgcTreeItemComponent) =>\n !(this._invisibleChildren.has(i) || this._disabledChildren.has(i))\n )\n : [];\n }\n\n public get focusedItem(): IgcTreeItemComponent | null {\n return this._focusedItem;\n }\n\n public focusItem(value: IgcTreeItemComponent | null, shouldFocus = true) {\n if (this._focusedItem === value) {\n return;\n }\n this._lastFocusedItem = this._focusedItem;\n if (this._lastFocusedItem) {\n this._lastFocusedItem.removeAttribute('tabindex');\n }\n this._focusedItem = value;\n if (this._focusedItem !== null && shouldFocus) {\n this._focusedItem.tabIndex = 0;\n this._focusedItem.focus({\n preventScroll: true,\n });\n this._focusedItem.wrapper?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n public get activeItem(): IgcTreeItemComponent | null {\n return this._activeItem;\n }\n\n public setActiveItem(value: IgcTreeItemComponent | null, shouldEmit = true) {\n if (this._activeItem === value) {\n return;\n }\n if (this._activeItem && value) {\n this._activeItem.active = false;\n }\n this._activeItem = value;\n if (this._activeItem) {\n this._activeItem.active = true;\n }\n if (shouldEmit && this._activeItem) {\n this.tree.emitEvent('igcActiveItem', { detail: this._activeItem });\n }\n }\n\n public get visibleChildren(): IgcTreeItemComponent[] {\n return this._visibleChildren;\n }\n\n public update_disabled_cache(item: IgcTreeItemComponent): void {\n if (item.disabled) {\n this._disabledChildren.add(item);\n } else {\n this._disabledChildren.delete(item);\n }\n this.updateVisChild();\n }\n\n public delete_item(item: IgcTreeItemComponent) {\n if (this.activeItem === item) {\n this.setActiveItem(null);\n }\n if (this.focusedItem === item) {\n this.focusItem(null, false);\n const firstNotDisableItem = this.tree.items.find(\n (i: IgcTreeItemComponent) => !i.disabled\n );\n if (firstNotDisableItem) {\n firstNotDisableItem.tabIndex = 0;\n this.focusItem(firstNotDisableItem, false);\n }\n }\n }\n\n public update_visible_cache(\n item: IgcTreeItemComponent,\n expanded: boolean,\n shouldUpdateNestedChildren = true,\n shouldUpdate = true\n ): void {\n if (expanded && !this._invisibleChildren.has(item)) {\n item.getChildren()?.forEach((child: IgcTreeItemComponent) => {\n this._invisibleChildren.delete(child);\n if (shouldUpdateNestedChildren) {\n this.update_visible_cache(child, child.expanded, true, false);\n }\n });\n } else {\n item\n .getChildren({ flatten: true })\n ?.forEach((c: IgcTreeItemComponent) => this._invisibleChildren.add(c));\n }\n\n if (shouldUpdate) {\n this.updateVisChild();\n }\n }\n\n /**\n * Sets the item as focused (and active)\n *\n * @param item target item\n * @param isActive if true, sets the item as active\n */\n public setFocusedAndActiveItem(\n item: IgcTreeItemComponent,\n isActive = true,\n shouldFocus = true\n ): void {\n if (isActive) {\n this.setActiveItem(item);\n }\n this.focusItem(item, shouldFocus);\n }\n\n /** Handler for keydown events. Used in tree.component.ts */\n public handleKeydown(event: KeyboardEvent) {\n const key = event.key.toLowerCase();\n if (!this.focusedItem) {\n return;\n }\n if (!(NAVIGATION_KEYS.has(key) || key === '*')) {\n if (key === 'enter') {\n this.setActiveItem(this.focusedItem);\n }\n return;\n }\n event.preventDefault();\n this.handleNavigation(event);\n }\n\n private handleNavigation(event: KeyboardEvent) {\n switch (event.key.toLowerCase()) {\n case 'home':\n this.setFocusedAndActiveItem(this.visibleChildren[0]);\n break;\n case 'end':\n this.setFocusedAndActiveItem(\n this.visibleChildren[this.visibleChildren.length - 1]\n );\n break;\n case 'arrowleft':\n case 'left':\n if (!isLTR(this.tree)) {\n this.handleArrowRight();\n } else {\n this.handleArrowLeft();\n }\n break;\n case 'arrowright':\n case 'right':\n if (!isLTR(this.tree)) {\n this.handleArrowLeft();\n } else {\n this.handleArrowRight();\n }\n break;\n case 'arrowup':\n case 'up':\n this.handleUpDownArrow(true, event);\n break;\n case 'arrowdown':\n case 'down':\n this.handleUpDownArrow(false, event);\n break;\n case '*':\n this.handleAsterisk();\n break;\n case ' ':\n case 'spacebar':\n case 'space':\n this.handleSpace(event.shiftKey);\n break;\n default:\n return;\n }\n }\n\n private handleArrowLeft(): void {\n if (this.focusedItem?.expanded && this.focusedItem.getChildren()?.length) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem.collapseWithEvent();\n } else {\n const parentItem = this.focusedItem?.parent;\n if (parentItem && !parentItem.disabled) {\n this.setFocusedAndActiveItem(parentItem);\n }\n }\n }\n\n private handleArrowRight(): void {\n if (this.focusedItem!.getChildren()?.length > 0) {\n if (!this.focusedItem?.expanded) {\n this.setActiveItem(this.focusedItem);\n this.focusedItem!.expandWithEvent();\n } else {\n const firstChild = this.focusedItem\n .getChildren()\n .find((item: IgcTreeItemComponent) => !item.disabled);\n if (firstChild) {\n this.setFocusedAndActiveItem(firstChild);\n }\n }\n }\n }\n\n private handleUpDownArrow(isUp: boolean, event: KeyboardEvent): void {\n const next = this.getVisibleItem(this.focusedItem!, isUp ? -1 : 1);\n if (next === this.focusedItem) {\n return;\n }\n\n if (event.ctrlKey) {\n this.setFocusedAndActiveItem(next, false);\n } else {\n this.setFocusedAndActiveItem(next);\n }\n }\n\n private handleAsterisk(): void {\n const items = this.focusedItem?.parent\n ? this.focusedItem!.parent?.getChildren()\n : this.tree.items?.filter(\n (item: IgcTreeItemComponent) => item.level === 0\n );\n items?.forEach((item: IgcTreeItemComponent) => {\n if (!item.disabled && !item.expanded && item.hasChildren) {\n item.expandWithEvent();\n }\n });\n }\n\n private handleSpace(shiftKey = false): void {\n if (this.tree.selection === 'none') {\n this.setActiveItem(this.focusedItem);\n return;\n }\n\n this.setActiveItem(this.focusedItem);\n if (shiftKey) {\n this.selectionService.selectMultipleItems(this.focusedItem!);\n return;\n }\n\n if (this.focusedItem!.selected) {\n this.selectionService.deselectItem(this.focusedItem!);\n } else {\n this.selectionService.selectItem(this.focusedItem!);\n }\n }\n\n /** Gets the next visible item in the given direction - 1 -> next, -1 -> previous */\n private getVisibleItem(\n item: IgcTreeItemComponent,\n dir: 1 | -1 = 1\n ): IgcTreeItemComponent {\n const itemIndex = this.visibleChildren.indexOf(item);\n return this.visibleChildren[itemIndex + dir] || item;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import type IgcTreeItemComponent from './tree-item.js';
2
1
  import type IgcTreeComponent from './tree.js';
2
+ import type IgcTreeItemComponent from './tree-item.js';
3
3
  export declare class IgcTreeSelectionService {
4
4
  private tree;
5
5
  private itemSelection;
@@ -1 +1 @@
1
- {"version":3,"file":"tree.selection.js","sourceRoot":"","sources":["../../../src/components/tree/tree.selection.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmpty } from '../common/util.js';\nimport type IgcTreeItemComponent from './tree-item.js';\nimport type { TreeSelectionEventInit } from './tree.common.js';\nimport type IgcTreeComponent from './tree.js';\n\n/* blazorSuppress */\nexport class IgcTreeSelectionService {\n private tree!: IgcTreeComponent;\n private itemSelection: Set<IgcTreeItemComponent> =\n new Set<IgcTreeItemComponent>();\n private indeterminateItems: Set<IgcTreeItemComponent> =\n new Set<IgcTreeItemComponent>();\n private itemsToBeSelected!: Set<IgcTreeItemComponent>;\n private itemsToBeIndeterminate!: Set<IgcTreeItemComponent>;\n\n constructor(tree: IgcTreeComponent) {\n this.tree = tree;\n }\n\n /** Select range from last selected item to the current specified item. */\n public selectMultipleItems(item: IgcTreeItemComponent): void {\n if (!this.itemSelection.size) {\n this.selectItem(item);\n return;\n }\n const lastSelectedItemIndex = this.tree.items.indexOf(\n this.getSelectedItems()[this.itemSelection.size - 1]\n );\n const currentItemIndex = this.tree.items.indexOf(item);\n const items = this.tree.items.slice(\n Math.min(currentItemIndex, lastSelectedItemIndex),\n Math.max(currentItemIndex, lastSelectedItemIndex) + 1\n );\n\n const added = items.filter(\n (_item: IgcTreeItemComponent) => !this.isItemSelected(_item)\n );\n const newSelection = this.getSelectedItems().concat(added);\n this.emitItemSelectionEvent(newSelection, added, []);\n }\n\n /** Select the specified item and emit event. */\n public selectItem(item: IgcTreeItemComponent): void {\n if (this.tree.selection === 'none') {\n return;\n }\n this.emitItemSelectionEvent([...this.getSelectedItems(), item], [item], []);\n }\n\n /** Deselect the specified item and emit event. */\n public deselectItem(item: IgcTreeItemComponent): void {\n const newSelection = this.getSelectedItems().filter(\n (_item: IgcTreeItemComponent) => _item !== item\n );\n this.emitItemSelectionEvent(newSelection, [], [item]);\n }\n\n /** Clears item selection */\n public clearItemsSelection(): void {\n const oldSelection = this.getSelectedItems();\n const oldIndeterminate = this.getIndeterminateItems();\n this.itemSelection.clear();\n this.indeterminateItems.clear();\n oldSelection.forEach((i: IgcTreeItemComponent) => {\n i.selected = false;\n });\n oldIndeterminate.forEach((i: IgcTreeItemComponent) => {\n i.indeterminate = false;\n });\n }\n\n public isItemSelected(item: IgcTreeItemComponent): boolean {\n return this.itemSelection.has(item);\n }\n\n public isItemIndeterminate(item: IgcTreeItemComponent): boolean {\n return this.indeterminateItems.has(item);\n }\n\n /** Called on item`s disconnectedCallback */\n public ensureStateOnItemDelete(item: IgcTreeItemComponent): void {\n // Don't update the internal state of the deleted items because when moving they should keep it\n // However update the state of their parents\n this.deselectItemsWithNoEvent(\n [item, ...item.getChildren({ flatten: true })],\n true\n );\n }\n\n /** Retrigger the selection state of the item. */\n public retriggerItemState(item: IgcTreeItemComponent): void {\n if (item.selected) {\n this.itemSelection.delete(item);\n this.selectItemsWithNoEvent([item]);\n } else {\n this.itemSelection.add(item);\n this.deselectItemsWithNoEvent([item]);\n }\n }\n\n private emitItemSelectionEvent(\n newSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n const currSelection = this.getSelectedItems();\n if (this.areEqualCollections(currSelection, newSelection)) {\n return;\n }\n\n if (this.tree.selection === 'cascade') {\n this.emitCascadeItemSelectionEvent(currSelection, added, removed);\n return;\n }\n\n const args: TreeSelectionEventInit = {\n detail: {\n newSelection,\n },\n cancelable: true,\n };\n\n const allowed = this.tree.emitEvent('igcSelection', args);\n if (!allowed) {\n return;\n }\n\n // if newSelection is overwritten do not proceed (Blazor)\n if (this.areEqualCollections(newSelection, args.detail.newSelection)) {\n this.itemSelection = new Set(newSelection);\n this.updateItemsState(currSelection);\n }\n }\n\n /** Select specified items. No event is emitted. */\n public selectItemsWithNoEvent(items: IgcTreeItemComponent[]): void {\n const oldSelection = this.getSelectedItems();\n\n if (this.tree && this.tree.selection === 'cascade') {\n this.cascadeSelectItemsWithNoEvent(items, oldSelection);\n return;\n }\n\n items.forEach((item: IgcTreeItemComponent) => this.itemSelection.add(item));\n\n this.updateItemsState(oldSelection);\n }\n\n /** Deselect specified items. No event is emitted. */\n public deselectItemsWithNoEvent(\n items?: IgcTreeItemComponent[],\n onDelete = false\n ): void {\n if (this.tree && this.tree.selection === 'cascade') {\n this.cascadeDeselectItemsWithNoEvent(items, onDelete);\n return;\n }\n const itemSet = new Set(items);\n const oldSelection = onDelete\n ? this.getSelectedItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getSelectedItems();\n\n if (!items) {\n this.itemSelection.clear();\n } else {\n items.forEach((item: IgcTreeItemComponent) =>\n this.itemSelection.delete(item)\n );\n }\n\n this.updateItemsState(oldSelection);\n }\n\n private emitCascadeItemSelectionEvent(\n currSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n const oldIndeterminate = this.getIndeterminateItems();\n\n this.calculateItemsNewSelectionState(currSelection, added, removed);\n\n const args: TreeSelectionEventInit = {\n detail: {\n newSelection: Array.from(this.itemsToBeSelected),\n },\n cancelable: true,\n };\n\n const allowed = this.tree.emitEvent('igcSelection', args);\n\n if (!allowed) {\n return;\n }\n\n // if newSelection is overwritten do not proceed (Blazor)\n if (\n this.areEqualCollections(\n Array.from(this.itemsToBeSelected),\n args.detail.newSelection\n )\n ) {\n this.itemSelection = new Set<IgcTreeItemComponent>(\n this.itemsToBeSelected\n );\n this.indeterminateItems = new Set(this.itemsToBeIndeterminate);\n this.updateItemsState(currSelection, oldIndeterminate);\n }\n }\n\n private cascadeSelectItemsWithNoEvent(\n items: IgcTreeItemComponent[],\n oldSelection: IgcTreeItemComponent[]\n ): void {\n const oldIndeterminate = this.getIndeterminateItems();\n\n const newSelection = [...oldSelection, ...items];\n\n // retrieve only the rows without their parents/children which has to be added to the selection\n const newSelectionSet = new Set(newSelection);\n const removed = oldSelection!.filter((x) => !newSelectionSet.has(x));\n const added = newSelection!.filter((x) => !this.itemSelection.has(x));\n\n this.calculateItemsNewSelectionState(oldSelection, added, removed);\n\n this.itemSelection = new Set(this.itemsToBeSelected);\n this.indeterminateItems = new Set(this.itemsToBeIndeterminate);\n\n this.updateItemsState(oldSelection, oldIndeterminate);\n }\n\n private cascadeDeselectItemsWithNoEvent(\n items?: IgcTreeItemComponent[],\n onDelete = false\n ): void {\n const itemSet = new Set(items);\n const oldSelection = onDelete\n ? this.getSelectedItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getSelectedItems();\n const oldIndeterminate = onDelete\n ? this.getIndeterminateItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getIndeterminateItems();\n\n if (!items) {\n this.itemSelection.clear();\n this.indeterminateItems.clear();\n } else {\n this.calculateItemsNewSelectionState(oldSelection, [], items);\n\n this.itemSelection = new Set<IgcTreeItemComponent>(\n this.itemsToBeSelected\n );\n this.indeterminateItems = new Set<IgcTreeItemComponent>(\n this.itemsToBeIndeterminate\n );\n }\n\n this.updateItemsState(oldSelection, oldIndeterminate);\n }\n\n // OK (disabled children?)\n /**\n * populates the itemsToBeSelected and itemsToBeIndeterminate sets\n * with the items which will be eventually in selected/indeterminate state\n */\n private calculateItemsNewSelectionState(\n oldSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n this.itemsToBeSelected = new Set<IgcTreeItemComponent>(oldSelection);\n this.itemsToBeIndeterminate = new Set<IgcTreeItemComponent>(\n this.getIndeterminateItems()\n );\n\n this.cascadeSelectionState(removed, false);\n this.cascadeSelectionState(added, true);\n }\n\n // OK (disabled children?)\n /** Ensures proper selection state for all predescessors and descendants during a selection event */\n private cascadeSelectionState(\n items: IgcTreeItemComponent[] | undefined,\n selected: boolean\n ): void {\n if (!items || isEmpty(items)) {\n return;\n }\n\n const parents = new Set<IgcTreeItemComponent>();\n items.forEach((item: IgcTreeItemComponent) => {\n // select/deselect items passed by event/api\n this.selectDeselectItem(item, selected);\n\n // select/deselect all of their children\n const itemAndAllChildren = item.getChildren({ flatten: true }) || [];\n itemAndAllChildren.forEach((i: IgcTreeItemComponent) => {\n this.selectDeselectItem(i, selected);\n });\n\n // add their direct parent to the set\n if (item?.parent) {\n parents.add(item.parent);\n }\n });\n\n // handle direct parents from the set\n for (const parent of parents) {\n this.handleParentSelectionState(parent);\n }\n }\n\n // OK (disabled children?)\n /**\n * recursively handle the selection state of the direct and indirect parents\n */\n private handleParentSelectionState(item: IgcTreeItemComponent): void {\n if (!item) {\n return;\n }\n this.handleItemSelectionState(item);\n if (item.parent) {\n this.handleParentSelectionState(item.parent);\n }\n }\n\n // OK (disabled children?)\n /**\n * Handle the selection state of a given item based the selection states of its direct children\n */\n private handleItemSelectionState(item: IgcTreeItemComponent): void {\n const itemsArray = item?.getChildren() ? item.getChildren() : [];\n if (itemsArray.length) {\n if (\n itemsArray.every((i: IgcTreeItemComponent) =>\n this.itemsToBeSelected.has(i)\n )\n ) {\n this.selectDeselectItem(item, true);\n } else if (\n itemsArray.some(\n (i: IgcTreeItemComponent) =>\n this.itemsToBeSelected.has(i) || this.itemsToBeIndeterminate.has(i)\n )\n ) {\n this.selectDeselectItem(item, false, true);\n } else {\n this.selectDeselectItem(item, false);\n }\n } else if (this.isItemSelected(item)) {\n // if the children of the item has been deleted and the item was selected do not change its state\n this.selectDeselectItem(item, true);\n } else {\n this.selectDeselectItem(item, false);\n }\n }\n\n /** Emits the `selectedChange` event for each item affected by the selection */\n private updateItemsState(\n oldSelection: IgcTreeItemComponent[],\n oldIndeterminate: IgcTreeItemComponent[] = []\n ): void {\n const selected = new Set<IgcTreeItemComponent>(oldSelection);\n const indeterminated = new Set<IgcTreeItemComponent>(oldIndeterminate);\n\n this.getSelectedItems().forEach((i: IgcTreeItemComponent) => {\n if (!selected.has(i)) {\n i.selected = true;\n }\n });\n\n oldSelection.forEach((i: IgcTreeItemComponent) => {\n if (!this.itemSelection.has(i)) {\n i.selected = false;\n }\n });\n\n if (this.tree.selection === 'cascade') {\n this.indeterminateItems.forEach((i: IgcTreeItemComponent) => {\n if (!indeterminated.has(i)) {\n i.indeterminate = true;\n }\n });\n\n oldIndeterminate.forEach((i: IgcTreeItemComponent) => {\n if (!this.indeterminateItems.has(i)) {\n i.indeterminate = false;\n }\n });\n }\n }\n\n /** Returns array of the selected items. */\n private getSelectedItems(): IgcTreeItemComponent[] {\n return Array.from(this.itemSelection);\n }\n\n /** Returns array of the items in indeterminate state. */\n private getIndeterminateItems(): IgcTreeItemComponent[] {\n return Array.from(this.indeterminateItems);\n }\n\n private areEqualCollections(\n first: IgcTreeItemComponent[],\n second: IgcTreeItemComponent[]\n ): boolean {\n return (\n first.length === second.length &&\n new Set(first.concat(second)).size === first.length\n );\n }\n\n private selectDeselectItem(\n item: IgcTreeItemComponent,\n select: boolean,\n indeterminate = false\n ): void {\n if (indeterminate) {\n this.itemsToBeIndeterminate.add(item);\n this.itemsToBeSelected.delete(item);\n return;\n }\n\n if (select) {\n this.itemsToBeSelected.add(item);\n this.itemsToBeIndeterminate.delete(item);\n } else {\n this.itemsToBeSelected.delete(item);\n this.itemsToBeIndeterminate.delete(item);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"tree.selection.js","sourceRoot":"","sources":["../../../src/components/tree/tree.selection.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEmpty } from '../common/util.js';\nimport type { TreeSelectionEventInit } from './tree.common.js';\nimport type IgcTreeComponent from './tree.js';\nimport type IgcTreeItemComponent from './tree-item.js';\n\n/* blazorSuppress */\nexport class IgcTreeSelectionService {\n private tree!: IgcTreeComponent;\n private itemSelection: Set<IgcTreeItemComponent> =\n new Set<IgcTreeItemComponent>();\n private indeterminateItems: Set<IgcTreeItemComponent> =\n new Set<IgcTreeItemComponent>();\n private itemsToBeSelected!: Set<IgcTreeItemComponent>;\n private itemsToBeIndeterminate!: Set<IgcTreeItemComponent>;\n\n constructor(tree: IgcTreeComponent) {\n this.tree = tree;\n }\n\n /** Select range from last selected item to the current specified item. */\n public selectMultipleItems(item: IgcTreeItemComponent): void {\n if (!this.itemSelection.size) {\n this.selectItem(item);\n return;\n }\n const lastSelectedItemIndex = this.tree.items.indexOf(\n this.getSelectedItems()[this.itemSelection.size - 1]\n );\n const currentItemIndex = this.tree.items.indexOf(item);\n const items = this.tree.items.slice(\n Math.min(currentItemIndex, lastSelectedItemIndex),\n Math.max(currentItemIndex, lastSelectedItemIndex) + 1\n );\n\n const added = items.filter(\n (_item: IgcTreeItemComponent) => !this.isItemSelected(_item)\n );\n const newSelection = this.getSelectedItems().concat(added);\n this.emitItemSelectionEvent(newSelection, added, []);\n }\n\n /** Select the specified item and emit event. */\n public selectItem(item: IgcTreeItemComponent): void {\n if (this.tree.selection === 'none') {\n return;\n }\n this.emitItemSelectionEvent([...this.getSelectedItems(), item], [item], []);\n }\n\n /** Deselect the specified item and emit event. */\n public deselectItem(item: IgcTreeItemComponent): void {\n const newSelection = this.getSelectedItems().filter(\n (_item: IgcTreeItemComponent) => _item !== item\n );\n this.emitItemSelectionEvent(newSelection, [], [item]);\n }\n\n /** Clears item selection */\n public clearItemsSelection(): void {\n const oldSelection = this.getSelectedItems();\n const oldIndeterminate = this.getIndeterminateItems();\n this.itemSelection.clear();\n this.indeterminateItems.clear();\n oldSelection.forEach((i: IgcTreeItemComponent) => {\n i.selected = false;\n });\n oldIndeterminate.forEach((i: IgcTreeItemComponent) => {\n i.indeterminate = false;\n });\n }\n\n public isItemSelected(item: IgcTreeItemComponent): boolean {\n return this.itemSelection.has(item);\n }\n\n public isItemIndeterminate(item: IgcTreeItemComponent): boolean {\n return this.indeterminateItems.has(item);\n }\n\n /** Called on item`s disconnectedCallback */\n public ensureStateOnItemDelete(item: IgcTreeItemComponent): void {\n // Don't update the internal state of the deleted items because when moving they should keep it\n // However update the state of their parents\n this.deselectItemsWithNoEvent(\n [item, ...item.getChildren({ flatten: true })],\n true\n );\n }\n\n /** Retrigger the selection state of the item. */\n public retriggerItemState(item: IgcTreeItemComponent): void {\n if (item.selected) {\n this.itemSelection.delete(item);\n this.selectItemsWithNoEvent([item]);\n } else {\n this.itemSelection.add(item);\n this.deselectItemsWithNoEvent([item]);\n }\n }\n\n private emitItemSelectionEvent(\n newSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n const currSelection = this.getSelectedItems();\n if (this.areEqualCollections(currSelection, newSelection)) {\n return;\n }\n\n if (this.tree.selection === 'cascade') {\n this.emitCascadeItemSelectionEvent(currSelection, added, removed);\n return;\n }\n\n const args: TreeSelectionEventInit = {\n detail: {\n newSelection,\n },\n cancelable: true,\n };\n\n const allowed = this.tree.emitEvent('igcSelection', args);\n if (!allowed) {\n return;\n }\n\n // if newSelection is overwritten do not proceed (Blazor)\n if (this.areEqualCollections(newSelection, args.detail.newSelection)) {\n this.itemSelection = new Set(newSelection);\n this.updateItemsState(currSelection);\n }\n }\n\n /** Select specified items. No event is emitted. */\n public selectItemsWithNoEvent(items: IgcTreeItemComponent[]): void {\n const oldSelection = this.getSelectedItems();\n\n if (this.tree && this.tree.selection === 'cascade') {\n this.cascadeSelectItemsWithNoEvent(items, oldSelection);\n return;\n }\n\n items.forEach((item: IgcTreeItemComponent) => this.itemSelection.add(item));\n\n this.updateItemsState(oldSelection);\n }\n\n /** Deselect specified items. No event is emitted. */\n public deselectItemsWithNoEvent(\n items?: IgcTreeItemComponent[],\n onDelete = false\n ): void {\n if (this.tree && this.tree.selection === 'cascade') {\n this.cascadeDeselectItemsWithNoEvent(items, onDelete);\n return;\n }\n const itemSet = new Set(items);\n const oldSelection = onDelete\n ? this.getSelectedItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getSelectedItems();\n\n if (!items) {\n this.itemSelection.clear();\n } else {\n items.forEach((item: IgcTreeItemComponent) =>\n this.itemSelection.delete(item)\n );\n }\n\n this.updateItemsState(oldSelection);\n }\n\n private emitCascadeItemSelectionEvent(\n currSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n const oldIndeterminate = this.getIndeterminateItems();\n\n this.calculateItemsNewSelectionState(currSelection, added, removed);\n\n const args: TreeSelectionEventInit = {\n detail: {\n newSelection: Array.from(this.itemsToBeSelected),\n },\n cancelable: true,\n };\n\n const allowed = this.tree.emitEvent('igcSelection', args);\n\n if (!allowed) {\n return;\n }\n\n // if newSelection is overwritten do not proceed (Blazor)\n if (\n this.areEqualCollections(\n Array.from(this.itemsToBeSelected),\n args.detail.newSelection\n )\n ) {\n this.itemSelection = new Set<IgcTreeItemComponent>(\n this.itemsToBeSelected\n );\n this.indeterminateItems = new Set(this.itemsToBeIndeterminate);\n this.updateItemsState(currSelection, oldIndeterminate);\n }\n }\n\n private cascadeSelectItemsWithNoEvent(\n items: IgcTreeItemComponent[],\n oldSelection: IgcTreeItemComponent[]\n ): void {\n const oldIndeterminate = this.getIndeterminateItems();\n\n const newSelection = [...oldSelection, ...items];\n\n // retrieve only the rows without their parents/children which has to be added to the selection\n const newSelectionSet = new Set(newSelection);\n const removed = oldSelection!.filter((x) => !newSelectionSet.has(x));\n const added = newSelection!.filter((x) => !this.itemSelection.has(x));\n\n this.calculateItemsNewSelectionState(oldSelection, added, removed);\n\n this.itemSelection = new Set(this.itemsToBeSelected);\n this.indeterminateItems = new Set(this.itemsToBeIndeterminate);\n\n this.updateItemsState(oldSelection, oldIndeterminate);\n }\n\n private cascadeDeselectItemsWithNoEvent(\n items?: IgcTreeItemComponent[],\n onDelete = false\n ): void {\n const itemSet = new Set(items);\n const oldSelection = onDelete\n ? this.getSelectedItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getSelectedItems();\n const oldIndeterminate = onDelete\n ? this.getIndeterminateItems().filter(\n (i: IgcTreeItemComponent) => !itemSet!.has(i)\n )\n : this.getIndeterminateItems();\n\n if (!items) {\n this.itemSelection.clear();\n this.indeterminateItems.clear();\n } else {\n this.calculateItemsNewSelectionState(oldSelection, [], items);\n\n this.itemSelection = new Set<IgcTreeItemComponent>(\n this.itemsToBeSelected\n );\n this.indeterminateItems = new Set<IgcTreeItemComponent>(\n this.itemsToBeIndeterminate\n );\n }\n\n this.updateItemsState(oldSelection, oldIndeterminate);\n }\n\n // OK (disabled children?)\n /**\n * populates the itemsToBeSelected and itemsToBeIndeterminate sets\n * with the items which will be eventually in selected/indeterminate state\n */\n private calculateItemsNewSelectionState(\n oldSelection: IgcTreeItemComponent[],\n added: IgcTreeItemComponent[],\n removed: IgcTreeItemComponent[]\n ): void {\n this.itemsToBeSelected = new Set<IgcTreeItemComponent>(oldSelection);\n this.itemsToBeIndeterminate = new Set<IgcTreeItemComponent>(\n this.getIndeterminateItems()\n );\n\n this.cascadeSelectionState(removed, false);\n this.cascadeSelectionState(added, true);\n }\n\n // OK (disabled children?)\n /** Ensures proper selection state for all predescessors and descendants during a selection event */\n private cascadeSelectionState(\n items: IgcTreeItemComponent[] | undefined,\n selected: boolean\n ): void {\n if (!items || isEmpty(items)) {\n return;\n }\n\n const parents = new Set<IgcTreeItemComponent>();\n items.forEach((item: IgcTreeItemComponent) => {\n // select/deselect items passed by event/api\n this.selectDeselectItem(item, selected);\n\n // select/deselect all of their children\n const itemAndAllChildren = item.getChildren({ flatten: true }) || [];\n itemAndAllChildren.forEach((i: IgcTreeItemComponent) => {\n this.selectDeselectItem(i, selected);\n });\n\n // add their direct parent to the set\n if (item?.parent) {\n parents.add(item.parent);\n }\n });\n\n // handle direct parents from the set\n for (const parent of parents) {\n this.handleParentSelectionState(parent);\n }\n }\n\n // OK (disabled children?)\n /**\n * recursively handle the selection state of the direct and indirect parents\n */\n private handleParentSelectionState(item: IgcTreeItemComponent): void {\n if (!item) {\n return;\n }\n this.handleItemSelectionState(item);\n if (item.parent) {\n this.handleParentSelectionState(item.parent);\n }\n }\n\n // OK (disabled children?)\n /**\n * Handle the selection state of a given item based the selection states of its direct children\n */\n private handleItemSelectionState(item: IgcTreeItemComponent): void {\n const itemsArray = item?.getChildren() ? item.getChildren() : [];\n if (itemsArray.length) {\n if (\n itemsArray.every((i: IgcTreeItemComponent) =>\n this.itemsToBeSelected.has(i)\n )\n ) {\n this.selectDeselectItem(item, true);\n } else if (\n itemsArray.some(\n (i: IgcTreeItemComponent) =>\n this.itemsToBeSelected.has(i) || this.itemsToBeIndeterminate.has(i)\n )\n ) {\n this.selectDeselectItem(item, false, true);\n } else {\n this.selectDeselectItem(item, false);\n }\n } else if (this.isItemSelected(item)) {\n // if the children of the item has been deleted and the item was selected do not change its state\n this.selectDeselectItem(item, true);\n } else {\n this.selectDeselectItem(item, false);\n }\n }\n\n /** Emits the `selectedChange` event for each item affected by the selection */\n private updateItemsState(\n oldSelection: IgcTreeItemComponent[],\n oldIndeterminate: IgcTreeItemComponent[] = []\n ): void {\n const selected = new Set<IgcTreeItemComponent>(oldSelection);\n const indeterminated = new Set<IgcTreeItemComponent>(oldIndeterminate);\n\n this.getSelectedItems().forEach((i: IgcTreeItemComponent) => {\n if (!selected.has(i)) {\n i.selected = true;\n }\n });\n\n oldSelection.forEach((i: IgcTreeItemComponent) => {\n if (!this.itemSelection.has(i)) {\n i.selected = false;\n }\n });\n\n if (this.tree.selection === 'cascade') {\n this.indeterminateItems.forEach((i: IgcTreeItemComponent) => {\n if (!indeterminated.has(i)) {\n i.indeterminate = true;\n }\n });\n\n oldIndeterminate.forEach((i: IgcTreeItemComponent) => {\n if (!this.indeterminateItems.has(i)) {\n i.indeterminate = false;\n }\n });\n }\n }\n\n /** Returns array of the selected items. */\n private getSelectedItems(): IgcTreeItemComponent[] {\n return Array.from(this.itemSelection);\n }\n\n /** Returns array of the items in indeterminate state. */\n private getIndeterminateItems(): IgcTreeItemComponent[] {\n return Array.from(this.indeterminateItems);\n }\n\n private areEqualCollections(\n first: IgcTreeItemComponent[],\n second: IgcTreeItemComponent[]\n ): boolean {\n return (\n first.length === second.length &&\n new Set(first.concat(second)).size === first.length\n );\n }\n\n private selectDeselectItem(\n item: IgcTreeItemComponent,\n select: boolean,\n indeterminate = false\n ): void {\n if (indeterminate) {\n this.itemsToBeIndeterminate.add(item);\n this.itemsToBeSelected.delete(item);\n return;\n }\n\n if (select) {\n this.itemsToBeSelected.add(item);\n this.itemsToBeIndeterminate.delete(item);\n } else {\n this.itemsToBeSelected.delete(item);\n this.itemsToBeIndeterminate.delete(item);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../../src/components/validation-container/themes/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AACnE,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,SAAS,EAAE,GAAG,CAAA;MACV,cAAc;GACjB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,aAAa;GAChB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,SAAS,EAAE,GAAG,CAAA;MACV,aAAa;GAChB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,YAAY;GACf;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '../../../theming/types.js';\n// Dark Overrides\nimport { styles as bootstrapDark } from './dark/validator.bootstrap.css.js';\nimport { styles as fluentDark } from './dark/validator.fluent.css.js';\nimport { styles as indigoDark } from './dark/validator.indigo.css.js';\nimport { styles as materialDark } from './dark/validator.material.css.js';\n// Light Overrides\nimport { styles as bootstrapLight } from './light/validator.bootstrap.css.js';\nimport { styles as fluentLight } from './light/validator.fluent.css.js';\nimport { styles as indigoLight } from './light/validator.indigo.css.js';\nimport { styles as materialLight } from './light/validator.material.css.js';\nimport { styles as shared } from './light/validator.shared.css.js';\nconst light = {\n shared: css`\n ${shared}\n `,\n bootstrap: css`\n ${bootstrapLight}\n `,\n material: css`\n ${materialLight}\n `,\n fluent: css`\n ${fluentLight}\n `,\n indigo: css`\n ${indigoLight}\n `,\n};\n\nconst dark = {\n shared: css`\n ${shared}\n `,\n bootstrap: css`\n ${bootstrapDark}\n `,\n material: css`\n ${materialDark}\n `,\n fluent: css`\n ${fluentDark}\n `,\n indigo: css`\n ${indigoDark}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
1
+ {"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../../src/components/validation-container/themes/themes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAI1B,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,SAAS,EAAE,GAAG,CAAA;MACV,cAAc;GACjB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,aAAa;GAChB;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;IACD,MAAM,EAAE,GAAG,CAAA;MACP,WAAW;GACd;CACF,CAAC;AAEF,MAAM,IAAI,GAAG;IACX,MAAM,EAAE,GAAG,CAAA;MACP,MAAM;GACT;IACD,SAAS,EAAE,GAAG,CAAA;MACV,aAAa;GAChB;IACD,QAAQ,EAAE,GAAG,CAAA;MACT,YAAY;GACf;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;IACD,MAAM,EAAE,GAAG,CAAA;MACP,UAAU;GACb;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC","sourcesContent":["import { css } from 'lit';\n\nimport type { Themes } from '../../../theming/types.js';\n// Dark Overrides\nimport { styles as bootstrapDark } from './dark/validator.bootstrap.css.js';\nimport { styles as fluentDark } from './dark/validator.fluent.css.js';\nimport { styles as indigoDark } from './dark/validator.indigo.css.js';\nimport { styles as materialDark } from './dark/validator.material.css.js';\n// Light Overrides\nimport { styles as bootstrapLight } from './light/validator.bootstrap.css.js';\nimport { styles as fluentLight } from './light/validator.fluent.css.js';\nimport { styles as indigoLight } from './light/validator.indigo.css.js';\nimport { styles as materialLight } from './light/validator.material.css.js';\nimport { styles as shared } from './light/validator.shared.css.js';\n\nconst light = {\n shared: css`\n ${shared}\n `,\n bootstrap: css`\n ${bootstrapLight}\n `,\n material: css`\n ${materialLight}\n `,\n fluent: css`\n ${fluentLight}\n `,\n indigo: css`\n ${indigoLight}\n `,\n};\n\nconst dark = {\n shared: css`\n ${shared}\n `,\n bootstrap: css`\n ${bootstrapDark}\n `,\n material: css`\n ${materialDark}\n `,\n fluent: css`\n ${fluentDark}\n `,\n indigo: css`\n ${indigoDark}\n `,\n};\n\nexport const all: Themes = { light, dark };\n"]}
@@ -1,4 +1,4 @@
1
- import { LitElement, type TemplateResult, nothing } from 'lit';
1
+ import { LitElement, nothing, type TemplateResult } from 'lit';
2
2
  import type { IgcFormControl } from '../common/mixins/forms/types.js';
3
3
  interface ValidationContainerConfig {
4
4
  /** The id attribute for the validation container. */
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var IgcValidationContainerComponent_1;
8
- import { LitElement, html, nothing } from 'lit';
8
+ import { html, LitElement, nothing } from 'lit';
9
9
  import { property, state } from 'lit/decorators.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
11
  import { themes } from '../../theming/theming-decorator.js';
@@ -1 +1 @@
1
- {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, type TemplateResult, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { IgcFormControl } from '../common/mixins/forms/types.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nfunction getValidationSlots(element: IgcValidationContainerComponent) {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n \"slot:not([name='helper-text'])\"\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent) {\n return Array.from(\n element.renderRoot.querySelectorAll<HTMLSlotElement>('slot')\n ).every((slot) => isEmpty(slot.assignedElements({ flatten: true })));\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n) {\n const config: AssignedNodesOptions = { flatten: true };\n const slots = Array.from(getValidationSlots(element));\n return slotName\n ? slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => slot.assignedElements(config).length > 0)\n : slots.some((slot) => slot.assignedElements(config).length > 0);\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\n@themes(all)\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const { renderValidationSlots } = IgcValidationContainerComponent.prototype;\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : null;\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n .target=${host}\n ?invalid=${host.invalid}\n exportparts=\"helper-text validation-message validation-icon\"\n >\n ${helperText}${renderValidationSlots(host.validity, true)}\n </igc-validator>\n `;\n }\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._target?.removeEventListener('invalid', this);\n this._target = value;\n this._target.addEventListener('invalid', this);\n }\n\n public get target() {\n return this._target;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n public handleEvent({ type }: Event) {\n const isInvalid = type === 'invalid';\n const isSlotChange = type === 'slotchange';\n\n if (isInvalid || isSlotChange) {\n this.invalid = isInvalid ? true : this.invalid;\n this._hasSlottedContent = hasProjectedValidation(this);\n }\n\n this.requestUpdate();\n }\n\n protected renderValidationMessage(slotName: string) {\n const icon = hasProjectedValidation(this, slotName)\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n collection=\"default\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : null;\n\n return html`\n <div part=${partMap({ 'validation-message': true, empty: !icon })}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *renderValidationSlots(validity: ValidityState, projected = false) {\n for (const key in validity) {\n if (key === 'valid' && !validity[key]) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this.renderValidationMessage('invalid');\n } else if (validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this.renderValidationMessage(name);\n }\n }\n }\n\n protected renderHelper() {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render() {\n return html`\n <div part=${partMap({ 'helper-text': true, empty: hasProjection(this) })}>\n ${this.invalid\n ? this.renderValidationSlots(this.target.validity)\n : nothing}\n ${this.renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { IgcFormControl } from '../common/mixins/forms/types.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty, toKebabCase } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/validator.base.css.js';\n\ninterface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nfunction getValidationSlots(element: IgcValidationContainerComponent) {\n return element.renderRoot.querySelectorAll<HTMLSlotElement>(\n \"slot:not([name='helper-text'])\"\n );\n}\n\nfunction hasProjection(element: IgcValidationContainerComponent) {\n return Array.from(\n element.renderRoot.querySelectorAll<HTMLSlotElement>('slot')\n ).every((slot) => isEmpty(slot.assignedElements({ flatten: true })));\n}\n\nfunction hasProjectedValidation(\n element: IgcValidationContainerComponent,\n slotName?: string\n) {\n const config: AssignedNodesOptions = { flatten: true };\n const slots = Array.from(getValidationSlots(element));\n return slotName\n ? slots\n .filter((slot) => slot.name === slotName)\n .some((slot) => slot.assignedElements(config).length > 0)\n : slots.some((slot) => slot.assignedElements(config).length > 0);\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\n@themes(all)\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const { renderValidationSlots } = IgcValidationContainerComponent.prototype;\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : null;\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n .target=${host}\n ?invalid=${host.invalid}\n exportparts=\"helper-text validation-message validation-icon\"\n >\n ${helperText}${renderValidationSlots(host.validity, true)}\n </igc-validator>\n `;\n }\n\n private _target!: IgcFormControl;\n\n @state()\n private _hasSlottedContent = false;\n\n @property({ type: Boolean })\n public invalid = false;\n\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._target?.removeEventListener('invalid', this);\n this._target = value;\n this._target.addEventListener('invalid', this);\n }\n\n public get target() {\n return this._target;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n public handleEvent({ type }: Event) {\n const isInvalid = type === 'invalid';\n const isSlotChange = type === 'slotchange';\n\n if (isInvalid || isSlotChange) {\n this.invalid = isInvalid ? true : this.invalid;\n this._hasSlottedContent = hasProjectedValidation(this);\n }\n\n this.requestUpdate();\n }\n\n protected renderValidationMessage(slotName: string) {\n const icon = hasProjectedValidation(this, slotName)\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n collection=\"default\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : null;\n\n return html`\n <div part=${partMap({ 'validation-message': true, empty: !icon })}>\n ${icon}\n <slot name=${slotName}></slot>\n </div>\n `;\n }\n\n protected *renderValidationSlots(validity: ValidityState, projected = false) {\n for (const key in validity) {\n if (key === 'valid' && !validity[key]) {\n yield projected\n ? html`<slot name=\"invalid\" slot=\"invalid\"></slot>`\n : this.renderValidationMessage('invalid');\n } else if (validity[key as keyof ValidityState]) {\n const name = toKebabCase(key);\n\n yield projected\n ? html`<slot name=${name} slot=${name}></slot>`\n : this.renderValidationMessage(name);\n }\n }\n }\n\n protected renderHelper() {\n return this.invalid && this._hasSlottedContent\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override render() {\n return html`\n <div part=${partMap({ 'helper-text': true, empty: hasProjection(this) })}>\n ${this.invalid\n ? this.renderValidationSlots(this.target.validity)\n : nothing}\n ${this.renderHelper()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}