igniteui-webcomponents 3.3.1 → 4.0.0-alpha

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 (308) hide show
  1. package/README.md +5 -1
  2. package/components/accordion/themes/accordion.base.css.js +12 -1
  3. package/components/accordion/themes/accordion.base.css.js.map +1 -1
  4. package/components/avatar/themes/avatar.base.css.js +94 -1
  5. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  6. package/components/avatar/themes/avatar.bootstrap.css.js +4 -1
  7. package/components/avatar/themes/avatar.bootstrap.css.js.map +1 -1
  8. package/components/badge/themes/light/badge.base.css.js +99 -1
  9. package/components/badge/themes/light/badge.base.css.js.map +1 -1
  10. package/components/badge/themes/light/badge.bootstrap.css.js +10 -1
  11. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  12. package/components/button/themes/button/light/button.base.css.js +183 -1
  13. package/components/button/themes/button/light/button.base.css.js.map +1 -1
  14. package/components/button/themes/button/light/button.bootstrap.css.js +147 -1
  15. package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
  16. package/components/button/themes/button/light/button.fluent.css.js +167 -1
  17. package/components/button/themes/button/light/button.fluent.css.js.map +1 -1
  18. package/components/button/themes/button/light/button.indigo.css.js +140 -1
  19. package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
  20. package/components/button/themes/button/light/button.material.css.js +232 -1
  21. package/components/button/themes/button/light/button.material.css.js.map +1 -1
  22. package/components/button/themes/icon-button/light/icon-button.base.css.js +100 -1
  23. package/components/button/themes/icon-button/light/icon-button.base.css.js.map +1 -1
  24. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +80 -1
  25. package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
  26. package/components/button/themes/icon-button/light/icon-button.fluent.css.js +89 -1
  27. package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
  28. package/components/button/themes/icon-button/light/icon-button.indigo.css.js +83 -1
  29. package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
  30. package/components/button/themes/icon-button/light/icon-button.material.css.js +52 -1
  31. package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
  32. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js +41 -1
  33. package/components/calendar/themes/bootstrap/calendar.bootstrap.css.js.map +1 -1
  34. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js +263 -1
  35. package/components/calendar/themes/bootstrap/days-view.bootstrap.css.js.map +1 -1
  36. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js +55 -1
  37. package/components/calendar/themes/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  38. package/components/calendar/themes/calendar.base.css.js +277 -1
  39. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  40. package/components/calendar/themes/days-view.base.css.js +285 -1
  41. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  42. package/components/calendar/themes/fluent/calendar.fluent.css.js +289 -1
  43. package/components/calendar/themes/fluent/calendar.fluent.css.js.map +1 -1
  44. package/components/calendar/themes/fluent/days-view.fluent.css.js +327 -1
  45. package/components/calendar/themes/fluent/days-view.fluent.css.js.map +1 -1
  46. package/components/calendar/themes/fluent/year-month-view.fluent.css.js +121 -1
  47. package/components/calendar/themes/fluent/year-month-view.fluent.css.js.map +1 -1
  48. package/components/calendar/themes/year-month-view.base.css.js +93 -1
  49. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  50. package/components/card/themes/light/card.actions.bootstrap.css.js +93 -1
  51. package/components/card/themes/light/card.actions.bootstrap.css.js.map +1 -1
  52. package/components/card/themes/light/card.actions.material.css.js +89 -1
  53. package/components/card/themes/light/card.actions.material.css.js.map +1 -1
  54. package/components/card/themes/light/card.bootstrap.css.js +10 -1
  55. package/components/card/themes/light/card.bootstrap.css.js.map +1 -1
  56. package/components/card/themes/light/card.content.bootstrap.css.js +75 -1
  57. package/components/card/themes/light/card.content.bootstrap.css.js.map +1 -1
  58. package/components/card/themes/light/card.content.indigo.css.js +57 -1
  59. package/components/card/themes/light/card.content.indigo.css.js.map +1 -1
  60. package/components/card/themes/light/card.content.material.css.js +49 -1
  61. package/components/card/themes/light/card.content.material.css.js.map +1 -1
  62. package/components/card/themes/light/card.fluent.css.js +20 -1
  63. package/components/card/themes/light/card.fluent.css.js.map +1 -1
  64. package/components/card/themes/light/card.header.bootstrap.css.js +132 -1
  65. package/components/card/themes/light/card.header.bootstrap.css.js.map +1 -1
  66. package/components/card/themes/light/card.header.fluent.css.js +128 -1
  67. package/components/card/themes/light/card.header.fluent.css.js.map +1 -1
  68. package/components/card/themes/light/card.header.indigo.css.js +114 -1
  69. package/components/card/themes/light/card.header.indigo.css.js.map +1 -1
  70. package/components/card/themes/light/card.header.material.css.js +104 -1
  71. package/components/card/themes/light/card.header.material.css.js.map +1 -1
  72. package/components/card/themes/light/card.material.css.js +59 -1
  73. package/components/card/themes/light/card.material.css.js.map +1 -1
  74. package/components/card/themes/light/card.media.material.css.js +42 -1
  75. package/components/card/themes/light/card.media.material.css.js.map +1 -1
  76. package/components/checkbox/themes/light/checkbox.base.css.js +207 -1
  77. package/components/checkbox/themes/light/checkbox.base.css.js.map +1 -1
  78. package/components/checkbox/themes/light/checkbox.bootstrap.css.js +107 -1
  79. package/components/checkbox/themes/light/checkbox.bootstrap.css.js.map +1 -1
  80. package/components/checkbox/themes/light/checkbox.fluent.css.js +191 -1
  81. package/components/checkbox/themes/light/checkbox.fluent.css.js.map +1 -1
  82. package/components/checkbox/themes/light/checkbox.indigo.css.js +106 -1
  83. package/components/checkbox/themes/light/checkbox.indigo.css.js.map +1 -1
  84. package/components/checkbox/themes/light/checkbox.material.css.js +57 -1
  85. package/components/checkbox/themes/light/checkbox.material.css.js.map +1 -1
  86. package/components/checkbox/themes/light/switch.base.css.js +208 -1
  87. package/components/checkbox/themes/light/switch.base.css.js.map +1 -1
  88. package/components/checkbox/themes/light/switch.bootstrap.css.js +125 -1
  89. package/components/checkbox/themes/light/switch.bootstrap.css.js.map +1 -1
  90. package/components/checkbox/themes/light/switch.fluent.css.js +130 -1
  91. package/components/checkbox/themes/light/switch.fluent.css.js.map +1 -1
  92. package/components/checkbox/themes/light/switch.indigo.css.js +129 -1
  93. package/components/checkbox/themes/light/switch.indigo.css.js.map +1 -1
  94. package/components/checkbox/themes/light/switch.material.css.js +80 -1
  95. package/components/checkbox/themes/light/switch.material.css.js.map +1 -1
  96. package/components/chip/themes/chip.base.css.js +212 -1
  97. package/components/chip/themes/chip.base.css.js.map +1 -1
  98. package/components/chip/themes/chip.bootstrap.css.js +285 -1
  99. package/components/chip/themes/chip.bootstrap.css.js.map +1 -1
  100. package/components/chip/themes/chip.fluent.css.js +247 -1
  101. package/components/chip/themes/chip.fluent.css.js.map +1 -1
  102. package/components/chip/themes/chip.indigo.css.js +345 -1
  103. package/components/chip/themes/chip.indigo.css.js.map +1 -1
  104. package/components/chip/themes/chip.material.css.js +228 -1
  105. package/components/chip/themes/chip.material.css.js.map +1 -1
  106. package/components/common/util.d.ts +1 -0
  107. package/components/common/util.js +3 -0
  108. package/components/common/util.js.map +1 -1
  109. package/components/dropdown/themes/light/dropdown-group.base.css.js +70 -1
  110. package/components/dropdown/themes/light/dropdown-group.base.css.js.map +1 -1
  111. package/components/dropdown/themes/light/dropdown-group.fluent.css.js +14 -1
  112. package/components/dropdown/themes/light/dropdown-group.fluent.css.js.map +1 -1
  113. package/components/dropdown/themes/light/dropdown-header.base.css.js +50 -1
  114. package/components/dropdown/themes/light/dropdown-header.base.css.js.map +1 -1
  115. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js +3 -1
  116. package/components/dropdown/themes/light/dropdown-header.bootstrap.css.js.map +1 -1
  117. package/components/dropdown/themes/light/dropdown-item.base.css.js +112 -1
  118. package/components/dropdown/themes/light/dropdown-item.base.css.js.map +1 -1
  119. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js +24 -1
  120. package/components/dropdown/themes/light/dropdown-item.bootstrap.css.js.map +1 -1
  121. package/components/dropdown/themes/light/dropdown-item.fluent.css.js +20 -1
  122. package/components/dropdown/themes/light/dropdown-item.fluent.css.js.map +1 -1
  123. package/components/dropdown/themes/light/dropdown-item.indigo.css.js +24 -1
  124. package/components/dropdown/themes/light/dropdown-item.indigo.css.js.map +1 -1
  125. package/components/dropdown/themes/light/dropdown.base.css.js +65 -1
  126. package/components/dropdown/themes/light/dropdown.base.css.js.map +1 -1
  127. package/components/dropdown/themes/light/dropdown.bootstrap.css.js +5 -1
  128. package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
  129. package/components/dropdown/themes/light/dropdown.fluent.css.js +21 -1
  130. package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
  131. package/components/dropdown/themes/light/dropdown.indigo.css.js +6 -1
  132. package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
  133. package/components/expansion-panel/themes/light/expansion-panel.base.css.js +133 -1
  134. package/components/expansion-panel/themes/light/expansion-panel.base.css.js.map +1 -1
  135. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +31 -1
  136. package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
  137. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js +42 -1
  138. package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js.map +1 -1
  139. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js +25 -1
  140. package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js.map +1 -1
  141. package/components/icon/icon.material.css.js +63 -1
  142. package/components/icon/icon.material.css.js.map +1 -1
  143. package/components/input/themes/light/input.base.css.js +100 -1
  144. package/components/input/themes/light/input.base.css.js.map +1 -1
  145. package/components/input/themes/light/input.bootstrap.css.js +172 -1
  146. package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
  147. package/components/input/themes/light/input.fluent.css.js +138 -1
  148. package/components/input/themes/light/input.fluent.css.js.map +1 -1
  149. package/components/input/themes/light/input.indigo.css.js +106 -1
  150. package/components/input/themes/light/input.indigo.css.js.map +1 -1
  151. package/components/input/themes/light/input.material.css.js +386 -1
  152. package/components/input/themes/light/input.material.css.js.map +1 -1
  153. package/components/list/themes/light/list-header.base.css.js +53 -1
  154. package/components/list/themes/light/list-header.base.css.js.map +1 -1
  155. package/components/list/themes/light/list-header.indigo.css.js +3 -1
  156. package/components/list/themes/light/list-header.indigo.css.js.map +1 -1
  157. package/components/list/themes/light/list-item.base.css.js +105 -1
  158. package/components/list/themes/light/list-item.base.css.js.map +1 -1
  159. package/components/list/themes/light/list-item.bootstrap.css.js +38 -1
  160. package/components/list/themes/light/list-item.bootstrap.css.js.map +1 -1
  161. package/components/list/themes/light/list-item.fluent.css.js +24 -1
  162. package/components/list/themes/light/list-item.fluent.css.js.map +1 -1
  163. package/components/list/themes/light/list-item.indigo.css.js +20 -1
  164. package/components/list/themes/light/list-item.indigo.css.js.map +1 -1
  165. package/components/list/themes/light/list.base.css.js +54 -1
  166. package/components/list/themes/light/list.base.css.js.map +1 -1
  167. package/components/list/themes/light/list.bootstrap.css.js +5 -1
  168. package/components/list/themes/light/list.bootstrap.css.js.map +1 -1
  169. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js +11 -1
  170. package/components/nav-drawer/themes/light/fluent/nav-drawer-header-item.fluent.css.js.map +1 -1
  171. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js +15 -1
  172. package/components/nav-drawer/themes/light/fluent/nav-drawer-item.fluent.css.js.map +1 -1
  173. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js +3 -1
  174. package/components/nav-drawer/themes/light/indigo/nav-drawer-header-item.indigo.css.js.map +1 -1
  175. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js +20 -1
  176. package/components/nav-drawer/themes/light/indigo/nav-drawer-item.indigo.css.js.map +1 -1
  177. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js +11 -1
  178. package/components/nav-drawer/themes/light/indigo/nav-drawer.indigo.css.js.map +1 -1
  179. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js +41 -1
  180. package/components/nav-drawer/themes/light/nav-drawer-header-item.base.css.js.map +1 -1
  181. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js +114 -1
  182. package/components/nav-drawer/themes/light/nav-drawer-item.base.css.js.map +1 -1
  183. package/components/nav-drawer/themes/light/nav-drawer.base.css.js +154 -1
  184. package/components/nav-drawer/themes/light/nav-drawer.base.css.js.map +1 -1
  185. package/components/navbar/themes/light/navbar.base.css.js +134 -1
  186. package/components/navbar/themes/light/navbar.base.css.js.map +1 -1
  187. package/components/navbar/themes/light/navbar.bootstrap.css.js +32 -1
  188. package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
  189. package/components/navbar/themes/light/navbar.fluent.css.js +13 -1
  190. package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
  191. package/components/navbar/themes/light/navbar.indigo.css.js +4 -1
  192. package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
  193. package/components/progress/themes/circular/circular.progress.base.css.js +456 -1
  194. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  195. package/components/progress/themes/circular/circular.progress.bootstrap.css.js +19 -1
  196. package/components/progress/themes/circular/circular.progress.bootstrap.css.js.map +1 -1
  197. package/components/progress/themes/circular/circular.progress.fluent.css.js +7 -1
  198. package/components/progress/themes/circular/circular.progress.fluent.css.js.map +1 -1
  199. package/components/progress/themes/linear/linear.progress.base.css.js +578 -1
  200. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  201. package/components/progress/themes/linear/linear.progress.bootstrap.css.js +400 -1
  202. package/components/progress/themes/linear/linear.progress.bootstrap.css.js.map +1 -1
  203. package/components/progress/themes/linear/linear.progress.fluent.css.js +70 -1
  204. package/components/progress/themes/linear/linear.progress.fluent.css.js.map +1 -1
  205. package/components/progress/themes/linear/linear.progress.indigo.css.js +32 -1
  206. package/components/progress/themes/linear/linear.progress.indigo.css.js.map +1 -1
  207. package/components/radio/themes/light/radio.base.css.js +173 -1
  208. package/components/radio/themes/light/radio.base.css.js.map +1 -1
  209. package/components/radio/themes/light/radio.bootstrap.css.js +72 -1
  210. package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
  211. package/components/radio/themes/light/radio.fluent.css.js +107 -1
  212. package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
  213. package/components/radio/themes/light/radio.indigo.css.js +86 -1
  214. package/components/radio/themes/light/radio.indigo.css.js.map +1 -1
  215. package/components/radio/themes/light/radio.material.css.js +14 -1
  216. package/components/radio/themes/light/radio.material.css.js.map +1 -1
  217. package/components/radio-group/radio-group.base.css.js +53 -1
  218. package/components/radio-group/radio-group.base.css.js.map +1 -1
  219. package/components/radio-group/radio-group.d.ts +0 -1
  220. package/components/radio-group/radio-group.js +4 -6
  221. package/components/radio-group/radio-group.js.map +1 -1
  222. package/components/rating/rating-symbol.base.css.js +98 -1
  223. package/components/rating/rating-symbol.base.css.js.map +1 -1
  224. package/components/rating/rating.base.css.js +138 -1
  225. package/components/rating/rating.base.css.js.map +1 -1
  226. package/components/rating/rating.bootstrap.css.js +29 -1
  227. package/components/rating/rating.bootstrap.css.js.map +1 -1
  228. package/components/rating/rating.d.ts +6 -4
  229. package/components/rating/rating.fluent.css.js +41 -1
  230. package/components/rating/rating.fluent.css.js.map +1 -1
  231. package/components/rating/rating.indigo.css.js +33 -1
  232. package/components/rating/rating.indigo.css.js.map +1 -1
  233. package/components/rating/rating.js +41 -28
  234. package/components/rating/rating.js.map +1 -1
  235. package/components/ripple/ripple.js +1 -1
  236. package/components/ripple/ripple.js.map +1 -1
  237. package/components/ripple/ripple.material.css.js +36 -1
  238. package/components/ripple/ripple.material.css.js.map +1 -1
  239. package/components/slider/slider-base.d.ts +0 -1
  240. package/components/slider/slider-base.js +5 -7
  241. package/components/slider/slider-base.js.map +1 -1
  242. package/components/slider/themes/light/slider.base.css.js +297 -1
  243. package/components/slider/themes/light/slider.base.css.js.map +1 -1
  244. package/components/slider/themes/light/slider.bootstrap.css.js +26 -1
  245. package/components/slider/themes/light/slider.bootstrap.css.js.map +1 -1
  246. package/components/slider/themes/light/slider.fluent.css.js +45 -1
  247. package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
  248. package/components/slider/themes/light/slider.indigo.css.js +48 -1
  249. package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
  250. package/components/slider/themes/light/slider.material.css.js +62 -1
  251. package/components/slider/themes/light/slider.material.css.js.map +1 -1
  252. package/components/snackbar/themes/light/snackbar.base.css.js +102 -1
  253. package/components/snackbar/themes/light/snackbar.base.css.js.map +1 -1
  254. package/components/snackbar/themes/light/snackbar.bootstrap.css.js +10 -1
  255. package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -1
  256. package/components/snackbar/themes/light/snackbar.fluent.css.js +24 -1
  257. package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -1
  258. package/components/snackbar/themes/light/snackbar.indigo.css.js +10 -1
  259. package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -1
  260. package/components/tabs/tabs.d.ts +0 -1
  261. package/components/tabs/tabs.js +7 -9
  262. package/components/tabs/tabs.js.map +1 -1
  263. package/components/tabs/themes/light/tab-panel.base.css.js +33 -1
  264. package/components/tabs/themes/light/tab-panel.base.css.js.map +1 -1
  265. package/components/tabs/themes/light/tab.base.css.js +133 -1
  266. package/components/tabs/themes/light/tab.base.css.js.map +1 -1
  267. package/components/tabs/themes/light/tab.bootstrap.css.js +65 -1
  268. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  269. package/components/tabs/themes/light/tab.fluent.css.js +18 -1
  270. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  271. package/components/tabs/themes/light/tab.indigo.css.js +21 -1
  272. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  273. package/components/tabs/themes/light/tabs.base.css.js +160 -1
  274. package/components/tabs/themes/light/tabs.base.css.js.map +1 -1
  275. package/components/tabs/themes/light/tabs.bootstrap.css.js +29 -1
  276. package/components/tabs/themes/light/tabs.bootstrap.css.js.map +1 -1
  277. package/components/tabs/themes/light/tabs.fluent.css.js +11 -1
  278. package/components/tabs/themes/light/tabs.fluent.css.js.map +1 -1
  279. package/components/tabs/themes/light/tabs.indigo.css.js +17 -1
  280. package/components/tabs/themes/light/tabs.indigo.css.js.map +1 -1
  281. package/components/toast/themes/toast.base.css.js +34 -1
  282. package/components/toast/themes/toast.base.css.js.map +1 -1
  283. package/components/toast/themes/toast.bootstrap.css.js +9 -1
  284. package/components/toast/themes/toast.bootstrap.css.js.map +1 -1
  285. package/components/toast/themes/toast.fluent.css.js +6 -1
  286. package/components/toast/themes/toast.fluent.css.js.map +1 -1
  287. package/components/toast/themes/toast.indigo.css.js +6 -1
  288. package/components/toast/themes/toast.indigo.css.js.map +1 -1
  289. package/components/tree/themes/light/tree-item.base.css.js +190 -1
  290. package/components/tree/themes/light/tree-item.base.css.js.map +1 -1
  291. package/components/tree/themes/light/tree-item.bootstrap.css.js +26 -1
  292. package/components/tree/themes/light/tree-item.bootstrap.css.js.map +1 -1
  293. package/components/tree/themes/light/tree-item.fluent.css.js +26 -1
  294. package/components/tree/themes/light/tree-item.fluent.css.js.map +1 -1
  295. package/components/tree/themes/light/tree-item.indigo.css.js +29 -1
  296. package/components/tree/themes/light/tree-item.indigo.css.js.map +1 -1
  297. package/components/tree/themes/light/tree.base.css.js +31 -1
  298. package/components/tree/themes/light/tree.base.css.js.map +1 -1
  299. package/package.json +3 -3
  300. package/themes/dark/bootstrap.css +678 -1
  301. package/themes/dark/fluent.css +689 -1
  302. package/themes/dark/indigo.css +466 -1
  303. package/themes/dark/material.css +647 -1
  304. package/themes/light/bootstrap.css +644 -1
  305. package/themes/light/fluent.css +635 -1
  306. package/themes/light/indigo.css +411 -1
  307. package/themes/light/material.css +635 -1
  308. package/vscode-html-custom-data.json +5 -5
@@ -32,14 +32,13 @@ declare const IgcRatingComponent_base: Constructor<import("../common/mixins/siza
32
32
  export default class IgcRatingComponent extends IgcRatingComponent_base {
33
33
  static readonly tagName = "igc-rating";
34
34
  static styles: import("lit").CSSResult[];
35
+ protected ratingSymbols: Array<IgcRatingSymbolComponent>;
35
36
  protected container: HTMLElement;
36
37
  protected valueLabel: Array<Node>;
37
- protected ratingSymbols: Array<IgcRatingSymbolComponent>;
38
38
  protected hoverValue: number;
39
39
  protected hoverState: boolean;
40
40
  protected get isInteractive(): boolean;
41
41
  protected get hasProjectedSymbols(): boolean;
42
- protected get isLTR(): boolean;
43
42
  protected get valueText(): string | number;
44
43
  /** The maximum value for the rating */
45
44
  max: number;
@@ -75,11 +74,14 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
75
74
  protected handleMouseEnter(): void;
76
75
  protected handleMouseLeave(): void;
77
76
  protected handleKeyDown({ key }: KeyboardEvent): void;
78
- protected handleSlotChange(): void;
77
+ protected handleSlotChange(event: Event): void;
79
78
  protected calcNewValue(x: number): number;
80
79
  protected getPrecision(num: number): number;
81
80
  protected round(value: number): number;
82
- protected clipSymbol(index: number, direction: 'forward' | 'backward'): string;
81
+ protected clipSymbol(index: number, isLTR?: boolean): {
82
+ backward: string;
83
+ forward: string;
84
+ };
83
85
  /**
84
86
  * Increments the value of the control by `n` steps multiplied by the
85
87
  * step factor.
@@ -1,3 +1,43 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `[part=base],:host{gap:.375rem}[part~=label]{font-family:var(--igc-subtitle-2-font-family);font-weight:var(--igc-subtitle-2-font-weight);font-size:var(--igc-subtitle-2-font-size);font-style:var(--igc-subtitle-2-font-style);letter-spacing:var(--igc-subtitle-2-letter-spacing);text-transform:var(--igc-subtitle-2-text-transform);line-height:var(--igc-subtitle-2-line-height);margin-top:var(--igc-subtitle-2-margin-top);margin-bottom:var(--igc-subtitle-2-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}[part~=value-label]{font-family:var(--igc-body-2-font-family);font-weight:var(--igc-body-2-font-weight);font-size:var(--igc-body-2-font-size);font-style:var(--igc-body-2-font-style);letter-spacing:var(--igc-body-2-letter-spacing);text-transform:var(--igc-body-2-text-transform);line-height:var(--igc-body-2-line-height);margin-top:var(--igc-body-2-margin-top);margin-bottom:var(--igc-body-2-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}:host([disabled]) [part~=symbols-wrapper]{color:hsla(var(--igc-gray-200), var(--igc-gray-a))}:host([disabled]) [part~=value-label],:host([disabled]) [part~=label]{color:hsla(var(--igc-gray-400), var(--igc-gray-a))}:host([disabled]) [part="symbols-wrapper selected"]{color:hsla(var(--igc-gray-500), var(--igc-gray-a))}`;
2
+ export const styles = css `[part=base],
3
+ :host {
4
+ gap: 0.375rem;
5
+ }
6
+
7
+ [part~=label] {
8
+ font-family: var(--ig-subtitle-2-font-family);
9
+ font-size: var(--ig-subtitle-2-font-size);
10
+ font-weight: var(--ig-subtitle-2-font-weight);
11
+ font-style: var(--ig-subtitle-2-font-style);
12
+ line-height: var(--ig-subtitle-2-line-height);
13
+ letter-spacing: var(--ig-subtitle-2-letter-spacing);
14
+ text-transform: var(--ig-subtitle-2-text-transform);
15
+ margin-top: var(--ig-subtitle-2-margin-top);
16
+ margin-bottom: var(--ig-subtitle-2-margin-bottom);
17
+ color: hsla(var(--ig-gray-900), var(--ig-gray-a));
18
+ }
19
+
20
+ [part~=value-label] {
21
+ font-family: var(--ig-body-2-font-family);
22
+ font-size: var(--ig-body-2-font-size);
23
+ font-weight: var(--ig-body-2-font-weight);
24
+ font-style: var(--ig-body-2-font-style);
25
+ line-height: var(--ig-body-2-line-height);
26
+ letter-spacing: var(--ig-body-2-letter-spacing);
27
+ text-transform: var(--ig-body-2-text-transform);
28
+ margin-top: var(--ig-body-2-margin-top);
29
+ margin-bottom: var(--ig-body-2-margin-bottom);
30
+ color: hsla(var(--ig-gray-900), var(--ig-gray-a));
31
+ }
32
+
33
+ :host([disabled]) [part~=symbols-wrapper] {
34
+ color: hsla(var(--ig-gray-200), var(--ig-gray-a));
35
+ }
36
+ :host([disabled]) [part~=value-label],
37
+ :host([disabled]) [part~=label] {
38
+ color: hsla(var(--ig-gray-400), var(--ig-gray-a));
39
+ }
40
+ :host([disabled]) [part="symbols-wrapper selected"] {
41
+ color: hsla(var(--ig-gray-500), var(--ig-gray-a));
42
+ }`;
3
43
  //# sourceMappingURL=rating.fluent.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating.fluent.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,6wCAA6wC,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`[part=base],:host{gap:.375rem}[part~=label]{font-family:var(--igc-subtitle-2-font-family);font-weight:var(--igc-subtitle-2-font-weight);font-size:var(--igc-subtitle-2-font-size);font-style:var(--igc-subtitle-2-font-style);letter-spacing:var(--igc-subtitle-2-letter-spacing);text-transform:var(--igc-subtitle-2-text-transform);line-height:var(--igc-subtitle-2-line-height);margin-top:var(--igc-subtitle-2-margin-top);margin-bottom:var(--igc-subtitle-2-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}[part~=value-label]{font-family:var(--igc-body-2-font-family);font-weight:var(--igc-body-2-font-weight);font-size:var(--igc-body-2-font-size);font-style:var(--igc-body-2-font-style);letter-spacing:var(--igc-body-2-letter-spacing);text-transform:var(--igc-body-2-text-transform);line-height:var(--igc-body-2-line-height);margin-top:var(--igc-body-2-margin-top);margin-bottom:var(--igc-body-2-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}:host([disabled]) [part~=symbols-wrapper]{color:hsla(var(--igc-gray-200), var(--igc-gray-a))}:host([disabled]) [part~=value-label],:host([disabled]) [part~=label]{color:hsla(var(--igc-gray-400), var(--igc-gray-a))}:host([disabled]) [part=\"symbols-wrapper selected\"]{color:hsla(var(--igc-gray-500), var(--igc-gray-a))}`;\n"]}
1
+ {"version":3,"file":"rating.fluent.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.fluent.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`[part=base],\n:host {\n gap: 0.375rem;\n}\n\n[part~=label] {\n font-family: var(--ig-subtitle-2-font-family);\n font-size: var(--ig-subtitle-2-font-size);\n font-weight: var(--ig-subtitle-2-font-weight);\n font-style: var(--ig-subtitle-2-font-style);\n line-height: var(--ig-subtitle-2-line-height);\n letter-spacing: var(--ig-subtitle-2-letter-spacing);\n text-transform: var(--ig-subtitle-2-text-transform);\n margin-top: var(--ig-subtitle-2-margin-top);\n margin-bottom: var(--ig-subtitle-2-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}\n\n[part~=value-label] {\n font-family: var(--ig-body-2-font-family);\n font-size: var(--ig-body-2-font-size);\n font-weight: var(--ig-body-2-font-weight);\n font-style: var(--ig-body-2-font-style);\n line-height: var(--ig-body-2-line-height);\n letter-spacing: var(--ig-body-2-letter-spacing);\n text-transform: var(--ig-body-2-text-transform);\n margin-top: var(--ig-body-2-margin-top);\n margin-bottom: var(--ig-body-2-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}\n\n:host([disabled]) [part~=symbols-wrapper] {\n color: hsla(var(--ig-gray-200), var(--ig-gray-a));\n}\n:host([disabled]) [part~=value-label],\n:host([disabled]) [part~=label] {\n color: hsla(var(--ig-gray-400), var(--ig-gray-a));\n}\n:host([disabled]) [part=\"symbols-wrapper selected\"] {\n color: hsla(var(--ig-gray-500), var(--ig-gray-a));\n}`;\n"]}
@@ -1,3 +1,35 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{gap:.3125rem}[part=base]{gap:.5rem}[part~=label]{font-family:var(--igc-body-1-font-family);font-weight:var(--igc-body-1-font-weight);font-size:var(--igc-body-1-font-size);font-style:var(--igc-body-1-font-style);letter-spacing:var(--igc-body-1-letter-spacing);text-transform:var(--igc-body-1-text-transform);line-height:var(--igc-body-1-line-height);margin-top:var(--igc-body-1-margin-top);margin-bottom:var(--igc-body-1-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}[part~=value-label]{font-family:var(--igc-body-1-font-family);font-weight:var(--igc-body-1-font-weight);font-size:var(--igc-body-1-font-size);font-style:var(--igc-body-1-font-style);letter-spacing:var(--igc-body-1-letter-spacing);text-transform:var(--igc-body-1-text-transform);line-height:var(--igc-body-1-line-height);margin-top:var(--igc-body-1-margin-top);margin-bottom:var(--igc-body-1-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}`;
2
+ export const styles = css `:host {
3
+ gap: 0.3125rem;
4
+ }
5
+
6
+ [part=base] {
7
+ gap: 0.5rem;
8
+ }
9
+
10
+ [part~=label] {
11
+ font-family: var(--ig-body-1-font-family);
12
+ font-size: var(--ig-body-1-font-size);
13
+ font-weight: var(--ig-body-1-font-weight);
14
+ font-style: var(--ig-body-1-font-style);
15
+ line-height: var(--ig-body-1-line-height);
16
+ letter-spacing: var(--ig-body-1-letter-spacing);
17
+ text-transform: var(--ig-body-1-text-transform);
18
+ margin-top: var(--ig-body-1-margin-top);
19
+ margin-bottom: var(--ig-body-1-margin-bottom);
20
+ color: hsla(var(--ig-gray-900), var(--ig-gray-a));
21
+ }
22
+
23
+ [part~=value-label] {
24
+ font-family: var(--ig-body-1-font-family);
25
+ font-size: var(--ig-body-1-font-size);
26
+ font-weight: var(--ig-body-1-font-weight);
27
+ font-style: var(--ig-body-1-font-style);
28
+ line-height: var(--ig-body-1-line-height);
29
+ letter-spacing: var(--ig-body-1-letter-spacing);
30
+ text-transform: var(--ig-body-1-text-transform);
31
+ margin-top: var(--ig-body-1-margin-top);
32
+ margin-bottom: var(--ig-body-1-margin-bottom);
33
+ color: hsla(var(--ig-gray-900), var(--ig-gray-a));
34
+ }`;
3
35
  //# sourceMappingURL=rating.indigo.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating.indigo.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,u7BAAu7B,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{gap:.3125rem}[part=base]{gap:.5rem}[part~=label]{font-family:var(--igc-body-1-font-family);font-weight:var(--igc-body-1-font-weight);font-size:var(--igc-body-1-font-size);font-style:var(--igc-body-1-font-style);letter-spacing:var(--igc-body-1-letter-spacing);text-transform:var(--igc-body-1-text-transform);line-height:var(--igc-body-1-line-height);margin-top:var(--igc-body-1-margin-top);margin-bottom:var(--igc-body-1-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}[part~=value-label]{font-family:var(--igc-body-1-font-family);font-weight:var(--igc-body-1-font-weight);font-size:var(--igc-body-1-font-size);font-style:var(--igc-body-1-font-style);letter-spacing:var(--igc-body-1-letter-spacing);text-transform:var(--igc-body-1-text-transform);line-height:var(--igc-body-1-line-height);margin-top:var(--igc-body-1-margin-top);margin-bottom:var(--igc-body-1-margin-bottom);color:hsla(var(--igc-gray-900), var(--igc-gray-a))}`;\n"]}
1
+ {"version":3,"file":"rating.indigo.css.js","sourceRoot":"","sources":["../../../src/components/rating/rating.indigo.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host {\n gap: 0.3125rem;\n}\n\n[part=base] {\n gap: 0.5rem;\n}\n\n[part~=label] {\n font-family: var(--ig-body-1-font-family);\n font-size: var(--ig-body-1-font-size);\n font-weight: var(--ig-body-1-font-weight);\n font-style: var(--ig-body-1-font-style);\n line-height: var(--ig-body-1-line-height);\n letter-spacing: var(--ig-body-1-letter-spacing);\n text-transform: var(--ig-body-1-text-transform);\n margin-top: var(--ig-body-1-margin-top);\n margin-bottom: var(--ig-body-1-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}\n\n[part~=value-label] {\n font-family: var(--ig-body-1-font-family);\n font-size: var(--ig-body-1-font-size);\n font-weight: var(--ig-body-1-font-weight);\n font-style: var(--ig-body-1-font-style);\n line-height: var(--ig-body-1-line-height);\n letter-spacing: var(--ig-body-1-letter-spacing);\n text-transform: var(--ig-body-1-text-transform);\n margin-top: var(--ig-body-1-margin-top);\n margin-bottom: var(--ig-body-1-margin-bottom);\n color: hsla(var(--ig-gray-900), var(--ig-gray-a));\n}`;\n"]}
@@ -5,14 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { html, LitElement, nothing } from 'lit';
8
- import { property, query, queryAssignedElements, queryAssignedNodes, state, } from 'lit/decorators.js';
8
+ import { property, query, queryAssignedNodes, state } from 'lit/decorators.js';
9
9
  import { ifDefined } from 'lit/directives/if-defined.js';
10
10
  import { styleMap } from 'lit/directives/style-map.js';
11
+ import { guard } from 'lit/directives/guard.js';
11
12
  import { themes } from '../../theming/theming-decorator.js';
12
13
  import { watch } from '../common/decorators/watch.js';
13
14
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
14
15
  import { SizableMixin } from '../common/mixins/sizable.js';
15
- import { clamp } from '../common/util.js';
16
+ import { clamp, isLTR } from '../common/util.js';
16
17
  import { styles } from './rating.base.css.js';
17
18
  import { styles as bootstrap } from './rating.bootstrap.css.js';
18
19
  import { styles as fluent } from './rating.fluent.css.js';
@@ -24,6 +25,7 @@ defineComponents(IgcRatingSymbolComponent, IgcIconComponent);
24
25
  let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmitterMixin(LitElement)) {
25
26
  constructor() {
26
27
  super();
28
+ this.ratingSymbols = [];
27
29
  this.hoverValue = -1;
28
30
  this.hoverState = false;
29
31
  this.max = 5;
@@ -41,9 +43,6 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
41
43
  get hasProjectedSymbols() {
42
44
  return this.ratingSymbols.length > 0;
43
45
  }
44
- get isLTR() {
45
- return (window.getComputedStyle(this).getPropertyValue('direction') === 'ltr');
46
- }
47
46
  get valueText() {
48
47
  return this.valueFormat
49
48
  ? this.valueFormat.replace(/\{0\}/gm, `${this.value}`)
@@ -102,14 +101,15 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
102
101
  return;
103
102
  }
104
103
  let result = this.value;
104
+ const ltr = isLTR(this);
105
105
  switch (key) {
106
106
  case 'ArrowUp':
107
107
  case 'ArrowRight':
108
- result += this.isLTR ? this.step : -this.step;
108
+ result += ltr ? this.step : -this.step;
109
109
  break;
110
110
  case 'ArrowDown':
111
111
  case 'ArrowLeft':
112
- result -= this.isLTR ? this.step : -this.step;
112
+ result -= ltr ? this.step : -this.step;
113
113
  break;
114
114
  case 'Home':
115
115
  result = this.step;
@@ -125,7 +125,11 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
125
125
  this.emitEvent('igcChange', { detail: this.value });
126
126
  }
127
127
  }
128
- handleSlotChange() {
128
+ handleSlotChange(event) {
129
+ const slot = event.target;
130
+ this.ratingSymbols = slot
131
+ .assignedElements()
132
+ .filter((el) => el instanceof IgcRatingSymbolComponent);
129
133
  if (this.hasProjectedSymbols) {
130
134
  this.max = this.ratingSymbols.length;
131
135
  }
@@ -133,7 +137,7 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
133
137
  }
134
138
  calcNewValue(x) {
135
139
  const { width, left, right } = this.container.getBoundingClientRect();
136
- const percent = this.isLTR ? (x - left) / width : (right - x) / width;
140
+ const percent = isLTR(this) ? (x - left) / width : (right - x) / width;
137
141
  const value = this.round(this.max * percent + this.step / 2);
138
142
  return clamp(value, this.step, this.max);
139
143
  }
@@ -145,21 +149,18 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
145
149
  value = Math.round(value / this.step) * this.step;
146
150
  return Number(value.toFixed(this.getPrecision(this.step)));
147
151
  }
148
- clipSymbol(index, direction) {
152
+ clipSymbol(index, isLTR = true) {
149
153
  const value = this.hoverState ? this.hoverValue : this.value;
150
154
  const progress = index + 1 - value;
151
155
  const exclusive = progress === 0 || this.value === index + 1 ? 0 : 1;
152
156
  const selection = this.single ? exclusive : progress;
153
157
  const activate = (p) => clamp(p * 100, 0, 100);
154
- const forward = `inset(0 ${activate(this.isLTR ? selection : 1 - selection)}% 0 0)`;
155
- const backward = `inset(0 0 0 ${activate(this.isLTR ? 1 - selection : selection)}%)`;
156
- switch (direction) {
157
- case 'backward':
158
- return this.isLTR ? backward : forward;
159
- case 'forward':
160
- default:
161
- return this.isLTR ? forward : backward;
162
- }
158
+ const forward = `inset(0 ${activate(isLTR ? selection : 1 - selection)}% 0 0)`;
159
+ const backward = `inset(0 0 0 ${activate(isLTR ? 1 - selection : selection)}%)`;
160
+ return {
161
+ backward: isLTR ? backward : forward,
162
+ forward: isLTR ? forward : backward,
163
+ };
163
164
  }
164
165
  stepUp(n = 1) {
165
166
  this.value += this.round(n * this.step);
@@ -168,17 +169,19 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
168
169
  this.value -= this.round(n * this.step);
169
170
  }
170
171
  *renderSymbols() {
172
+ const ltr = isLTR(this);
171
173
  for (let i = 0; i < this.max; i++) {
174
+ const { forward, backward } = this.clipSymbol(i, ltr);
172
175
  yield html `<igc-rating-symbol exportparts="symbol, full, empty">
173
176
  <igc-icon
174
177
  collection="internal"
175
178
  name="star"
176
- style=${styleMap({ clipPath: this.clipSymbol(i, 'forward') })}
179
+ style=${styleMap({ clipPath: forward })}
177
180
  ></igc-icon>
178
181
  <igc-icon
179
182
  collection="internal"
180
183
  name="star_border"
181
- style=${styleMap({ clipPath: this.clipSymbol(i, 'backward') })}
184
+ style=${styleMap({ clipPath: backward })}
182
185
  slot="empty"
183
186
  ></igc-icon>
184
187
  </igc-rating-symbol>`;
@@ -186,22 +189,32 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
186
189
  }
187
190
  clipProjected() {
188
191
  if (this.hasProjectedSymbols) {
192
+ const ltr = isLTR(this);
189
193
  this.ratingSymbols.forEach((symbol, i) => {
190
194
  var _a, _b;
191
195
  const full = (_a = symbol.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('[part="symbol full"]');
192
196
  const empty = (_b = symbol.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('[part="symbol empty"]');
197
+ const { forward, backward } = this.clipSymbol(i, ltr);
193
198
  if (full) {
194
- full.style.clipPath = this.clipSymbol(i, 'forward');
199
+ full.style.clipPath = forward;
195
200
  }
196
201
  if (empty) {
197
- empty.style.clipPath = this.clipSymbol(i, 'backward');
202
+ empty.style.clipPath = backward;
198
203
  }
199
204
  });
200
205
  }
201
206
  }
202
207
  render() {
203
208
  var _a;
204
- this.clipProjected();
209
+ const props = [
210
+ this.value,
211
+ this.hoverValue,
212
+ this.max,
213
+ this.step,
214
+ this.single,
215
+ this.hoverState,
216
+ this.ratingSymbols,
217
+ ];
205
218
  return html `
206
219
  <label part="label" ?hidden=${!this.label}>${this.label}</label>
207
220
  <div
@@ -223,7 +236,10 @@ let IgcRatingComponent = class IgcRatingComponent extends SizableMixin(EventEmit
223
236
  @mousemove=${this.hoverPreview ? this.handleMouseMove : nothing}
224
237
  >
225
238
  <slot @slotchange=${this.handleSlotChange}>
226
- ${this.renderSymbols()}
239
+ ${guard(props, () => {
240
+ this.clipProjected();
241
+ return this.renderSymbols();
242
+ })}
227
243
  </slot>
228
244
  </div>
229
245
  <label part="value-label" ?hidden=${this.valueLabel.length === 0}>
@@ -241,9 +257,6 @@ __decorate([
241
257
  __decorate([
242
258
  queryAssignedNodes({ slot: 'value-label', flatten: true })
243
259
  ], IgcRatingComponent.prototype, "valueLabel", void 0);
244
- __decorate([
245
- queryAssignedElements({ selector: 'igc-rating-symbol' })
246
- ], IgcRatingComponent.prototype, "ratingSymbols", void 0);
247
260
  __decorate([
248
261
  state()
249
262
  ], IgcRatingComponent.prototype, "hoverValue", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n state,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { clamp } from '../common/util.js';\nimport { styles } from './rating.base.css.js';\nimport { styles as bootstrap } from './rating.bootstrap.css.js';\nimport { styles as fluent } from './rating.fluent.css.js';\nimport { styles as indigo } from './rating.indigo.css.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport IgcIconComponent from '../icon/icon.js';\n\ndefineComponents(IgcRatingSymbolComponent, IgcIconComponent);\n\nexport interface IgcRatingEventMap {\n igcChange: CustomEvent<number>;\n igcHover: CustomEvent<number>;\n}\n\n/**\n * Rating provides insight regarding others' opinions and experiences,\n * and can allow the user to submit a rating of their own\n *\n * @element igc-rating\n *\n * @fires igcChange - Emitted when the value of the control changes.\n * @fires igcHover - Emitted when hover is enabled and the user mouses over a symbol of the rating.\n *\n * @csspart base - The main wrapper which holds all of the rating elements.\n * @csspart label - The label part.\n * @csspart value-label - The value label part.\n * @csspart symbols - A wrapper for all rating symbols.\n * @csspart symbol - The part of the encapsulated default symbol.\n * @csspart full - The part of the encapsulated full symbols.\n * @csspart empty - The part of the encapsulated empty symbols.\n *\n * @cssproperty --symbol-size - The size of the symbols.\n * @cssproperty --symbol-full-color - The color of the filled symbol.\n * @cssproperty --symbol-empty-color - The color of the empty symbol.\n * @cssproperty --symbol-full-filter - The filter(s) used for the filled symbol.\n * @cssproperty --symbol-empty-filter - The filter(s) used for the empty symbol.\n */\n@themes({ fluent, bootstrap, indigo })\nexport default class IgcRatingComponent extends SizableMixin(\n EventEmitterMixin<IgcRatingEventMap, Constructor<LitElement>>(LitElement)\n) {\n public static readonly tagName = 'igc-rating';\n\n public static styles = [styles];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: Array<Node>;\n\n @queryAssignedElements({ selector: 'igc-rating-symbol' })\n protected ratingSymbols!: Array<IgcRatingSymbolComponent>;\n\n @state()\n protected hoverValue = -1;\n\n @state()\n protected hoverState = false;\n\n protected get isInteractive() {\n return !(this.readonly || this.disabled);\n }\n\n protected get hasProjectedSymbols() {\n return this.ratingSymbols.length > 0;\n }\n\n protected get isLTR() {\n return (\n window.getComputedStyle(this).getPropertyValue('direction') === 'ltr'\n );\n }\n\n protected get valueText() {\n return this.valueFormat\n ? this.valueFormat.replace(/\\{0\\}/gm, `${this.value}`)\n : this.value;\n }\n\n /** The maximum value for the rating */\n @property({ type: Number })\n public max = 5;\n\n /** The minimum value change allowed. */\n @property({ type: Number })\n public step = 1;\n\n /** The name attribute of the control */\n @property()\n public name!: string;\n\n /** The label of the control. */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. All instances of '{0}' will be replaced\n * with the current value of the control.\n * Important for screen-readers and useful for localization.\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /** The current value of the component */\n @property({ type: Number })\n public value = 0;\n\n /** Sets the disabled state of the component */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /** Sets hover preview behavior for the component */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /** Sets the readonly state of the component */\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n /** Toggles single selection visual mode. */\n @property({ type: Boolean })\n public single = false;\n\n @watch('max')\n protected handleMaxChange() {\n this.hasProjectedSymbols\n ? (this.max = this.ratingSymbols.length)\n : (this.max = Math.max(0, this.max));\n if (this.max < this.value) {\n this.value = this.max;\n }\n }\n\n @watch('value')\n protected handleValueChange() {\n this.value = clamp(this.value, 0, this.max);\n }\n\n @watch('step')\n protected handlePrecisionChange() {\n this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;\n }\n\n @watch('single')\n protected handleSelectionChange() {\n if (this.single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n protected handleClick({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n this.value === value ? (this.value = 0) : (this.value = value);\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected handleMouseMove({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since mousemove spams a lot, only emit on a value change\n this.hoverValue = value;\n this.emitEvent('igcHover', { detail: this.hoverValue });\n }\n }\n\n protected handleMouseEnter() {\n if (this.isInteractive) {\n this.hoverState = true;\n }\n }\n\n protected handleMouseLeave() {\n if (this.isInteractive) {\n this.hoverState = false;\n }\n }\n\n protected handleKeyDown({ key }: KeyboardEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n let result = this.value;\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowRight':\n result += this.isLTR ? this.step : -this.step;\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n result -= this.isLTR ? this.step : -this.step;\n break;\n case 'Home':\n result = this.step;\n break;\n case 'End':\n result = this.max;\n break;\n default:\n return;\n }\n\n // Verify new value is in bounds and emit\n this.value = clamp(result, 0, this.max);\n\n if (result === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange() {\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n }\n this.requestUpdate();\n }\n\n protected calcNewValue(x: number) {\n const { width, left, right } = this.container.getBoundingClientRect();\n const percent = this.isLTR ? (x - left) / width : (right - x) / width;\n const value = this.round(this.max * percent + this.step / 2);\n\n return clamp(value, this.step, this.max);\n }\n\n protected getPrecision(num: number) {\n const [_, decimal] = num.toString().split('.');\n return decimal ? decimal.length : 0;\n }\n\n protected round(value: number) {\n value = Math.round(value / this.step) * this.step;\n return Number(value.toFixed(this.getPrecision(this.step)));\n }\n\n protected clipSymbol(index: number, direction: 'forward' | 'backward') {\n const value = this.hoverState ? this.hoverValue : this.value;\n const progress = index + 1 - value;\n const exclusive = progress === 0 || this.value === index + 1 ? 0 : 1;\n const selection = this.single ? exclusive : progress;\n const activate = (p: number) => clamp(p * 100, 0, 100);\n\n const forward = `inset(0 ${activate(\n this.isLTR ? selection : 1 - selection\n )}% 0 0)`;\n const backward = `inset(0 0 0 ${activate(\n this.isLTR ? 1 - selection : selection\n )}%)`;\n\n switch (direction) {\n case 'backward':\n return this.isLTR ? backward : forward;\n case 'forward':\n default:\n return this.isLTR ? forward : backward;\n }\n }\n\n /**\n * Increments the value of the control by `n` steps multiplied by the\n * step factor.\n */\n public stepUp(n = 1) {\n this.value += this.round(n * this.step);\n }\n\n /**\n * Decrements the value of the control by `n` steps multiplied by\n * the step factor.\n */\n public stepDown(n = 1) {\n this.value -= this.round(n * this.step);\n }\n\n protected *renderSymbols() {\n for (let i = 0; i < this.max; i++) {\n yield html`<igc-rating-symbol exportparts=\"symbol, full, empty\">\n <igc-icon\n collection=\"internal\"\n name=\"star\"\n style=${styleMap({ clipPath: this.clipSymbol(i, 'forward') })}\n ></igc-icon>\n <igc-icon\n collection=\"internal\"\n name=\"star_border\"\n style=${styleMap({ clipPath: this.clipSymbol(i, 'backward') })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n if (this.hasProjectedSymbols) {\n this.ratingSymbols.forEach((symbol: IgcRatingSymbolComponent, i) => {\n const full = symbol.shadowRoot?.querySelector(\n '[part=\"symbol full\"]'\n ) as HTMLElement;\n\n const empty = symbol.shadowRoot?.querySelector(\n '[part=\"symbol empty\"]'\n ) as HTMLElement;\n\n if (full) {\n full.style.clipPath = this.clipSymbol(i, 'forward');\n }\n\n if (empty) {\n empty.style.clipPath = this.clipSymbol(i, 'backward');\n }\n });\n }\n }\n\n protected override render() {\n this.clipProjected();\n\n return html`\n <label part=\"label\" ?hidden=${!this.label}>${this.label}</label>\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-label=${this.label ?? nothing}\n aria-valuemin=\"0\"\n aria-valuenow=${this.value}\n aria-valuemax=${this.max}\n aria-valuetext=${this.valueText}\n >\n <div\n aria-hidden=\"true\"\n part=\"symbols\"\n @click=${this.handleClick}\n @mouseenter=${this.hoverPreview ? this.handleMouseEnter : nothing}\n @mouseleave=${this.hoverPreview ? this.handleMouseLeave : nothing}\n @mousemove=${this.hoverPreview ? this.handleMouseMove : nothing}\n >\n <slot @slotchange=${this.handleSlotChange}>\n ${this.renderSymbols()}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${this.valueLabel.length === 0}>\n <slot name=\"value-label\"></slot>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating': IgcRatingComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query, queryAssignedNodes, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { SizableMixin } from '../common/mixins/sizable.js';\nimport { clamp, isLTR } from '../common/util.js';\nimport { styles } from './rating.base.css.js';\nimport { styles as bootstrap } from './rating.bootstrap.css.js';\nimport { styles as fluent } from './rating.fluent.css.js';\nimport { styles as indigo } from './rating.indigo.css.js';\n\nimport { defineComponents } from '../common/definitions/defineComponents.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport IgcIconComponent from '../icon/icon.js';\n\ndefineComponents(IgcRatingSymbolComponent, IgcIconComponent);\n\nexport interface IgcRatingEventMap {\n igcChange: CustomEvent<number>;\n igcHover: CustomEvent<number>;\n}\n\n/**\n * Rating provides insight regarding others' opinions and experiences,\n * and can allow the user to submit a rating of their own\n *\n * @element igc-rating\n *\n * @fires igcChange - Emitted when the value of the control changes.\n * @fires igcHover - Emitted when hover is enabled and the user mouses over a symbol of the rating.\n *\n * @csspart base - The main wrapper which holds all of the rating elements.\n * @csspart label - The label part.\n * @csspart value-label - The value label part.\n * @csspart symbols - A wrapper for all rating symbols.\n * @csspart symbol - The part of the encapsulated default symbol.\n * @csspart full - The part of the encapsulated full symbols.\n * @csspart empty - The part of the encapsulated empty symbols.\n *\n * @cssproperty --symbol-size - The size of the symbols.\n * @cssproperty --symbol-full-color - The color of the filled symbol.\n * @cssproperty --symbol-empty-color - The color of the empty symbol.\n * @cssproperty --symbol-full-filter - The filter(s) used for the filled symbol.\n * @cssproperty --symbol-empty-filter - The filter(s) used for the empty symbol.\n */\n@themes({ fluent, bootstrap, indigo })\nexport default class IgcRatingComponent extends SizableMixin(\n EventEmitterMixin<IgcRatingEventMap, Constructor<LitElement>>(LitElement)\n) {\n public static readonly tagName = 'igc-rating';\n\n public static styles = [styles];\n\n protected ratingSymbols: Array<IgcRatingSymbolComponent> = [];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: Array<Node>;\n\n @state()\n protected hoverValue = -1;\n\n @state()\n protected hoverState = false;\n\n protected get isInteractive() {\n return !(this.readonly || this.disabled);\n }\n\n protected get hasProjectedSymbols() {\n return this.ratingSymbols.length > 0;\n }\n\n protected get valueText() {\n return this.valueFormat\n ? this.valueFormat.replace(/\\{0\\}/gm, `${this.value}`)\n : this.value;\n }\n\n /** The maximum value for the rating */\n @property({ type: Number })\n public max = 5;\n\n /** The minimum value change allowed. */\n @property({ type: Number })\n public step = 1;\n\n /** The name attribute of the control */\n @property()\n public name!: string;\n\n /** The label of the control. */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. All instances of '{0}' will be replaced\n * with the current value of the control.\n * Important for screen-readers and useful for localization.\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /** The current value of the component */\n @property({ type: Number })\n public value = 0;\n\n /** Sets the disabled state of the component */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /** Sets hover preview behavior for the component */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /** Sets the readonly state of the component */\n @property({ type: Boolean, reflect: true })\n public readonly = false;\n\n /** Toggles single selection visual mode. */\n @property({ type: Boolean })\n public single = false;\n\n @watch('max')\n protected handleMaxChange() {\n this.hasProjectedSymbols\n ? (this.max = this.ratingSymbols.length)\n : (this.max = Math.max(0, this.max));\n if (this.max < this.value) {\n this.value = this.max;\n }\n }\n\n @watch('value')\n protected handleValueChange() {\n this.value = clamp(this.value, 0, this.max);\n }\n\n @watch('step')\n protected handlePrecisionChange() {\n this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;\n }\n\n @watch('single')\n protected handleSelectionChange() {\n if (this.single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n protected handleClick({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n this.value === value ? (this.value = 0) : (this.value = value);\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected handleMouseMove({ clientX }: MouseEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since mousemove spams a lot, only emit on a value change\n this.hoverValue = value;\n this.emitEvent('igcHover', { detail: this.hoverValue });\n }\n }\n\n protected handleMouseEnter() {\n if (this.isInteractive) {\n this.hoverState = true;\n }\n }\n\n protected handleMouseLeave() {\n if (this.isInteractive) {\n this.hoverState = false;\n }\n }\n\n protected handleKeyDown({ key }: KeyboardEvent) {\n if (!this.isInteractive) {\n return;\n }\n\n let result = this.value;\n const ltr = isLTR(this);\n\n switch (key) {\n case 'ArrowUp':\n case 'ArrowRight':\n result += ltr ? this.step : -this.step;\n break;\n case 'ArrowDown':\n case 'ArrowLeft':\n result -= ltr ? this.step : -this.step;\n break;\n case 'Home':\n result = this.step;\n break;\n case 'End':\n result = this.max;\n break;\n default:\n return;\n }\n\n // Verify new value is in bounds and emit\n this.value = clamp(result, 0, this.max);\n\n if (result === this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n }\n\n protected handleSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n\n this.ratingSymbols = slot\n .assignedElements()\n .filter(\n (el) => el instanceof IgcRatingSymbolComponent\n ) as IgcRatingSymbolComponent[];\n\n if (this.hasProjectedSymbols) {\n this.max = this.ratingSymbols.length;\n }\n\n this.requestUpdate();\n }\n\n protected calcNewValue(x: number) {\n const { width, left, right } = this.container.getBoundingClientRect();\n const percent = isLTR(this) ? (x - left) / width : (right - x) / width;\n const value = this.round(this.max * percent + this.step / 2);\n\n return clamp(value, this.step, this.max);\n }\n\n protected getPrecision(num: number) {\n const [_, decimal] = num.toString().split('.');\n return decimal ? decimal.length : 0;\n }\n\n protected round(value: number) {\n value = Math.round(value / this.step) * this.step;\n return Number(value.toFixed(this.getPrecision(this.step)));\n }\n\n protected clipSymbol(index: number, isLTR = true) {\n const value = this.hoverState ? this.hoverValue : this.value;\n const progress = index + 1 - value;\n const exclusive = progress === 0 || this.value === index + 1 ? 0 : 1;\n const selection = this.single ? exclusive : progress;\n const activate = (p: number) => clamp(p * 100, 0, 100);\n\n const forward = `inset(0 ${activate(\n isLTR ? selection : 1 - selection\n )}% 0 0)`;\n const backward = `inset(0 0 0 ${activate(\n isLTR ? 1 - selection : selection\n )}%)`;\n\n return {\n backward: isLTR ? backward : forward,\n forward: isLTR ? forward : backward,\n };\n }\n\n /**\n * Increments the value of the control by `n` steps multiplied by the\n * step factor.\n */\n public stepUp(n = 1) {\n this.value += this.round(n * this.step);\n }\n\n /**\n * Decrements the value of the control by `n` steps multiplied by\n * the step factor.\n */\n public stepDown(n = 1) {\n this.value -= this.round(n * this.step);\n }\n\n protected *renderSymbols() {\n const ltr = isLTR(this);\n for (let i = 0; i < this.max; i++) {\n const { forward, backward } = this.clipSymbol(i, ltr);\n yield html`<igc-rating-symbol exportparts=\"symbol, full, empty\">\n <igc-icon\n collection=\"internal\"\n name=\"star\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"internal\"\n name=\"star_border\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n if (this.hasProjectedSymbols) {\n const ltr = isLTR(this);\n this.ratingSymbols.forEach((symbol: IgcRatingSymbolComponent, i) => {\n const full = symbol.shadowRoot?.querySelector(\n '[part=\"symbol full\"]'\n ) as HTMLElement;\n\n const empty = symbol.shadowRoot?.querySelector(\n '[part=\"symbol empty\"]'\n ) as HTMLElement;\n const { forward, backward } = this.clipSymbol(i, ltr);\n\n if (full) {\n full.style.clipPath = forward;\n }\n\n if (empty) {\n empty.style.clipPath = backward;\n }\n });\n }\n }\n\n protected override render() {\n const props = [\n this.value,\n this.hoverValue,\n this.max,\n this.step,\n this.single,\n this.hoverState,\n this.ratingSymbols,\n ];\n\n return html`\n <label part=\"label\" ?hidden=${!this.label}>${this.label}</label>\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-label=${this.label ?? nothing}\n aria-valuemin=\"0\"\n aria-valuenow=${this.value}\n aria-valuemax=${this.max}\n aria-valuetext=${this.valueText}\n >\n <div\n aria-hidden=\"true\"\n part=\"symbols\"\n @click=${this.handleClick}\n @mouseenter=${this.hoverPreview ? this.handleMouseEnter : nothing}\n @mouseleave=${this.hoverPreview ? this.handleMouseLeave : nothing}\n @mousemove=${this.hoverPreview ? this.handleMouseMove : nothing}\n >\n <slot @slotchange=${this.handleSlotChange}>\n ${guard(props, () => {\n this.clipProjected();\n return this.renderSymbols();\n })}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${this.valueLabel.length === 0}>\n <slot name=\"value-label\"></slot>\n </label>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating': IgcRatingComponent;\n }\n}\n"]}
@@ -21,7 +21,7 @@ export default class IgcRippleComponent extends LitElement {
21
21
  borderRadius: '50%',
22
22
  top: `${top}px`,
23
23
  left: `${left}px`,
24
- background: 'var(--color, hsl(var(--igc-gray-800)))',
24
+ background: 'var(--color, hsl(var(--ig-gray-800)))',
25
25
  };
26
26
  const frames = [
27
27
  { opacity: 0.5, transform: 'scale(.3)' },
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAQlD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,UAAU;IAKxD;QACE,KAAK,EAAE,CAAC;QAIF,YAAO,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAc,EAAE,EAAE;;YACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAiC;gBAC3C,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,QAAQ;gBACzB,SAAS,EAAE,+BAA+B;gBAC1C,UAAU,EAAE,oBAAoB;gBAChC,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,GAAG,MAAM,IAAI;gBACpB,MAAM,EAAE,GAAG,MAAM,IAAI;gBACrB,YAAY,EAAE,KAAK;gBACnB,GAAG,EAAE,GAAG,GAAG,IAAI;gBACf,IAAI,EAAE,GAAG,IAAI,IAAI;gBACjB,UAAU,EAAE,wCAAwC;aACrD,CAAC;YACF,MAAM,MAAM,GAAe;gBACzB,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE;gBACxC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;aACtC,CAAC;YACF,MAAM,IAAI,GAA6B;gBACrC,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,QAAQ;aACjB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACrC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC;QApCA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAqCO,aAAa,CAAC,CAAS,EAAE,CAAS;QACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,aAAa,CAAC;IAC3B,CAAC;;AAtDsB,0BAAO,GAAG,YAAY,CAAC;AAEvB,yBAAM,GAAG,MAAM,CAAC","sourcesContent":["import { html, LitElement } from 'lit';\nimport { styles } from './ripple.material.css.js';\n\n/**\n * A ripple can be applied to an element to represent\n * interactive surface.\n *\n * @element igc-ripple\n */\nexport default class IgcRippleComponent extends LitElement {\n public static readonly tagName = 'igc-ripple';\n\n public static override styles = styles;\n\n constructor() {\n super();\n this.addEventListener('mousedown', this.handler);\n }\n\n private handler = ({ clientX, clientY }: MouseEvent) => {\n const element = document.createElement('span');\n const { radius, top, left } = this.getDimensions(clientX, clientY);\n\n const styles: Partial<CSSStyleDeclaration> = {\n position: 'absolute',\n display: 'block',\n pointerEvents: 'none',\n transformOrigin: 'center',\n transform: `translate3d(0, 0, 0) scale(0)`,\n willChange: 'opacity, transform',\n margin: `0 !important`,\n border: 'none !important',\n width: `${radius}px`,\n height: `${radius}px`,\n borderRadius: '50%',\n top: `${top}px`,\n left: `${left}px`,\n background: 'var(--color, hsl(var(--igc-gray-800)))',\n };\n const frames: Keyframe[] = [\n { opacity: 0.5, transform: 'scale(.3)' },\n { opacity: 0, transform: 'scale(2)' },\n ];\n const opts: KeyframeAnimationOptions = {\n duration: 600, // --igc-ripple-duration,\n fill: 'forwards',\n easing: 'linear', // --igc-ripple-easing\n };\n\n Object.assign(element.style, styles);\n this.shadowRoot?.appendChild(element);\n element.animate(frames, opts).finished.then(() => element.remove());\n };\n\n private getDimensions(x: number, y: number) {\n const { width, height, left, top } = this.getBoundingClientRect();\n const radius = Math.max(width, height);\n const _left = Math.round(x - left - radius / 2);\n const _top = Math.round(y - top - radius / 2);\n return { radius, top: _top, left: _left };\n }\n\n protected override render() {\n return html`<div></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-ripple': IgcRippleComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"ripple.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAQlD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,UAAU;IAKxD;QACE,KAAK,EAAE,CAAC;QAIF,YAAO,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAc,EAAE,EAAE;;YACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEnE,MAAM,MAAM,GAAiC;gBAC3C,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,OAAO;gBAChB,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,QAAQ;gBACzB,SAAS,EAAE,+BAA+B;gBAC1C,UAAU,EAAE,oBAAoB;gBAChC,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,GAAG,MAAM,IAAI;gBACpB,MAAM,EAAE,GAAG,MAAM,IAAI;gBACrB,YAAY,EAAE,KAAK;gBACnB,GAAG,EAAE,GAAG,GAAG,IAAI;gBACf,IAAI,EAAE,GAAG,IAAI,IAAI;gBACjB,UAAU,EAAE,uCAAuC;aACpD,CAAC;YACF,MAAM,MAAM,GAAe;gBACzB,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE;gBACxC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;aACtC,CAAC;YACF,MAAM,IAAI,GAA6B;gBACrC,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,QAAQ;aACjB,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACrC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC;QApCA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAqCO,aAAa,CAAC,CAAS,EAAE,CAAS;QACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA,aAAa,CAAC;IAC3B,CAAC;;AAtDsB,0BAAO,GAAG,YAAY,CAAC;AAEvB,yBAAM,GAAG,MAAM,CAAC","sourcesContent":["import { html, LitElement } from 'lit';\nimport { styles } from './ripple.material.css.js';\n\n/**\n * A ripple can be applied to an element to represent\n * interactive surface.\n *\n * @element igc-ripple\n */\nexport default class IgcRippleComponent extends LitElement {\n public static readonly tagName = 'igc-ripple';\n\n public static override styles = styles;\n\n constructor() {\n super();\n this.addEventListener('mousedown', this.handler);\n }\n\n private handler = ({ clientX, clientY }: MouseEvent) => {\n const element = document.createElement('span');\n const { radius, top, left } = this.getDimensions(clientX, clientY);\n\n const styles: Partial<CSSStyleDeclaration> = {\n position: 'absolute',\n display: 'block',\n pointerEvents: 'none',\n transformOrigin: 'center',\n transform: `translate3d(0, 0, 0) scale(0)`,\n willChange: 'opacity, transform',\n margin: `0 !important`,\n border: 'none !important',\n width: `${radius}px`,\n height: `${radius}px`,\n borderRadius: '50%',\n top: `${top}px`,\n left: `${left}px`,\n background: 'var(--color, hsl(var(--ig-gray-800)))',\n };\n const frames: Keyframe[] = [\n { opacity: 0.5, transform: 'scale(.3)' },\n { opacity: 0, transform: 'scale(2)' },\n ];\n const opts: KeyframeAnimationOptions = {\n duration: 600, // --igc-ripple-duration,\n fill: 'forwards',\n easing: 'linear', // --igc-ripple-easing\n };\n\n Object.assign(element.style, styles);\n this.shadowRoot?.appendChild(element);\n element.animate(frames, opts).finished.then(() => element.remove());\n };\n\n private getDimensions(x: number, y: number) {\n const { width, height, left, top } = this.getBoundingClientRect();\n const radius = Math.max(width, height);\n const _left = Math.round(x - left - radius / 2);\n const _top = Math.round(y - top - radius / 2);\n return { radius, top: _top, left: _left };\n }\n\n protected override render() {\n return html`<div></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-ripple': IgcRippleComponent;\n }\n}\n"]}
@@ -1,3 +1,38 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--scrolbar-size, 0.875rem);scrollbar-color:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--scrolbar-size, 0.875rem);height:var(--scrolbar-size, 0.875rem);background:var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host ::-webkit-scrollbar-thumb{background:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a)))}[hidden]{display:none !important}:host{position:absolute;display:block;width:100%;height:100%;top:0;left:0;contain:content;overflow:hidden}`;
2
+ export const styles = css `:host {
3
+ position: relative;
4
+ -webkit-box-sizing: border-box;
5
+ box-sizing: border-box;
6
+ scrollbar-width: var(--scrolbar-size, 0.875rem);
7
+ scrollbar-color: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
8
+ }
9
+ :host *,
10
+ :host *::before,
11
+ :host *::after {
12
+ -webkit-box-sizing: border-box;
13
+ box-sizing: border-box;
14
+ }
15
+ :host ::-webkit-scrollbar {
16
+ width: var(--scrolbar-size, 0.875rem);
17
+ height: var(--scrolbar-size, 0.875rem);
18
+ background: var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));
19
+ }
20
+ :host ::-webkit-scrollbar-thumb {
21
+ background: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a)));
22
+ }
23
+
24
+ [hidden] {
25
+ display: none !important;
26
+ }
27
+
28
+ :host {
29
+ position: absolute;
30
+ display: block;
31
+ width: 100%;
32
+ height: 100%;
33
+ top: 0;
34
+ left: 0;
35
+ contain: content;
36
+ overflow: hidden;
37
+ }`;
3
38
  //# sourceMappingURL=ripple.material.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.material.css.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.material.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,00BAA00B,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;scrollbar-width:var(--scrolbar-size, 0.875rem);scrollbar-color:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host *,:host *::before,:host *::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host ::-webkit-scrollbar{width:var(--scrolbar-size, 0.875rem);height:var(--scrolbar-size, 0.875rem);background:var(--igc-scrollbar-track-color, hsla(var(--igc-gray-200), var(--igc-gray-a)))}:host ::-webkit-scrollbar-thumb{background:var(--igc-scrollbar-thumb-color, hsla(var(--igc-gray-400), var(--igc-gray-a)))}[hidden]{display:none !important}:host{position:absolute;display:block;width:100%;height:100%;top:0;left:0;contain:content;overflow:hidden}`;\n"]}
1
+ {"version":3,"file":"ripple.material.css.js","sourceRoot":"","sources":["../../../src/components/ripple/ripple.material.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCvB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host {\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n scrollbar-width: var(--scrolbar-size, 0.875rem);\n scrollbar-color: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a))) var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));\n}\n:host *,\n:host *::before,\n:host *::after {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n:host ::-webkit-scrollbar {\n width: var(--scrolbar-size, 0.875rem);\n height: var(--scrolbar-size, 0.875rem);\n background: var(--igc-scrollbar-track-color, hsla(var(--ig-gray-200), var(--ig-gray-a)));\n}\n:host ::-webkit-scrollbar-thumb {\n background: var(--igc-scrollbar-thumb-color, hsla(var(--ig-gray-400), var(--ig-gray-a)));\n}\n\n[hidden] {\n display: none !important;\n}\n\n:host {\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n contain: content;\n overflow: hidden;\n}`;\n"]}
@@ -104,7 +104,6 @@ export declare class IgcSliderBaseComponent extends LitElement {
104
104
  protected emitChangeEvent(): void;
105
105
  private get actualMin();
106
106
  private get actualMax();
107
- private get isLTR();
108
107
  protected validateValue(value: number): number;
109
108
  private formatValue;
110
109
  private normalizeByStep;
@@ -19,6 +19,7 @@ import { styles as material } from './themes/light/slider.material.css.js';
19
19
  import { defineComponents } from '../common/definitions/defineComponents.js';
20
20
  import IgcSliderLabelComponent from './slider-label.js';
21
21
  import { blazorDeepImport } from '../common/decorators/blazorDeepImport.js';
22
+ import { isLTR } from '../common/util.js';
22
23
  defineComponents(IgcSliderLabelComponent);
23
24
  let IgcSliderBaseComponent = class IgcSliderBaseComponent extends LitElement {
24
25
  constructor() {
@@ -69,12 +70,13 @@ let IgcSliderBaseComponent = class IgcSliderBaseComponent extends LitElement {
69
70
  let increment = 0;
70
71
  const value = this.activeValue;
71
72
  const step = this.step ? this.step : 1;
73
+ const ltr = isLTR(this);
72
74
  switch (key) {
73
75
  case 'ArrowLeft':
74
- increment += this.isLTR ? -step : step;
76
+ increment += ltr ? -step : step;
75
77
  break;
76
78
  case 'ArrowRight':
77
- increment += this.isLTR ? step : -step;
79
+ increment += ltr ? step : -step;
78
80
  break;
79
81
  case 'ArrowUp':
80
82
  increment = step;
@@ -222,10 +224,6 @@ let IgcSliderBaseComponent = class IgcSliderBaseComponent extends LitElement {
222
224
  ? this.upperBound
223
225
  : this.max;
224
226
  }
225
- get isLTR() {
226
- const styles = window.getComputedStyle(this);
227
- return styles.getPropertyValue('direction') === 'ltr';
228
- }
229
227
  validateValue(value) {
230
228
  value = this.valueInRange(value, this.actualMin, this.actualMax);
231
229
  value = this.normalizeByStep(value);
@@ -301,7 +299,7 @@ let IgcSliderBaseComponent = class IgcSliderBaseComponent extends LitElement {
301
299
  const thumbCenter = (thumbBoundaries.right - thumbBoundaries.left) / 2;
302
300
  const thumbPositionX = thumbBoundaries.left + thumbCenter;
303
301
  const scale = this.getBoundingClientRect().width / (this.max - this.min);
304
- const change = this.isLTR
302
+ const change = isLTR(this)
305
303
  ? mouseX - thumbPositionX
306
304
  : thumbPositionX - mouseX;
307
305
  if (this.step) {