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
@@ -10,21 +10,22 @@ import { createRef, ref } from 'lit/directives/ref.js';
10
10
  import { setTransitionName, startViewTransition, } from '#animations/view-transition.js';
11
11
  import { tileManagerContext, } from '#internals/context.js';
12
12
  import { createAsyncContext } from '#internals/controllers/async-consumer.js';
13
- import { addDragController, } from '#internals/controllers/drag.js';
14
13
  import { addFullscreenController } from '#internals/controllers/fullscreen.js';
15
14
  import { addSlotController, setSlots } from '#internals/controllers/slot.js';
16
15
  import { coercedProperty, } from '#internals/decorators/coerced-property.js';
17
16
  import { registerComponent } from '#internals/definitions/register.js';
17
+ import { draggable, } from '#internals/directives/drag.js';
18
+ import { resizable, } from '#internals/directives/resize.js';
18
19
  import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
19
20
  import { partMap } from '#internals/part-map.js';
20
21
  import { isLTR } from '#internals/utils/dom.js';
21
22
  import { getElementFromPath } from '#internals/utils/events.js';
23
+ import { bindIf } from '#internals/utils/lit.js';
22
24
  import { asNumber } from '#internals/utils/math.js';
23
25
  import { createIdGenerator } from '#internals/utils/strings.js';
24
26
  import { addThemingController } from '#theming/theming-controller.js';
25
27
  import IgcIconButtonComponent from '../button/icon-button.js';
26
28
  import IgcDividerComponent from '../divider/divider.js';
27
- import IgcResizeContainerComponent from '../resize-container/resize-container.js';
28
29
  import { createTileDragStack, swapTiles } from './position.js';
29
30
  import { createTileResizeState } from './resize-state.js';
30
31
  import { styles as shared } from './themes/shared/tile/tile.common.css.js';
@@ -37,23 +38,26 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
37
38
  static { this.tagName = 'igc-tile'; }
38
39
  static { this.styles = [styles, shared]; }
39
40
  static register() {
40
- registerComponent(IgcTileComponent, IgcIconButtonComponent, IgcDividerComponent, IgcResizeContainerComponent);
41
+ registerComponent(IgcTileComponent, IgcIconButtonComponent, IgcDividerComponent);
41
42
  }
42
- static _spanVariable(name) {
43
+ static _gridVariable(name, transform) {
43
44
  return {
44
- transform: ({ value }) => Math.max(1, asNumber(value)),
45
+ transform: ({ value }) => transform(value),
45
46
  onChange: ({ value, host }) => {
46
- host.style.setProperty(name, value.toString());
47
+ host.style.setProperty(name, value != null ? value.toString() : null);
47
48
  },
48
49
  };
49
50
  }
51
+ static { this._adorners = {
52
+ side: { part: 'trigger-side', direction: 'horizontal' },
53
+ corner: { part: 'trigger', direction: 'both' },
54
+ bottom: { part: 'trigger-bottom', direction: 'vertical' },
55
+ }; }
56
+ static _spanVariable(name) {
57
+ return IgcTileComponent._gridVariable(name, (value) => Math.max(1, asNumber(value)));
58
+ }
50
59
  static _startVariable(name) {
51
- return {
52
- transform: ({ value }) => Math.max(0, asNumber(value)) || null,
53
- onChange: ({ value, host }) => {
54
- host.style.setProperty(name, value ? value.toString() : null);
55
- },
56
- };
60
+ return IgcTileComponent._gridVariable(name, (value) => Math.max(0, asNumber(value)) || null);
57
61
  }
58
62
  get _tileManagerCtx() {
59
63
  return this._context.value;
@@ -67,6 +71,12 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
67
71
  get _resizeMode() {
68
72
  return this._tileManager?.resizeMode ?? 'none';
69
73
  }
74
+ get _dragMode() {
75
+ return this._tileManager?.dragMode ?? 'none';
76
+ }
77
+ get _resizeAdornersVisible() {
78
+ return this._isResizeActive || this._resizeMode === 'always';
79
+ }
70
80
  get _resizeDisabled() {
71
81
  return (this.disableResize ||
72
82
  this.maximized ||
@@ -79,31 +89,18 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
79
89
  constructor() {
80
90
  super();
81
91
  this._slots = addSlotController(this, { slots: Slots });
82
- this._dragController = addDragController(this, {
83
- skip: this._skipDrag,
84
- matchTarget: this._match,
85
- ghost: this._createDragGhost,
86
- start: this._handleDragStart,
87
- over: this._handleDragOver,
88
- end: this._handleDragEnd,
89
- cancel: this._handleDragCancel,
90
- });
91
92
  this._fullscreenController = addFullscreenController(this, {
92
93
  enter: this._emitFullScreenEvent,
93
94
  exit: this._emitFullScreenEvent,
94
95
  });
95
96
  this._resizeState = createTileResizeState();
96
97
  this._dragStack = createTileDragStack();
97
- this._setDragConfiguration = ({ instance: { dragMode }, }) => {
98
- this._dragController.set({
99
- enabled: dragMode !== 'none',
100
- trigger: dragMode === 'tile-header' ? () => this._headerRef.value : undefined,
101
- });
102
- };
103
- this._context = createAsyncContext(this, tileManagerContext, this._setDragConfiguration);
98
+ this._context = createAsyncContext(this, tileManagerContext);
104
99
  this._headerRef = createRef();
100
+ this._containerRef = createRef();
105
101
  this._isDragging = false;
106
102
  this._isResizing = false;
103
+ this._isResizeActive = false;
107
104
  this.colSpan = 1;
108
105
  this.rowSpan = 1;
109
106
  this.colStart = null;
@@ -113,9 +110,79 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
113
110
  this.disableFullscreen = false;
114
111
  this.disableMaximize = false;
115
112
  this.position = -1;
113
+ this._handleDragStart = () => {
114
+ if (!this._emitStartEvent('igcTileDragStart')) {
115
+ return false;
116
+ }
117
+ this._setDragState();
118
+ this._dragStack.push(this);
119
+ return true;
120
+ };
121
+ this._handleDragOver = ({ event, state }) => {
122
+ const match = state.element;
123
+ if (this._dragStack.peek() === match) {
124
+ if (this._shouldSwap(event, state.pointerState.direction, match)) {
125
+ this._dragStack.pop();
126
+ this._dragStack.push(match);
127
+ this._performSwap(match);
128
+ }
129
+ return;
130
+ }
131
+ this._dragStack.push(match);
132
+ this._performSwap(match);
133
+ };
134
+ this._handleDragCancel = () => {
135
+ startViewTransition(() => {
136
+ this._dragStack.restore();
137
+ this._dragStack.reset();
138
+ });
139
+ this._setDragState(false);
140
+ this.emitEvent('igcTileDragCancel', { detail: this });
141
+ };
142
+ this._handleDragEnd = () => {
143
+ this._setDragState(false);
144
+ this._dragStack.reset();
145
+ this.emitEvent('igcTileDragEnd', { detail: this });
146
+ };
147
+ this._skipDrag = (event) => {
148
+ if (this.maximized || this.fullscreen) {
149
+ return true;
150
+ }
151
+ return Boolean(getElementFromPath((e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'), event));
152
+ };
153
+ this._match = (element) => {
154
+ return element !== this && IgcTileComponent.tagName === element.localName;
155
+ };
156
+ this._createDragGhost = () => {
157
+ return createTileDragGhost(this);
158
+ };
116
159
  this._createResizeGhost = () => {
117
160
  return createTileGhost(this);
118
161
  };
162
+ this._handleResizeStart = ({ event, state }) => {
163
+ if (!this._emitStartEvent('igcTileResizeStart')) {
164
+ return false;
165
+ }
166
+ event.preventDefault();
167
+ this._resizeState.updateState(state.initial, this, this._cssContainer);
168
+ this._setResizeState();
169
+ return true;
170
+ };
171
+ this._handleResizeEnd = ({ state }) => {
172
+ const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(state.current);
173
+ state.commit = async () => {
174
+ await startViewTransition(() => {
175
+ this.colSpan = colSpan;
176
+ this.rowSpan = rowSpan;
177
+ }).updateCallbackDone;
178
+ this._setResizeState(false);
179
+ this.emitEvent('igcTileResizeEnd', { detail: this });
180
+ };
181
+ };
182
+ this._handleResizeCancel = () => {
183
+ this._setResizeState(false);
184
+ this.emitEvent('igcTileResizeCancel', { detail: this });
185
+ };
119
186
  addThemingController(this, all);
120
187
  }
121
188
  connectedCallback() {
@@ -131,47 +198,11 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
131
198
  this.style.pointerEvents = state ? 'none' : '';
132
199
  this.part.toggle('dragging', state);
133
200
  }
134
- _handleDragStart() {
135
- if (!this._emitTileDragStart()) {
136
- return false;
137
- }
138
- this._setDragState();
139
- this._dragStack.push(this);
140
- return true;
141
- }
142
- _handleDragOver({ event, state }) {
143
- const match = state.element;
144
- if (this._dragStack.peek() === match) {
145
- if (this._shouldSwap(event, state, match)) {
146
- this._dragStack.pop();
147
- this._dragStack.push(match);
148
- this._performSwap(match);
149
- }
150
- return;
151
- }
152
- this._dragStack.push(match);
153
- this._performSwap(match);
154
- }
155
- _handleDragCancel() {
156
- startViewTransition(() => {
157
- this._dragStack.restore();
158
- this._dragStack.reset();
159
- });
160
- this._dragController.dispose();
161
- this._setDragState(false);
162
- this.emitEvent('igcTileDragCancel', { detail: this });
163
- }
164
- _handleDragEnd() {
165
- this._setDragState(false);
166
- this._dragStack.reset();
167
- this.emitEvent('igcTileDragEnd', { detail: this });
168
- }
169
201
  _performSwap(match) {
170
202
  startViewTransition(() => swapTiles(this, match));
171
203
  }
172
- _shouldSwap({ clientX, clientY }, state, match) {
204
+ _shouldSwap({ clientX, clientY }, direction, match) {
173
205
  const LTR = isLTR(this);
174
- const direction = state.pointerState.direction;
175
206
  const { left, top, width, height } = match.getBoundingClientRect();
176
207
  const relativeX = (clientX - left) / width;
177
208
  const relativeY = (clientY - top) / height;
@@ -190,57 +221,19 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
190
221
  return false;
191
222
  }
192
223
  }
193
- _skipDrag(event) {
194
- if (this.maximized || this.fullscreen) {
195
- return true;
196
- }
197
- return Boolean(getElementFromPath((e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'), event));
198
- }
199
- _match(element) {
200
- return element !== this && IgcTileComponent.tagName === element.localName;
201
- }
202
- _createDragGhost() {
203
- return createTileDragGhost(this);
204
- }
205
224
  _setResizeState(state = true) {
206
225
  this._isResizing = state;
207
226
  this.style.zIndex = state ? '1' : '';
208
227
  this.part.toggle('resizing', state);
209
228
  }
210
- _handleResizeStart(event) {
211
- if (!this._emitTileResizeStart()) {
212
- event.preventDefault();
213
- return;
214
- }
215
- this._resizeState.updateState(event.detail.state.initial, this, this._cssContainer);
216
- this._setResizeState();
217
- }
218
- _handleResize({ detail: { state }, }) {
219
- const trigger = state.trigger;
220
- const isWidthResize = trigger.matches('[part*="side"], [part="trigger"]');
221
- const isHeightResize = trigger.matches('[part*="bottom"], [part="trigger"]');
222
- if (isWidthResize) {
229
+ _handleResize({ state }, direction) {
230
+ if (direction !== 'vertical') {
223
231
  state.current.width = this._resizeState.calculateSnappedWidth(state);
224
232
  }
225
- if (isHeightResize) {
233
+ if (direction !== 'horizontal') {
226
234
  state.current.height = this._resizeState.calculateSnappedHeight(state);
227
235
  }
228
236
  }
229
- _handleResizeEnd({ detail: { state }, }) {
230
- const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(state.current);
231
- state.commit = async () => {
232
- await startViewTransition(() => {
233
- this.colSpan = colSpan;
234
- this.rowSpan = rowSpan;
235
- }).updateCallbackDone;
236
- this._setResizeState(false);
237
- this.emitEvent('igcTileResizeEnd', { detail: this });
238
- };
239
- }
240
- _handleResizeCancel() {
241
- this._setResizeState(false);
242
- this.emitEvent('igcTileResizeCancel', { detail: this });
243
- }
244
237
  _handleFullscreen() {
245
238
  this._fullscreenController.setState(!this.fullscreen);
246
239
  }
@@ -267,17 +260,8 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
267
260
  cancelable: true,
268
261
  });
269
262
  }
270
- _emitTileDragStart() {
271
- return this.emitEvent('igcTileDragStart', {
272
- detail: this,
273
- cancelable: true,
274
- });
275
- }
276
- _emitTileResizeStart() {
277
- return this.emitEvent('igcTileResizeStart', {
278
- detail: this,
279
- cancelable: true,
280
- });
263
+ _emitStartEvent(name) {
264
+ return this.emitEvent(name, { detail: this, cancelable: true });
281
265
  }
282
266
  _renderDefaultAction(type) {
283
267
  const [icon, listener] = type === 'fullscreen'
@@ -315,39 +299,46 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
315
299
  <slot name="title"></slot>
316
300
  </header>
317
301
  <section id="tile-actions" part="actions">
318
- ${hasMaximizeSlot
319
- ? html `
320
- <slot name="maximize-action">
321
- ${this._renderDefaultAction('maximize')}
322
- </slot>
323
- `
324
- : nothing}
325
- ${hasFullscreenSlot
326
- ? html `
327
- <slot name="fullscreen-action">
328
- ${this._renderDefaultAction('fullscreen')}
329
- </slot>
330
- `
331
- : nothing}
332
-
302
+ ${hasMaximizeSlot ? this._renderActionSlot('maximize') : nothing}
303
+ ${hasFullscreenSlot ? this._renderActionSlot('fullscreen') : nothing}
333
304
  <slot name="actions"></slot>
334
305
  </section>
335
306
  </section>
336
307
  <igc-divider></igc-divider>
337
308
  `;
338
309
  }
310
+ _renderActionSlot(type) {
311
+ return html `
312
+ <slot name="${type}-action">${this._renderDefaultAction(type)}</slot>
313
+ `;
314
+ }
315
+ _createDragOptions() {
316
+ const dragMode = this._dragMode;
317
+ return {
318
+ enabled: dragMode !== 'none',
319
+ target: () => this,
320
+ trigger: dragMode === 'tile-header' ? () => this._headerRef.value : undefined,
321
+ skip: this._skipDrag,
322
+ matchTarget: this._match,
323
+ ghostFactory: this._createDragGhost,
324
+ start: this._handleDragStart,
325
+ over: this._handleDragOver,
326
+ end: this._handleDragEnd,
327
+ cancel: this._handleDragCancel,
328
+ };
329
+ }
339
330
  _renderContent() {
340
331
  const parts = {
341
332
  base: true,
342
- draggable: this._tileManager?.dragMode !== 'none',
333
+ draggable: this._dragMode !== 'none',
343
334
  fullscreen: this.fullscreen,
344
335
  dragging: this._isDragging,
345
- resizable: !this.disableResize && this._tileManager?.resizeMode !== 'none',
336
+ resizable: !this.disableResize && this._resizeMode !== 'none',
346
337
  resizing: this._isResizing,
347
338
  maximized: this.maximized,
348
339
  };
349
340
  return html `
350
- <div part=${partMap(parts)}>
341
+ <div part=${partMap(parts)} ${draggable(this._createDragOptions())}>
351
342
  ${this._renderHeader()}
352
343
  <div part="content-container">
353
344
  <slot></slot>
@@ -355,42 +346,68 @@ export default class IgcTileComponent extends EventEmitterMixin(LitElement) {
355
346
  </div>
356
347
  `;
357
348
  }
358
- _renderAdornerSlot(name) {
359
- return html `<slot name="${name}-adorner" slot="${name}-adorner"></slot>`;
349
+ _handleResizePointerEnter() {
350
+ this._isResizeActive = true;
351
+ }
352
+ _handleResizePointerLeave() {
353
+ this._isResizeActive = false;
354
+ }
355
+ _createResizeOptions(direction) {
356
+ return {
357
+ mode: 'deferred',
358
+ direction,
359
+ target: () => this._containerRef.value,
360
+ ghostFactory: this._createResizeGhost,
361
+ start: this._handleResizeStart,
362
+ resize: (params) => this._handleResize(params, direction),
363
+ end: this._handleResizeEnd,
364
+ cancel: this._handleResizeCancel,
365
+ };
366
+ }
367
+ _renderAdorner(type) {
368
+ const { part, direction } = IgcTileComponent._adorners[type];
369
+ const parts = {
370
+ [part]: true,
371
+ custom: this._slots.hasAssignedElements(`${type}-adorner`),
372
+ };
373
+ return html `
374
+ <slot
375
+ name="${type}-adorner"
376
+ part=${partMap(parts)}
377
+ ${resizable(this._createResizeOptions(direction))}
378
+ ></slot>
379
+ `;
380
+ }
381
+ _renderAdorners() {
382
+ return this._resizeAdornersVisible
383
+ ? html `
384
+ ${this._renderAdorner('side')} ${this._renderAdorner('corner')}
385
+ ${this._renderAdorner('bottom')}
386
+ `
387
+ : nothing;
360
388
  }
361
389
  render() {
362
- const isActive = this._resizeMode === 'always';
390
+ const isHoverMode = this._resizeMode === 'hover';
391
+ const parts = {
392
+ 'tile-container': true,
393
+ active: this._resizeAdornersVisible,
394
+ };
363
395
  return this._resizeDisabled
364
396
  ? this._renderContent()
365
397
  : html `
366
- <igc-resize
367
- part=${partMap({
368
- resize: true,
369
- 'side-adorner': this._slots.hasAssignedElements('side-adorner'),
370
- 'corner-adorner': this._slots.hasAssignedElements('corner-adorner'),
371
- 'bottom-adorner': this._slots.hasAssignedElements('bottom-adorner'),
372
- })}
373
- exportparts="trigger-side, trigger, trigger-bottom"
374
- mode="deferred"
375
- ?active=${isActive}
376
- .ghostFactory=${this._createResizeGhost}
377
- @igcResizeStart=${this._handleResizeStart}
378
- @igcResize=${this._handleResize}
379
- @igcResizeEnd=${this._handleResizeEnd}
380
- @igcResizeCancel=${this._handleResizeCancel}
398
+ <div
399
+ ${ref(this._containerRef)}
400
+ part=${partMap(parts)}
401
+ @pointerenter=${bindIf(isHoverMode, this._handleResizePointerEnter)}
402
+ @pointerleave=${bindIf(isHoverMode, this._handleResizePointerLeave)}
381
403
  >
382
- ${this._renderContent()} ${this._renderAdornerSlot('side')}
383
- ${this._renderAdornerSlot('corner')}
384
- ${this._renderAdornerSlot('bottom')}
385
- </igc-resize>
404
+ ${this._renderContent()} ${this._renderAdorners()}
405
+ </div>
386
406
  `;
387
407
  }
388
408
  }
389
409
  __decorate([
390
- query(IgcResizeContainerComponent.tagName)
391
- ], IgcTileComponent.prototype, "_resizeContainer", void 0);
392
- __decorate([
393
- query('[part~="base"]', true)
410
+ query('[part~="base"]')
394
411
  ], IgcTileComponent.prototype, "_tileContent", void 0);
395
412
  __decorate([
396
413
  state()
@@ -398,6 +415,9 @@ __decorate([
398
415
  __decorate([
399
416
  state()
400
417
  ], IgcTileComponent.prototype, "_isResizing", void 0);
418
+ __decorate([
419
+ state()
420
+ ], IgcTileComponent.prototype, "_isResizeActive", void 0);
401
421
  __decorate([
402
422
  property({ type: Number, attribute: 'col-span' }),
403
423
  coercedProperty(IgcTileComponent._spanVariable('--ig-col-span'))