igniteui-webcomponents 7.3.0 → 7.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/CHANGELOG.md +64 -1
  2. package/README.md +30 -0
  3. package/components/avatar/avatar.d.ts +1 -2
  4. package/components/avatar/avatar.js +4 -8
  5. package/components/avatar/avatar.js.map +1 -1
  6. package/components/avatar/themes/avatar.base.css.js +1 -1
  7. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  8. package/components/badge/badge.d.ts +6 -1
  9. package/components/badge/badge.js +8 -5
  10. package/components/badge/badge.js.map +1 -1
  11. package/components/badge/themes/badge.base.css.js +1 -1
  12. package/components/badge/themes/badge.base.css.js.map +1 -1
  13. package/components/banner/themes/banner.base.css.js +1 -1
  14. package/components/banner/themes/banner.base.css.js.map +1 -1
  15. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  16. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  17. package/components/calendar/base.d.ts +7 -2
  18. package/components/calendar/base.js +8 -3
  19. package/components/calendar/base.js.map +1 -1
  20. package/components/calendar/calendar.d.ts +4 -0
  21. package/components/calendar/calendar.js +41 -14
  22. package/components/calendar/calendar.js.map +1 -1
  23. package/components/calendar/days-view/days-view.d.ts +3 -6
  24. package/components/calendar/days-view/days-view.js +7 -16
  25. package/components/calendar/days-view/days-view.js.map +1 -1
  26. package/components/calendar/helpers.d.ts +13 -0
  27. package/components/calendar/helpers.js +15 -0
  28. package/components/calendar/helpers.js.map +1 -1
  29. package/components/calendar/themes/calendar.base.css.js +1 -1
  30. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  31. package/components/calendar/themes/days-view.base.css.js +1 -1
  32. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  33. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  34. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  35. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  36. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  37. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
  38. package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
  39. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  40. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  41. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
  42. package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
  43. package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
  44. package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
  45. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  46. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  47. package/components/card/themes/container.base.css.js +1 -1
  48. package/components/card/themes/container.base.css.js.map +1 -1
  49. package/components/carousel/themes/carousel.base.css.js +1 -1
  50. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  51. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  52. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  53. package/components/chat/themes/chat.base.css.js +1 -1
  54. package/components/chat/themes/chat.base.css.js.map +1 -1
  55. package/components/chat/themes/message.base.css.js +1 -1
  56. package/components/chat/themes/message.base.css.js.map +1 -1
  57. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  58. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  59. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  60. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  61. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  62. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  63. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  64. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  65. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  66. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  67. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  68. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  69. package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
  70. package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
  71. package/components/checkbox/themes/switch.base.css.js +1 -1
  72. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  73. package/components/chip/chip.d.ts +30 -14
  74. package/components/chip/chip.js +54 -48
  75. package/components/chip/chip.js.map +1 -1
  76. package/components/chip/themes/chip.base.css.js +1 -1
  77. package/components/chip/themes/chip.base.css.js.map +1 -1
  78. package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
  79. package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
  80. package/components/chip/themes/dark/chip.fluent.css.js +1 -1
  81. package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
  82. package/components/chip/themes/dark/chip.indigo.css.js +1 -1
  83. package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
  84. package/components/chip/themes/dark/chip.material.css.js +1 -1
  85. package/components/chip/themes/dark/chip.material.css.js.map +1 -1
  86. package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
  87. package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
  88. package/components/chip/themes/light/chip.fluent.css.js +1 -1
  89. package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
  90. package/components/chip/themes/light/chip.indigo.css.js +1 -1
  91. package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
  92. package/components/chip/themes/light/chip.material.css.js +1 -1
  93. package/components/chip/themes/light/chip.material.css.js.map +1 -1
  94. package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
  95. package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
  96. package/components/chip/themes/shared/chip.common.css.js +1 -1
  97. package/components/chip/themes/shared/chip.common.css.js.map +1 -1
  98. package/components/chip/themes/shared/chip.fluent.css.js +1 -1
  99. package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
  100. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  101. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  102. package/components/color-picker/color-picker.d.ts +2 -2
  103. package/components/color-picker/color-picker.js.map +1 -1
  104. package/components/color-picker/picker-canvas.js +2 -1
  105. package/components/color-picker/picker-canvas.js.map +1 -1
  106. package/components/color-picker/themes/color-picker.base.css.js +1 -1
  107. package/components/color-picker/themes/color-picker.base.css.js.map +1 -1
  108. package/components/combo/themes/combo-item.base.css.js +1 -1
  109. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  110. package/components/combo/themes/combo.base.css.js +1 -1
  111. package/components/combo/themes/combo.base.css.js.map +1 -1
  112. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  113. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  114. package/components/date-picker/date-picker.base.d.ts +11 -2
  115. package/components/date-picker/date-picker.base.js +8 -3
  116. package/components/date-picker/date-picker.base.js.map +1 -1
  117. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  118. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  119. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  120. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  121. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  122. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  123. package/components/divider/themes/divider.base.css.js +1 -1
  124. package/components/divider/themes/divider.base.css.js.map +1 -1
  125. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  126. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  127. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  128. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  129. package/components/file-input/themes/file-input.base.css.js +1 -1
  130. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  131. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  132. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  133. package/components/input/themes/shared/input.indigo.css.js +1 -1
  134. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  135. package/components/input/themes/shared/input.material.css.js +1 -1
  136. package/components/input/themes/shared/input.material.css.js.map +1 -1
  137. package/components/list/themes/item.base.css.js +1 -1
  138. package/components/list/themes/item.base.css.js.map +1 -1
  139. package/components/nav-drawer/themes/item.base.css.js +1 -1
  140. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  141. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  142. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  143. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +3 -0
  144. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -0
  145. package/components/progress/themes/linear/themes.js +3 -2
  146. package/components/progress/themes/linear/themes.js.map +1 -1
  147. package/components/qr-code/qr-code.d.ts +28 -1
  148. package/components/qr-code/qr-code.js +56 -13
  149. package/components/qr-code/qr-code.js.map +1 -1
  150. package/components/qr-code/renderer/export.d.ts +28 -0
  151. package/components/qr-code/renderer/export.js +120 -0
  152. package/components/qr-code/renderer/export.js.map +1 -0
  153. package/components/qr-code/types.d.ts +26 -0
  154. package/components/qr-code/types.js.map +1 -1
  155. package/components/radio/themes/radio.base.css.js +1 -1
  156. package/components/radio/themes/radio.base.css.js.map +1 -1
  157. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  158. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  159. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  160. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  161. package/components/resize-container/themes/resize-container.base.css.js +1 -1
  162. package/components/resize-container/themes/resize-container.base.css.js.map +1 -1
  163. package/components/select/themes/select.base.css.js +1 -1
  164. package/components/select/themes/select.base.css.js.map +1 -1
  165. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  166. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  167. package/components/slider/themes/shared/slider.material.css.js +1 -1
  168. package/components/slider/themes/shared/slider.material.css.js.map +1 -1
  169. package/components/slider/themes/slider.base.css.js +1 -1
  170. package/components/slider/themes/slider.base.css.js.map +1 -1
  171. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  172. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  173. package/components/splitter/themes/splitter.base.css.js +1 -1
  174. package/components/splitter/themes/splitter.base.css.js.map +1 -1
  175. package/components/stepper/themes/step/step.base.css.js +1 -1
  176. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  177. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  178. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  179. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  180. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  181. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  182. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  183. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  184. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  185. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js +1 -1
  186. package/components/tabs/themes/shared/tabs/tabs.fluent.css.js.map +1 -1
  187. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
  188. package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
  189. package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
  190. package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
  191. package/components/tabs/themes/tab.base.css.js +1 -1
  192. package/components/tabs/themes/tab.base.css.js.map +1 -1
  193. package/components/textarea/textarea.d.ts +2 -15
  194. package/components/textarea/textarea.js +48 -93
  195. package/components/textarea/textarea.js.map +1 -1
  196. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  197. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  198. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  199. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  200. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  201. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  202. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  203. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  204. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  205. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  206. package/components/tile-manager/position.d.ts +2 -9
  207. package/components/tile-manager/position.js +27 -42
  208. package/components/tile-manager/position.js.map +1 -1
  209. package/components/tile-manager/resize-state.d.ts +11 -22
  210. package/components/tile-manager/resize-state.js +60 -119
  211. package/components/tile-manager/resize-state.js.map +1 -1
  212. package/components/tile-manager/resize-util.d.ts +3 -7
  213. package/components/tile-manager/resize-util.js +65 -72
  214. package/components/tile-manager/resize-util.js.map +1 -1
  215. package/components/tile-manager/serializer.d.ts +1 -1
  216. package/components/tile-manager/serializer.js +9 -10
  217. package/components/tile-manager/serializer.js.map +1 -1
  218. package/components/tile-manager/themes/shared/tile/tile.common.css.js +1 -1
  219. package/components/tile-manager/themes/shared/tile/tile.common.css.js.map +1 -1
  220. package/components/tile-manager/themes/tile.base.css.js +1 -1
  221. package/components/tile-manager/themes/tile.base.css.js.map +1 -1
  222. package/components/tile-manager/tile-ghost-util.js +16 -20
  223. package/components/tile-manager/tile-ghost-util.js.map +1 -1
  224. package/components/tile-manager/tile-manager.d.ts +5 -2
  225. package/components/tile-manager/tile-manager.js +27 -23
  226. package/components/tile-manager/tile-manager.js.map +1 -1
  227. package/components/tile-manager/tile.d.ts +32 -18
  228. package/components/tile-manager/tile.js +181 -161
  229. package/components/tile-manager/tile.js.map +1 -1
  230. package/components/tile-manager/types.d.ts +1 -5
  231. package/components/tile-manager/types.js.map +1 -1
  232. package/components/toast/themes/toast.base.css.js +1 -1
  233. package/components/toast/themes/toast.base.css.js.map +1 -1
  234. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  235. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  236. package/components/tree/themes/item.base.css.js +1 -1
  237. package/components/tree/themes/item.base.css.js.map +1 -1
  238. package/components/validation-container/themes/validator.base.css.js +1 -1
  239. package/components/validation-container/themes/validator.base.css.js.map +1 -1
  240. package/components/validation-container/validation-container.d.ts +10 -12
  241. package/components/validation-container/validation-container.js +14 -17
  242. package/components/validation-container/validation-container.js.map +1 -1
  243. package/custom-elements.json +1061 -946
  244. package/igniteui-webcomponents.css-data.json +1 -1
  245. package/igniteui-webcomponents.html-data.json +1 -1
  246. package/index.d.ts +2 -1
  247. package/index.js.map +1 -1
  248. package/internals/definitions/defineAllComponents.js +4 -0
  249. package/internals/definitions/defineAllComponents.js.map +1 -1
  250. package/internals/directives/drag.d.ts +144 -0
  251. package/internals/directives/drag.js +278 -0
  252. package/internals/directives/drag.js.map +1 -0
  253. package/internals/directives/resize.d.ts +109 -0
  254. package/internals/directives/resize.js +214 -0
  255. package/internals/directives/resize.js.map +1 -0
  256. package/internals/templates/input-shell.d.ts +12 -1
  257. package/internals/templates/input-shell.js +17 -10
  258. package/internals/templates/input-shell.js.map +1 -1
  259. package/internals/utils/dom.d.ts +2 -0
  260. package/internals/utils/dom.js +3 -0
  261. package/internals/utils/dom.js.map +1 -1
  262. package/internals/utils/events.d.ts +2 -0
  263. package/internals/utils/events.js +3 -0
  264. package/internals/utils/events.js.map +1 -1
  265. package/package.json +1 -1
  266. package/skills/README.md +1 -0
  267. package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +21 -0
  268. package/skills/igniteui-wc-integrate-with-framework/SKILL.md +4 -3
  269. package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +14 -0
  270. package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +12 -2
  271. package/web-types.json +2 -2
  272. package/components/resize-container/default-ghost.d.ts +0 -5
  273. package/components/resize-container/default-ghost.js +0 -20
  274. package/components/resize-container/default-ghost.js.map +0 -1
  275. package/components/resize-container/resize-container.d.ts +0 -60
  276. package/components/resize-container/resize-container.js +0 -156
  277. package/components/resize-container/resize-container.js.map +0 -1
  278. package/components/resize-container/resize-controller.d.ts +0 -46
  279. package/components/resize-container/resize-controller.js +0 -195
  280. package/components/resize-container/resize-controller.js.map +0 -1
  281. package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js +0 -3
  282. package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js.map +0 -1
  283. package/components/resize-container/themes/dark/resize-indicator.fluent.css.d.ts +0 -1
  284. package/components/resize-container/themes/dark/resize-indicator.fluent.css.js +0 -3
  285. package/components/resize-container/themes/dark/resize-indicator.fluent.css.js.map +0 -1
  286. package/components/resize-container/themes/dark/resize-indicator.indigo.css.d.ts +0 -1
  287. package/components/resize-container/themes/dark/resize-indicator.indigo.css.js +0 -3
  288. package/components/resize-container/themes/dark/resize-indicator.indigo.css.js.map +0 -1
  289. package/components/resize-container/themes/dark/resize-indicator.material.css.d.ts +0 -1
  290. package/components/resize-container/themes/dark/resize-indicator.material.css.js +0 -3
  291. package/components/resize-container/themes/dark/resize-indicator.material.css.js.map +0 -1
  292. package/components/resize-container/themes/dark/resize-indicator.shared.css.d.ts +0 -1
  293. package/components/resize-container/themes/dark/resize-indicator.shared.css.js +0 -3
  294. package/components/resize-container/themes/dark/resize-indicator.shared.css.js.map +0 -1
  295. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.d.ts +0 -1
  296. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js +0 -3
  297. package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js.map +0 -1
  298. package/components/resize-container/themes/light/resize-indicator.fluent.css.d.ts +0 -1
  299. package/components/resize-container/themes/light/resize-indicator.fluent.css.js +0 -3
  300. package/components/resize-container/themes/light/resize-indicator.fluent.css.js.map +0 -1
  301. package/components/resize-container/themes/light/resize-indicator.indigo.css.d.ts +0 -1
  302. package/components/resize-container/themes/light/resize-indicator.indigo.css.js +0 -3
  303. package/components/resize-container/themes/light/resize-indicator.indigo.css.js.map +0 -1
  304. package/components/resize-container/themes/light/resize-indicator.material.css.d.ts +0 -1
  305. package/components/resize-container/themes/light/resize-indicator.material.css.js +0 -3
  306. package/components/resize-container/themes/light/resize-indicator.material.css.js.map +0 -1
  307. package/components/resize-container/themes/light/resize-indicator.shared.css.d.ts +0 -1
  308. package/components/resize-container/themes/light/resize-indicator.shared.css.js +0 -3
  309. package/components/resize-container/themes/light/resize-indicator.shared.css.js.map +0 -1
  310. package/components/resize-container/themes/shared/resize-container.common.css.d.ts +0 -1
  311. package/components/resize-container/themes/shared/resize-container.common.css.js +0 -3
  312. package/components/resize-container/themes/shared/resize-container.common.css.js.map +0 -1
  313. package/components/resize-container/themes/themes.d.ts +0 -2
  314. package/components/resize-container/themes/themes.js +0 -47
  315. package/components/resize-container/themes/themes.js.map +0 -1
  316. package/components/resize-container/types.d.ts +0 -40
  317. package/components/resize-container/types.js +0 -2
  318. package/components/resize-container/types.js.map +0 -1
  319. package/internals/controllers/drag.d.ts +0 -166
  320. package/internals/controllers/drag.js +0 -283
  321. package/internals/controllers/drag.js.map +0 -1
  322. /package/components/{resize-container/themes/dark/resize-indicator.bootstrap.css.d.ts → progress/themes/linear/shared/linear.progress.bootstrap.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 {\n addDragController,\n type DragCallbackParameters,\n} from '#internals/controllers/drag.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 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 { 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 IgcResizeContainerComponent from '../resize-container/resize-container.js';\nimport type { ResizeCallbackParams } from '../resize-container/types.js';\nimport type { 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 trigger-side - The part for the side adorner of the encapsulated resize element in the tile.\n * @csspart trigger - The part for the corner adorner of the encapsulated resize element in the tile.\n * @csspart trigger-bottom - The part for the bottom adorner of the encapsulated resize element in 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 IgcResizeContainerComponent\n );\n }\n\n private readonly _slots = addSlotController(this, { slots: Slots });\n\n private readonly _dragController = addDragController(this, {\n skip: this._skipDrag,\n matchTarget: this._match,\n ghost: this._createDragGhost,\n start: this._handleDragStart,\n over: this._handleDragOver,\n end: this._handleDragEnd,\n cancel: this._handleDragCancel,\n });\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 span properties - a value below 1 is coerced to 1. */\n private static _spanVariable(\n name: string\n ): CoercedPropertyConfig<number, IgcTileComponent> {\n return {\n transform: ({ value }) => Math.max(1, asNumber(value)),\n onChange: ({ value, host }) => {\n host.style.setProperty(name, value.toString());\n },\n };\n }\n\n /** Shared config for the start properties - a non-positive value removes the explicit placement. */\n private static _startVariable(\n name: string\n ): CoercedPropertyConfig<number | null, IgcTileComponent> {\n return {\n transform: ({ value }) => Math.max(0, asNumber(value)) || null,\n onChange: ({ value, host }) => {\n host.style.setProperty(name, value ? value.toString() : null);\n },\n };\n }\n\n // Tile manager context properties and helpers\n\n /**\n * Context consumer callback that sets the updated configuration of the internal drag controller\n * based on the passed tile manager properties.\n */\n private _setDragConfiguration = ({\n instance: { dragMode },\n }: TileManagerContext) => {\n this._dragController.set({\n enabled: dragMode !== 'none',\n trigger:\n dragMode === 'tile-header' ? () => this._headerRef.value! : undefined,\n });\n };\n\n private readonly _context = createAsyncContext(\n this,\n tileManagerContext,\n this._setDragConfiguration\n );\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 protected readonly _headerRef = createRef<HTMLElement>();\n\n @query(IgcResizeContainerComponent.tagName)\n protected readonly _resizeContainer?: IgcResizeContainerComponent;\n\n @query('[part~=\"base\"]', true)\n public _tileContent!: HTMLElement;\n\n @state()\n private _isDragging = false;\n\n @state()\n private _isResizing = false;\n\n /** Whether to render the resize container 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._emitTileDragStart()) {\n return false;\n }\n\n this._setDragState();\n this._dragStack.push(this);\n return true;\n }\n\n private _handleDragOver({ event, state }: DragCallbackParameters): void {\n const match = state.element as IgcTileComponent;\n\n if (this._dragStack.peek() === match) {\n if (this._shouldSwap(event, state, 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._dragController.dispose();\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 state: DragCallbackParameters['state'],\n match: IgcTileComponent\n ): boolean {\n const LTR = isLTR(this);\n const direction = state.pointerState.direction;\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: CustomEvent<ResizeCallbackParams>) {\n if (!this._emitTileResizeStart()) {\n event.preventDefault();\n return;\n }\n\n this._resizeState.updateState(\n event.detail.state.initial,\n this,\n this._cssContainer!\n );\n this._setResizeState();\n }\n\n private _handleResize({\n detail: { state },\n }: CustomEvent<ResizeCallbackParams>) {\n const trigger = state.trigger!;\n\n const isWidthResize = trigger.matches('[part*=\"side\"], [part=\"trigger\"]');\n const isHeightResize = trigger.matches(\n '[part*=\"bottom\"], [part=\"trigger\"]'\n );\n\n if (isWidthResize) {\n state.current.width = this._resizeState.calculateSnappedWidth(state);\n }\n\n if (isHeightResize) {\n state.current.height = this._resizeState.calculateSnappedHeight(state);\n }\n }\n\n private _handleResizeEnd({\n detail: { state },\n }: CustomEvent<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 _emitTileDragStart() {\n return this.emitEvent('igcTileDragStart', {\n detail: this,\n cancelable: true,\n });\n }\n\n private _emitTileResizeStart() {\n return this.emitEvent('igcTileResizeStart', {\n detail: this,\n cancelable: true,\n });\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 ${\n hasMaximizeSlot\n ? html`\n <slot name=\"maximize-action\">\n ${this._renderDefaultAction('maximize')}\n </slot>\n `\n : nothing\n }\n ${\n hasFullscreenSlot\n ? html`\n <slot name=\"fullscreen-action\">\n ${this._renderDefaultAction('fullscreen')}\n </slot>\n `\n : nothing\n }\n\n <slot name=\"actions\"></slot>\n </section>\n </section>\n <igc-divider></igc-divider>\n `;\n }\n\n protected _renderContent() {\n const parts = {\n base: true,\n draggable: this._tileManager?.dragMode !== 'none',\n fullscreen: this.fullscreen,\n dragging: this._isDragging,\n resizable:\n !this.disableResize && this._tileManager?.resizeMode !== 'none',\n resizing: this._isResizing,\n maximized: this.maximized,\n };\n\n return html`\n <div part=${partMap(parts)}>\n ${this._renderHeader()}\n <div part=\"content-container\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _renderAdornerSlot(name: AdornerType) {\n return html`<slot name=\"${name}-adorner\" slot=\"${name}-adorner\"></slot>`;\n }\n\n protected override render() {\n const isActive = this._resizeMode === 'always';\n\n return this._resizeDisabled\n ? this._renderContent()\n : html`\n <igc-resize\n part=${partMap({\n resize: true,\n 'side-adorner': this._slots.hasAssignedElements('side-adorner'),\n 'corner-adorner':\n this._slots.hasAssignedElements('corner-adorner'),\n 'bottom-adorner':\n this._slots.hasAssignedElements('bottom-adorner'),\n })}\n exportparts=\"trigger-side, trigger, trigger-bottom\"\n mode=\"deferred\"\n ?active=${isActive}\n .ghostFactory=${this._createResizeGhost}\n @igcResizeStart=${this._handleResizeStart}\n @igcResize=${this._handleResize}\n @igcResizeEnd=${this._handleResizeEnd}\n @igcResizeCancel=${this._handleResizeCancel}\n >\n ${this._renderContent()} ${this._renderAdornerSlot('side')}\n ${this._renderAdornerSlot('corner')}\n ${this._renderAdornerSlot('bottom')}\n </igc-resize>\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 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,9 +1,4 @@
1
- export type TileResizeDimensions = {
2
- width: number | null;
3
- height: number | null;
4
- };
5
1
  export type TileGridDimension = {
6
- count: number;
7
2
  entries: number[];
8
3
  minSize: number;
9
4
  };
@@ -26,6 +21,7 @@ export type ResizeProps = {
26
21
  gridEntries: number[];
27
22
  startIndex: number;
28
23
  prevSnapped: number;
24
+ gap: number;
29
25
  };
30
26
  export type ResizeSpanProps = {
31
27
  targetSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/tile-manager/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TileResizeDimensions = {\n width: number | null;\n height: number | null;\n};\n\nexport type TileGridDimension = {\n count: number;\n entries: number[];\n minSize: number;\n};\n\nexport type SnappedDimension = { snappedSize: number; newDelta: number };\n\nexport type TilePosition = { start: number; span: number };\n\nexport type TileGridPosition = { column: TilePosition; row: TilePosition };\n\nexport type ResizeProps = {\n currentDelta: number;\n prevDelta: number;\n currentSize: number;\n gridEntries: number[];\n startIndex: number;\n prevSnapped: number;\n};\n\nexport type ResizeSpanProps = {\n targetSize: number;\n tilePosition: TilePosition;\n tileGridDimension: TileGridDimension;\n gap: number;\n isRow: boolean;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/tile-manager/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TileGridDimension = {\n entries: number[];\n minSize: number;\n};\n\nexport type SnappedDimension = { snappedSize: number; newDelta: number };\n\nexport type TilePosition = { start: number; span: number };\n\nexport type TileGridPosition = { column: TilePosition; row: TilePosition };\n\nexport type ResizeProps = {\n currentDelta: number;\n prevDelta: number;\n currentSize: number;\n gridEntries: number[];\n startIndex: number;\n prevSnapped: number;\n gap: number;\n};\n\nexport type ResizeSpanProps = {\n targetSize: number;\n tilePosition: TilePosition;\n tileGridDimension: TileGridDimension;\n gap: number;\n isRow: boolean;\n};\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--margin-block: 2.625rem;font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);position:absolute;display:flex;align-items:center;font-family:var(--ig-font-family);text-align:center;margin-block:var(--margin-block);border:none;background:none;position-area:center;min-width:3.25rem}:host::after{content:"";position:absolute;width:100%;height:100%;border-radius:inherit;inset-inline:0}:host([position=top]){align-self:start}:host([position=middle]){align-self:anchor-center}:host([position=bottom]){align-self:end}:host(:not([open])){display:none}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--margin-block: 2.625rem;font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);position:absolute;display:flex;align-items:center;font-family:var(--ig-font-family);text-align:center;margin-block:var(--margin-block);border:none;background:none;position-area:center;min-width:3.25rem}:host::after{content:"";position:absolute;width:100%;height:100%;border-radius:inherit;inset-inline:0}:host([position=top]){align-self:start}:host([position=middle]){align-self:anchor-center}:host([position=bottom]){align-self:end}:host(:not([open])){display:none}@media(forced-colors: active){:host{border:.0625rem solid CanvasText}}`;
3
3
  //# sourceMappingURL=toast.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.base.css.js","sourceRoot":"","sources":["../../../../src/components/toast/themes/toast.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,20DAA20D,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--margin-block: 2.625rem;font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);position:absolute;display:flex;align-items:center;font-family:var(--ig-font-family);text-align:center;margin-block:var(--margin-block);border:none;background:none;position-area:center;min-width:3.25rem}:host::after{content:\"\";position:absolute;width:100%;height:100%;border-radius:inherit;inset-inline:0}:host([position=top]){align-self:start}:host([position=middle]){align-self:anchor-center}:host([position=bottom]){align-self:end}:host(:not([open])){display:none}`;\n "]}
1
+ {"version":3,"file":"toast.base.css.js","sourceRoot":"","sources":["../../../../src/components/toast/themes/toast.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,i5DAAi5D,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{--margin-block: 2.625rem;font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);position:absolute;display:flex;align-items:center;font-family:var(--ig-font-family);text-align:center;margin-block:var(--margin-block);border:none;background:none;position-area:center;min-width:3.25rem}:host::after{content:\"\";position:absolute;width:100%;height:100%;border-radius:inherit;inset-inline:0}:host([position=top]){align-self:start}:host([position=middle]){align-self:anchor-center}:host([position=bottom]){align-self:end}:host(:not([open])){display:none}@media(forced-colors: active){:host{border:.0625rem solid CanvasText}}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:fixed;display:flex;align-items:center;text-align:center}[part~=base]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);padding:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing)))) max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));font-size:.625rem;font-weight:600;line-height:1rem;text-align:start;display:flex;align-items:flex-start;gap:.5rem;position:relative}[part~=simple-text]{max-width:200px}#arrow{position:absolute;width:0;height:0}igc-popover::part(container){background-color:rgba(0,0,0,0)}slot[name=close-button] button{display:flex;align-items:center;padding:0;border:none;background:none;color:inherit;cursor:pointer}slot[name=close-button] igc-icon{--component-size: 1}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:fixed;display:flex;align-items:center;text-align:center}[part~=base]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);padding:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing)))) max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));font-size:.625rem;font-weight:600;line-height:1rem;text-align:start;display:flex;align-items:flex-start;gap:.5rem;position:relative}[part~=simple-text]{max-width:200px}#arrow{position:absolute;width:0;height:0}igc-popover::part(container){background-color:rgba(0,0,0,0)}slot[name=close-button] button{display:flex;align-items:center;padding:0;border:none;background:none;color:inherit;cursor:pointer}slot[name=close-button] igc-icon{--component-size: 1}@media(forced-colors: active){:host [part~=base]{border:.0625rem solid CanvasText}}`;
3
3
  //# sourceMappingURL=tooltip.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.base.css.js","sourceRoot":"","sources":["../../../../src/components/tooltip/themes/tooltip.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,ylFAAylF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:fixed;display:flex;align-items:center;text-align:center}[part~=base]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);padding:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing)))) max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));font-size:.625rem;font-weight:600;line-height:1rem;text-align:start;display:flex;align-items:flex-start;gap:.5rem;position:relative}[part~=simple-text]{max-width:200px}#arrow{position:absolute;width:0;height:0}igc-popover::part(container){background-color:rgba(0,0,0,0)}slot[name=close-button] button{display:flex;align-items:center;padding:0;border:none;background:none;color:inherit;cursor:pointer}slot[name=close-button] igc-icon{--component-size: 1}`;\n "]}
1
+ {"version":3,"file":"tooltip.base.css.js","sourceRoot":"","sources":["../../../../src/components/tooltip/themes/tooltip.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,4qFAA4qF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:fixed;display:flex;align-items:center;text-align:center}[part~=base]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);padding:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-large, var(--ig-spacing-block, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-medium, var(--ig-spacing-block, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-block-small, var(--ig-spacing-block, var(--ig-spacing)))) max(var(--is-large, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.5rem, -1 * 0.5rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));font-size:.625rem;font-weight:600;line-height:1rem;text-align:start;display:flex;align-items:flex-start;gap:.5rem;position:relative}[part~=simple-text]{max-width:200px}#arrow{position:absolute;width:0;height:0}igc-popover::part(container){background-color:rgba(0,0,0,0)}slot[name=close-button] button{display:flex;align-items:center;padding:0;border:none;background:none;color:inherit;cursor:pointer}slot[name=close-button] igc-icon{--component-size: 1}@media(forced-colors: active){:host [part~=base]{border:.0625rem solid CanvasText}}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--igc-tree-indentation-size: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:flex;flex-direction:column;font-family:inherit;contain:layout}:host igc-circular-progress{--diameter: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1.25rem, -1 * 1.25rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem))}:host(:focus-within){outline:none}[role~=group]{overflow:hidden;contain:layout}:host(:not([expanded])) [role~=group]{height:0}:host([expanded]) [role~=group]{height:auto}[part~=wrapper]{display:flex;align-items:center;position:relative;padding:0 max(var(--is-large, 1)*max(24px, -1 * 24px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));cursor:pointer;background:inherit;color:inherit}[part~=wrapper]::after{content:"";position:absolute;background:rgba(0,0,0,0);top:0;left:0;width:100%;height:100%;z-index:0}[part~=indicator]{--ig-size: 3;display:flex;align-items:center;z-index:1;justify-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-inline-end:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));min-width:1.5rem}:host(:dir(rtl)) [part~=indicator]{transform:scaleX(-1)}[part~=label]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:block;margin:0}[part~=label] ::slotted(*){margin-block:auto}[part~=label],[part~=text]{z-index:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[part~=select]{display:flex;align-items:center;z-index:1}[part~=select] igc-checkbox::part(label){display:none}:host([disabled]) [part~=wrapper]{pointer-events:none}`;
2
+ export const styles = css `:host{--igc-tree-indentation-size: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:flex;flex-direction:column;font-family:inherit;contain:layout}:host igc-circular-progress{--diameter: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1.25rem, -1 * 1.25rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem))}:host(:focus-within){outline:none}[role~=group]{overflow:hidden;contain:layout}:host(:not([expanded])) [role~=group]{height:0}:host([expanded]) [role~=group]{height:auto}[part~=wrapper]{display:flex;align-items:center;position:relative;padding:0 max(var(--is-large, 1)*max(24px, -1 * 24px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));cursor:pointer;background:inherit;color:inherit}[part~=wrapper]::after{content:"";position:absolute;background:rgba(0,0,0,0);top:0;left:0;width:100%;height:100%;z-index:0}[part~=indicator]{--ig-size: 3;display:flex;align-items:center;z-index:1;justify-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-inline-end:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));min-width:1.5rem}:host(:dir(rtl)) [part~=indicator]{transform:scaleX(-1)}[part~=label]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:block;margin:0}[part~=label] ::slotted(*){margin-block:auto}[part~=label],[part~=text]{z-index:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[part~=select]{display:flex;align-items:center;z-index:1}[part~=select] igc-checkbox::part(label){display:none}:host([disabled]) [part~=wrapper]{pointer-events:none}@media(forced-colors: active){:host [part~=wrapper]::after{outline-offset:-0.0625rem}:host [part~=wrapper][part~=active]::after{outline:.0625rem solid CanvasText}:host [part~=wrapper][part~=focused]::after{outline:.0625rem solid Highlight}}`;
3
3
  //# sourceMappingURL=item.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item.base.css.js","sourceRoot":"","sources":["../../../../src/components/tree/themes/item.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,oiFAAoiF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--igc-tree-indentation-size: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:flex;flex-direction:column;font-family:inherit;contain:layout}:host igc-circular-progress{--diameter: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1.25rem, -1 * 1.25rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem))}:host(:focus-within){outline:none}[role~=group]{overflow:hidden;contain:layout}:host(:not([expanded])) [role~=group]{height:0}:host([expanded]) [role~=group]{height:auto}[part~=wrapper]{display:flex;align-items:center;position:relative;padding:0 max(var(--is-large, 1)*max(24px, -1 * 24px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));cursor:pointer;background:inherit;color:inherit}[part~=wrapper]::after{content:\"\";position:absolute;background:rgba(0,0,0,0);top:0;left:0;width:100%;height:100%;z-index:0}[part~=indicator]{--ig-size: 3;display:flex;align-items:center;z-index:1;justify-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-inline-end:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));min-width:1.5rem}:host(:dir(rtl)) [part~=indicator]{transform:scaleX(-1)}[part~=label]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:block;margin:0}[part~=label] ::slotted(*){margin-block:auto}[part~=label],[part~=text]{z-index:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[part~=select]{display:flex;align-items:center;z-index:1}[part~=select] igc-checkbox::part(label){display:none}:host([disabled]) [part~=wrapper]{pointer-events:none}`;\n "]}
1
+ {"version":3,"file":"item.base.css.js","sourceRoot":"","sources":["../../../../src/components/tree/themes/item.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,oxFAAoxF,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--igc-tree-indentation-size: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1rem, -1 * 1rem), var(--is-small, 1) * max(0.75rem, -1 * 0.75rem));display:flex;flex-direction:column;font-family:inherit;contain:layout}:host igc-circular-progress{--diameter: max(var(--is-large, 1) * max(1.5rem, -1 * 1.5rem), var(--is-medium, 1) * max(1.25rem, -1 * 1.25rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem))}:host(:focus-within){outline:none}[role~=group]{overflow:hidden;contain:layout}:host(:not([expanded])) [role~=group]{height:0}:host([expanded]) [role~=group]{height:auto}[part~=wrapper]{display:flex;align-items:center;position:relative;padding:0 max(var(--is-large, 1)*max(24px, -1 * 24px)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(16px, -1 * 16px)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(12px, -1 * 12px)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));cursor:pointer;background:inherit;color:inherit}[part~=wrapper]::after{content:\"\";position:absolute;background:rgba(0,0,0,0);top:0;left:0;width:100%;height:100%;z-index:0}[part~=indicator]{--ig-size: 3;display:flex;align-items:center;z-index:1;justify-content:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-inline-end:max(var(--is-large, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-large, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-medium, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-medium, var(--ig-spacing-inline, var(--ig-spacing))),var(--is-small, 1)*max(0.25rem, -1 * 0.25rem)*var(--ig-spacing-inline-small, var(--ig-spacing-inline, var(--ig-spacing))));min-width:1.5rem}:host(:dir(rtl)) [part~=indicator]{transform:scaleX(-1)}[part~=label]{font-family:var(--ig-body-2-font-family, var(--ig-font-family));font-size:var(--ig-body-2-font-size);font-weight:var(--ig-body-2-font-weight);font-style:var(--ig-body-2-font-style);line-height:var(--ig-body-2-line-height);letter-spacing:var(--ig-body-2-letter-spacing);text-transform:var(--ig-body-2-text-transform);margin-top:var(--ig-body-2-margin-top);margin-bottom:var(--ig-body-2-margin-bottom);display:block;margin:0}[part~=label] ::slotted(*){margin-block:auto}[part~=label],[part~=text]{z-index:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}[part~=select]{display:flex;align-items:center;z-index:1}[part~=select] igc-checkbox::part(label){display:none}:host([disabled]) [part~=wrapper]{pointer-events:none}@media(forced-colors: active){:host [part~=wrapper]::after{outline-offset:-0.0625rem}:host [part~=wrapper][part~=active]::after{outline:.0625rem solid CanvasText}:host [part~=wrapper][part~=focused]::after{outline:.0625rem solid Highlight}}`;\n "]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--ig-size: 1;display:block;grid-row:2;grid-column:1/-1}:host ::slotted(*){margin-block:0}[part~=helper-text]{display:grid;row-gap:.5rem;align-items:center}[part~=validation-icon]{align-self:flex-start}[part~=validation-message]{display:flex;align-items:center}[part~=empty]{display:none !important}`;
2
+ export const styles = css `:host{--ig-size: 1;display:block;grid-row:2;grid-column:1/-1}:host ::slotted(*){margin-block:0}[part~=helper-text]{display:grid;row-gap:.5rem;align-items:center}[part~=validation-icon]{align-self:flex-start}[part~=validation-message]{display:flex;align-items:center}[part~=empty]{display:none !important}@media(forced-colors: active){:host [part~=validation-message]{color:GrayText}:host igc-icon{color:GrayText !important}}`;
3
3
  //# sourceMappingURL=validator.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.base.css.js","sourceRoot":"","sources":["../../../../src/components/validation-container/themes/validator.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,kTAAkT,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--ig-size: 1;display:block;grid-row:2;grid-column:1/-1}:host ::slotted(*){margin-block:0}[part~=helper-text]{display:grid;row-gap:.5rem;align-items:center}[part~=validation-icon]{align-self:flex-start}[part~=validation-message]{display:flex;align-items:center}[part~=empty]{display:none !important}`;\n "]}
1
+ {"version":3,"file":"validator.base.css.js","sourceRoot":"","sources":["../../../../src/components/validation-container/themes/validator.base.css.ts"],"names":[],"mappings":"AACE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,0aAA0a,CAAC","sourcesContent":["\n import { css } from 'lit';\n export const styles = css`:host{--ig-size: 1;display:block;grid-row:2;grid-column:1/-1}:host ::slotted(*){margin-block:0}[part~=helper-text]{display:grid;row-gap:.5rem;align-items:center}[part~=validation-icon]{align-self:flex-start}[part~=validation-message]{display:flex;align-items:center}[part~=empty]{display:none !important}@media(forced-colors: active){:host [part~=validation-message]{color:GrayText}:host igc-icon{color:GrayText !important}}`;\n "]}
@@ -1,4 +1,4 @@
1
- import { LitElement, nothing, type TemplateResult } from 'lit';
1
+ import { LitElement, type TemplateResult } from 'lit';
2
2
  import { type IgcFormControl } from '#internals/mixins/forms/types.js';
3
3
  /** Configuration for the validation container. */
4
4
  export interface ValidationContainerConfig {
@@ -39,13 +39,10 @@ export default class IgcValidationContainerComponent extends LitElement {
39
39
  */
40
40
  invalid: boolean;
41
41
  /**
42
- * The form control whose validity state is being rendered. The target's `invalid`
43
- * property is reflected to the container, and its validity state is used to
44
- * determine which validation message slots to render.
42
+ * The form control whose validity state is rendered.
45
43
  *
46
- * @remarks The target must be set for the container to function, and should be
47
- * set before the first update cycle for SSR compatibility. When using the
48
- * `create` method, the target is set automatically.
44
+ * @remarks Must be set before the first update for SSR compatibility;
45
+ * `create` sets it automatically.
49
46
  */
50
47
  set target(value: IgcFormControl);
51
48
  get target(): IgcFormControl;
@@ -54,14 +51,15 @@ export default class IgcValidationContainerComponent extends LitElement {
54
51
  /** @internal */
55
52
  handleEvent(event: Event): void;
56
53
  /**
57
- * Collects the projection state of the container slots in a single DOM pass.
54
+ * Collects which slots have assigned content.
58
55
  *
59
- * @returns Whether every slot is empty and the set of non-empty validation
60
- * slot names (i.e. excluding `helper-text`).
56
+ * @remarks Reads the shadow DOM from the previous commit. On the render where
57
+ * `invalid` flips on, the message slots do not exist yet, so every message is
58
+ * `empty`; their `slotchange` schedules a second render before paint.
61
59
  */
62
60
  private _collectProjectedSlots;
63
- protected _renderValidationMessage(slotName: string, projectedSlots: ReadonlySet<string>): TemplateResult;
64
- protected _renderHelper(hasValidationProjection: boolean): TemplateResult | typeof nothing;
61
+ private _renderValidationMessage;
62
+ private _renderHelper;
65
63
  protected firstUpdated(): void;
66
64
  protected render(): TemplateResult;
67
65
  }
@@ -18,9 +18,7 @@ import IgcIconComponent from '../icon/icon.js';
18
18
  import { all as inputThemes } from '../input/themes/themes.js';
19
19
  import { styles as shared } from './themes/shared/validator.common.css.js';
20
20
  import { styles } from './themes/validator.base.css.js';
21
- const ALL_SLOTS_SELECTOR = 'slot';
22
- const QUERY_CONFIG = { flatten: true };
23
- const VALIDITY_KEYS = [
21
+ const VALIDITY_SLOTS = [
24
22
  'badInput',
25
23
  'customError',
26
24
  'patternMismatch',
@@ -31,14 +29,14 @@ const VALIDITY_KEYS = [
31
29
  'tooShort',
32
30
  'typeMismatch',
33
31
  'valueMissing',
34
- ];
32
+ ].map((key) => [key, toKebabCase(key)]);
35
33
  function* activeValidationSlots(validity) {
36
34
  if (!validity.valid) {
37
35
  yield 'invalid';
38
36
  }
39
- for (const key of VALIDITY_KEYS) {
37
+ for (const [key, slot] of VALIDITY_SLOTS) {
40
38
  if (validity[key]) {
41
- yield toKebabCase(key);
39
+ yield slot;
42
40
  }
43
41
  }
44
42
  }
@@ -113,23 +111,22 @@ export default class IgcValidationContainerComponent extends LitElement {
113
111
  if (isServer || !this.hasUpdated) {
114
112
  return { isProjectionEmpty: false, validation };
115
113
  }
116
- const slots = Array.from(this.renderRoot.querySelectorAll(ALL_SLOTS_SELECTOR));
117
114
  let isProjectionEmpty = true;
118
- for (const slot of slots) {
119
- if (isEmpty(slot.assignedElements(QUERY_CONFIG))) {
115
+ for (const slot of this.renderRoot.querySelectorAll('slot')) {
116
+ if (isEmpty(slot.assignedElements({ flatten: true }))) {
120
117
  continue;
121
118
  }
122
119
  isProjectionEmpty = false;
123
- if (slot.name && slot.name !== 'helper-text') {
120
+ if (slot.name !== 'helper-text') {
124
121
  validation.add(slot.name);
125
122
  }
126
123
  }
127
124
  return { isProjectionEmpty, validation };
128
125
  }
129
126
  _renderValidationMessage(slotName, projectedSlots) {
130
- const hasProjectedIcon = projectedSlots.has(slotName);
131
- const parts = { 'validation-message': true, empty: !hasProjectedIcon };
132
- const icon = hasProjectedIcon
127
+ const hasProjectedContent = projectedSlots.has(slotName);
128
+ const parts = { 'validation-message': true, empty: !hasProjectedContent };
129
+ const icon = hasProjectedContent
133
130
  ? html `
134
131
  <igc-icon
135
132
  aria-hidden="true"
@@ -142,14 +139,14 @@ export default class IgcValidationContainerComponent extends LitElement {
142
139
  ${icon}<slot name=${slotName}></slot>
143
140
  </div>`;
144
141
  }
145
- _renderHelper(hasValidationProjection) {
146
- return this.invalid && hasValidationProjection
142
+ _renderHelper(projectedSlots) {
143
+ return this.invalid && projectedSlots.size > 0
147
144
  ? nothing
148
145
  : html `<slot name="helper-text"></slot>`;
149
146
  }
150
147
  firstUpdated() {
151
148
  if (this.invalid) {
152
- queueMicrotask(() => this.requestUpdate());
149
+ this.target.requestUpdate();
153
150
  }
154
151
  }
155
152
  render() {
@@ -164,7 +161,7 @@ export default class IgcValidationContainerComponent extends LitElement {
164
161
  part=${partMap({ 'helper-text': true, empty: isProjectionEmpty })}
165
162
  aria-live="polite"
166
163
  >
167
- ${messages}${this._renderHelper(!isEmpty(validation))}
164
+ ${messages}${this._renderHelper(validation)}
168
165
  </div>
169
166
  `;
170
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,gBAAgB,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAcxD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,YAAY,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAM7D,MAAM,aAAa,GAA4C;IAC7D,UAAU;IACV,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,UAAU;IACV,cAAc;IACd,cAAc;CACf,CAAC;AAMF,QAAQ,CAAC,CAAC,qBAAqB,CAAC,QAAuB;IACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAUD,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,UAAU;aAC9C,YAAO,GAAG,eAAe,AAAlB,CAAmB;aAC1B,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAG1C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,+BAA+B,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAQM,MAAM,CAAC,MAAM,CAClB,IAAoB,EACpB,SAAoC;QAClC,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,IAAI;KACpB;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa;YACrC,CAAC,CAAC,IAAI,CAAA,qDAAqD;YAC3D,CAAC,CAAC,OAAO,CAAC;QAIZ,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU;YACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA,cAAc,IAAI,SAAS,IAAI,UAAU,CAAC;iBAC5D,OAAO,EAAE;YACd,CAAC,CAAC,OAAO,CAAC;QAEZ,OAAO,IAAI,CAAA;;aAEF,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;eAClB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;eACtB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;mBAClB,IAAI,CAAC,OAAO;kBACb,IAAI;;;UAGZ,UAAU,GAAG,eAAe;;KAEjC,CAAC;IACJ,CAAC;IAwBD,IAAW,MAAM,CAAC,KAAqB;QACrC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAErC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAxCO,iBAAY,GAAG,iBAAiB,EAAE,CAAC;QAU7C,YAAO,GAAG,KAAK,CAAC;QA+BrB,oBAAoB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC;IAEkB,gBAAgB;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,WAAW,CAAC,KAAY;QAC7B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,oBAAoB;gBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,MAAM;YACR,KAAK,kBAAkB;gBACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM;QACV,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAQO,sBAAsB;QAI5B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAkB,kBAAkB,CAAC,CACtE,CAAC;QACF,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YAED,iBAAiB,GAAG,KAAK,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC7C,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAC3C,CAAC;IAES,wBAAwB,CAChC,QAAgB,EAChB,cAAmC;QAEnC,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,gBAAgB;YAC3B,CAAC,CAAC,IAAI,CAAA;;;;;;SAMH;YACH,CAAC,CAAC,OAAO,CAAC;QAEZ,OAAO,IAAI,CAAA,aAAa,OAAO,CAAC,KAAK,CAAC;QAClC,IAAI,cAAc,QAAQ;WACvB,CAAC;IACV,CAAC;IAES,aAAa,CACrB,uBAAgC;QAEhC,OAAO,IAAI,CAAC,OAAO,IAAI,uBAAuB;YAC5C,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,CAAA,kCAAkC,CAAC;IAC7C,CAAC;IAEkB,YAAY;QAM7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAEkB,MAAM;QACvB,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACxE,MAAM,QAAQ,GACZ,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO;YAC7B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;iBACvD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;iBAC9D,OAAO,EAAE;YACd,CAAC,CAAC,OAAO,CAAC;QAEd,OAAO,IAAI,CAAA;;eAEA,OAAO,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;;;UAG/D,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;KAExD,CAAC;IACJ,CAAC;;AAlJM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;gEACL;AAYvB;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DAY9B","sourcesContent":["import { html, isServer, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createAbortHandle } from '#internals/abort-handler.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n type IgcFormControl,\n InternalInvalidEvent,\n InternalResetEvent,\n} from '#internals/mixins/forms/types.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { toKebabCase } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { all as inputThemes } from '../input/themes/themes.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { styles } from './themes/validator.base.css.js';\n\n/** Configuration for the validation container. */\nexport interface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\nconst ALL_SLOTS_SELECTOR = 'slot';\nconst QUERY_CONFIG: AssignedNodesOptions = { flatten: true };\n\n/**\n * Validity flags rendered as validation message slots, in a stable order so the\n * generated slots are deterministic across browsers.\n */\nconst VALIDITY_KEYS: ReadonlyArray<keyof ValidityStateFlags> = [\n 'badInput',\n 'customError',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valueMissing',\n];\n\n/**\n * Yields the active validation slot names for the given validity state, in a\n * stable order (`invalid` first, then each failing constraint).\n */\nfunction* activeValidationSlots(validity: ValidityState): Generator<string> {\n if (!validity.valid) {\n yield 'invalid';\n }\n\n for (const key of VALIDITY_KEYS) {\n if (validity[key]) {\n yield toKebabCase(key);\n }\n }\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n /**\n * Creates a validation container for the given form control.\n *\n * The container will render validation messages based on the control's validity state\n * and projected content, and reflect the control's `invalid` state.\n */\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : nothing;\n\n // `hasUpdated` is false during SSR and the host's hydrating render, so both\n // emit `nothing`. The real validation slots are projected post-hydration.\n const validationSlots = host.hasUpdated\n ? Iterator.from(activeValidationSlots(host.validity))\n .map((name) => html`<slot name=${name} slot=${name}></slot>`)\n .toArray()\n : nothing;\n\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n ?invalid=${host.invalid}\n .target=${host}\n exportparts=\"helper-text, validation-message, validation-icon\"\n >\n ${helperText}${validationSlots}\n </igc-validator>\n `;\n }\n\n private readonly _abortHandle = createAbortHandle();\n private _target!: IgcFormControl;\n\n /**\n * Whether the container is in an invalid state.\n *\n * This is reflected from the target's `invalid` property,\n * and is used to determine whether to render the validation message slots.\n */\n @property({ type: Boolean })\n public invalid = false;\n\n /**\n * The form control whose validity state is being rendered. The target's `invalid`\n * property is reflected to the container, and its validity state is used to\n * determine which validation message slots to render.\n *\n * @remarks The target must be set for the container to function, and should be\n * set before the first update cycle for SSR compatibility. When using the\n * `create` method, the target is set automatically.\n */\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n this._abortHandle.abort();\n const { signal } = this._abortHandle;\n\n this._target = value;\n this._target.addEventListener(InternalInvalidEvent, this, { signal });\n this._target.addEventListener(InternalResetEvent, this, { signal });\n }\n\n public get target(): IgcFormControl {\n return this._target;\n }\n\n constructor() {\n super();\n addThemingController(this, inputThemes);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n switch (event.type) {\n case InternalInvalidEvent:\n this.invalid = true;\n break;\n case InternalResetEvent:\n this.invalid = false;\n break;\n }\n\n this.requestUpdate();\n }\n\n /**\n * Collects the projection state of the container slots in a single DOM pass.\n *\n * @returns Whether every slot is empty and the set of non-empty validation\n * slot names (i.e. excluding `helper-text`).\n */\n private _collectProjectedSlots(): {\n isProjectionEmpty: boolean;\n validation: Set<string>;\n } {\n const validation = new Set<string>();\n\n if (isServer || !this.hasUpdated) {\n return { isProjectionEmpty: false, validation };\n }\n\n const slots = Array.from(\n this.renderRoot.querySelectorAll<HTMLSlotElement>(ALL_SLOTS_SELECTOR)\n );\n let isProjectionEmpty = true;\n\n for (const slot of slots) {\n if (isEmpty(slot.assignedElements(QUERY_CONFIG))) {\n continue;\n }\n\n isProjectionEmpty = false;\n if (slot.name && slot.name !== 'helper-text') {\n validation.add(slot.name);\n }\n }\n\n return { isProjectionEmpty, validation };\n }\n\n protected _renderValidationMessage(\n slotName: string,\n projectedSlots: ReadonlySet<string>\n ): TemplateResult {\n const hasProjectedIcon = projectedSlots.has(slotName);\n const parts = { 'validation-message': true, empty: !hasProjectedIcon };\n const icon = hasProjectedIcon\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : nothing;\n\n return html`<div part=${partMap(parts)}>\n ${icon}<slot name=${slotName}></slot>\n </div>`;\n }\n\n protected _renderHelper(\n hasValidationProjection: boolean\n ): TemplateResult | typeof nothing {\n return this.invalid && hasValidationProjection\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override firstUpdated(): void {\n // The first render is intentionally neutral to match the SSR output during\n // hydration. Only reconcile when the field hydrated in an invalid state, and\n // do it off the current update cycle so we don't schedule an update as a side\n // effect of the one in progress, projecting the real validation messages now\n // that `hasUpdated` is true.\n if (this.invalid) {\n queueMicrotask(() => this.requestUpdate());\n }\n }\n\n protected override render(): TemplateResult {\n const { isProjectionEmpty, validation } = this._collectProjectedSlots();\n const messages =\n this.hasUpdated && this.invalid\n ? Iterator.from(activeValidationSlots(this.target.validity))\n .map((name) => this._renderValidationMessage(name, validation))\n .toArray()\n : nothing;\n\n return html`\n <div\n part=${partMap({ 'helper-text': true, empty: isProjectionEmpty })}\n aria-live=\"polite\"\n >\n ${messages}${this._renderHelper(!isEmpty(validation))}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"validation-container.js","sourceRoot":"","sources":["../../../src/components/validation-container/validation-container.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, isServer, LitElement, nothing, type TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createAbortHandle } from '#internals/abort-handler.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n type IgcFormControl,\n InternalInvalidEvent,\n InternalResetEvent,\n} from '#internals/mixins/forms/types.js';\nimport { partMap } from '#internals/part-map.js';\nimport { isEmpty } from '#internals/utils/arrays.js';\nimport { toKebabCase } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { all as inputThemes } from '../input/themes/themes.js';\nimport { styles as shared } from './themes/shared/validator.common.css.js';\nimport { styles } from './themes/validator.base.css.js';\n\n/** Configuration for the validation container. */\nexport interface ValidationContainerConfig {\n /** The id attribute for the validation container. */\n id?: string;\n /** Project the validation container to the given slot inside the host shadow DOM. */\n slot?: string;\n /** Additional part(s) that should be bound to the validation container. */\n part?: string;\n /** Whether the validation container should expose a helper-text slot. */\n hasHelperText?: boolean;\n}\n\n/**\n * Validity flags and their slot names, in a stable order so the generated slots\n * are deterministic across browsers.\n */\nconst VALIDITY_SLOTS: ReadonlyArray<\n readonly [keyof ValidityStateFlags, string]\n> = (\n [\n 'badInput',\n 'customError',\n 'patternMismatch',\n 'rangeOverflow',\n 'rangeUnderflow',\n 'stepMismatch',\n 'tooLong',\n 'tooShort',\n 'typeMismatch',\n 'valueMissing',\n ] as const\n).map((key) => [key, toKebabCase(key)] as const);\n\n/**\n * Yields the active validation slot names for the given validity state:\n * `invalid` first, then each failing constraint.\n */\nfunction* activeValidationSlots(validity: ValidityState): Generator<string> {\n if (!validity.valid) {\n yield 'invalid';\n }\n\n for (const [key, slot] of VALIDITY_SLOTS) {\n if (validity[key]) {\n yield slot;\n }\n }\n}\n\n/* blazorSuppress */\n/**\n * @element igc-validator\n *\n * @csspart helper-text - The base wrapper\n * @csspart validation-message - The validation error message container\n * @csspart validation-icon - The validation error icon\n */\nexport default class IgcValidationContainerComponent extends LitElement {\n public static readonly tagName = 'igc-validator';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcValidationContainerComponent, IgcIconComponent);\n }\n\n /**\n * Creates a validation container for the given form control.\n *\n * The container will render validation messages based on the control's validity state\n * and projected content, and reflect the control's `invalid` state.\n */\n public static create(\n host: IgcFormControl,\n config: ValidationContainerConfig = {\n id: 'helper-text',\n hasHelperText: true,\n }\n ): TemplateResult {\n const helperText = config.hasHelperText\n ? html`<slot name=\"helper-text\" slot=\"helper-text\"></slot>`\n : nothing;\n\n // `hasUpdated` is false during SSR and the hydrating render, so both emit\n // `nothing` and the slots are projected on the next host render (see\n // `firstUpdated` in the container).\n const validationSlots = host.hasUpdated\n ? Iterator.from(activeValidationSlots(host.validity))\n .map((name) => html`<slot name=${name} slot=${name}></slot>`)\n .toArray()\n : nothing;\n\n // `?invalid` tracks host re-renders; the internal invalid/reset events cover\n // a form reset, which restores the value without re-rendering the host.\n return html`\n <igc-validator\n id=${ifDefined(config.id)}\n part=${ifDefined(config.part)}\n slot=${ifDefined(config.slot)}\n ?invalid=${host.invalid}\n .target=${host}\n exportparts=\"helper-text, validation-message, validation-icon\"\n >\n ${helperText}${validationSlots}\n </igc-validator>\n `;\n }\n\n private readonly _abortHandle = createAbortHandle();\n private _target!: IgcFormControl;\n\n /**\n * Whether the container is in an invalid state.\n *\n * This is reflected from the target's `invalid` property,\n * and is used to determine whether to render the validation message slots.\n */\n @property({ type: Boolean })\n public invalid = false;\n\n /**\n * The form control whose validity state is rendered.\n *\n * @remarks Must be set before the first update for SSR compatibility;\n * `create` sets it automatically.\n */\n @property({ attribute: false })\n public set target(value: IgcFormControl) {\n if (this._target === value) {\n return;\n }\n\n // Listeners are not removed on disconnect: the container lives in the\n // target's shadow root and shares its lifetime.\n this._abortHandle.abort();\n const { signal } = this._abortHandle;\n\n this._target = value;\n this._target.addEventListener(InternalInvalidEvent, this, { signal });\n this._target.addEventListener(InternalResetEvent, this, { signal });\n }\n\n public get target(): IgcFormControl {\n return this._target;\n }\n\n constructor() {\n super();\n addThemingController(this, inputThemes);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', this);\n return root;\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n switch (event.type) {\n case InternalInvalidEvent:\n this.invalid = true;\n break;\n case InternalResetEvent:\n this.invalid = false;\n break;\n }\n\n this.requestUpdate();\n }\n\n /**\n * Collects which slots have assigned content.\n *\n * @remarks Reads the shadow DOM from the previous commit. On the render where\n * `invalid` flips on, the message slots do not exist yet, so every message is\n * `empty`; their `slotchange` schedules a second render before paint.\n */\n private _collectProjectedSlots(): {\n isProjectionEmpty: boolean;\n validation: Set<string>;\n } {\n const validation = new Set<string>();\n\n if (isServer || !this.hasUpdated) {\n return { isProjectionEmpty: false, validation };\n }\n\n let isProjectionEmpty = true;\n\n for (const slot of this.renderRoot.querySelectorAll('slot')) {\n if (isEmpty(slot.assignedElements({ flatten: true }))) {\n continue;\n }\n\n isProjectionEmpty = false;\n if (slot.name !== 'helper-text') {\n validation.add(slot.name);\n }\n }\n\n return { isProjectionEmpty, validation };\n }\n\n private _renderValidationMessage(\n slotName: string,\n projectedSlots: ReadonlySet<string>\n ): TemplateResult {\n const hasProjectedContent = projectedSlots.has(slotName);\n const parts = { 'validation-message': true, empty: !hasProjectedContent };\n const icon = hasProjectedContent\n ? html`\n <igc-icon\n aria-hidden=\"true\"\n name=\"error\"\n part=\"validation-icon\"\n ></igc-icon>\n `\n : nothing;\n\n return html`<div part=${partMap(parts)}>\n ${icon}<slot name=${slotName}></slot>\n </div>`;\n }\n\n private _renderHelper(\n projectedSlots: ReadonlySet<string>\n ): TemplateResult | typeof nothing {\n return this.invalid && projectedSlots.size > 0\n ? nothing\n : html`<slot name=\"helper-text\"></slot>`;\n }\n\n protected override firstUpdated(): void {\n // `create` omits the validation slots until the host has updated. If the\n // host hydrated invalid, ask it to re-render so the slots are projected;\n // their `slotchange` then updates this container.\n if (this.invalid) {\n this.target.requestUpdate();\n }\n }\n\n protected override render(): TemplateResult {\n const { isProjectionEmpty, validation } = this._collectProjectedSlots();\n const messages =\n this.hasUpdated && this.invalid\n ? Iterator.from(activeValidationSlots(this.target.validity))\n .map((name) => this._renderValidationMessage(name, validation))\n .toArray()\n : nothing;\n\n return html`\n <div\n part=${partMap({ 'helper-text': true, empty: isProjectionEmpty })}\n aria-live=\"polite\"\n >\n ${messages}${this._renderHelper(validation)}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-validator': IgcValidationContainerComponent;\n }\n}\n"]}