igniteui-webcomponents 7.3.2 → 7.4.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 (441) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/animations/easings.d.ts +21 -31
  3. package/animations/easings.js +21 -34
  4. package/animations/easings.js.map +1 -1
  5. package/animations/player.d.ts +8 -16
  6. package/animations/player.js +5 -8
  7. package/animations/player.js.map +1 -1
  8. package/animations/view-transition.d.ts +10 -10
  9. package/animations/view-transition.js +26 -37
  10. package/animations/view-transition.js.map +1 -1
  11. package/components/breadcrumb/breadcrumb.d.ts +74 -0
  12. package/components/breadcrumb/breadcrumb.js +107 -0
  13. package/components/breadcrumb/breadcrumb.js.map +1 -0
  14. package/components/breadcrumb/breadcrumbs.d.ts +60 -0
  15. package/components/breadcrumb/breadcrumbs.js +50 -0
  16. package/components/breadcrumb/breadcrumbs.js.map +1 -0
  17. package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
  18. package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
  19. package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
  20. package/components/{resize-container/themes/resize-container.base.css.js → breadcrumb/themes/breadcrumbs.base.css.js} +2 -2
  21. package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
  22. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
  23. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
  24. package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
  25. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
  26. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
  27. package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
  28. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
  29. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
  30. package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
  31. package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
  32. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
  33. package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
  34. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
  35. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
  36. package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
  37. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
  38. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
  39. package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
  40. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
  41. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
  42. package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
  43. package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
  44. package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
  45. package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
  46. package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
  47. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
  48. package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
  49. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
  50. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
  51. package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
  52. package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
  53. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
  54. package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
  55. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
  56. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
  57. package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
  58. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
  59. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
  60. package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
  61. package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
  62. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
  63. package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
  64. package/components/breadcrumb/themes/themes.d.ts +2 -0
  65. package/components/breadcrumb/themes/themes.js +50 -0
  66. package/components/breadcrumb/themes/themes.js.map +1 -0
  67. package/components/button/button.d.ts +0 -2
  68. package/components/button/button.js.map +1 -1
  69. package/components/button-group/button-group.d.ts +42 -12
  70. package/components/button-group/button-group.js +82 -34
  71. package/components/button-group/button-group.js.map +1 -1
  72. package/components/button-group/toggle-button.d.ts +6 -1
  73. package/components/button-group/toggle-button.js +28 -2
  74. package/components/button-group/toggle-button.js.map +1 -1
  75. package/components/calendar/base.js +2 -1
  76. package/components/calendar/base.js.map +1 -1
  77. package/components/calendar/calendar.d.ts +2 -3
  78. package/components/calendar/calendar.js.map +1 -1
  79. package/components/calendar/days-view/days-view.d.ts +2 -2
  80. package/components/calendar/days-view/days-view.js.map +1 -1
  81. package/components/carousel/carousel-indicator.js +1 -0
  82. package/components/carousel/carousel-indicator.js.map +1 -1
  83. package/components/carousel/carousel-slide.d.ts +1 -1
  84. package/components/carousel/carousel-slide.js.map +1 -1
  85. package/components/carousel/carousel.d.ts +3 -3
  86. package/components/carousel/carousel.js.map +1 -1
  87. package/components/chat/chat-input.d.ts +1 -2
  88. package/components/chat/chat-input.js +1 -1
  89. package/components/chat/chat-input.js.map +1 -1
  90. package/components/chat/chat-state.d.ts +8 -9
  91. package/components/chat/chat-state.js.map +1 -1
  92. package/components/chat/chat.d.ts +1 -3
  93. package/components/chat/chat.js +2 -2
  94. package/components/chat/chat.js.map +1 -1
  95. package/components/chat/message-attachments.d.ts +6 -15
  96. package/components/chat/message-attachments.js.map +1 -1
  97. package/components/chat/utils.d.ts +0 -1
  98. package/components/chat/utils.js +1 -1
  99. package/components/chat/utils.js.map +1 -1
  100. package/components/checkbox/checkbox-base.d.ts +1 -1
  101. package/components/checkbox/checkbox.js +1 -1
  102. package/components/checkbox/checkbox.js.map +1 -1
  103. package/components/chip/chip.d.ts +2 -2
  104. package/components/chip/chip.js.map +1 -1
  105. package/components/color-picker/color-picker.d.ts +35 -34
  106. package/components/color-picker/color-picker.js +9 -4
  107. package/components/color-picker/color-picker.js.map +1 -1
  108. package/components/color-picker/common.d.ts +0 -2
  109. package/components/color-picker/common.js +2 -2
  110. package/components/color-picker/common.js.map +1 -1
  111. package/components/color-picker/converters.js.map +1 -1
  112. package/components/color-picker/picker-canvas.js.map +1 -1
  113. package/components/combo/combo.d.ts +18 -20
  114. package/components/combo/combo.js +8 -2
  115. package/components/combo/combo.js.map +1 -1
  116. package/components/combo/controllers/data.d.ts +7 -10
  117. package/components/combo/controllers/data.js.map +1 -1
  118. package/components/date-picker/date-picker.base.d.ts +22 -27
  119. package/components/date-picker/date-picker.base.js +7 -1
  120. package/components/date-picker/date-picker.base.js.map +1 -1
  121. package/components/date-picker/date-picker.d.ts +1 -1
  122. package/components/date-picker/date-picker.js +5 -3
  123. package/components/date-picker/date-picker.js.map +1 -1
  124. package/components/date-range-picker/date-range-input.d.ts +0 -2
  125. package/components/date-range-picker/date-range-input.js +0 -6
  126. package/components/date-range-picker/date-range-input.js.map +1 -1
  127. package/components/date-range-picker/date-range-picker.d.ts +22 -31
  128. package/components/date-range-picker/date-range-picker.js +7 -7
  129. package/components/date-range-picker/date-range-picker.js.map +1 -1
  130. package/components/date-range-picker/i18n.d.ts +21 -0
  131. package/components/date-range-picker/i18n.js +10 -0
  132. package/components/date-range-picker/i18n.js.map +1 -0
  133. package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
  134. package/components/date-range-picker/predefined-ranges-area.js +2 -5
  135. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  136. package/components/date-range-picker/validators.d.ts +0 -4
  137. package/components/date-range-picker/validators.js +4 -4
  138. package/components/date-range-picker/validators.js.map +1 -1
  139. package/components/date-time-input/date-time-input.base.d.ts +39 -37
  140. package/components/date-time-input/date-time-input.base.js +6 -0
  141. package/components/date-time-input/date-time-input.base.js.map +1 -1
  142. package/components/date-time-input/date-time-input.d.ts +1 -11
  143. package/components/date-time-input/date-time-input.js +0 -6
  144. package/components/date-time-input/date-time-input.js.map +1 -1
  145. package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
  146. package/components/date-time-input/datetime-mask-parser.js +1 -1
  147. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  148. package/components/dialog/dialog.js.map +1 -1
  149. package/components/dropdown/dropdown-group.d.ts +2 -10
  150. package/components/dropdown/dropdown-group.js +2 -27
  151. package/components/dropdown/dropdown-group.js.map +1 -1
  152. package/components/dropdown/dropdown.d.ts +17 -23
  153. package/components/dropdown/dropdown.js +5 -17
  154. package/components/dropdown/dropdown.js.map +1 -1
  155. package/components/file-input/file-input.d.ts +2 -2
  156. package/components/file-input/file-input.js.map +1 -1
  157. package/components/icon/icon.d.ts +1 -1
  158. package/components/icon/icon.registry.d.ts +6 -6
  159. package/components/icon/icon.registry.js.map +1 -1
  160. package/components/input/input.d.ts +3 -3
  161. package/components/input/input.js.map +1 -1
  162. package/components/mask-input/mask-history.d.ts +22 -18
  163. package/components/mask-input/mask-history.js.map +1 -1
  164. package/components/mask-input/mask-input.d.ts +1 -1
  165. package/components/mask-input/mask-parser.d.ts +11 -13
  166. package/components/mask-input/mask-parser.js.map +1 -1
  167. package/components/popover/popover.d.ts +45 -34
  168. package/components/popover/popover.js +54 -122
  169. package/components/popover/popover.js.map +1 -1
  170. package/components/popover/position/arrow.d.ts +19 -0
  171. package/components/popover/position/arrow.js +33 -0
  172. package/components/popover/position/arrow.js.map +1 -0
  173. package/components/popover/position/floating.d.ts +40 -0
  174. package/components/popover/position/floating.js +146 -0
  175. package/components/popover/position/floating.js.map +1 -0
  176. package/components/popover/position/native.d.ts +45 -0
  177. package/components/popover/position/native.js +158 -0
  178. package/components/popover/position/native.js.map +1 -0
  179. package/components/popover/position/strategy.d.ts +37 -0
  180. package/components/popover/position/strategy.js +21 -0
  181. package/components/popover/position/strategy.js.map +1 -0
  182. package/components/popover/position/types.d.ts +26 -0
  183. package/components/popover/position/types.js +15 -0
  184. package/components/popover/position/types.js.map +1 -0
  185. package/components/popover/themes/light/popover.base.css.js +1 -1
  186. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  187. package/components/progress/circular-progress.d.ts +0 -5
  188. package/components/progress/circular-progress.js.map +1 -1
  189. package/components/qr-code/qr-code.d.ts +1 -1
  190. package/components/radio/radio.d.ts +4 -4
  191. package/components/radio/radio.js +17 -14
  192. package/components/radio/radio.js.map +1 -1
  193. package/components/radio-group/radio-group.js.map +1 -1
  194. package/components/rating/rating.d.ts +6 -6
  195. package/components/rating/rating.js.map +1 -1
  196. package/components/select/select-group.d.ts +5 -10
  197. package/components/select/select-group.js +10 -34
  198. package/components/select/select-group.js.map +1 -1
  199. package/components/select/select.d.ts +12 -20
  200. package/components/select/select.js +4 -14
  201. package/components/select/select.js.map +1 -1
  202. package/components/splitter/splitter.d.ts +6 -6
  203. package/components/splitter/splitter.js.map +1 -1
  204. package/components/textarea/textarea.d.ts +1 -1
  205. package/components/textarea/textarea.js.map +1 -1
  206. package/components/tile-manager/tile-manager.d.ts +6 -7
  207. package/components/tile-manager/tile-manager.js.map +1 -1
  208. package/components/tile-manager/tile.d.ts +3 -3
  209. package/components/tile-manager/tile.js.map +1 -1
  210. package/components/toast/toast.d.ts +0 -2
  211. package/components/toast/toast.js.map +1 -1
  212. package/components/tooltip/controller.js.map +1 -1
  213. package/components/tooltip/service.js +4 -5
  214. package/components/tooltip/service.js.map +1 -1
  215. package/components/tooltip/tooltip.d.ts +34 -13
  216. package/components/tooltip/tooltip.js +8 -4
  217. package/components/tooltip/tooltip.js.map +1 -1
  218. package/components/tree/tree-item.d.ts +6 -6
  219. package/components/tree/tree-item.js.map +1 -1
  220. package/components/tree/tree.navigation.d.ts +5 -6
  221. package/components/tree/tree.navigation.js.map +1 -1
  222. package/components/tree/tree.selection.js.map +1 -1
  223. package/components/types.d.ts +1 -1
  224. package/components/types.js.map +1 -1
  225. package/components/validation-container/validation-container.js.map +1 -1
  226. package/components/virtualization/engine.d.ts +5 -5
  227. package/components/virtualization/engine.js.map +1 -1
  228. package/components/virtualization/virtualization.d.ts +61 -63
  229. package/components/virtualization/virtualization.js +6 -5
  230. package/components/virtualization/virtualization.js.map +1 -1
  231. package/custom-elements.json +16280 -19679
  232. package/igniteui-webcomponents.css-data.json +2 -2
  233. package/igniteui-webcomponents.html-data.json +1 -1
  234. package/index.d.ts +2 -0
  235. package/index.js +2 -0
  236. package/index.js.map +1 -1
  237. package/internals/abort-handler.d.ts +13 -25
  238. package/internals/abort-handler.js +4 -6
  239. package/internals/abort-handler.js.map +1 -1
  240. package/internals/context.d.ts +13 -7
  241. package/internals/context.js +2 -1
  242. package/internals/context.js.map +1 -1
  243. package/internals/controllers/adopt-styles.d.ts +19 -20
  244. package/internals/controllers/adopt-styles.js +3 -8
  245. package/internals/controllers/adopt-styles.js.map +1 -1
  246. package/internals/controllers/aria-projection.d.ts +56 -55
  247. package/internals/controllers/aria-projection.js +14 -15
  248. package/internals/controllers/aria-projection.js.map +1 -1
  249. package/internals/controllers/async-consumer.js.map +1 -1
  250. package/internals/controllers/command.d.ts +15 -30
  251. package/internals/controllers/command.js +2 -7
  252. package/internals/controllers/command.js.map +1 -1
  253. package/internals/controllers/context-provider.d.ts +7 -13
  254. package/internals/controllers/context-provider.js.map +1 -1
  255. package/internals/controllers/focus-ring.d.ts +10 -30
  256. package/internals/controllers/focus-ring.js +6 -12
  257. package/internals/controllers/focus-ring.js.map +1 -1
  258. package/internals/controllers/fullscreen.d.ts +7 -23
  259. package/internals/controllers/fullscreen.js +3 -9
  260. package/internals/controllers/fullscreen.js.map +1 -1
  261. package/internals/controllers/gestures.d.ts +10 -29
  262. package/internals/controllers/gestures.js +1 -3
  263. package/internals/controllers/gestures.js.map +1 -1
  264. package/internals/controllers/group.d.ts +13 -30
  265. package/internals/controllers/group.js.map +1 -1
  266. package/internals/controllers/host-listeners.d.ts +28 -0
  267. package/internals/controllers/host-listeners.js +27 -0
  268. package/internals/controllers/host-listeners.js.map +1 -0
  269. package/internals/controllers/id-resolver.d.ts +8 -9
  270. package/internals/controllers/id-resolver.js +6 -14
  271. package/internals/controllers/id-resolver.js.map +1 -1
  272. package/internals/controllers/internals.d.ts +53 -104
  273. package/internals/controllers/internals.js +40 -13
  274. package/internals/controllers/internals.js.map +1 -1
  275. package/internals/controllers/key-bindings.d.ts +61 -158
  276. package/internals/controllers/key-bindings.js +68 -67
  277. package/internals/controllers/key-bindings.js.map +1 -1
  278. package/internals/controllers/keys.d.ts +32 -0
  279. package/internals/controllers/keys.js +20 -0
  280. package/internals/controllers/keys.js.map +1 -0
  281. package/internals/controllers/mutation-observer.d.ts +14 -37
  282. package/internals/controllers/mutation-observer.js +1 -1
  283. package/internals/controllers/mutation-observer.js.map +1 -1
  284. package/internals/controllers/resize-observer.d.ts +9 -19
  285. package/internals/controllers/resize-observer.js.map +1 -1
  286. package/internals/controllers/root-click.d.ts +11 -42
  287. package/internals/controllers/root-click.js +4 -6
  288. package/internals/controllers/root-click.js.map +1 -1
  289. package/internals/controllers/roving-focus.d.ts +16 -35
  290. package/internals/controllers/roving-focus.js.map +1 -1
  291. package/internals/controllers/slot.d.ts +25 -54
  292. package/internals/controllers/slot.js +6 -6
  293. package/internals/controllers/slot.js.map +1 -1
  294. package/internals/controllers/toggle.d.ts +44 -48
  295. package/internals/controllers/toggle.js.map +1 -1
  296. package/internals/date/compare.js.map +1 -1
  297. package/internals/date/converters.d.ts +10 -7
  298. package/internals/date/converters.js.map +1 -1
  299. package/internals/date/model.d.ts +9 -16
  300. package/internals/date/model.js +22 -25
  301. package/internals/date/model.js.map +1 -1
  302. package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
  303. package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
  304. package/internals/decorators/blazorDeepImport.d.ts +1 -3
  305. package/internals/decorators/blazorDeepImport.js.map +1 -1
  306. package/internals/decorators/blazorInclude.d.ts +3 -2
  307. package/internals/decorators/blazorInclude.js.map +1 -1
  308. package/internals/decorators/blazorIndirectRender.d.ts +1 -3
  309. package/internals/decorators/blazorIndirectRender.js.map +1 -1
  310. package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
  311. package/internals/decorators/blazorSuppressComponent.js.map +1 -1
  312. package/internals/decorators/coerced-property.d.ts +14 -20
  313. package/internals/decorators/coerced-property.js.map +1 -1
  314. package/internals/decorators/shadow-options.d.ts +2 -5
  315. package/internals/decorators/shadow-options.js.map +1 -1
  316. package/internals/definitions/defineAllComponents.js +2 -0
  317. package/internals/definitions/defineAllComponents.js.map +1 -1
  318. package/internals/directives/drag.d.ts +51 -81
  319. package/internals/directives/drag.js +27 -89
  320. package/internals/directives/drag.js.map +1 -1
  321. package/internals/directives/pointer-operation.d.ts +75 -0
  322. package/internals/directives/pointer-operation.js +92 -0
  323. package/internals/directives/pointer-operation.js.map +1 -0
  324. package/internals/directives/resize.d.ts +36 -64
  325. package/internals/directives/resize.js +18 -85
  326. package/internals/directives/resize.js.map +1 -1
  327. package/internals/i18n/EN/calendar.resources.d.ts +8 -2
  328. package/internals/i18n/EN/calendar.resources.js +2 -2
  329. package/internals/i18n/EN/calendar.resources.js.map +1 -1
  330. package/internals/i18n/EN/chat.resources.d.ts +8 -2
  331. package/internals/i18n/EN/chat.resources.js +3 -10
  332. package/internals/i18n/EN/chat.resources.js.map +1 -1
  333. package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
  334. package/internals/i18n/EN/date-picker.resources.js +1 -7
  335. package/internals/i18n/EN/date-picker.resources.js.map +1 -1
  336. package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
  337. package/internals/i18n/EN/date-range-picker.resources.js +2 -2
  338. package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
  339. package/internals/i18n/i18n-controller.d.ts +44 -46
  340. package/internals/i18n/i18n-controller.js +46 -33
  341. package/internals/i18n/i18n-controller.js.map +1 -1
  342. package/internals/i18n/utils.d.ts +9 -4
  343. package/internals/i18n/utils.js +4 -27
  344. package/internals/i18n/utils.js.map +1 -1
  345. package/internals/mixins/alert.d.ts +10 -25
  346. package/internals/mixins/alert.js.map +1 -1
  347. package/internals/mixins/combo-box.d.ts +21 -11
  348. package/internals/mixins/combo-box.js +16 -22
  349. package/internals/mixins/combo-box.js.map +1 -1
  350. package/internals/mixins/event-emitter.js +9 -11
  351. package/internals/mixins/event-emitter.js.map +1 -1
  352. package/internals/mixins/forms/associated-required.d.ts +4 -4
  353. package/internals/mixins/forms/associated-required.js.map +1 -1
  354. package/internals/mixins/forms/associated.d.ts +4 -2
  355. package/internals/mixins/forms/associated.js +8 -19
  356. package/internals/mixins/forms/associated.js.map +1 -1
  357. package/internals/mixins/forms/form-transformers.js.map +1 -1
  358. package/internals/mixins/forms/types.d.ts +24 -80
  359. package/internals/mixins/forms/types.js.map +1 -1
  360. package/internals/mixins/group.d.ts +18 -0
  361. package/internals/mixins/group.js +37 -0
  362. package/internals/mixins/group.js.map +1 -0
  363. package/internals/mixins/i18n.d.ts +10 -16
  364. package/internals/mixins/i18n.js.map +1 -1
  365. package/internals/mixins/mask-behavior.d.ts +8 -22
  366. package/internals/mixins/mask-behavior.js +1 -2
  367. package/internals/mixins/mask-behavior.js.map +1 -1
  368. package/internals/mixins/option.d.ts +1 -2
  369. package/internals/mixins/option.js +2 -1
  370. package/internals/mixins/option.js.map +1 -1
  371. package/internals/part-map.d.ts +4 -2
  372. package/internals/part-map.js +1 -1
  373. package/internals/part-map.js.map +1 -1
  374. package/internals/templates/input-shell.d.ts +8 -17
  375. package/internals/templates/input-shell.js +4 -1
  376. package/internals/templates/input-shell.js.map +1 -1
  377. package/internals/templates/masked-input.d.ts +7 -8
  378. package/internals/templates/masked-input.js.map +1 -1
  379. package/internals/templates/slotted-icon.d.ts +7 -12
  380. package/internals/templates/slotted-icon.js.map +1 -1
  381. package/internals/templates/toggle-shell.d.ts +6 -7
  382. package/internals/templates/toggle-shell.js.map +1 -1
  383. package/internals/timing.d.ts +5 -14
  384. package/internals/timing.js.map +1 -1
  385. package/internals/utils/arrays.d.ts +21 -21
  386. package/internals/utils/arrays.js +14 -0
  387. package/internals/utils/arrays.js.map +1 -1
  388. package/internals/utils/dom.d.ts +51 -39
  389. package/internals/utils/dom.js +1 -2
  390. package/internals/utils/dom.js.map +1 -1
  391. package/internals/utils/events.d.ts +29 -16
  392. package/internals/utils/events.js +9 -1
  393. package/internals/utils/events.js.map +1 -1
  394. package/internals/utils/lit.d.ts +5 -2
  395. package/internals/utils/lit.js.map +1 -1
  396. package/internals/utils/math.d.ts +8 -6
  397. package/internals/utils/math.js.map +1 -1
  398. package/internals/utils/objects.d.ts +3 -20
  399. package/internals/utils/objects.js +1 -39
  400. package/internals/utils/objects.js.map +1 -1
  401. package/internals/utils/strings.d.ts +9 -11
  402. package/internals/utils/strings.js.map +1 -1
  403. package/internals/utils/types.d.ts +16 -3
  404. package/internals/utils/types.js +3 -0
  405. package/internals/utils/types.js.map +1 -1
  406. package/internals/validators.d.ts +9 -8
  407. package/internals/validators.js +12 -6
  408. package/internals/validators.js.map +1 -1
  409. package/package.json +1 -1
  410. package/skills/README.md +3 -0
  411. package/skills/igniteui-wc-figma-to-app/SKILL.md +907 -0
  412. package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +363 -0
  413. package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +407 -0
  414. package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +325 -0
  415. package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +409 -0
  416. package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +376 -0
  417. package/theming/config.d.ts +14 -5
  418. package/theming/config.js +38 -18
  419. package/theming/config.js.map +1 -1
  420. package/theming/context.d.ts +1 -23
  421. package/theming/context.js.map +1 -1
  422. package/theming/theming-controller.d.ts +2 -32
  423. package/theming/theming-controller.js +15 -21
  424. package/theming/theming-controller.js.map +1 -1
  425. package/theming/theming-event.d.ts +0 -7
  426. package/theming/theming-event.js +0 -13
  427. package/theming/theming-event.js.map +1 -1
  428. package/theming/types.d.ts +1 -8
  429. package/theming/types.js.map +1 -1
  430. package/web-types.json +3 -3
  431. package/animations/presets/slide/index.d.ts +0 -3
  432. package/animations/presets/slide/index.js +0 -16
  433. package/animations/presets/slide/index.js.map +0 -1
  434. package/components/resize-container/themes/resize-container.base.css.js.map +0 -1
  435. package/internals/controllers/root-scroll.d.ts +0 -31
  436. package/internals/controllers/root-scroll.js +0 -71
  437. package/internals/controllers/root-scroll.js.map +0 -1
  438. package/theming/utils.d.ts +0 -11
  439. package/theming/utils.js +0 -20
  440. package/theming/utils.js.map +0 -1
  441. /package/components/{resize-container/themes/resize-container.base.css.d.ts → breadcrumb/themes/breadcrumb.base.css.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tile.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport {\n setTransitionName,\n startViewTransition,\n} from '#animations/view-transition.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '#internals/context.js';\nimport { createAsyncContext } from '#internals/controllers/async-consumer.js';\nimport { addFullscreenController } from '#internals/controllers/fullscreen.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport {\n coercedProperty,\n type CoercedPropertyConfig,\n} from '#internals/decorators/coerced-property.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n type DragCallbackParams,\n type DraggableOptions,\n type DragPointerDirection,\n draggable,\n} from '#internals/directives/drag.js';\nimport {\n type ResizableOptions,\n type ResizeCallbackParams,\n type ResizeDirection,\n resizable,\n} from '#internals/directives/resize.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { asNumber } from '#internals/utils/math.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcDividerComponent from '../divider/divider.js';\nimport type { TileManagerDragMode, TileManagerResizeMode } from '../types.js';\nimport { createTileDragStack, swapTiles } from './position.js';\nimport { createTileResizeState } from './resize-state.js';\nimport { styles as shared } from './themes/shared/tile/tile.common.css.js';\nimport { styles } from './themes/tile.base.css.js';\nimport { all } from './themes/tile.js';\nimport { createTileDragGhost, createTileGhost } from './tile-ghost-util.js';\nimport type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface IgcTileChangeStateEventArgs {\n tile: IgcTileComponent;\n state: boolean;\n}\n\ntype AdornerType = 'side' | 'corner' | 'bottom';\n\nexport interface IgcTileComponentEventMap {\n igcTileFullscreen: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileMaximize: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileDragStart: CustomEvent<IgcTileComponent>;\n igcTileDragEnd: CustomEvent<IgcTileComponent>;\n igcTileDragCancel: CustomEvent<IgcTileComponent>;\n igcTileResizeStart: CustomEvent<IgcTileComponent>;\n igcTileResizeEnd: CustomEvent<IgcTileComponent>;\n igcTileResizeCancel: CustomEvent<IgcTileComponent>;\n}\n\nconst nextId = createIdGenerator('tile');\nconst Slots = setSlots(\n 'title',\n 'maximize-action',\n 'fullscreen-action',\n 'actions',\n 'side-adorner',\n 'corner-adorner',\n 'bottom-adorner'\n);\n\n/**\n * The tile component is used within the tile manager as a container\n * for displaying various types of information.\n *\n * @element igc-tile\n *\n * @fires igcTileFullscreen - Fired when tile the fullscreen state changes.\n * @fires igcTileMaximize - Fired when tile the maximize state changes.\n * @fires igcTileDragStart - Fired when a drag operation on a tile is about to begin. Cancelable.\n * @fires igcTileDragEnd - Fired when a drag operation with a tile is successfully completed.\n * @fires igcTileDragCancel - Fired when a tile drag operation is canceled by the user.\n * @fires igcTileResizeStart - Fired when a resize operation on a tile is about to begin. Cancelable.\n * @fires igcTileResizeEnd - Fired when a resize operation on a tile is successfully completed.\n * @fires igcTileResizeCancel - Fired when a resize operation on a tile is canceled by the user.\n *\n * @slot - Default slot for the tile's content.\n * @slot title - Renders the title of the tile header.\n * @slot maximize-action - Renders the maximize action element of the tile header.\n * @slot fullscreen-action - Renders the fullscreen action element of the tile header.\n * @slot actions - Renders items after the default actions in the tile header.\n * @slot side-adorner - Renders the side resize handle of the tile.\n * @slot corner-adorner - Renders the corner resize handle of the tile.\n * @slot bottom-adorner - Renders the bottom resize handle of the tile.\n *\n * @csspart base - The wrapper for the entire tile content, header and content.\n * @csspart header - The container for the tile header, including title and actions.\n * @csspart title - The title container of the tile.\n * @csspart actions - The actions container of the tile header.\n * @csspart content-container - The container wrapping the tile’s main content.\n * @csspart tile-container - The wrapper around the tile content and its resize adorners.\n * @csspart trigger-side - The side resize handle of the tile.\n * @csspart trigger - The corner resize handle of the tile.\n * @csspart trigger-bottom - The bottom resize handle of the tile.\n */\nexport default class IgcTileComponent extends EventEmitterMixin<\n IgcTileComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tile';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTileComponent,\n IgcIconButtonComponent,\n IgcDividerComponent\n );\n }\n\n private readonly _slots = addSlotController(this, { slots: Slots });\n\n private readonly _fullscreenController = addFullscreenController(this, {\n enter: this._emitFullScreenEvent,\n exit: this._emitFullScreenEvent,\n });\n\n private readonly _resizeState = createTileResizeState();\n private readonly _dragStack = createTileDragStack();\n\n /** Shared config for the grid placement properties, projected into a CSS variable on the host. */\n private static _gridVariable<T extends number | null>(\n name: string,\n transform: (value: T) => T\n ): CoercedPropertyConfig<T, IgcTileComponent> {\n return {\n transform: ({ value }) => transform(value),\n onChange: ({ value, host }) => {\n host.style.setProperty(name, value != null ? value.toString() : null);\n },\n };\n }\n\n /** Part name and resize direction for each of the tile resize adorners. */\n private static readonly _adorners: Record<\n AdornerType,\n { part: string; direction: ResizeDirection }\n > = {\n side: { part: 'trigger-side', direction: 'horizontal' },\n corner: { part: 'trigger', direction: 'both' },\n bottom: { part: 'trigger-bottom', direction: 'vertical' },\n };\n\n /** Config for the span properties - a value below 1 is coerced to 1. */\n private static _spanVariable(name: string) {\n return IgcTileComponent._gridVariable<number>(name, (value) =>\n Math.max(1, asNumber(value))\n );\n }\n\n /** Config for the start properties - a non-positive value removes the explicit placement. */\n private static _startVariable(name: string) {\n return IgcTileComponent._gridVariable<number | null>(\n name,\n (value) => Math.max(0, asNumber(value)) || null\n );\n }\n\n // Tile manager context properties and helpers\n\n private readonly _context = createAsyncContext(this, tileManagerContext);\n\n /** Returns the parent tile manager context. */\n private get _tileManagerCtx(): TileManagerContext | undefined {\n return this._context.value;\n }\n\n private get _tileManager(): IgcTileManagerComponent | undefined {\n return this._tileManagerCtx?.instance;\n }\n\n /** Returns the tile manager internal CSS grid container. */\n private get _cssContainer(): HTMLElement | undefined {\n return this._tileManagerCtx?.grid.value;\n }\n\n /** Returns the tile manager current resize mode. */\n private get _resizeMode(): TileManagerResizeMode {\n return this._tileManager?.resizeMode ?? 'none';\n }\n\n /** Returns the tile manager current drag mode. */\n private get _dragMode(): TileManagerDragMode {\n return this._tileManager?.dragMode ?? 'none';\n }\n\n protected readonly _headerRef = createRef<HTMLElement>();\n\n /** The DOM container measured and used as a resize target by the resizable directive. */\n protected readonly _containerRef = createRef<HTMLElement>();\n\n /**\n * Not cached: toggling `_resizeDisabled` (maximize, fullscreen, resize mode)\n * switches the render template and recreates this element.\n */\n @query('[part~=\"base\"]')\n public _tileContent!: HTMLElement;\n\n @state()\n private _isDragging = false;\n\n @state()\n private _isResizing = false;\n\n /** Whether the tile is hovered while the tile manager is in `hover` resize mode. */\n @state()\n private _isResizeActive = false;\n\n /** Whether the resize adorners and the active resize outline are shown. */\n private get _resizeAdornersVisible(): boolean {\n return this._isResizeActive || this._resizeMode === 'always';\n }\n\n /** Whether to render the resize adorners based on tile and tile manager configuration. */\n private get _resizeDisabled(): boolean {\n return (\n this.disableResize ||\n this.maximized ||\n this.fullscreen ||\n this._resizeMode === 'none'\n );\n }\n\n /**\n * The number of columns the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr col-span\n * @default 1\n */\n @property({ type: Number, attribute: 'col-span' })\n @coercedProperty(IgcTileComponent._spanVariable('--ig-col-span'))\n public colSpan = 1;\n\n /**\n * The number of rows the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr row-span\n * @default 1\n */\n @property({ type: Number, attribute: 'row-span' })\n @coercedProperty(IgcTileComponent._spanVariable('--ig-row-span'))\n public rowSpan = 1;\n\n /**\n * The starting column for the tile.\n *\n * @attr col-start\n */\n @property({ type: Number, attribute: 'col-start' })\n @coercedProperty(IgcTileComponent._startVariable('--ig-col-start'))\n public colStart: number | null = null;\n\n /**\n * The starting row for the tile.\n *\n * @attr row-start\n */\n @property({ type: Number, attribute: 'row-start' })\n @coercedProperty(IgcTileComponent._startVariable('--ig-row-start'))\n public rowStart: number | null = null;\n\n /**\n * Indicates whether the tile occupies the whole screen.\n *\n * @property\n */\n public get fullscreen(): boolean {\n return this._fullscreenController.fullscreen;\n }\n\n /**\n * Indicates whether the tile occupies all available space within the layout.\n *\n * @attr maximized\n */\n @property({ type: Boolean, reflect: true })\n @coercedProperty<boolean, IgcTileComponent>({\n onChange: ({ host }) => host._tileManagerCtx?.setMaximizedState(),\n })\n public maximized = false;\n\n /**\n * Indicates whether to disable tile resize behavior regardless\n * of its tile manager parent settings.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether to disable the rendering of the tile `fullscreen-action` slot and its\n * default fullscreen action button.\n *\n * @attr disable-fullscreen\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-fullscreen' })\n public disableFullscreen = false;\n\n /**\n * Whether to disable the rendering of the tile `maximize-action` slot and its\n * default maximize action button.\n *\n * @attr disable-maximize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-maximize' })\n public disableMaximize = false;\n\n /**\n * Gets/sets the tile's visual position in the layout.\n * Corresponds to the CSS `order` property.\n *\n * @attr position\n */\n @property({ type: Number })\n @coercedProperty<number, IgcTileComponent>({\n transform: ({ value }) => asNumber(value),\n onChange: ({ value, host }) => {\n host.style.order = value.toString();\n },\n })\n public position = -1;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || nextId();\n if (!this.style.viewTransitionName) {\n setTransitionName(this, `tile-transition-${this.id}`);\n }\n }\n\n private _setDragState(state = true) {\n this._isDragging = state;\n this._tileContent.style.opacity = state ? '0' : '';\n this.style.pointerEvents = state ? 'none' : '';\n this.part.toggle('dragging', state);\n }\n\n private _handleDragStart = () => {\n if (!this._emitStartEvent('igcTileDragStart')) {\n return false;\n }\n\n this._setDragState();\n this._dragStack.push(this);\n return true;\n };\n\n private _handleDragOver = ({ event, state }: DragCallbackParams): void => {\n const match = state.element as IgcTileComponent;\n\n if (this._dragStack.peek() === match) {\n if (this._shouldSwap(event, state.pointerState.direction, match)) {\n this._dragStack.pop();\n this._dragStack.push(match);\n this._performSwap(match);\n }\n return;\n }\n\n this._dragStack.push(match);\n this._performSwap(match);\n };\n\n private _handleDragCancel = () => {\n startViewTransition(() => {\n this._dragStack.restore();\n this._dragStack.reset();\n });\n\n this._setDragState(false);\n this.emitEvent('igcTileDragCancel', { detail: this });\n };\n\n private _handleDragEnd = () => {\n this._setDragState(false);\n this._dragStack.reset();\n this.emitEvent('igcTileDragEnd', { detail: this });\n };\n\n private _performSwap(match: IgcTileComponent): void {\n startViewTransition(() => swapTiles(this, match));\n }\n\n private _shouldSwap(\n { clientX, clientY }: PointerEvent,\n direction: DragPointerDirection,\n match: IgcTileComponent\n ): boolean {\n const LTR = isLTR(this);\n\n const { left, top, width, height } = match.getBoundingClientRect();\n const relativeX = (clientX - left) / width;\n const relativeY = (clientY - top) / height;\n\n switch (direction) {\n case 'start':\n return (\n this.position > match.position &&\n (LTR ? relativeX <= 0.25 : relativeX >= 0.75)\n );\n case 'end':\n return (\n this.position < match.position &&\n (LTR ? relativeX >= 0.75 : relativeX <= 0.25)\n );\n case 'top':\n return this.position > match.position && relativeY <= 0.25;\n case 'bottom':\n return this.position < match.position && relativeY >= 0.75;\n default:\n return false;\n }\n }\n\n private _skipDrag = (event: PointerEvent): boolean => {\n if (this.maximized || this.fullscreen) {\n return true;\n }\n\n return Boolean(\n getElementFromPath(\n (e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'),\n event\n )\n );\n };\n\n private _match = (element: Element): element is IgcTileComponent => {\n return element !== this && IgcTileComponent.tagName === element.localName;\n };\n\n private _createDragGhost = (): IgcTileComponent => {\n return createTileDragGhost(this);\n };\n\n private _createResizeGhost = (): HTMLElement => {\n return createTileGhost(this);\n };\n\n private _setResizeState(state = true) {\n this._isResizing = state;\n this.style.zIndex = state ? '1' : '';\n this.part.toggle('resizing', state);\n }\n\n private _handleResizeStart = ({ event, state }: ResizeCallbackParams) => {\n if (!this._emitStartEvent('igcTileResizeStart')) {\n return false;\n }\n\n event.preventDefault();\n this._resizeState.updateState(state.initial, this, this._cssContainer!);\n this._setResizeState();\n return true;\n };\n\n private _handleResize(\n { state }: ResizeCallbackParams,\n direction: ResizeDirection\n ): void {\n if (direction !== 'vertical') {\n state.current.width = this._resizeState.calculateSnappedWidth(state);\n }\n\n if (direction !== 'horizontal') {\n state.current.height = this._resizeState.calculateSnappedHeight(state);\n }\n }\n\n private _handleResizeEnd = ({ state }: ResizeCallbackParams) => {\n const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(\n state.current\n );\n\n state.commit = async () => {\n await startViewTransition(() => {\n this.colSpan = colSpan;\n this.rowSpan = rowSpan;\n }).updateCallbackDone;\n\n this._setResizeState(false);\n this.emitEvent('igcTileResizeEnd', { detail: this });\n };\n };\n\n private _handleResizeCancel = () => {\n this._setResizeState(false);\n this.emitEvent('igcTileResizeCancel', { detail: this });\n };\n\n private _handleFullscreen() {\n this._fullscreenController.setState(!this.fullscreen);\n }\n\n private async _handleMaximize() {\n if (!this._emitMaximizedEvent()) {\n return;\n }\n\n this.style.zIndex = '1';\n\n await startViewTransition(() => {\n this.maximized = !this.maximized;\n }).finished;\n\n this.style.zIndex = '';\n }\n\n private _emitFullScreenEvent(state: boolean) {\n this.requestUpdate();\n\n return this.emitEvent('igcTileFullscreen', {\n detail: { tile: this, state },\n cancelable: true,\n });\n }\n\n private _emitMaximizedEvent() {\n return this.emitEvent('igcTileMaximize', {\n detail: { tile: this, state: !this.maximized },\n cancelable: true,\n });\n }\n\n private _emitStartEvent(name: 'igcTileDragStart' | 'igcTileResizeStart') {\n return this.emitEvent(name, { detail: this, cancelable: true });\n }\n\n protected _renderDefaultAction(type: 'maximize' | 'fullscreen') {\n const [icon, listener] =\n type === 'fullscreen'\n ? [\n this.fullscreen ? 'fullscreen_exit' : 'fullscreen',\n this._handleFullscreen,\n ]\n : [\n this.maximized ? 'collapse_content' : 'expand_content',\n this._handleMaximize,\n ];\n\n return html`\n <igc-icon-button\n variant=\"flat\"\n collection=\"default\"\n exportparts=\"icon\"\n name=${icon}\n aria-label=${icon}\n @click=${listener}\n ></igc-icon-button>\n `;\n }\n\n protected _renderHeader() {\n const hasTitle = this._slots.hasAssignedElements('title');\n const hasActions = this._slots.hasAssignedElements('actions');\n\n const hideHeader =\n !hasTitle &&\n !hasActions &&\n this.disableMaximize &&\n this.disableFullscreen;\n\n const hasMaximizeSlot = !(this.disableMaximize || this.fullscreen);\n const hasFullscreenSlot = !this.disableFullscreen;\n\n return html`\n <section part=\"header\" ?hidden=${hideHeader} ${ref(this._headerRef)}>\n <header part=\"title\">\n <slot name=\"title\"></slot>\n </header>\n <section id=\"tile-actions\" part=\"actions\">\n ${hasMaximizeSlot ? this._renderActionSlot('maximize') : nothing}\n ${hasFullscreenSlot ? this._renderActionSlot('fullscreen') : nothing}\n <slot name=\"actions\"></slot>\n </section>\n </section>\n <igc-divider></igc-divider>\n `;\n }\n\n private _renderActionSlot(type: 'maximize' | 'fullscreen') {\n return html`\n <slot name=\"${type}-action\">${this._renderDefaultAction(type)}</slot>\n `;\n }\n\n private _createDragOptions(): DraggableOptions {\n const dragMode = this._dragMode;\n\n return {\n enabled: dragMode !== 'none',\n target: () => this,\n trigger:\n dragMode === 'tile-header' ? () => this._headerRef.value : undefined,\n skip: this._skipDrag,\n matchTarget: this._match,\n ghostFactory: this._createDragGhost,\n start: this._handleDragStart,\n over: this._handleDragOver,\n end: this._handleDragEnd,\n cancel: this._handleDragCancel,\n };\n }\n\n protected _renderContent() {\n const parts = {\n base: true,\n draggable: this._dragMode !== 'none',\n fullscreen: this.fullscreen,\n dragging: this._isDragging,\n resizable: !this.disableResize && this._resizeMode !== 'none',\n resizing: this._isResizing,\n maximized: this.maximized,\n };\n\n return html`\n <div part=${partMap(parts)} ${draggable(this._createDragOptions())}>\n ${this._renderHeader()}\n <div part=\"content-container\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _handleResizePointerEnter() {\n this._isResizeActive = true;\n }\n\n private _handleResizePointerLeave() {\n this._isResizeActive = false;\n }\n\n private _createResizeOptions(direction: ResizeDirection): ResizableOptions {\n return {\n mode: 'deferred',\n direction,\n target: () => this._containerRef.value,\n ghostFactory: this._createResizeGhost,\n start: this._handleResizeStart,\n resize: (params) => this._handleResize(params, direction),\n end: this._handleResizeEnd,\n cancel: this._handleResizeCancel,\n };\n }\n\n private _renderAdorner(type: AdornerType) {\n const { part, direction } = IgcTileComponent._adorners[type];\n const parts = {\n [part]: true,\n custom: this._slots.hasAssignedElements(`${type}-adorner`),\n };\n\n return html`\n <slot\n name=\"${type}-adorner\"\n part=${partMap(parts)}\n ${resizable(this._createResizeOptions(direction))}\n ></slot>\n `;\n }\n\n protected _renderAdorners() {\n return this._resizeAdornersVisible\n ? html`\n ${this._renderAdorner('side')} ${this._renderAdorner('corner')}\n ${this._renderAdorner('bottom')}\n `\n : nothing;\n }\n\n protected override render() {\n const isHoverMode = this._resizeMode === 'hover';\n const parts = {\n 'tile-container': true,\n active: this._resizeAdornersVisible,\n };\n\n return this._resizeDisabled\n ? this._renderContent()\n : html`\n <div\n ${ref(this._containerRef)}\n part=${partMap(parts)}\n @pointerenter=${bindIf(isHoverMode, this._handleResizePointerEnter)}\n @pointerleave=${bindIf(isHoverMode, this._handleResizePointerLeave)}\n >\n ${this._renderContent()} ${this._renderAdorners()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile': IgcTileComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tile.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport {\n setTransitionName,\n startViewTransition,\n} from '#animations/view-transition.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '#internals/context.js';\nimport { createAsyncContext } from '#internals/controllers/async-consumer.js';\nimport { addFullscreenController } from '#internals/controllers/fullscreen.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport {\n coercedProperty,\n type CoercedPropertyConfig,\n} from '#internals/decorators/coerced-property.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n type DragCallbackParams,\n type DraggableOptions,\n type DragPointerDirection,\n draggable,\n} from '#internals/directives/drag.js';\nimport {\n type ResizableOptions,\n type ResizeCallbackParams,\n type ResizeDirection,\n resizable,\n} from '#internals/directives/resize.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isLTR } from '#internals/utils/dom.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { asNumber } from '#internals/utils/math.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcDividerComponent from '../divider/divider.js';\nimport type { TileManagerDragMode, TileManagerResizeMode } from '../types.js';\nimport { createTileDragStack, swapTiles } from './position.js';\nimport { createTileResizeState } from './resize-state.js';\nimport { styles as shared } from './themes/shared/tile/tile.common.css.js';\nimport { styles } from './themes/tile.base.css.js';\nimport { all } from './themes/tile.js';\nimport { createTileDragGhost, createTileGhost } from './tile-ghost-util.js';\nimport type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface IgcTileChangeStateEventArgs {\n tile: IgcTileComponent;\n state: boolean;\n}\n\ntype AdornerType = 'side' | 'corner' | 'bottom';\n\nexport interface IgcTileComponentEventMap {\n igcTileFullscreen: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileMaximize: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileDragStart: CustomEvent<IgcTileComponent>;\n igcTileDragEnd: CustomEvent<IgcTileComponent>;\n igcTileDragCancel: CustomEvent<IgcTileComponent>;\n igcTileResizeStart: CustomEvent<IgcTileComponent>;\n igcTileResizeEnd: CustomEvent<IgcTileComponent>;\n igcTileResizeCancel: CustomEvent<IgcTileComponent>;\n}\n\nconst nextId = createIdGenerator('tile');\nconst Slots = setSlots(\n 'title',\n 'maximize-action',\n 'fullscreen-action',\n 'actions',\n 'side-adorner',\n 'corner-adorner',\n 'bottom-adorner'\n);\n\n/**\n * The tile component is used within the tile manager as a container\n * for displaying various types of information.\n *\n * @element igc-tile\n *\n * @fires igcTileFullscreen - Fired when the fullscreen state of the tile changes.\n * @fires igcTileMaximize - Fired when the maximize state of the tile changes.\n * @fires igcTileDragStart - Fired when a drag operation on a tile is about to begin. Cancelable.\n * @fires igcTileDragEnd - Fired when a drag operation with a tile is successfully completed.\n * @fires igcTileDragCancel - Fired when a tile drag operation is canceled by the user.\n * @fires igcTileResizeStart - Fired when a resize operation on a tile is about to begin. Cancelable.\n * @fires igcTileResizeEnd - Fired when a resize operation on a tile is successfully completed.\n * @fires igcTileResizeCancel - Fired when a resize operation on a tile is canceled by the user.\n *\n * @slot - Default slot for the tile's content.\n * @slot title - Renders the title of the tile header.\n * @slot maximize-action - Renders the maximize action element of the tile header.\n * @slot fullscreen-action - Renders the fullscreen action element of the tile header.\n * @slot actions - Renders items after the default actions in the tile header.\n * @slot side-adorner - Renders the side resize handle of the tile.\n * @slot corner-adorner - Renders the corner resize handle of the tile.\n * @slot bottom-adorner - Renders the bottom resize handle of the tile.\n *\n * @csspart base - The wrapper for the entire tile content, header and content.\n * @csspart header - The container for the tile header, including title and actions.\n * @csspart title - The title container of the tile.\n * @csspart actions - The actions container of the tile header.\n * @csspart content-container - The container wrapping the tile’s main content.\n * @csspart tile-container - The wrapper around the tile content and its resize adorners.\n * @csspart trigger-side - The side resize handle of the tile.\n * @csspart trigger - The corner resize handle of the tile.\n * @csspart trigger-bottom - The bottom resize handle of the tile.\n */\nexport default class IgcTileComponent extends EventEmitterMixin<\n IgcTileComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tile';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcTileComponent,\n IgcIconButtonComponent,\n IgcDividerComponent\n );\n }\n\n private readonly _slots = addSlotController(this, { slots: Slots });\n\n private readonly _fullscreenController = addFullscreenController(this, {\n enter: this._emitFullScreenEvent,\n exit: this._emitFullScreenEvent,\n });\n\n private readonly _resizeState = createTileResizeState();\n private readonly _dragStack = createTileDragStack();\n\n /** Shared config for the grid placement properties, projected into a CSS variable on the host. */\n private static _gridVariable<T extends number | null>(\n name: string,\n transform: (value: T) => T\n ): CoercedPropertyConfig<T, IgcTileComponent> {\n return {\n transform: ({ value }) => transform(value),\n onChange: ({ value, host }) => {\n host.style.setProperty(name, value != null ? value.toString() : null);\n },\n };\n }\n\n /** Part name and resize direction for each of the tile resize adorners. */\n private static readonly _adorners: Record<\n AdornerType,\n { part: string; direction: ResizeDirection }\n > = {\n side: { part: 'trigger-side', direction: 'horizontal' },\n corner: { part: 'trigger', direction: 'both' },\n bottom: { part: 'trigger-bottom', direction: 'vertical' },\n };\n\n /** Config for the span properties - a value below 1 is coerced to 1. */\n private static _spanVariable(name: string) {\n return IgcTileComponent._gridVariable<number>(name, (value) =>\n Math.max(1, asNumber(value))\n );\n }\n\n /** Config for the start properties - a non-positive value removes the explicit placement. */\n private static _startVariable(name: string) {\n return IgcTileComponent._gridVariable<number | null>(\n name,\n (value) => Math.max(0, asNumber(value)) || null\n );\n }\n\n // Tile manager context properties and helpers\n\n private readonly _context = createAsyncContext(this, tileManagerContext);\n\n /** Returns the parent tile manager context. */\n private get _tileManagerCtx(): TileManagerContext | undefined {\n return this._context.value;\n }\n\n private get _tileManager(): IgcTileManagerComponent | undefined {\n return this._tileManagerCtx?.instance;\n }\n\n /** Returns the tile manager internal CSS grid container. */\n private get _cssContainer(): HTMLElement | undefined {\n return this._tileManagerCtx?.grid.value;\n }\n\n /** Returns the tile manager current resize mode. */\n private get _resizeMode(): TileManagerResizeMode {\n return this._tileManager?.resizeMode ?? 'none';\n }\n\n /** Returns the tile manager current drag mode. */\n private get _dragMode(): TileManagerDragMode {\n return this._tileManager?.dragMode ?? 'none';\n }\n\n protected readonly _headerRef = createRef<HTMLElement>();\n\n /** The DOM container measured and used as a resize target by the resizable directive. */\n protected readonly _containerRef = createRef<HTMLElement>();\n\n /**\n * Not cached: toggling `_resizeDisabled` (maximize, fullscreen, resize mode)\n * switches the render template and recreates this element.\n */\n @query('[part~=\"base\"]')\n public _tileContent!: HTMLElement;\n\n @state()\n private _isDragging = false;\n\n @state()\n private _isResizing = false;\n\n /** Whether the tile is hovered while the tile manager is in `hover` resize mode. */\n @state()\n private _isResizeActive = false;\n\n /** Whether the resize adorners and the active resize outline are shown. */\n private get _resizeAdornersVisible(): boolean {\n return this._isResizeActive || this._resizeMode === 'always';\n }\n\n /** Whether to render the resize adorners based on tile and tile manager configuration. */\n private get _resizeDisabled(): boolean {\n return (\n this.disableResize ||\n this.maximized ||\n this.fullscreen ||\n this._resizeMode === 'none'\n );\n }\n\n /**\n * The number of columns the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr col-span\n * @default 1\n */\n @property({ type: Number, attribute: 'col-span' })\n @coercedProperty(IgcTileComponent._spanVariable('--ig-col-span'))\n public colSpan = 1;\n\n /**\n * The number of rows the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr row-span\n * @default 1\n */\n @property({ type: Number, attribute: 'row-span' })\n @coercedProperty(IgcTileComponent._spanVariable('--ig-row-span'))\n public rowSpan = 1;\n\n /**\n * The starting column for the tile.\n *\n * @attr col-start\n */\n @property({ type: Number, attribute: 'col-start' })\n @coercedProperty(IgcTileComponent._startVariable('--ig-col-start'))\n public colStart: number | null = null;\n\n /**\n * The starting row for the tile.\n *\n * @attr row-start\n */\n @property({ type: Number, attribute: 'row-start' })\n @coercedProperty(IgcTileComponent._startVariable('--ig-row-start'))\n public rowStart: number | null = null;\n\n /**\n * Indicates whether the tile occupies the whole screen.\n *\n * @property\n */\n public get fullscreen(): boolean {\n return this._fullscreenController.fullscreen;\n }\n\n /**\n * Indicates whether the tile occupies all available space within the layout.\n *\n * @attr maximized\n */\n @property({ type: Boolean, reflect: true })\n @coercedProperty<boolean, IgcTileComponent>({\n onChange: ({ host }) => host._tileManagerCtx?.setMaximizedState(),\n })\n public maximized = false;\n\n /**\n * Indicates whether to disable tile resize behavior regardless\n * of its tile manager parent settings.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether to disable the rendering of the tile `fullscreen-action` slot and its\n * default fullscreen action button.\n *\n * @attr disable-fullscreen\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-fullscreen' })\n public disableFullscreen = false;\n\n /**\n * Whether to disable the rendering of the tile `maximize-action` slot and its\n * default maximize action button.\n *\n * @attr disable-maximize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-maximize' })\n public disableMaximize = false;\n\n /**\n * Gets/sets the tile's visual position in the layout.\n * Corresponds to the CSS `order` property.\n *\n * @attr position\n */\n @property({ type: Number })\n @coercedProperty<number, IgcTileComponent>({\n transform: ({ value }) => asNumber(value),\n onChange: ({ value, host }) => {\n host.style.order = value.toString();\n },\n })\n public position = -1;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || nextId();\n if (!this.style.viewTransitionName) {\n setTransitionName(this, `tile-transition-${this.id}`);\n }\n }\n\n private _setDragState(state = true) {\n this._isDragging = state;\n this._tileContent.style.opacity = state ? '0' : '';\n this.style.pointerEvents = state ? 'none' : '';\n this.part.toggle('dragging', state);\n }\n\n private _handleDragStart = () => {\n if (!this._emitStartEvent('igcTileDragStart')) {\n return false;\n }\n\n this._setDragState();\n this._dragStack.push(this);\n return true;\n };\n\n private _handleDragOver = ({ event, state }: DragCallbackParams): void => {\n const match = state.element as IgcTileComponent;\n\n if (this._dragStack.peek() === match) {\n if (this._shouldSwap(event, state.pointerState.direction, match)) {\n this._dragStack.pop();\n this._dragStack.push(match);\n this._performSwap(match);\n }\n return;\n }\n\n this._dragStack.push(match);\n this._performSwap(match);\n };\n\n private _handleDragCancel = () => {\n startViewTransition(() => {\n this._dragStack.restore();\n this._dragStack.reset();\n });\n\n this._setDragState(false);\n this.emitEvent('igcTileDragCancel', { detail: this });\n };\n\n private _handleDragEnd = () => {\n this._setDragState(false);\n this._dragStack.reset();\n this.emitEvent('igcTileDragEnd', { detail: this });\n };\n\n private _performSwap(match: IgcTileComponent): void {\n startViewTransition(() => swapTiles(this, match));\n }\n\n private _shouldSwap(\n { clientX, clientY }: PointerEvent,\n direction: DragPointerDirection,\n match: IgcTileComponent\n ): boolean {\n const LTR = isLTR(this);\n\n const { left, top, width, height } = match.getBoundingClientRect();\n const relativeX = (clientX - left) / width;\n const relativeY = (clientY - top) / height;\n\n switch (direction) {\n case 'start':\n return (\n this.position > match.position &&\n (LTR ? relativeX <= 0.25 : relativeX >= 0.75)\n );\n case 'end':\n return (\n this.position < match.position &&\n (LTR ? relativeX >= 0.75 : relativeX <= 0.25)\n );\n case 'top':\n return this.position > match.position && relativeY <= 0.25;\n case 'bottom':\n return this.position < match.position && relativeY >= 0.75;\n default:\n return false;\n }\n }\n\n private _skipDrag = (event: PointerEvent): boolean => {\n if (this.maximized || this.fullscreen) {\n return true;\n }\n\n return Boolean(\n getElementFromPath(\n (e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'),\n event\n )\n );\n };\n\n private _match = (element: Element): element is IgcTileComponent => {\n return element !== this && IgcTileComponent.tagName === element.localName;\n };\n\n private _createDragGhost = (): IgcTileComponent => {\n return createTileDragGhost(this);\n };\n\n private _createResizeGhost = (): HTMLElement => {\n return createTileGhost(this);\n };\n\n private _setResizeState(state = true) {\n this._isResizing = state;\n this.style.zIndex = state ? '1' : '';\n this.part.toggle('resizing', state);\n }\n\n private _handleResizeStart = ({ event, state }: ResizeCallbackParams) => {\n if (!this._emitStartEvent('igcTileResizeStart')) {\n return false;\n }\n\n event.preventDefault();\n this._resizeState.updateState(state.initial, this, this._cssContainer!);\n this._setResizeState();\n return true;\n };\n\n private _handleResize(\n { state }: ResizeCallbackParams,\n direction: ResizeDirection\n ): void {\n if (direction !== 'vertical') {\n state.current.width = this._resizeState.calculateSnappedWidth(state);\n }\n\n if (direction !== 'horizontal') {\n state.current.height = this._resizeState.calculateSnappedHeight(state);\n }\n }\n\n private _handleResizeEnd = ({ state }: ResizeCallbackParams) => {\n const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(\n state.current\n );\n\n state.commit = async () => {\n await startViewTransition(() => {\n this.colSpan = colSpan;\n this.rowSpan = rowSpan;\n }).updateCallbackDone;\n\n this._setResizeState(false);\n this.emitEvent('igcTileResizeEnd', { detail: this });\n };\n };\n\n private _handleResizeCancel = () => {\n this._setResizeState(false);\n this.emitEvent('igcTileResizeCancel', { detail: this });\n };\n\n private _handleFullscreen() {\n this._fullscreenController.setState(!this.fullscreen);\n }\n\n private async _handleMaximize() {\n if (!this._emitMaximizedEvent()) {\n return;\n }\n\n this.style.zIndex = '1';\n\n await startViewTransition(() => {\n this.maximized = !this.maximized;\n }).finished;\n\n this.style.zIndex = '';\n }\n\n private _emitFullScreenEvent(state: boolean) {\n this.requestUpdate();\n\n return this.emitEvent('igcTileFullscreen', {\n detail: { tile: this, state },\n cancelable: true,\n });\n }\n\n private _emitMaximizedEvent() {\n return this.emitEvent('igcTileMaximize', {\n detail: { tile: this, state: !this.maximized },\n cancelable: true,\n });\n }\n\n private _emitStartEvent(name: 'igcTileDragStart' | 'igcTileResizeStart') {\n return this.emitEvent(name, { detail: this, cancelable: true });\n }\n\n protected _renderDefaultAction(type: 'maximize' | 'fullscreen') {\n const [icon, listener] =\n type === 'fullscreen'\n ? [\n this.fullscreen ? 'fullscreen_exit' : 'fullscreen',\n this._handleFullscreen,\n ]\n : [\n this.maximized ? 'collapse_content' : 'expand_content',\n this._handleMaximize,\n ];\n\n return html`\n <igc-icon-button\n variant=\"flat\"\n collection=\"default\"\n exportparts=\"icon\"\n name=${icon}\n aria-label=${icon}\n @click=${listener}\n ></igc-icon-button>\n `;\n }\n\n protected _renderHeader() {\n const hasTitle = this._slots.hasAssignedElements('title');\n const hasActions = this._slots.hasAssignedElements('actions');\n\n const hideHeader =\n !hasTitle &&\n !hasActions &&\n this.disableMaximize &&\n this.disableFullscreen;\n\n const hasMaximizeSlot = !(this.disableMaximize || this.fullscreen);\n const hasFullscreenSlot = !this.disableFullscreen;\n\n return html`\n <section part=\"header\" ?hidden=${hideHeader} ${ref(this._headerRef)}>\n <header part=\"title\">\n <slot name=\"title\"></slot>\n </header>\n <section id=\"tile-actions\" part=\"actions\">\n ${hasMaximizeSlot ? this._renderActionSlot('maximize') : nothing}\n ${hasFullscreenSlot ? this._renderActionSlot('fullscreen') : nothing}\n <slot name=\"actions\"></slot>\n </section>\n </section>\n <igc-divider></igc-divider>\n `;\n }\n\n private _renderActionSlot(type: 'maximize' | 'fullscreen') {\n return html`\n <slot name=\"${type}-action\">${this._renderDefaultAction(type)}</slot>\n `;\n }\n\n private _createDragOptions(): DraggableOptions {\n const dragMode = this._dragMode;\n\n return {\n enabled: dragMode !== 'none',\n target: () => this,\n trigger:\n dragMode === 'tile-header' ? () => this._headerRef.value : undefined,\n skip: this._skipDrag,\n matchTarget: this._match,\n ghostFactory: this._createDragGhost,\n start: this._handleDragStart,\n over: this._handleDragOver,\n end: this._handleDragEnd,\n cancel: this._handleDragCancel,\n };\n }\n\n protected _renderContent() {\n const parts = {\n base: true,\n draggable: this._dragMode !== 'none',\n fullscreen: this.fullscreen,\n dragging: this._isDragging,\n resizable: !this.disableResize && this._resizeMode !== 'none',\n resizing: this._isResizing,\n maximized: this.maximized,\n };\n\n return html`\n <div part=${partMap(parts)} ${draggable(this._createDragOptions())}>\n ${this._renderHeader()}\n <div part=\"content-container\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _handleResizePointerEnter() {\n this._isResizeActive = true;\n }\n\n private _handleResizePointerLeave() {\n this._isResizeActive = false;\n }\n\n private _createResizeOptions(direction: ResizeDirection): ResizableOptions {\n return {\n mode: 'deferred',\n direction,\n target: () => this._containerRef.value,\n ghostFactory: this._createResizeGhost,\n start: this._handleResizeStart,\n resize: (params) => this._handleResize(params, direction),\n end: this._handleResizeEnd,\n cancel: this._handleResizeCancel,\n };\n }\n\n private _renderAdorner(type: AdornerType) {\n const { part, direction } = IgcTileComponent._adorners[type];\n const parts = {\n [part]: true,\n custom: this._slots.hasAssignedElements(`${type}-adorner`),\n };\n\n return html`\n <slot\n name=\"${type}-adorner\"\n part=${partMap(parts)}\n ${resizable(this._createResizeOptions(direction))}\n ></slot>\n `;\n }\n\n protected _renderAdorners() {\n return this._resizeAdornersVisible\n ? html`\n ${this._renderAdorner('side')} ${this._renderAdorner('corner')}\n ${this._renderAdorner('bottom')}\n `\n : nothing;\n }\n\n protected override render() {\n const isHoverMode = this._resizeMode === 'hover';\n const parts = {\n 'tile-container': true,\n active: this._resizeAdornersVisible,\n };\n\n return this._resizeDisabled\n ? this._renderContent()\n : html`\n <div\n ${ref(this._containerRef)}\n part=${partMap(parts)}\n @pointerenter=${bindIf(isHoverMode, this._handleResizePointerEnter)}\n @pointerleave=${bindIf(isHoverMode, this._handleResizePointerLeave)}\n >\n ${this._renderContent()} ${this._renderAdorners()}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile': IgcTileComponent;\n }\n}\n"]}
@@ -11,8 +11,6 @@ import { IgcBaseAlertLikeComponent } from '#internals/mixins/alert.js';
11
11
  * @element igc-toast
12
12
  *
13
13
  * @slot - Default slot for the toast content.
14
- *
15
- * @csspart base - The base wrapper of the toast.
16
14
  */
17
15
  export default class IgcToastComponent extends IgcBaseAlertLikeComponent {
18
16
  static readonly tagName = "igc-toast";
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../src/components/toast/toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAiBpD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,yBAAyB;aAC/C,YAAO,GAAG,WAAW,CAAC;aACtB,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QACR,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;IAClD,CAAC","sourcesContent":["import { html } from 'lit';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { IgcBaseAlertLikeComponent } from '#internals/mixins/alert.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport { styles as shared } from './themes/shared/toast.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/toast.base.css.js';\n\n/**\n * A toast component is used to show a brief, non-interactive notification.\n *\n * The component integrates with the\n * [Invoker Commands API](https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API):\n * an Ignite button or a native `<button>` with `command=\"--show\"` / `\"--hide\"` /\n * `\"--toggle\"` and `commandfor` pointing to this element will call the\n * corresponding method declaratively without any JavaScript.\n *\n * @element igc-toast\n *\n * @slot - Default slot for the toast content.\n *\n * @csspart base - The base wrapper of the toast.\n */\nexport default class IgcToastComponent extends IgcBaseAlertLikeComponent {\n public static readonly tagName = 'igc-toast';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcToastComponent);\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override render() {\n return html`<slot .inert=${!this.open}></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-toast': IgcToastComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../src/components/toast/toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAepD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,yBAAyB;aAC/C,YAAO,GAAG,WAAW,CAAC;aACtB,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QACR,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,gBAAgB,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC;IAClD,CAAC","sourcesContent":["import { html } from 'lit';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { IgcBaseAlertLikeComponent } from '#internals/mixins/alert.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport { styles as shared } from './themes/shared/toast.common.css.js';\nimport { all } from './themes/themes.js';\nimport { styles } from './themes/toast.base.css.js';\n\n/**\n * A toast component is used to show a brief, non-interactive notification.\n *\n * The component integrates with the\n * [Invoker Commands API](https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API):\n * an Ignite button or a native `<button>` with `command=\"--show\"` / `\"--hide\"` /\n * `\"--toggle\"` and `commandfor` pointing to this element will call the\n * corresponding method declaratively without any JavaScript.\n *\n * @element igc-toast\n *\n * @slot - Default slot for the toast content.\n */\nexport default class IgcToastComponent extends IgcBaseAlertLikeComponent {\n public static readonly tagName = 'igc-toast';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcToastComponent);\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override render() {\n return html`<slot .inert=${!this.open}></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-toast': IgcToastComponent;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/components/tooltip/controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController } from 'lit';\nimport { createAbortHandle } from '#internals/abort-handler.js';\nimport { getElementByIdFromRoot } from '#internals/utils/dom.js';\nimport { addWeakEventListener } from '#internals/utils/events.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { isString } from '#internals/utils/types.js';\nimport service from './service.js';\nimport type IgcTooltipComponent from './tooltip.js';\n\nclass TooltipController implements ReactiveController {\n //#region Internal properties and state\n\n private static readonly _listeners = [\n 'pointerenter',\n 'pointerleave',\n ] as const;\n\n private readonly _host: IgcTooltipComponent;\n private readonly _options: TooltipCallbacks;\n\n private readonly _hostAbortHandle = createAbortHandle();\n private readonly _anchorAbortHandle = createAbortHandle();\n\n private _showTriggers = new Set(['pointerenter', 'focusin']);\n private _hideTriggers = new Set(['pointerleave', 'click', 'focusout']);\n\n private _anchor: WeakRef<Element> | null = null;\n private _initialAnchor: WeakRef<Element> | null = null;\n\n /** The element currently describing itself with this tooltip. */\n private _describedElement: WeakRef<Element> | null = null;\n\n private _isTransient = false;\n private _open = false;\n\n //#endregion\n\n //#region Public properties\n\n /** Whether the tooltip is in shown state. */\n public get open(): boolean {\n return this._open;\n }\n\n /** Sets the shown state of the current tooltip. */\n public set open(value: boolean) {\n this._open = value;\n\n if (this._open) {\n this._addTooltipListeners();\n service.add(this._host, this._options.onEscape);\n } else {\n if (this._isTransient) {\n this._isTransient = false;\n this.setAnchor(this._initialAnchor?.deref());\n }\n\n this._hostAbortHandle.abort();\n service.remove(this._host);\n }\n }\n\n /**\n * Returns the current tooltip anchor target if any.\n */\n public get anchor(): TooltipAnchor {\n // `setAnchor` keeps this in sync with `_initialAnchor` unless transient.\n return this._anchor?.deref();\n }\n\n /**\n * Returns the current set of hide triggers as a comma-separated string.\n */\n public get hideTriggers(): string {\n return Array.from(this._hideTriggers).join();\n }\n\n /**\n * Sets a new set of hide triggers from a comma-separated string.\n *\n * @remarks\n * If the tooltip already has an `anchor` bound it will remove the old\n * set of triggers from it and rebind it with the new one.\n */\n public set hideTriggers(value: string) {\n this._hideTriggers = parseTriggers(value);\n this._anchorAbortHandle.abort();\n this._addAnchorListeners();\n }\n\n /**\n * Returns the current set of show triggers as a comma-separated string.\n */\n public get showTriggers(): string {\n return Array.from(this._showTriggers).join();\n }\n\n /**\n * Sets a new set of show triggers from a comma-separated string.\n *\n * @remarks\n * If the tooltip already has an `anchor` bound it will remove the old\n * set of triggers from it and rebind it with the new one.\n */\n public set showTriggers(value: string) {\n this._showTriggers = parseTriggers(value);\n this._anchorAbortHandle.abort();\n this._addAnchorListeners();\n }\n\n //#endregion\n\n constructor(tooltip: IgcTooltipComponent, options: TooltipCallbacks) {\n this._host = tooltip;\n this._options = options;\n this._host.addController(this);\n }\n\n //#region Internal event listeners state\n\n private _addAnchorListeners(): void {\n const anchor = this.anchor;\n\n if (!anchor) {\n return;\n }\n\n const { signal } = this._anchorAbortHandle;\n\n for (const each of this._showTriggers) {\n addWeakEventListener(anchor, each, this, { passive: true, signal });\n }\n\n for (const each of this._hideTriggers) {\n addWeakEventListener(anchor, each, this, { passive: true, signal });\n }\n\n if (!this._showTriggers.has('click') && !this._hideTriggers.has('click')) {\n addWeakEventListener(anchor, 'click', this, { passive: true, signal });\n }\n }\n\n private _addTooltipListeners(): void {\n const { signal } = this._hostAbortHandle;\n\n for (const event of TooltipController._listeners) {\n this._host.addEventListener(event, this, { passive: true, signal });\n }\n }\n\n /**\n * Points the anchor's `aria-describedby` at the tooltip, releasing the\n * previously described element. Tokens already on the anchor are kept.\n */\n private _syncAnchorARIA(): void {\n const anchor = this.anchor;\n const previous = this._describedElement?.deref();\n\n if (previous === anchor) {\n return;\n }\n\n if (previous) {\n this._toggleDescribedBy(previous, false);\n }\n\n this._describedElement = anchor ? new WeakRef(anchor) : null;\n\n if (anchor) {\n this._toggleDescribedBy(anchor, true);\n }\n }\n\n private _toggleDescribedBy(element: Element, state: boolean): void {\n const id = (this._host.id ||= nextTooltipId());\n const tokens = new Set(\n (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n );\n\n state ? tokens.add(id) : tokens.delete(id);\n\n tokens.size > 0\n ? element.setAttribute('aria-describedby', Array.from(tokens).join(' '))\n : element.removeAttribute('aria-describedby');\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleTooltipEvent(event: Event): void {\n if (event.type === 'pointerenter') {\n this._options.onShow();\n } else if (event.type === 'pointerleave') {\n this._options.onHide();\n }\n }\n\n private _handleAnchorEvent(event: Event): void {\n const isShowTrigger = this._showTriggers.has(event.type);\n const isHideTrigger = this._hideTriggers.has(event.type);\n\n // Not a configured trigger, so this is the synthetic `click` listener.\n // Clicking the anchor cancels a queued show - see issue #1828.\n if (!(isShowTrigger || isHideTrigger)) {\n if (event.type === 'click') {\n this._options.onClick();\n }\n return;\n }\n\n // The same event drives both directions - toggle on the committed state.\n if (isShowTrigger && isHideTrigger) {\n this._open ? this._options.onHide() : this._options.onShow();\n return;\n }\n\n // Deliberately not gated on the committed state - that would swallow\n // triggers arriving while a transition is still running. The host is\n // already a no-op when it is heading to the requested state.\n isShowTrigger ? this._options.onShow() : this._options.onHide();\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n // The element the listener sits on, not `event.target` - a bubbling\n // trigger such as `click` or `focusin` reports the descendant of the\n // anchor it originated from.\n const target = event.currentTarget;\n\n if (target === this._host) {\n this._handleTooltipEvent(event);\n } else if (target === this._anchor?.deref()) {\n this._handleAnchorEvent(event);\n } else if (target === this._initialAnchor?.deref()) {\n // Interacting with the initial anchor drops the transient one.\n this._options.onReset();\n this._handleAnchorEvent(event);\n }\n }\n\n //#endregion\n\n private _dispose(): void {\n this._anchorAbortHandle.abort();\n this._hostAbortHandle.abort();\n service.remove(this._host);\n this._anchor = null;\n this._initialAnchor = null;\n this._syncAnchorARIA();\n }\n\n //#region Public API\n\n /**\n * Removes all triggers from the previous `anchor` target and rebinds the current\n * sets back to the new value if it exists.\n */\n public setAnchor(value: TooltipAnchor | string, transient = false): void {\n const newAnchor = isString(value)\n ? getElementByIdFromRoot(this._host, value)\n : value;\n\n if (this._anchor?.deref() === newAnchor) {\n return;\n }\n\n // `show()` was called with a target while the tooltip is up - close it\n // before it moves to the new anchor.\n if (transient && this._open) {\n this._options.onReset();\n }\n\n if (this._anchor?.deref() !== this._initialAnchor?.deref()) {\n this._anchorAbortHandle.abort();\n }\n\n this._anchor = newAnchor ? new WeakRef(newAnchor) : null;\n this._isTransient = transient;\n this._addAnchorListeners();\n this._syncAnchorARIA();\n }\n\n public resolveAnchor(value: TooltipAnchor | string): void {\n const resolvedElement = isString(value)\n ? getElementByIdFromRoot(this._host, value)\n : value;\n\n this._initialAnchor = resolvedElement ? new WeakRef(resolvedElement) : null;\n this.setAnchor(resolvedElement);\n }\n\n //#endregion\n\n //#region ReactiveController interface\n\n /** @internal */\n public hostConnected(): void {\n this.resolveAnchor(this._host.anchor);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._dispose();\n }\n\n //#endregion\n}\n\nconst nextTooltipId = createIdGenerator('igc-tooltip');\n\n/** Splits the strings passed to the `show/hide-triggers` properties. */\nconst triggersSeparator = /[,\\s]+/;\n\nfunction parseTriggers(value: string): Set<string> {\n // Removing the attribute passes `null` through the property accessor.\n return new Set(\n (value ?? '').split(triggersSeparator).filter((trigger) => trigger.trim())\n );\n}\n\nexport function addTooltipController(\n host: IgcTooltipComponent,\n options: TooltipCallbacks\n): TooltipController {\n return new TooltipController(host, options);\n}\n\ntype TooltipAnchor = Element | null | undefined;\n\ntype TooltipCallbacks = {\n /** A show trigger fired, or the pointer entered the tooltip itself. */\n onShow: () => unknown;\n /** A hide trigger fired, or the pointer left the tooltip itself. */\n onHide: () => unknown;\n /** The `Escape` key was pressed while the tooltip is shown. */\n onEscape: () => unknown;\n /** The anchor was clicked with `click` bound to neither trigger set. */\n onClick: () => unknown;\n /** The tooltip must drop the anchor it is currently bound to. */\n onReset: () => unknown;\n};\n"]}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/components/tooltip/controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController } from 'lit';\nimport { createAbortHandle } from '#internals/abort-handler.js';\nimport { getElementByIdFromRoot } from '#internals/utils/dom.js';\nimport { addWeakEventListener } from '#internals/utils/events.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { isString } from '#internals/utils/types.js';\nimport service from './service.js';\nimport type IgcTooltipComponent from './tooltip.js';\n\nclass TooltipController implements ReactiveController {\n //#region Internal properties and state\n\n private static readonly _listeners = [\n 'pointerenter',\n 'pointerleave',\n ] as const;\n\n private readonly _host: IgcTooltipComponent;\n private readonly _options: TooltipCallbacks;\n\n private readonly _hostAbortHandle = createAbortHandle();\n private readonly _anchorAbortHandle = createAbortHandle();\n\n private _showTriggers = new Set(['pointerenter', 'focusin']);\n private _hideTriggers = new Set(['pointerleave', 'click', 'focusout']);\n\n private _anchor: WeakRef<Element> | null = null;\n private _initialAnchor: WeakRef<Element> | null = null;\n\n /** The element currently describing itself with this tooltip. */\n private _describedElement: WeakRef<Element> | null = null;\n\n private _isTransient = false;\n private _open = false;\n\n //#endregion\n\n //#region Public properties\n\n /** Whether the tooltip is in shown state. */\n public get open(): boolean {\n return this._open;\n }\n\n /** Sets the shown state of the current tooltip. */\n public set open(value: boolean) {\n this._open = value;\n\n if (this._open) {\n this._addTooltipListeners();\n service.add(this._host, this._options.onEscape);\n } else {\n if (this._isTransient) {\n this._isTransient = false;\n this.setAnchor(this._initialAnchor?.deref());\n }\n\n this._hostAbortHandle.abort();\n service.remove(this._host);\n }\n }\n\n /**\n * Returns the current tooltip anchor target if any.\n */\n public get anchor(): TooltipAnchor {\n // `setAnchor` keeps this in sync with `_initialAnchor` unless transient.\n return this._anchor?.deref();\n }\n\n /**\n * Returns the current set of hide triggers as a comma-separated string.\n */\n public get hideTriggers(): string {\n return Array.from(this._hideTriggers).join();\n }\n\n /**\n * Sets a new set of hide triggers from a comma-separated string.\n *\n * @remarks\n * If the tooltip already has an `anchor` bound it will remove the old\n * set of triggers from it and rebind it with the new one.\n */\n public set hideTriggers(value: string) {\n this._hideTriggers = parseTriggers(value);\n this._anchorAbortHandle.abort();\n this._addAnchorListeners();\n }\n\n /**\n * Returns the current set of show triggers as a comma-separated string.\n */\n public get showTriggers(): string {\n return Array.from(this._showTriggers).join();\n }\n\n /**\n * Sets a new set of show triggers from a comma-separated string.\n *\n * @remarks\n * If the tooltip already has an `anchor` bound it will remove the old\n * set of triggers from it and rebind it with the new one.\n */\n public set showTriggers(value: string) {\n this._showTriggers = parseTriggers(value);\n this._anchorAbortHandle.abort();\n this._addAnchorListeners();\n }\n\n //#endregion\n\n constructor(tooltip: IgcTooltipComponent, options: TooltipCallbacks) {\n this._host = tooltip;\n this._options = options;\n this._host.addController(this);\n }\n\n //#region Internal event listeners state\n\n private _addAnchorListeners(): void {\n const anchor = this.anchor;\n\n if (!anchor) {\n return;\n }\n\n const { signal } = this._anchorAbortHandle;\n\n for (const each of this._showTriggers) {\n addWeakEventListener(anchor, each, this, { passive: true, signal });\n }\n\n for (const each of this._hideTriggers) {\n addWeakEventListener(anchor, each, this, { passive: true, signal });\n }\n\n if (!this._showTriggers.has('click') && !this._hideTriggers.has('click')) {\n addWeakEventListener(anchor, 'click', this, { passive: true, signal });\n }\n }\n\n private _addTooltipListeners(): void {\n const { signal } = this._hostAbortHandle;\n\n for (const event of TooltipController._listeners) {\n this._host.addEventListener(event, this, { passive: true, signal });\n }\n }\n\n /**\n * Points the anchor's `aria-describedby` at the tooltip, releasing the\n * previously described element. Tokens already on the anchor are kept.\n */\n private _syncAnchorARIA(): void {\n const anchor = this.anchor;\n const previous = this._describedElement?.deref();\n\n if (previous === anchor) {\n return;\n }\n\n if (previous) {\n this._toggleDescribedBy(previous, false);\n }\n\n this._describedElement = anchor ? new WeakRef(anchor) : null;\n\n if (anchor) {\n this._toggleDescribedBy(anchor, true);\n }\n }\n\n private _toggleDescribedBy(element: Element, state: boolean): void {\n const id = (this._host.id ||= nextTooltipId());\n const tokens = new Set(\n (element.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n );\n\n state ? tokens.add(id) : tokens.delete(id);\n\n tokens.size > 0\n ? element.setAttribute('aria-describedby', Array.from(tokens).join(' '))\n : element.removeAttribute('aria-describedby');\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleTooltipEvent(event: Event): void {\n if (event.type === 'pointerenter') {\n this._options.onShow();\n } else if (event.type === 'pointerleave') {\n this._options.onHide();\n }\n }\n\n private _handleAnchorEvent(event: Event): void {\n const isShowTrigger = this._showTriggers.has(event.type);\n const isHideTrigger = this._hideTriggers.has(event.type);\n\n // Not a configured trigger, so this is the synthetic `click` listener.\n // Clicking the anchor cancels a queued show - see issue #1828.\n if (!(isShowTrigger || isHideTrigger)) {\n if (event.type === 'click') {\n this._options.onClick();\n }\n return;\n }\n\n // The same event drives both directions - toggle on the committed state.\n if (isShowTrigger && isHideTrigger) {\n this._open ? this._options.onHide() : this._options.onShow();\n return;\n }\n\n // Not gated on the committed state, which would lose a trigger that arrives\n // during a transition. The host already does nothing if it moves to the\n // requested state.\n isShowTrigger ? this._options.onShow() : this._options.onHide();\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n // The element that holds the listener, not `event.target`. A trigger that\n // bubbles, such as `click` or `focusin`, reports the descendant of the\n // anchor it came from.\n const target = event.currentTarget;\n\n if (target === this._host) {\n this._handleTooltipEvent(event);\n } else if (target === this._anchor?.deref()) {\n this._handleAnchorEvent(event);\n } else if (target === this._initialAnchor?.deref()) {\n // Interacting with the initial anchor drops the transient one.\n this._options.onReset();\n this._handleAnchorEvent(event);\n }\n }\n\n //#endregion\n\n private _dispose(): void {\n this._anchorAbortHandle.abort();\n this._hostAbortHandle.abort();\n service.remove(this._host);\n this._anchor = null;\n this._initialAnchor = null;\n this._syncAnchorARIA();\n }\n\n //#region Public API\n\n /**\n * Removes all triggers from the previous `anchor` target and rebinds the current\n * sets back to the new value if it exists.\n */\n public setAnchor(value: TooltipAnchor | string, transient = false): void {\n const newAnchor = isString(value)\n ? getElementByIdFromRoot(this._host, value)\n : value;\n\n if (this._anchor?.deref() === newAnchor) {\n return;\n }\n\n // `show()` was called with a target while the tooltip is up - close it\n // before it moves to the new anchor.\n if (transient && this._open) {\n this._options.onReset();\n }\n\n if (this._anchor?.deref() !== this._initialAnchor?.deref()) {\n this._anchorAbortHandle.abort();\n }\n\n this._anchor = newAnchor ? new WeakRef(newAnchor) : null;\n this._isTransient = transient;\n this._addAnchorListeners();\n this._syncAnchorARIA();\n }\n\n public resolveAnchor(value: TooltipAnchor | string): void {\n const resolvedElement = isString(value)\n ? getElementByIdFromRoot(this._host, value)\n : value;\n\n this._initialAnchor = resolvedElement ? new WeakRef(resolvedElement) : null;\n this.setAnchor(resolvedElement);\n }\n\n //#endregion\n\n //#region ReactiveController interface\n\n /** @internal */\n public hostConnected(): void {\n this.resolveAnchor(this._host.anchor);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._dispose();\n }\n\n //#endregion\n}\n\nconst nextTooltipId = createIdGenerator('igc-tooltip');\n\n/** Splits the strings passed to the `show/hide-triggers` properties. */\nconst triggersSeparator = /[,\\s]+/;\n\nfunction parseTriggers(value: string): Set<string> {\n // Removing the attribute passes `null` through the property accessor.\n return new Set(\n (value ?? '').split(triggersSeparator).filter((trigger) => trigger.trim())\n );\n}\n\nexport function addTooltipController(\n host: IgcTooltipComponent,\n options: TooltipCallbacks\n): TooltipController {\n return new TooltipController(host, options);\n}\n\ntype TooltipAnchor = Element | null | undefined;\n\ntype TooltipCallbacks = {\n /** A show trigger fired, or the pointer entered the tooltip itself. */\n onShow: () => unknown;\n /** A hide trigger fired, or the pointer left the tooltip itself. */\n onHide: () => unknown;\n /** The `Escape` key was pressed while the tooltip is shown. */\n onEscape: () => unknown;\n /** The anchor was clicked with `click` bound to neither trigger set. */\n onClick: () => unknown;\n /** The tooltip must drop the anchor it is currently bound to. */\n onReset: () => unknown;\n};\n"]}
@@ -1,6 +1,7 @@
1
1
  import { isServer } from 'lit';
2
- import { escapeKey } from '#internals/controllers/key-bindings.js';
2
+ import { escapeKey, isKey } from '#internals/controllers/keys.js';
3
3
  import { isEmpty, lastOf } from '#internals/utils/arrays.js';
4
+ import { toggleEventListener } from '#internals/utils/events.js';
4
5
  class TooltipEscapeCallbacks {
5
6
  constructor() {
6
7
  this._collection = new Map();
@@ -9,9 +10,7 @@ class TooltipEscapeCallbacks {
9
10
  if (isServer) {
10
11
  return;
11
12
  }
12
- isEmpty(this._collection)
13
- ? globalThis.removeEventListener('keydown', this)
14
- : globalThis.addEventListener('keydown', this);
13
+ toggleEventListener(globalThis, !isEmpty(this._collection), 'keydown', this);
15
14
  }
16
15
  add(instance, hideCallback) {
17
16
  if (this._collection.has(instance)) {
@@ -26,7 +25,7 @@ class TooltipEscapeCallbacks {
26
25
  }
27
26
  }
28
27
  async handleEvent(event) {
29
- if (event.key !== escapeKey) {
28
+ if (!isKey(event, escapeKey)) {
30
29
  return;
31
30
  }
32
31
  await lastOf(Array.from(this._collection.values()))?.();
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/components/tooltip/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAK7D,MAAM,sBAAsB;IAA5B;QACU,gBAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IAyC5E,CAAC;IAtCS,aAAa;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;YACvB,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC;YACjD,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAEM,GAAG,CACR,QAA6B,EAC7B,YAAiC;QAEjC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAA6B;QACzC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAGM,KAAK,CAAC,WAAW,CAAC,KAAoB;QAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAGD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAC7C,eAAe,OAAO,CAAC","sourcesContent":["import { isServer } from 'lit';\nimport { escapeKey } from '#internals/controllers/key-bindings.js';\nimport { isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport type IgcTooltipComponent from './tooltip.js';\n\ntype TooltipHideCallback = () => unknown;\n\nclass TooltipEscapeCallbacks {\n private _collection = new Map<IgcTooltipComponent, TooltipHideCallback>();\n\n /** Keeps the global `keydown` listener bound while any tooltip is shown. */\n private _syncListener(): void {\n /* c8 ignore next 3 */\n if (isServer) {\n return;\n }\n\n isEmpty(this._collection)\n ? globalThis.removeEventListener('keydown', this)\n : globalThis.addEventListener('keydown', this);\n }\n\n public add(\n instance: IgcTooltipComponent,\n hideCallback: TooltipHideCallback\n ): void {\n if (this._collection.has(instance)) {\n return;\n }\n\n this._collection.set(instance, hideCallback);\n this._syncListener();\n }\n\n public remove(instance: IgcTooltipComponent): void {\n if (this._collection.delete(instance)) {\n this._syncListener();\n }\n }\n\n /** @internal */\n public async handleEvent(event: KeyboardEvent): Promise<void> {\n if (event.key !== escapeKey) {\n return;\n }\n\n // The last registered tooltip is the last one shown.\n await lastOf(Array.from(this._collection.values()))?.();\n }\n}\n\nconst service = new TooltipEscapeCallbacks();\nexport default service;\n"]}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/components/tooltip/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKjE,MAAM,sBAAsB;IAA5B;QACU,gBAAW,GAAG,IAAI,GAAG,EAA4C,CAAC;IA4C5E,CAAC;IAzCS,aAAa;QAEnB,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,mBAAmB,CACjB,UAAU,EACV,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,CACL,CAAC;IACJ,CAAC;IAEM,GAAG,CACR,QAA6B,EAC7B,YAAiC;QAEjC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,QAA6B;QACzC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAGM,KAAK,CAAC,WAAW,CAAC,KAAoB;QAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAGD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAC7C,eAAe,OAAO,CAAC","sourcesContent":["import { isServer } from 'lit';\nimport { escapeKey, isKey } from '#internals/controllers/keys.js';\nimport { isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { toggleEventListener } from '#internals/utils/events.js';\nimport type IgcTooltipComponent from './tooltip.js';\n\ntype TooltipHideCallback = () => unknown;\n\nclass TooltipEscapeCallbacks {\n private _collection = new Map<IgcTooltipComponent, TooltipHideCallback>();\n\n /** Keeps the global `keydown` listener bound while any tooltip is shown. */\n private _syncListener(): void {\n /* c8 ignore next 3 */\n if (isServer) {\n return;\n }\n\n toggleEventListener(\n globalThis,\n !isEmpty(this._collection),\n 'keydown',\n this\n );\n }\n\n public add(\n instance: IgcTooltipComponent,\n hideCallback: TooltipHideCallback\n ): void {\n if (this._collection.has(instance)) {\n return;\n }\n\n this._collection.set(instance, hideCallback);\n this._syncListener();\n }\n\n public remove(instance: IgcTooltipComponent): void {\n if (this._collection.delete(instance)) {\n this._syncListener();\n }\n }\n\n /** @internal */\n public async handleEvent(event: KeyboardEvent): Promise<void> {\n if (!isKey(event, escapeKey)) {\n return;\n }\n\n // The last registered tooltip is the last one shown.\n await lastOf(Array.from(this._collection.values()))?.();\n }\n}\n\nconst service = new TooltipEscapeCallbacks();\nexport default service;\n"]}
@@ -1,6 +1,7 @@
1
1
  import { LitElement, type PropertyValues } from 'lit';
2
2
  import type { Constructor } from '#internals/mixins/constructor.js';
3
3
  import { type PopoverPlacement } from '../popover/popover.js';
4
+ import type { PopoverScrollStrategy } from '../types.js';
4
5
  export interface IgcTooltipComponentEventMap {
5
6
  igcOpening: CustomEvent<void>;
6
7
  igcOpened: CustomEvent<void>;
@@ -44,17 +45,17 @@ export default class IgcTooltipComponent extends IgcTooltipComponent_base {
44
45
  private _transitionId;
45
46
  private _animating;
46
47
  /**
47
- * The state the tooltip is heading to. A show commits `open` upfront so the
48
- * popover renders; a hide commits it only once its animation is done.
48
+ * The state the tooltip moves to. A show commits `open` first, so that the
49
+ * popover renders. A hide commits it after the animation ends.
49
50
  */
50
51
  private _requestedState;
51
52
  private readonly _popover;
52
53
  private readonly _arrowElement;
53
54
  private get _arrowOffset();
54
55
  /**
55
- * Whether the consumer projected anything into the default slot. Queried
56
- * without flattening, which would report the rendered `message` - the slot's
57
- * own fallback content - as if it came from the consumer.
56
+ * Whether the consumer put content into the default slot. The query does not
57
+ * flatten, because a flattened query reports the rendered `message`, which is
58
+ * the fallback content of the slot, as content of the consumer.
58
59
  */
59
60
  private get _hasProjectedContent();
60
61
  /**
@@ -86,6 +87,20 @@ export default class IgcTooltipComponent extends IgcTooltipComponent_base {
86
87
  * @default bottom
87
88
  */
88
89
  placement: PopoverPlacement;
90
+ /**
91
+ * Sets the behavior of the tooltip when the parent container scrolls.
92
+ *
93
+ * If the value is `hide`, the tooltip hides while the anchor is fully out
94
+ * of view. `hide` is the default value.
95
+ *
96
+ * If the value is `scroll`, the tooltip stays visible and anchored.
97
+ *
98
+ * If the value is `close`, the tooltip closes on each scroll. The tooltip
99
+ * also closes if you set the `sticky` property. The Escape key behaves the
100
+ * same way.
101
+ * @attr scroll-strategy
102
+ */
103
+ scrollStrategy: PopoverScrollStrategy;
89
104
  /**
90
105
  * An element instance or an IDREF to use as the anchor for the tooltip.
91
106
  *
@@ -147,17 +162,16 @@ export default class IgcTooltipComponent extends IgcTooltipComponent_base {
147
162
  protected willUpdate(changedProperties: PropertyValues<this>): void;
148
163
  private _emitEvent;
149
164
  /**
150
- * Invalidates the queued and/or running transition, resolving a delayed one
151
- * with `false`. The caller must settle the state it left behind.
152
- *
153
- * @returns Whether the aborted transition was mid-animation.
165
+ * Cancels the queued or running transition, and resolves a delayed one with
166
+ * `false`. The caller must settle the state that stays behind. Returns
167
+ * whether the cancelled transition was in its animation.
154
168
  */
155
169
  private _abortTransition;
156
170
  /** Lands the tooltip on `state` after its transition was aborted. */
157
171
  private _settleState;
158
172
  /**
159
- * Drops a queued or running transition and settles on `state`, by default
160
- * the state the tooltip is already committed to.
173
+ * Drops a queued or running transition and settles on `state`. The default is
174
+ * the state the tooltip is committed to.
161
175
  */
162
176
  private _cancelTransition;
163
177
  private _applyTooltipState;
@@ -189,8 +203,15 @@ export default class IgcTooltipComponent extends IgcTooltipComponent_base {
189
203
  protected _hideWithEvent(): Promise<boolean>;
190
204
  private _showOnInteraction;
191
205
  private _hideOnInteraction;
192
- /** Sticky mode close action - closes without waiting out `hideDelay`. */
193
- private _hideOnCloseClick;
206
+ /**
207
+ * Closes the tooltip and emits the events. Ignores `hideDelay`, and also
208
+ * `sticky`, which `_hideOnInteraction` obeys.
209
+ *
210
+ * @remarks
211
+ * The close button of a sticky tooltip calls this method, as does the `close`
212
+ * scroll strategy, which closes a sticky tooltip too.
213
+ */
214
+ private _hideImmediately;
194
215
  private _hideOnEscape;
195
216
  protected render(): import("lit-html").TemplateResult<1>;
196
217
  }
@@ -99,6 +99,7 @@ export default class IgcTooltipComponent extends EventEmitterMixin(LitElement) {
99
99
  this.withArrow = false;
100
100
  this.offset = 6;
101
101
  this.placement = 'bottom';
102
+ this.scrollStrategy = 'hide';
102
103
  this.showDelay = 200;
103
104
  this.hideDelay = 300;
104
105
  this.message = '';
@@ -236,7 +237,7 @@ export default class IgcTooltipComponent extends EventEmitterMixin(LitElement) {
236
237
  this._hideWithEvent();
237
238
  }
238
239
  }
239
- _hideOnCloseClick() {
240
+ _hideImmediately() {
240
241
  this._applyTooltipState({ show: false, withEvents: true });
241
242
  }
242
243
  async _hideOnEscape() {
@@ -256,16 +257,16 @@ export default class IgcTooltipComponent extends EventEmitterMixin(LitElement) {
256
257
  .offset=${this.offset}
257
258
  .anchor=${this._controller.anchor ?? undefined}
258
259
  .arrowOffset=${this._arrowOffset}
259
- .shiftPadding=${8}
260
+ .scrollStrategy=${this.scrollStrategy}
260
261
  ?open=${this.open}
261
262
  flip
262
- shift
263
+ @igcPopoverScrollClose=${this._hideImmediately}
263
264
  >
264
265
  <div ${ref(this._containerRef)} part=${partMap(parts)}>
265
266
  <slot>${this.message}</slot>
266
267
  ${this.sticky
267
268
  ? html `
268
- <slot name="close-button" @click=${this._hideOnCloseClick}>
269
+ <slot name="close-button" @click=${this._hideImmediately}>
269
270
  <button
270
271
  type="button"
271
272
  part="close-button"
@@ -304,6 +305,9 @@ __decorate([
304
305
  __decorate([
305
306
  property()
306
307
  ], IgcTooltipComponent.prototype, "placement", void 0);
308
+ __decorate([
309
+ property({ attribute: 'scroll-strategy' })
310
+ ], IgcTooltipComponent.prototype, "scrollStrategy", void 0);
307
311
  __decorate([
308
312
  property()
309
313
  ], IgcTooltipComponent.prototype, "anchor", void 0);