igniteui-webcomponents 5.1.1 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/components/avatar/themes/avatar.base.css.js +1 -1
  3. package/components/avatar/themes/avatar.base.css.js.map +1 -1
  4. package/components/avatar/themes/dark/avatar.bootstrap.css.js +1 -1
  5. package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -1
  6. package/components/avatar/themes/light/avatar.bootstrap.css.js +1 -1
  7. package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
  8. package/components/avatar/themes/light/avatar.shared.css.js +1 -1
  9. package/components/avatar/themes/light/avatar.shared.css.js.map +1 -1
  10. package/components/avatar/themes/shared/avatar.common.css.js +1 -1
  11. package/components/avatar/themes/shared/avatar.common.css.js.map +1 -1
  12. package/components/avatar/themes/shared/avatar.indigo.css.js +1 -1
  13. package/components/avatar/themes/shared/avatar.indigo.css.js.map +1 -1
  14. package/components/badge/themes/badge.base.css.js +1 -1
  15. package/components/badge/themes/badge.base.css.js.map +1 -1
  16. package/components/badge/themes/dark/badge.bootstrap.css.js +1 -1
  17. package/components/badge/themes/dark/badge.bootstrap.css.js.map +1 -1
  18. package/components/badge/themes/dark/badge.indigo.css.js +1 -1
  19. package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
  20. package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
  21. package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
  22. package/components/badge/themes/light/badge.indigo.css.js +1 -1
  23. package/components/badge/themes/light/badge.indigo.css.js.map +1 -1
  24. package/components/badge/themes/light/badge.shared.css.js +1 -1
  25. package/components/badge/themes/light/badge.shared.css.js.map +1 -1
  26. package/components/badge/themes/shared/badge.common.css.js +1 -1
  27. package/components/badge/themes/shared/badge.common.css.js.map +1 -1
  28. package/components/badge/themes/shared/badge.indigo.css.js +1 -1
  29. package/components/badge/themes/shared/badge.indigo.css.js.map +1 -1
  30. package/components/button/themes/button/button.base.css.js +1 -1
  31. package/components/button/themes/button/button.base.css.js.map +1 -1
  32. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  33. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  34. package/components/button-group/button-group.js +2 -2
  35. package/components/button-group/button-group.js.map +1 -1
  36. package/components/button-group/themes/button.base.css.js +1 -1
  37. package/components/button-group/themes/button.base.css.js.map +1 -1
  38. package/components/button-group/themes/group.base.css.js +1 -1
  39. package/components/button-group/themes/group.base.css.js.map +1 -1
  40. package/components/calendar/base.d.ts +7 -7
  41. package/components/calendar/base.js +23 -16
  42. package/components/calendar/base.js.map +1 -1
  43. package/components/calendar/calendar.js.map +1 -1
  44. package/components/calendar/helpers.d.ts +28 -3
  45. package/components/calendar/helpers.js +36 -11
  46. package/components/calendar/helpers.js.map +1 -1
  47. package/components/calendar/themes/calendar.base.css.js +1 -1
  48. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  49. package/components/card/themes/card.actions.base.css.js +1 -1
  50. package/components/card/themes/card.actions.base.css.js.map +1 -1
  51. package/components/card/themes/card.content.base.css.js +1 -1
  52. package/components/card/themes/card.content.base.css.js.map +1 -1
  53. package/components/card/themes/card.header.base.css.js +1 -1
  54. package/components/card/themes/card.header.base.css.js.map +1 -1
  55. package/components/card/themes/card.media.base.css.js +1 -1
  56. package/components/card/themes/card.media.base.css.js.map +1 -1
  57. package/components/card/themes/container.base.css.js +1 -1
  58. package/components/card/themes/container.base.css.js.map +1 -1
  59. package/components/card/themes/dark/card.fluent.css.js +1 -1
  60. package/components/card/themes/dark/card.fluent.css.js.map +1 -1
  61. package/components/card/themes/light/container/card.fluent.css.js +1 -1
  62. package/components/card/themes/light/container/card.fluent.css.js.map +1 -1
  63. package/components/carousel/carousel.d.ts +10 -6
  64. package/components/carousel/carousel.js +16 -7
  65. package/components/carousel/carousel.js.map +1 -1
  66. package/components/carousel/themes/carousel-indicator-container.base.css.js +1 -1
  67. package/components/carousel/themes/carousel-indicator-container.base.css.js.map +1 -1
  68. package/components/carousel/themes/carousel-indicator.base.css.js +1 -1
  69. package/components/carousel/themes/carousel-indicator.base.css.js.map +1 -1
  70. package/components/carousel/themes/carousel-slide.base.css.js +1 -1
  71. package/components/carousel/themes/carousel-slide.base.css.js.map +1 -1
  72. package/components/carousel/themes/carousel.base.css.js +1 -1
  73. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  74. package/components/checkbox/checkbox-base.d.ts +3 -1
  75. package/components/checkbox/checkbox-base.js +14 -10
  76. package/components/checkbox/checkbox-base.js.map +1 -1
  77. package/components/checkbox/checkbox.js +1 -2
  78. package/components/checkbox/checkbox.js.map +1 -1
  79. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  80. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  81. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  82. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  83. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js +1 -1
  84. package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js.map +1 -1
  85. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js +1 -1
  86. package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js.map +1 -1
  87. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js +1 -1
  88. package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js.map +1 -1
  89. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js +1 -1
  90. package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
  91. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  92. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  93. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  94. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  95. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  96. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  97. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  98. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  99. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  100. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  101. package/components/checkbox/themes/switch.base.css.js +1 -1
  102. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  103. package/components/chip/themes/chip.base.css.js +1 -1
  104. package/components/chip/themes/chip.base.css.js.map +1 -1
  105. package/components/combo/combo-item.d.ts +4 -2
  106. package/components/combo/combo-item.js +19 -16
  107. package/components/combo/combo-item.js.map +1 -1
  108. package/components/combo/combo.d.ts +52 -41
  109. package/components/combo/combo.js +340 -339
  110. package/components/combo/combo.js.map +1 -1
  111. package/components/combo/controllers/data.d.ts +3 -1
  112. package/components/combo/controllers/data.js +9 -2
  113. package/components/combo/controllers/data.js.map +1 -1
  114. package/components/combo/controllers/navigation.d.ts +3 -1
  115. package/components/combo/controllers/navigation.js +4 -3
  116. package/components/combo/controllers/navigation.js.map +1 -1
  117. package/components/combo/controllers/selection.d.ts +14 -6
  118. package/components/combo/controllers/selection.js +66 -59
  119. package/components/combo/controllers/selection.js.map +1 -1
  120. package/components/combo/themes/combo-header.base.css.js +1 -1
  121. package/components/combo/themes/combo-header.base.css.js.map +1 -1
  122. package/components/combo/themes/combo-item.base.css.js +1 -1
  123. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  124. package/components/combo/themes/combo.base.css.js +1 -1
  125. package/components/combo/themes/combo.base.css.js.map +1 -1
  126. package/components/common/controllers/mutation-observer.d.ts +6 -2
  127. package/components/common/controllers/mutation-observer.js +2 -2
  128. package/components/common/controllers/mutation-observer.js.map +1 -1
  129. package/components/common/mixins/alert.js.map +1 -1
  130. package/components/common/mixins/combo-box.js.map +1 -1
  131. package/components/common/mixins/forms/associated.js +41 -39
  132. package/components/common/mixins/forms/associated.js.map +1 -1
  133. package/components/common/mixins/forms/form-value.d.ts +32 -0
  134. package/components/common/mixins/forms/form-value.js +59 -0
  135. package/components/common/mixins/forms/form-value.js.map +1 -0
  136. package/components/common/mixins/forms/types.d.ts +9 -8
  137. package/components/common/mixins/forms/types.js.map +1 -1
  138. package/components/common/util.d.ts +3 -0
  139. package/components/common/util.js +13 -0
  140. package/components/common/util.js.map +1 -1
  141. package/components/common/validators.d.ts +7 -7
  142. package/components/common/validators.js +24 -17
  143. package/components/common/validators.js.map +1 -1
  144. package/components/date-picker/date-picker.d.ts +17 -14
  145. package/components/date-picker/date-picker.js +30 -20
  146. package/components/date-picker/date-picker.js.map +1 -1
  147. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  148. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  149. package/components/date-picker/validators.js +2 -2
  150. package/components/date-picker/validators.js.map +1 -1
  151. package/components/date-time-input/date-time-input.d.ts +9 -6
  152. package/components/date-time-input/date-time-input.js +33 -30
  153. package/components/date-time-input/date-time-input.js.map +1 -1
  154. package/components/date-time-input/date-util.js +2 -12
  155. package/components/date-time-input/date-util.js.map +1 -1
  156. package/components/date-time-input/validators.js +2 -2
  157. package/components/date-time-input/validators.js.map +1 -1
  158. package/components/dialog/themes/dialog.base.css.js +1 -1
  159. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  160. package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
  161. package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
  162. package/components/divider/themes/divider.base.css.js +1 -1
  163. package/components/divider/themes/divider.base.css.js.map +1 -1
  164. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  165. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  166. package/components/dropdown/themes/dropdown-header.base.css.js +1 -1
  167. package/components/dropdown/themes/dropdown-header.base.css.js.map +1 -1
  168. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  169. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  170. package/components/dropdown/themes/dropdown.base.css.js +1 -1
  171. package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
  172. package/components/dropdown/themes/header.js +7 -0
  173. package/components/dropdown/themes/header.js.map +1 -1
  174. package/components/dropdown/themes/shared/dropdown.bootstrap.css.js +1 -1
  175. package/components/dropdown/themes/shared/dropdown.bootstrap.css.js.map +1 -1
  176. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.d.ts +1 -0
  177. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.js +3 -0
  178. package/components/dropdown/themes/shared/header/dropdown-header.fluent.css.js.map +1 -0
  179. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  180. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  181. package/components/icon/icon-state.broadcast.d.ts +1 -0
  182. package/components/icon/icon-state.broadcast.js +4 -1
  183. package/components/icon/icon-state.broadcast.js.map +1 -1
  184. package/components/icon/registry/types.d.ts +1 -0
  185. package/components/icon/registry/types.js.map +1 -1
  186. package/components/icon/themes/icon.base.css.js +1 -1
  187. package/components/icon/themes/icon.base.css.js.map +1 -1
  188. package/components/input/input-base.js +8 -2
  189. package/components/input/input-base.js.map +1 -1
  190. package/components/input/input.d.ts +21 -9
  191. package/components/input/input.js +59 -32
  192. package/components/input/input.js.map +1 -1
  193. package/components/input/themes/input.base.css.js +1 -1
  194. package/components/input/themes/input.base.css.js.map +1 -1
  195. package/components/input/themes/shared/input.common.css.js +1 -1
  196. package/components/input/themes/shared/input.common.css.js.map +1 -1
  197. package/components/input/themes/shared/input.indigo.css.js +1 -1
  198. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  199. package/components/input/themes/shared/input.material.css.js +1 -1
  200. package/components/input/themes/shared/input.material.css.js.map +1 -1
  201. package/components/list/themes/container.base.css.js +1 -1
  202. package/components/list/themes/container.base.css.js.map +1 -1
  203. package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
  204. package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
  205. package/components/list/themes/dark/container/list.fluent.css.js +1 -1
  206. package/components/list/themes/dark/container/list.fluent.css.js.map +1 -1
  207. package/components/list/themes/dark/container/list.indigo.css.js +1 -1
  208. package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
  209. package/components/list/themes/dark/container/list.material.css.js +1 -1
  210. package/components/list/themes/dark/container/list.material.css.js.map +1 -1
  211. package/components/list/themes/dark/header/list-header.bootstrap.css.js +1 -1
  212. package/components/list/themes/dark/header/list-header.bootstrap.css.js.map +1 -1
  213. package/components/list/themes/dark/header/list-header.fluent.css.js +1 -1
  214. package/components/list/themes/dark/header/list-header.fluent.css.js.map +1 -1
  215. package/components/list/themes/dark/header/list-header.indigo.css.js +1 -1
  216. package/components/list/themes/dark/header/list-header.indigo.css.js.map +1 -1
  217. package/components/list/themes/dark/header/list-header.material.css.js +1 -1
  218. package/components/list/themes/dark/header/list-header.material.css.js.map +1 -1
  219. package/components/list/themes/dark/item/list-item.bootstrap.css.js +1 -1
  220. package/components/list/themes/dark/item/list-item.bootstrap.css.js.map +1 -1
  221. package/components/list/themes/dark/item/list-item.fluent.css.js +1 -1
  222. package/components/list/themes/dark/item/list-item.fluent.css.js.map +1 -1
  223. package/components/list/themes/dark/item/list-item.indigo.css.js +1 -1
  224. package/components/list/themes/dark/item/list-item.indigo.css.js.map +1 -1
  225. package/components/list/themes/dark/item/list-item.material.css.js +1 -1
  226. package/components/list/themes/dark/item/list-item.material.css.js.map +1 -1
  227. package/components/list/themes/item.base.css.js +1 -1
  228. package/components/list/themes/item.base.css.js.map +1 -1
  229. package/components/list/themes/light/container/list.fluent.css.js +1 -1
  230. package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
  231. package/components/list/themes/light/container/list.indigo.css.js +1 -1
  232. package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
  233. package/components/list/themes/light/container/list.shared.css.js +1 -1
  234. package/components/list/themes/light/container/list.shared.css.js.map +1 -1
  235. package/components/list/themes/light/header/list-header.fluent.css.js +1 -1
  236. package/components/list/themes/light/header/list-header.fluent.css.js.map +1 -1
  237. package/components/list/themes/light/header/list-header.indigo.css.js +1 -1
  238. package/components/list/themes/light/header/list-header.indigo.css.js.map +1 -1
  239. package/components/list/themes/light/item/list-item.fluent.css.js +1 -1
  240. package/components/list/themes/light/item/list-item.fluent.css.js.map +1 -1
  241. package/components/list/themes/light/item/list-item.indigo.css.js +1 -1
  242. package/components/list/themes/light/item/list-item.indigo.css.js.map +1 -1
  243. package/components/list/themes/shared/container/list.indigo.css.js +1 -1
  244. package/components/list/themes/shared/container/list.indigo.css.js.map +1 -1
  245. package/components/list/themes/shared/item/list-item.common.css.js +1 -1
  246. package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
  247. package/components/list/themes/shared/item/list-item.fluent.css.js +1 -1
  248. package/components/list/themes/shared/item/list-item.fluent.css.js.map +1 -1
  249. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  250. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  251. package/components/mask-input/mask-input.d.ts +5 -3
  252. package/components/mask-input/mask-input.js +35 -23
  253. package/components/mask-input/mask-input.js.map +1 -1
  254. package/components/nav-drawer/themes/container.base.css.js +1 -1
  255. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  256. package/components/nav-drawer/themes/header-item.base.css.js +1 -1
  257. package/components/nav-drawer/themes/header-item.base.css.js.map +1 -1
  258. package/components/nav-drawer/themes/item.base.css.js +1 -1
  259. package/components/nav-drawer/themes/item.base.css.js.map +1 -1
  260. package/components/navbar/themes/navbar.base.css.js +1 -1
  261. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  262. package/components/popover/themes/light/popover.base.css.js +1 -1
  263. package/components/popover/themes/light/popover.base.css.js.map +1 -1
  264. package/components/progress/base.d.ts +11 -12
  265. package/components/progress/base.js +59 -70
  266. package/components/progress/base.js.map +1 -1
  267. package/components/progress/circular-progress.d.ts +0 -1
  268. package/components/progress/circular-progress.js +15 -15
  269. package/components/progress/circular-progress.js.map +1 -1
  270. package/components/progress/linear-progress.js +7 -13
  271. package/components/progress/linear-progress.js.map +1 -1
  272. package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
  273. package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
  274. package/components/progress/themes/circular/shared/circular.progress.bootstrap.css.js +1 -1
  275. package/components/progress/themes/circular/shared/circular.progress.bootstrap.css.js.map +1 -1
  276. package/components/progress/themes/circular/shared/circular.progress.common.css.js +1 -1
  277. package/components/progress/themes/circular/shared/circular.progress.common.css.js.map +1 -1
  278. package/components/progress/themes/circular/shared/circular.progress.fluent.css.js +1 -1
  279. package/components/progress/themes/circular/shared/circular.progress.fluent.css.js.map +1 -1
  280. package/components/progress/themes/circular/shared/circular.progress.indigo.css.js +1 -1
  281. package/components/progress/themes/circular/shared/circular.progress.indigo.css.js.map +1 -1
  282. package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
  283. package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
  284. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +1 -1
  285. package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -1
  286. package/components/progress/themes/linear/shared/linear.progress.common.css.js +1 -1
  287. package/components/progress/themes/linear/shared/linear.progress.common.css.js.map +1 -1
  288. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
  289. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
  290. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
  291. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
  292. package/components/radio/radio.d.ts +4 -3
  293. package/components/radio/radio.js +48 -33
  294. package/components/radio/radio.js.map +1 -1
  295. package/components/radio/themes/radio.base.css.js +1 -1
  296. package/components/radio/themes/radio.base.css.js.map +1 -1
  297. package/components/radio-group/radio-group.base.css.js +1 -1
  298. package/components/radio-group/radio-group.base.css.js.map +1 -1
  299. package/components/radio-group/radio-group.d.ts +4 -0
  300. package/components/radio-group/radio-group.js +18 -0
  301. package/components/radio-group/radio-group.js.map +1 -1
  302. package/components/rating/rating-symbol.js +2 -2
  303. package/components/rating/rating-symbol.js.map +1 -1
  304. package/components/rating/rating.d.ts +25 -17
  305. package/components/rating/rating.js +47 -43
  306. package/components/rating/rating.js.map +1 -1
  307. package/components/rating/themes/rating-symbol.base.css.js +1 -1
  308. package/components/rating/themes/rating-symbol.base.css.js.map +1 -1
  309. package/components/rating/themes/rating.base.css.js +1 -1
  310. package/components/rating/themes/rating.base.css.js.map +1 -1
  311. package/components/ripple/ripple.material.css.js +1 -1
  312. package/components/ripple/ripple.material.css.js.map +1 -1
  313. package/components/select/select.d.ts +7 -9
  314. package/components/select/select.js +29 -31
  315. package/components/select/select.js.map +1 -1
  316. package/components/select/themes/select.base.css.js +1 -1
  317. package/components/select/themes/select.base.css.js.map +1 -1
  318. package/components/slider/slider-base.d.ts +0 -1
  319. package/components/slider/slider-base.js +0 -4
  320. package/components/slider/slider-base.js.map +1 -1
  321. package/components/slider/slider.d.ts +3 -2
  322. package/components/slider/slider.js +9 -9
  323. package/components/slider/slider.js.map +1 -1
  324. package/components/slider/themes/slider.base.css.js +1 -1
  325. package/components/slider/themes/slider.base.css.js.map +1 -1
  326. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  327. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  328. package/components/stepper/step.d.ts +1 -1
  329. package/components/stepper/step.js.map +1 -1
  330. package/components/stepper/themes/step/step.base.css.js +1 -1
  331. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  332. package/components/stepper/themes/stepper/stepper.base.css.js +1 -1
  333. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  334. package/components/tabs/tabs.js +7 -4
  335. package/components/tabs/tabs.js.map +1 -1
  336. package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
  337. package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
  338. package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
  339. package/components/tabs/themes/dark/tab.fluent.css.js.map +1 -1
  340. package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
  341. package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
  342. package/components/tabs/themes/dark/tab.material.css.js +1 -1
  343. package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
  344. package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
  345. package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
  346. package/components/tabs/themes/light/tab.fluent.css.js +1 -1
  347. package/components/tabs/themes/light/tab.fluent.css.js.map +1 -1
  348. package/components/tabs/themes/light/tab.indigo.css.js +1 -1
  349. package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
  350. package/components/tabs/themes/tab.base.css.js +1 -1
  351. package/components/tabs/themes/tab.base.css.js.map +1 -1
  352. package/components/tabs/themes/tabs.base.css.js +1 -1
  353. package/components/tabs/themes/tabs.base.css.js.map +1 -1
  354. package/components/textarea/textarea.d.ts +5 -4
  355. package/components/textarea/textarea.js +15 -8
  356. package/components/textarea/textarea.js.map +1 -1
  357. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  358. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  359. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  360. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  361. package/components/textarea/themes/textarea.base.css.js +1 -1
  362. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  363. package/components/toast/themes/toast.base.css.js +1 -1
  364. package/components/toast/themes/toast.base.css.js.map +1 -1
  365. package/components/tree/themes/container.base.css.js +1 -1
  366. package/components/tree/themes/container.base.css.js.map +1 -1
  367. package/components/tree/themes/shared/item.material.css.js +1 -1
  368. package/components/tree/themes/shared/item.material.css.js.map +1 -1
  369. package/custom-elements.json +2243 -1959
  370. package/igniteui-webcomponents.html-data.json +1 -1
  371. package/package.json +1 -1
  372. package/themes/dark/bootstrap.css +1 -1
  373. package/themes/dark/fluent.css +1 -1
  374. package/themes/dark/indigo.css +1 -1
  375. package/themes/dark/material.css +1 -1
  376. package/themes/light/bootstrap.css +1 -1
  377. package/themes/light/fluent.css +1 -1
  378. package/themes/light/indigo.css +1 -1
  379. package/themes/light/material.css +1 -1
  380. package/web-types.json +1 -1
@@ -18,6 +18,13 @@ let IgcRadioGroupComponent = IgcRadioGroupComponent_1 = class IgcRadioGroupCompo
18
18
  static register() {
19
19
  registerComponent(IgcRadioGroupComponent_1, IgcRadioComponent);
20
20
  }
21
+ set defaultValue(value) {
22
+ this._defaultValue = value;
23
+ this._setRadiosDefaultChecked();
24
+ }
25
+ get defaultValue() {
26
+ return this._defaultValue;
27
+ }
21
28
  set name(value) {
22
29
  this._name = value;
23
30
  this._setRadiosName();
@@ -51,6 +58,7 @@ let IgcRadioGroupComponent = IgcRadioGroupComponent_1 = class IgcRadioGroupCompo
51
58
  const radios = Array.from(this._radios);
52
59
  const allRadiosUnchecked = radios.every((radio) => !radio.checked);
53
60
  this._setRadiosName();
61
+ this._setRadiosDefaultChecked();
54
62
  if (allRadiosUnchecked && this._value) {
55
63
  this._setSelectedRadio();
56
64
  this._setDefaultValue();
@@ -62,6 +70,13 @@ let IgcRadioGroupComponent = IgcRadioGroupComponent_1 = class IgcRadioGroupCompo
62
70
  this.style.setProperty('--layout-count', `${slot.assignedElements({ flatten: true }).length}`);
63
71
  }
64
72
  }
73
+ _setRadiosDefaultChecked() {
74
+ if (this._defaultValue) {
75
+ for (const radio of this._radios) {
76
+ radio.defaultChecked = radio.value === this._defaultValue;
77
+ }
78
+ }
79
+ }
65
80
  _setRadiosName() {
66
81
  if (this._name) {
67
82
  for (const radio of this._radios) {
@@ -91,6 +106,9 @@ __decorate([
91
106
  __decorate([
92
107
  property({ reflect: true })
93
108
  ], IgcRadioGroupComponent.prototype, "alignment", void 0);
109
+ __decorate([
110
+ property({ attribute: false })
111
+ ], IgcRadioGroupComponent.prototype, "defaultValue", null);
94
112
  __decorate([
95
113
  property({ reflect: true })
96
114
  ], IgcRadioGroupComponent.prototype, "name", null);
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/components/radio-group/radio-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport IgcRadioComponent from '../radio/radio.js';\nimport { styles } from './radio-group.base.css.js';\nimport { styles as fluent } from './radio-group.fluent.css.js';\nimport { styles as indigo } from './radio-group.indigo.css.js';\nimport { styles as material } from './radio-group.material.css.js';\n\n/**\n * The igc-radio-group component unifies one or more igc-radio buttons.\n *\n * @element igc-radio-group\n *\n * @slot - Default slot\n */\n@themes({\n light: { material, fluent, indigo },\n dark: { material, fluent, indigo },\n})\nexport default class IgcRadioGroupComponent extends LitElement {\n public static readonly tagName = 'igc-radio-group';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcRadioGroupComponent, IgcRadioComponent);\n }\n\n private _internals: ElementInternals;\n private _name!: string;\n private _value!: string;\n\n @queryAssignedElements({ flatten: true })\n private _radios!: NodeListOf<IgcRadioComponent>;\n\n /**\n * Alignment of the radio controls inside this group.\n * @attr\n */\n @property({ reflect: true })\n public alignment: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Gets/Sets the name for all child igc-radio components.\n * @attr\n */\n @property({ reflect: true })\n public set name(value: string) {\n this._name = value;\n this._setRadiosName();\n }\n\n public get name(): string {\n return this._name;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail.value\", false) */\n /**\n * Gets/Sets the checked igc-radio element that matches `value`\n * @attr\n */\n @property()\n public set value(value: string) {\n this._value = value;\n this._setSelectedRadio();\n }\n\n public get value(): string {\n if (this._radios.length) {\n this._value =\n Array.from(this._radios).find((radio) => radio.checked)?.value ?? '';\n }\n\n return this._value;\n }\n\n constructor() {\n super();\n\n this._internals = this.attachInternals();\n this._internals.role = 'radiogroup';\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this._setCSSGridVars());\n return root;\n }\n\n protected override firstUpdated() {\n const radios = Array.from(this._radios);\n const allRadiosUnchecked = radios.every((radio) => !radio.checked);\n\n this._setRadiosName();\n\n if (allRadiosUnchecked && this._value) {\n this._setSelectedRadio();\n this._setDefaultValue();\n }\n }\n\n private _setCSSGridVars() {\n const slot = this.renderRoot.querySelector('slot');\n if (slot) {\n this.style.setProperty(\n '--layout-count',\n `${slot.assignedElements({ flatten: true }).length}`\n );\n }\n }\n\n private _setRadiosName() {\n if (this._name) {\n for (const radio of this._radios) {\n radio.name = this._name;\n }\n }\n }\n\n private _setDefaultValue() {\n for (const radio of this._radios) {\n radio.toggleAttribute('checked', radio.checked);\n }\n }\n\n private _setSelectedRadio() {\n for (const radio of this._radios) {\n radio.checked = radio.value === this._value;\n }\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-radio-group': IgcRadioGroupComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../../src/components/radio-group/radio-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport IgcRadioComponent from '../radio/radio.js';\nimport { styles } from './radio-group.base.css.js';\nimport { styles as fluent } from './radio-group.fluent.css.js';\nimport { styles as indigo } from './radio-group.indigo.css.js';\nimport { styles as material } from './radio-group.material.css.js';\n\n/**\n * The igc-radio-group component unifies one or more igc-radio buttons.\n *\n * @element igc-radio-group\n *\n * @slot - Default slot\n */\n@themes({\n light: { material, fluent, indigo },\n dark: { material, fluent, indigo },\n})\nexport default class IgcRadioGroupComponent extends LitElement {\n public static readonly tagName = 'igc-radio-group';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcRadioGroupComponent, IgcRadioComponent);\n }\n\n private _defaultValue!: string;\n private _internals: ElementInternals;\n private _name!: string;\n private _value!: string;\n\n @queryAssignedElements({ flatten: true })\n private _radios!: NodeListOf<IgcRadioComponent>;\n\n /**\n * Alignment of the radio controls inside this group.\n * @attr\n */\n @property({ reflect: true })\n public alignment: 'vertical' | 'horizontal' = 'vertical';\n\n /* blazorCSSuppress */\n @property({ attribute: false })\n public set defaultValue(value: string) {\n this._defaultValue = value;\n this._setRadiosDefaultChecked();\n }\n\n public get defaultValue(): string {\n return this._defaultValue;\n }\n\n /**\n * Gets/Sets the name for all child igc-radio components.\n * @attr\n */\n @property({ reflect: true })\n public set name(value: string) {\n this._name = value;\n this._setRadiosName();\n }\n\n public get name(): string {\n return this._name;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail.value\", false) */\n /**\n * Gets/Sets the checked igc-radio element that matches `value`\n * @attr\n */\n @property()\n public set value(value: string) {\n this._value = value;\n this._setSelectedRadio();\n }\n\n public get value(): string {\n if (this._radios.length) {\n this._value =\n Array.from(this._radios).find((radio) => radio.checked)?.value ?? '';\n }\n\n return this._value;\n }\n\n constructor() {\n super();\n\n this._internals = this.attachInternals();\n this._internals.role = 'radiogroup';\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this._setCSSGridVars());\n return root;\n }\n\n protected override firstUpdated() {\n const radios = Array.from(this._radios);\n const allRadiosUnchecked = radios.every((radio) => !radio.checked);\n\n this._setRadiosName();\n this._setRadiosDefaultChecked();\n\n if (allRadiosUnchecked && this._value) {\n this._setSelectedRadio();\n this._setDefaultValue();\n }\n }\n\n private _setCSSGridVars() {\n const slot = this.renderRoot.querySelector('slot');\n if (slot) {\n this.style.setProperty(\n '--layout-count',\n `${slot.assignedElements({ flatten: true }).length}`\n );\n }\n }\n\n private _setRadiosDefaultChecked() {\n if (this._defaultValue) {\n for (const radio of this._radios) {\n radio.defaultChecked = radio.value === this._defaultValue;\n }\n }\n }\n\n private _setRadiosName() {\n if (this._name) {\n for (const radio of this._radios) {\n radio.name = this._name;\n }\n }\n }\n\n private _setDefaultValue() {\n for (const radio of this._radios) {\n radio.toggleAttribute('checked', radio.checked);\n }\n }\n\n private _setSelectedRadio() {\n for (const radio of this._radios) {\n radio.checked = radio.value === this._value;\n }\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-radio-group': IgcRadioGroupComponent;\n }\n}\n"]}
@@ -7,12 +7,12 @@ class IgcRatingSymbolComponent extends LitElement {
7
7
  }
8
8
  connectedCallback() {
9
9
  super.connectedCallback();
10
- this.slot = this.slot.length > 0 ? this.slot : 'symbol';
10
+ this.slot = this.slot || 'symbol';
11
11
  }
12
12
  render() {
13
13
  return html `
14
14
  <div part="symbol full">
15
- <slot> </slot>
15
+ <slot></slot>
16
16
  </div>
17
17
  <div part="symbol empty">
18
18
  <slot name="empty"></slot>
@@ -1 +1 @@
1
- {"version":3,"file":"rating-symbol.js","sourceRoot":"","sources":["../../../src/components/rating/rating-symbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAe5D,MAAqB,wBAAyB,SAAQ,UAAU;IAKvD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;;;;;;;KAOV,CAAC;IACJ,CAAC;;AAtBsB,gCAAO,GAAG,mBAAmB,CAAC;AAC9B,+BAAM,GAAG,CAAC,MAAM,CAAC,CAAC;eAFtB,wBAAwB","sourcesContent":["import { LitElement, html } from 'lit';\n\nimport { registerComponent } from '../common/definitions/register.js';\nimport { styles } from './themes/rating-symbol.base.css.js';\n\n/**\n *\n * Used when a custom icon/symbol/element needs to be passed to the igc-rating component.\n *\n * @element igc-rating-symbol\n *\n * @slot - Default slot for projected full symbols/icons.\n * @slot empty - Default slot for projected empty symbols/icons.\n *\n * @csspart symbol - The symbol wrapping container.\n * @csspart full - The full symbol wrapping container.\n * @csspart empty - The empty symbol wrapping container.\n */\nexport default class IgcRatingSymbolComponent extends LitElement {\n public static readonly tagName = 'igc-rating-symbol';\n public static override styles = [styles];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcRatingSymbolComponent);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.slot = this.slot.length > 0 ? this.slot : 'symbol';\n }\n\n protected override render() {\n return html`\n <div part=\"symbol full\">\n <slot> </slot>\n </div>\n <div part=\"symbol empty\">\n <slot name=\"empty\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating-symbol': IgcRatingSymbolComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"rating-symbol.js","sourceRoot":"","sources":["../../../src/components/rating/rating-symbol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAe5D,MAAqB,wBAAyB,SAAQ,UAAU;IAKvD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAEe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;IACpC,CAAC;IAEkB,MAAM;QACvB,OAAO,IAAI,CAAA;;;;;;;KAOV,CAAC;IACJ,CAAC;;AAtBsB,gCAAO,GAAG,mBAAmB,CAAC;AAC9B,+BAAM,GAAG,CAAC,MAAM,CAAC,CAAC;eAFtB,wBAAwB","sourcesContent":["import { LitElement, html } from 'lit';\n\nimport { registerComponent } from '../common/definitions/register.js';\nimport { styles } from './themes/rating-symbol.base.css.js';\n\n/**\n *\n * Used when a custom icon/symbol/element needs to be passed to the igc-rating component.\n *\n * @element igc-rating-symbol\n *\n * @slot - Default slot for projected full symbols/icons.\n * @slot empty - Default slot for projected empty symbols/icons.\n *\n * @csspart symbol - The symbol wrapping container.\n * @csspart full - The full symbol wrapping container.\n * @csspart empty - The empty symbol wrapping container.\n */\nexport default class IgcRatingSymbolComponent extends LitElement {\n public static readonly tagName = 'igc-rating-symbol';\n public static override styles = [styles];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcRatingSymbolComponent);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.slot = this.slot || 'symbol';\n }\n\n protected override render() {\n return html`\n <div part=\"symbol full\">\n <slot></slot>\n </div>\n <div part=\"symbol empty\">\n <slot name=\"empty\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-rating-symbol': IgcRatingSymbolComponent;\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  import type { Constructor } from '../common/mixins/constructor.js';
3
+ import { type FormValue } from '../common/mixins/forms/form-value.js';
3
4
  import IgcRatingSymbolComponent from './rating-symbol.js';
4
5
  export interface IgcRatingComponentEventMap {
5
6
  igcChange: CustomEvent<number>;
@@ -33,9 +34,13 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
33
34
  static readonly tagName = "igc-rating";
34
35
  static styles: import("lit").CSSResult[];
35
36
  static register(): void;
36
- protected ratingSymbols: Array<IgcRatingSymbolComponent>;
37
+ protected _formValue: FormValue<number>;
38
+ private _max;
39
+ private _step;
40
+ private _single;
41
+ protected ratingSymbols: IgcRatingSymbolComponent[];
37
42
  protected container: HTMLElement;
38
- protected valueLabel: Array<Node>;
43
+ protected valueLabel: Node[];
39
44
  protected hoverValue: number;
40
45
  protected hoverState: boolean;
41
46
  protected get isInteractive(): boolean;
@@ -46,19 +51,23 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
46
51
  *
47
52
  * If there are projected symbols, the maximum value will be resolved
48
53
  * based on the number of symbols.
49
- * @attr
54
+ * @attr max
55
+ * @default 5
50
56
  */
51
- max: number;
57
+ set max(value: number);
58
+ get max(): number;
52
59
  /**
53
60
  * The minimum value change allowed.
54
61
  *
55
62
  * Valid values are in the interval between 0 and 1 inclusive.
56
- * @attr
63
+ * @attr step
64
+ * @default 1
57
65
  */
58
- step: number;
66
+ set step(value: number);
67
+ get step(): number;
59
68
  /**
60
69
  * The label of the control.
61
- * @attr
70
+ * @attr label
62
71
  */
63
72
  label: string;
64
73
  /**
@@ -71,9 +80,11 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
71
80
  valueFormat: string;
72
81
  /**
73
82
  * The current value of the component
74
- * @attr
83
+ * @attr value
84
+ * @default 0
75
85
  */
76
- value: number;
86
+ set value(number: number);
87
+ get value(): number;
77
88
  /**
78
89
  * Sets hover preview behavior for the component
79
90
  * @attr hover-preview
@@ -86,28 +97,25 @@ export default class IgcRatingComponent extends IgcRatingComponent_base {
86
97
  readOnly: boolean;
87
98
  /**
88
99
  * Toggles single selection visual mode.
89
- * @attr
100
+ * @attr single
101
+ * @default false
90
102
  */
91
- single: boolean;
103
+ set single(value: boolean);
104
+ get single(): boolean;
92
105
  /**
93
106
  * Whether to reset the rating when the user selects the same value.
94
107
  * @attr allow-reset
95
108
  */
96
109
  allowReset: boolean;
97
- protected handleMaxChange(): void;
98
- protected handleValueChange(): void;
99
- protected handlePrecisionChange(): void;
100
- protected handleSelectionChange(): void;
101
110
  constructor();
111
+ protected firstUpdated(): Promise<void>;
102
112
  protected handleClick({ clientX }: PointerEvent): void;
103
113
  protected handlePointerMove({ clientX }: PointerEvent): void;
104
114
  protected emitValueUpdate(value: number): void;
105
115
  protected handleSlotChange(): void;
106
116
  protected handleHoverEnabled(): void;
107
117
  protected handleHoverDisabled(): void;
108
- protected _setInitialDefaultValue(): void;
109
118
  protected calcNewValue(x: number): number;
110
- protected getPrecision(num: number): number;
111
119
  protected round(value: number): number;
112
120
  protected clipSymbol(index: number, isLTR?: boolean): {
113
121
  backward: string;
@@ -12,11 +12,11 @@ import { ifDefined } from 'lit/directives/if-defined.js';
12
12
  import { styleMap } from 'lit/directives/style-map.js';
13
13
  import { themes } from '../../theming/theming-decorator.js';
14
14
  import { addKeybindings, arrowDown, arrowLeft, arrowRight, arrowUp, endKey, homeKey, } from '../common/controllers/key-bindings.js';
15
- import { watch } from '../common/decorators/watch.js';
16
15
  import { registerComponent } from '../common/definitions/register.js';
17
16
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
18
17
  import { FormAssociatedMixin } from '../common/mixins/forms/associated.js';
19
- import { clamp, formatString, isEmpty, isLTR } from '../common/util.js';
18
+ import { createFormValueState, defaultNumberTransformers, } from '../common/mixins/forms/form-value.js';
19
+ import { asNumber, clamp, formatString, isEmpty, isLTR, numberOfDecimals, roundPrecise, } from '../common/util.js';
20
20
  import IgcIconComponent from '../icon/icon.js';
21
21
  import IgcRatingSymbolComponent from './rating-symbol.js';
22
22
  import { styles } from './themes/rating.base.css.js';
@@ -38,39 +38,57 @@ let IgcRatingComponent = IgcRatingComponent_1 = class IgcRatingComponent extends
38
38
  ? formatString(this.valueFormat, value, this.max)
39
39
  : `${value} of ${this.max}`;
40
40
  }
41
- handleMaxChange() {
42
- this.max = this.hasProjectedSymbols
41
+ set max(value) {
42
+ this._max = this.hasProjectedSymbols
43
43
  ? this.ratingSymbols.length
44
- : Math.max(0, this.max);
45
- if (this.max < this.value) {
46
- this.value = this.max;
44
+ : Math.max(0, value);
45
+ if (this._max < this.value) {
46
+ this.value = this._max;
47
47
  }
48
48
  }
49
- handleValueChange() {
50
- this.value = clamp(Number.isNaN(this.value) ? 0 : this.value, 0, this.max);
51
- this._setFormValue(this.value.toString());
49
+ get max() {
50
+ return this._max;
51
+ }
52
+ set step(value) {
53
+ this._step = this.single ? 1 : clamp(value, 0.001, 1);
54
+ }
55
+ get step() {
56
+ return this._step;
57
+ }
58
+ set value(number) {
59
+ const value = this.hasUpdated
60
+ ? clamp(asNumber(number), 0, this.max)
61
+ : Math.max(asNumber(number), 0);
62
+ this._formValue.setValueAndFormState(value);
52
63
  this._validate();
53
64
  }
54
- handlePrecisionChange() {
55
- this.step = !this.single ? clamp(this.step, 0.001, 1) : 1;
65
+ get value() {
66
+ return this._formValue.value;
56
67
  }
57
- handleSelectionChange() {
58
- if (this.single) {
68
+ set single(value) {
69
+ this._single = Boolean(value);
70
+ if (this._single) {
59
71
  this.step = 1;
60
72
  this.value = Math.ceil(this.value);
61
73
  }
62
74
  }
75
+ get single() {
76
+ return this._single;
77
+ }
63
78
  constructor() {
64
79
  super();
80
+ this._max = 5;
81
+ this._step = 1;
82
+ this._single = false;
65
83
  this.hoverValue = -1;
66
84
  this.hoverState = false;
67
- this.max = 5;
68
- this.step = 1;
69
- this.value = 0;
70
85
  this.hoverPreview = false;
71
86
  this.readOnly = false;
72
- this.single = false;
73
87
  this.allowReset = false;
88
+ this._formValue = createFormValueState(this, {
89
+ initialValue: 0,
90
+ transformers: defaultNumberTransformers,
91
+ });
74
92
  addKeybindings(this, {
75
93
  skip: () => !this.isInteractive,
76
94
  bindingDefaults: { preventDefault: true },
@@ -82,6 +100,11 @@ let IgcRatingComponent = IgcRatingComponent_1 = class IgcRatingComponent extends
82
100
  .set(homeKey, () => this.emitValueUpdate(this.step))
83
101
  .set(endKey, () => this.emitValueUpdate(this.max));
84
102
  }
103
+ async firstUpdated() {
104
+ await this.updateComplete;
105
+ this._formValue.setValueAndFormState(clamp(this.value, 0, this.max));
106
+ this._pristine = true;
107
+ }
85
108
  handleClick({ clientX }) {
86
109
  const value = this.calcNewValue(clientX);
87
110
  const sameValue = this.value === value;
@@ -117,21 +140,14 @@ let IgcRatingComponent = IgcRatingComponent_1 = class IgcRatingComponent extends
117
140
  handleHoverDisabled() {
118
141
  this.hoverState = false;
119
142
  }
120
- _setInitialDefaultValue() {
121
- this._defaultValue = this.value;
122
- }
123
143
  calcNewValue(x) {
124
144
  const { width, left, right } = this.container.getBoundingClientRect();
125
145
  const percent = isLTR(this) ? (x - left) / width : (right - x) / width;
126
146
  const value = this.round(this.max * percent + this.step / 2);
127
147
  return clamp(value, this.step, this.max);
128
148
  }
129
- getPrecision(num) {
130
- const [_, decimal] = num.toString().split('.');
131
- return decimal ? decimal.length : 0;
132
- }
133
149
  round(value) {
134
- return Number((Math.round(value / this.step) * this.step).toFixed(this.getPrecision(this.step)));
150
+ return roundPrecise(value, numberOfDecimals(this.step));
135
151
  }
136
152
  clipSymbol(index, isLTR = true) {
137
153
  const value = this.hoverState ? this.hoverValue : this.value;
@@ -255,10 +271,10 @@ __decorate([
255
271
  ], IgcRatingComponent.prototype, "hoverState", void 0);
256
272
  __decorate([
257
273
  property({ type: Number })
258
- ], IgcRatingComponent.prototype, "max", void 0);
274
+ ], IgcRatingComponent.prototype, "max", null);
259
275
  __decorate([
260
276
  property({ type: Number })
261
- ], IgcRatingComponent.prototype, "step", void 0);
277
+ ], IgcRatingComponent.prototype, "step", null);
262
278
  __decorate([
263
279
  property()
264
280
  ], IgcRatingComponent.prototype, "label", void 0);
@@ -267,7 +283,7 @@ __decorate([
267
283
  ], IgcRatingComponent.prototype, "valueFormat", void 0);
268
284
  __decorate([
269
285
  property({ type: Number })
270
- ], IgcRatingComponent.prototype, "value", void 0);
286
+ ], IgcRatingComponent.prototype, "value", null);
271
287
  __decorate([
272
288
  property({ type: Boolean, reflect: true, attribute: 'hover-preview' })
273
289
  ], IgcRatingComponent.prototype, "hoverPreview", void 0);
@@ -275,23 +291,11 @@ __decorate([
275
291
  property({ type: Boolean, reflect: true, attribute: 'readonly' })
276
292
  ], IgcRatingComponent.prototype, "readOnly", void 0);
277
293
  __decorate([
278
- property({ type: Boolean })
279
- ], IgcRatingComponent.prototype, "single", void 0);
294
+ property({ type: Boolean, reflect: true })
295
+ ], IgcRatingComponent.prototype, "single", null);
280
296
  __decorate([
281
297
  property({ type: Boolean, reflect: true, attribute: 'allow-reset' })
282
298
  ], IgcRatingComponent.prototype, "allowReset", void 0);
283
- __decorate([
284
- watch('max')
285
- ], IgcRatingComponent.prototype, "handleMaxChange", null);
286
- __decorate([
287
- watch('value')
288
- ], IgcRatingComponent.prototype, "handleValueChange", null);
289
- __decorate([
290
- watch('step')
291
- ], IgcRatingComponent.prototype, "handlePrecisionChange", null);
292
- __decorate([
293
- watch('single')
294
- ], IgcRatingComponent.prototype, "handleSelectionChange", null);
295
299
  IgcRatingComponent = IgcRatingComponent_1 = __decorate([
296
300
  themes(all)
297
301
  ], IgcRatingComponent);
@@ -1 +1 @@
1
- {"version":3,"file":"rating.js","sourceRoot":"","sources":["../../../src/components/rating/rating.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n state,\n} from 'lit/decorators.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '../common/mixins/forms/associated.js';\nimport { clamp, formatString, isEmpty, isLTR } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport { styles } from './themes/rating.base.css.js';\nimport { styles as shared } from './themes/shared/rating.common.css.js';\nimport { all } from './themes/themes.js';\n\nexport interface IgcRatingComponentEventMap {\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(all)\nexport default class IgcRatingComponent extends FormAssociatedMixin(\n EventEmitterMixin<IgcRatingComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-rating';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcRatingComponent,\n IgcIconComponent,\n IgcRatingSymbolComponent\n );\n }\n\n @queryAssignedElements({\n selector: IgcRatingSymbolComponent.tagName,\n slot: 'symbol',\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 // Skip IEEE 754 representation for screen readers\n const value = this.round(this.value);\n return this.valueFormat\n ? formatString(this.valueFormat, value, this.max)\n : `${value} of ${this.max}`;\n }\n\n /**\n * The maximum value for the rating.\n *\n * If there are projected symbols, the maximum value will be resolved\n * based on the number of symbols.\n * @attr\n */\n @property({ type: Number })\n public max = 5;\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr\n */\n @property({ type: Number })\n public step = 1;\n\n /**\n * The label of the control.\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. Instances of '{0}' will be replaced\n * with the current value of the control and instances of '{1}' with the maximum value for the control.\n *\n * Important for screen-readers and useful for localization.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component\n * @attr\n */\n @property({ type: Number })\n public value = 0;\n\n /**\n * Sets hover preview behavior for the component\n * @attr hover-preview\n */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Toggles single selection visual mode.\n * @attr\n */\n @property({ type: Boolean })\n public single = false;\n\n /**\n * Whether to reset the rating when the user selects the same value.\n * @attr allow-reset\n */\n @property({ type: Boolean, reflect: true, attribute: 'allow-reset' })\n public allowReset = false;\n\n @watch('max')\n protected handleMaxChange() {\n this.max = this.hasProjectedSymbols\n ? this.ratingSymbols.length\n : Math.max(0, this.max);\n\n if (this.max < this.value) {\n this.value = this.max;\n }\n }\n\n @watch('value')\n protected handleValueChange() {\n this.value = clamp(Number.isNaN(this.value) ? 0 : this.value, 0, this.max);\n this._setFormValue(this.value.toString());\n this._validate();\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\n addKeybindings(this, {\n skip: () => !this.isInteractive,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowUp, () => this.emitValueUpdate(this.value + this.step))\n .set(arrowRight, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value + this.step : this.value - this.step\n )\n )\n .set(arrowDown, () => this.emitValueUpdate(this.value - this.step))\n .set(arrowLeft, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value - this.step : this.value + this.step\n )\n )\n .set(homeKey, () => this.emitValueUpdate(this.step))\n .set(endKey, () => this.emitValueUpdate(this.max));\n }\n\n protected handleClick({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n const sameValue = this.value === value;\n\n if (this.allowReset && sameValue) {\n this.emitValueUpdate(0);\n } else if (!sameValue) {\n this.emitValueUpdate(value);\n }\n }\n\n protected handlePointerMove({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since pointermove 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 emitValueUpdate(value: number) {\n this.value = clamp(value, 0, this.max);\n if (value === 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 this.requestUpdate();\n }\n }\n\n protected handleHoverEnabled() {\n this.hoverState = true;\n }\n\n protected handleHoverDisabled() {\n this.hoverState = false;\n }\n\n protected override _setInitialDefaultValue(): void {\n this._defaultValue = this.value;\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 return Number(\n (Math.round(value / this.step) * this.step).toFixed(\n this.getPrecision(this.step)\n )\n );\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=\"default\"\n name=\"star_filled\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"default\"\n name=\"star_outlined\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n const ltr = isLTR(this);\n const partFull = '[part=\"symbol full\"]';\n const partEmpty = '[part=\"symbol empty\"]';\n\n for (const [i, symbol] of this.ratingSymbols.entries()) {\n const full = symbol.renderRoot.querySelector<HTMLElement>(partFull);\n const empty = symbol.renderRoot.querySelector<HTMLElement>(partEmpty);\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 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 const hoverActive = this.hoverPreview && this.isInteractive;\n\n return html`\n <label part=\"label\" id=\"rating-label\" ?hidden=${!this.label}\n >${this.label}</label\n >\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-labelledby=\"rating-label\"\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.isInteractive ? this.handleClick : nothing}\n @pointerenter=${hoverActive ? this.handleHoverEnabled : nothing}\n @pointerleave=${hoverActive ? this.handleHoverDisabled : nothing}\n @pointermove=${hoverActive ? this.handlePointerMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () =>\n this.hasProjectedSymbols\n ? this.clipProjected()\n : this.renderSymbols()\n )}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${isEmpty(this.valueLabel)}>\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 { LitElement, html, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n state,\n} from 'lit/decorators.js';\nimport { guard } from 'lit/directives/guard.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n} from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedMixin } from '../common/mixins/forms/associated.js';\nimport {\n type FormValue,\n createFormValueState,\n defaultNumberTransformers,\n} from '../common/mixins/forms/form-value.js';\nimport {\n asNumber,\n clamp,\n formatString,\n isEmpty,\n isLTR,\n numberOfDecimals,\n roundPrecise,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcRatingSymbolComponent from './rating-symbol.js';\nimport { styles } from './themes/rating.base.css.js';\nimport { styles as shared } from './themes/shared/rating.common.css.js';\nimport { all } from './themes/themes.js';\n\nexport interface IgcRatingComponentEventMap {\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(all)\nexport default class IgcRatingComponent extends FormAssociatedMixin(\n EventEmitterMixin<IgcRatingComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-rating';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcRatingComponent,\n IgcIconComponent,\n IgcRatingSymbolComponent\n );\n }\n\n protected override _formValue: FormValue<number>;\n\n private _max = 5;\n private _step = 1;\n private _single = false;\n\n @queryAssignedElements({\n selector: IgcRatingSymbolComponent.tagName,\n slot: 'symbol',\n })\n protected ratingSymbols!: IgcRatingSymbolComponent[];\n\n @query('[part=\"symbols\"]', true)\n protected container!: HTMLElement;\n\n @queryAssignedNodes({ slot: 'value-label', flatten: true })\n protected valueLabel!: 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 // Skip IEEE 754 representation for screen readers\n const value = this.round(this.value);\n return this.valueFormat\n ? formatString(this.valueFormat, value, this.max)\n : `${value} of ${this.max}`;\n }\n\n /**\n * The maximum value for the rating.\n *\n * If there are projected symbols, the maximum value will be resolved\n * based on the number of symbols.\n * @attr max\n * @default 5\n */\n @property({ type: Number })\n public set max(value: number) {\n this._max = this.hasProjectedSymbols\n ? this.ratingSymbols.length\n : Math.max(0, value);\n\n if (this._max < this.value) {\n this.value = this._max;\n }\n }\n\n public get max(): number {\n return this._max;\n }\n\n /**\n * The minimum value change allowed.\n *\n * Valid values are in the interval between 0 and 1 inclusive.\n * @attr step\n * @default 1\n */\n @property({ type: Number })\n public set step(value: number) {\n this._step = this.single ? 1 : clamp(value, 0.001, 1);\n }\n\n public get step(): number {\n return this._step;\n }\n\n /**\n * The label of the control.\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * A format string which sets aria-valuetext. Instances of '{0}' will be replaced\n * with the current value of the control and instances of '{1}' with the maximum value for the control.\n *\n * Important for screen-readers and useful for localization.\n * @attr value-format\n */\n @property({ attribute: 'value-format' })\n public valueFormat!: string;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The current value of the component\n * @attr value\n * @default 0\n */\n @property({ type: Number })\n public set value(number: number) {\n const value = this.hasUpdated\n ? clamp(asNumber(number), 0, this.max)\n : Math.max(asNumber(number), 0);\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): number {\n return this._formValue.value;\n }\n\n /**\n * Sets hover preview behavior for the component\n * @attr hover-preview\n */\n @property({ type: Boolean, reflect: true, attribute: 'hover-preview' })\n public hoverPreview = false;\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Toggles single selection visual mode.\n * @attr single\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public set single(value: boolean) {\n this._single = Boolean(value);\n\n if (this._single) {\n this.step = 1;\n this.value = Math.ceil(this.value);\n }\n }\n\n public get single(): boolean {\n return this._single;\n }\n\n /**\n * Whether to reset the rating when the user selects the same value.\n * @attr allow-reset\n */\n @property({ type: Boolean, reflect: true, attribute: 'allow-reset' })\n public allowReset = false;\n\n constructor() {\n super();\n\n this._formValue = createFormValueState(this, {\n initialValue: 0,\n transformers: defaultNumberTransformers,\n });\n\n addKeybindings(this, {\n skip: () => !this.isInteractive,\n bindingDefaults: { preventDefault: true },\n })\n .set(arrowUp, () => this.emitValueUpdate(this.value + this.step))\n .set(arrowRight, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value + this.step : this.value - this.step\n )\n )\n .set(arrowDown, () => this.emitValueUpdate(this.value - this.step))\n .set(arrowLeft, () =>\n this.emitValueUpdate(\n isLTR(this) ? this.value - this.step : this.value + this.step\n )\n )\n .set(homeKey, () => this.emitValueUpdate(this.step))\n .set(endKey, () => this.emitValueUpdate(this.max));\n }\n\n protected override async firstUpdated() {\n await this.updateComplete;\n this._formValue.setValueAndFormState(clamp(this.value, 0, this.max));\n this._pristine = true;\n }\n\n protected handleClick({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n const sameValue = this.value === value;\n\n if (this.allowReset && sameValue) {\n this.emitValueUpdate(0);\n } else if (!sameValue) {\n this.emitValueUpdate(value);\n }\n }\n\n protected handlePointerMove({ clientX }: PointerEvent) {\n const value = this.calcNewValue(clientX);\n\n if (this.hoverValue !== value) {\n // Since pointermove 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 emitValueUpdate(value: number) {\n this.value = clamp(value, 0, this.max);\n if (value === 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 this.requestUpdate();\n }\n }\n\n protected handleHoverEnabled() {\n this.hoverState = true;\n }\n\n protected handleHoverDisabled() {\n this.hoverState = false;\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 round(value: number) {\n return roundPrecise(value, numberOfDecimals(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=\"default\"\n name=\"star_filled\"\n style=${styleMap({ clipPath: forward })}\n ></igc-icon>\n <igc-icon\n collection=\"default\"\n name=\"star_outlined\"\n style=${styleMap({ clipPath: backward })}\n slot=\"empty\"\n ></igc-icon>\n </igc-rating-symbol>`;\n }\n }\n\n protected clipProjected() {\n const ltr = isLTR(this);\n const partFull = '[part=\"symbol full\"]';\n const partEmpty = '[part=\"symbol empty\"]';\n\n for (const [i, symbol] of this.ratingSymbols.entries()) {\n const full = symbol.renderRoot.querySelector<HTMLElement>(partFull);\n const empty = symbol.renderRoot.querySelector<HTMLElement>(partEmpty);\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 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 const hoverActive = this.hoverPreview && this.isInteractive;\n\n return html`\n <label part=\"label\" id=\"rating-label\" ?hidden=${!this.label}\n >${this.label}</label\n >\n <div\n part=\"base\"\n role=\"slider\"\n tabindex=${ifDefined(this.disabled ? undefined : 0)}\n aria-labelledby=\"rating-label\"\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.isInteractive ? this.handleClick : nothing}\n @pointerenter=${hoverActive ? this.handleHoverEnabled : nothing}\n @pointerleave=${hoverActive ? this.handleHoverDisabled : nothing}\n @pointermove=${hoverActive ? this.handlePointerMove : nothing}\n >\n <slot name=\"symbol\" @slotchange=${this.handleSlotChange}>\n ${guard(props, () =>\n this.hasProjectedSymbols\n ? this.clipProjected()\n : this.renderSymbols()\n )}\n </slot>\n </div>\n <label part=\"value-label\" ?hidden=${isEmpty(this.valueLabel)}>\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,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;justify-content:center;align-items:center;width:var(--symbol-size);height:var(--symbol-size)}[part~=symbol]{position:absolute;display:flex;color:inherit;align-items:center;justify-content:center;width:var(--symbol-size);height:var(--symbol-size);min-width:var(--symbol-size);min-height:var(--symbol-size);font-size:var(--symbol-size);font-family:sans-serif;line-height:100%;letter-spacing:0}[part~=symbol] igc-icon{--size: var(--symbol-size)}[part="symbol full"]{color:var(--symbol-full-color)}[part="symbol empty"]{color:var(--symbol-empty-color)}::slotted(*){display:inline-flex;justify-content:center;align-items:center}::slotted(igc-icon){--size: var(--symbol-size) !important}slot:not([name])::slotted(:not(igc-icon)){filter:var(--disabled-symbol-full-filter, grayscale(0))}[name=empty]::slotted(:not(igc-icon)){filter:var(--disabled-symbol-empty-filter, grayscale(1))}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;justify-content:center;align-items:center;width:var(--symbol-size);height:var(--symbol-size)}[part~=symbol]{position:absolute;display:flex;color:inherit;align-items:center;justify-content:center;width:var(--symbol-size);height:var(--symbol-size);min-width:var(--symbol-size);min-height:var(--symbol-size);font-size:var(--symbol-size);font-family:sans-serif;line-height:100%;letter-spacing:0}[part~=symbol] igc-icon{--size: var(--symbol-size)}[part="symbol full"]{color:var(--symbol-full-color)}[part="symbol empty"]{color:var(--symbol-empty-color)}::slotted(*){display:inline-flex;justify-content:center;align-items:center}::slotted(igc-icon){--size: var(--symbol-size) !important}slot:not([name])::slotted(:not(igc-icon)){filter:var(--disabled-symbol-full-filter, grayscale(0))}[name=empty]::slotted(:not(igc-icon)){filter:var(--disabled-symbol-empty-filter, grayscale(1))}`;
3
3
  //# sourceMappingURL=rating-symbol.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating-symbol.base.css.js","sourceRoot":"","sources":["../../../../src/components/rating/themes/rating-symbol.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,+qDAA+qD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;justify-content:center;align-items:center;width:var(--symbol-size);height:var(--symbol-size)}[part~=symbol]{position:absolute;display:flex;color:inherit;align-items:center;justify-content:center;width:var(--symbol-size);height:var(--symbol-size);min-width:var(--symbol-size);min-height:var(--symbol-size);font-size:var(--symbol-size);font-family:sans-serif;line-height:100%;letter-spacing:0}[part~=symbol] igc-icon{--size: var(--symbol-size)}[part=\"symbol full\"]{color:var(--symbol-full-color)}[part=\"symbol empty\"]{color:var(--symbol-empty-color)}::slotted(*){display:inline-flex;justify-content:center;align-items:center}::slotted(igc-icon){--size: var(--symbol-size) !important}slot:not([name])::slotted(:not(igc-icon)){filter:var(--disabled-symbol-full-filter, grayscale(0))}[name=empty]::slotted(:not(igc-icon)){filter:var(--disabled-symbol-empty-filter, grayscale(1))}`;\n"]}
1
+ {"version":3,"file":"rating-symbol.base.css.js","sourceRoot":"","sources":["../../../../src/components/rating/themes/rating-symbol.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,u0DAAu0D,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:flex;justify-content:center;align-items:center;width:var(--symbol-size);height:var(--symbol-size)}[part~=symbol]{position:absolute;display:flex;color:inherit;align-items:center;justify-content:center;width:var(--symbol-size);height:var(--symbol-size);min-width:var(--symbol-size);min-height:var(--symbol-size);font-size:var(--symbol-size);font-family:sans-serif;line-height:100%;letter-spacing:0}[part~=symbol] igc-icon{--size: var(--symbol-size)}[part=\"symbol full\"]{color:var(--symbol-full-color)}[part=\"symbol empty\"]{color:var(--symbol-empty-color)}::slotted(*){display:inline-flex;justify-content:center;align-items:center}::slotted(igc-icon){--size: var(--symbol-size) !important}slot:not([name])::slotted(:not(igc-icon)){filter:var(--disabled-symbol-full-filter, grayscale(0))}[name=empty]::slotted(:not(igc-icon)){filter:var(--disabled-symbol-empty-filter, grayscale(1))}`;\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:inline-flex;font-family:var(--ig-font-family);align-items:flex-start;flex-direction:column}[part=base]{position:relative;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}[part~=symbols]{--symbol-size: max(var(--is-large, 1) * max(2.25rem, -1 * 2.25rem), var(--is-medium, 1) * max(1.5rem, -1 * 1.5rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem));position:relative;display:flex;justify-content:center;align-items:center;padding:.125rem;gap:.125rem;inset-inline-start:0}[part~=label]{padding-inline-start:.25rem;height:auto;width:auto;min-height:0;min-width:0;margin:0}:host(:not(:disabled,[disabled],[readonly])) [part~=symbols]{cursor:pointer}:host([disabled]) [part~=symbols],:host(:disabled) [part~=symbols]{cursor:initial}`;
2
+ export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:inline-flex;font-family:var(--ig-font-family);align-items:flex-start;flex-direction:column}[part=base]{position:relative;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}[part~=symbols]{--symbol-size: max(var(--is-large, 1) * max(2.25rem, -1 * 2.25rem), var(--is-medium, 1) * max(1.5rem, -1 * 1.5rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem));position:relative;display:flex;justify-content:center;align-items:center;padding:.125rem;gap:.125rem;inset-inline-start:0}[part~=label]{padding-inline-start:.25rem;height:auto;width:auto;min-height:0;min-width:0;margin:0}:host(:not(:disabled,[disabled],[readonly])) [part~=symbols]{cursor:pointer}:host([disabled]) [part~=symbols],:host(:disabled) [part~=symbols]{cursor:initial}`;
3
3
  //# sourceMappingURL=rating.base.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rating.base.css.js","sourceRoot":"","sources":["../../../../src/components/rating/themes/rating.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,0lDAA0lD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:inline-flex;font-family:var(--ig-font-family);align-items:flex-start;flex-direction:column}[part=base]{position:relative;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}[part~=symbols]{--symbol-size: max(var(--is-large, 1) * max(2.25rem, -1 * 2.25rem), var(--is-medium, 1) * max(1.5rem, -1 * 1.5rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem));position:relative;display:flex;justify-content:center;align-items:center;padding:.125rem;gap:.125rem;inset-inline-start:0}[part~=label]{padding-inline-start:.25rem;height:auto;width:auto;min-height:0;min-width:0;margin:0}:host(:not(:disabled,[disabled],[readonly])) [part~=symbols]{cursor:pointer}:host([disabled]) [part~=symbols],:host(:disabled) [part~=symbols]{cursor:initial}`;\n"]}
1
+ {"version":3,"file":"rating.base.css.js","sourceRoot":"","sources":["../../../../src/components/rating/themes/rating.base.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA,kvDAAkvD,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{display:inline-flex;font-family:var(--ig-font-family);align-items:flex-start;flex-direction:column}[part=base]{position:relative;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-wrap:wrap}[part~=symbols]{--symbol-size: max(var(--is-large, 1) * max(2.25rem, -1 * 2.25rem), var(--is-medium, 1) * max(1.5rem, -1 * 1.5rem), var(--is-small, 1) * max(1.125rem, -1 * 1.125rem));position:relative;display:flex;justify-content:center;align-items:center;padding:.125rem;gap:.125rem;inset-inline-start:0}[part~=label]{padding-inline-start:.25rem;height:auto;width:auto;min-height:0;min-width:0;margin:0}:host(:not(:disabled,[disabled],[readonly])) [part~=symbols]{cursor:pointer}:host([disabled]) [part~=symbols],:host(:disabled) [part~=symbols]{cursor:initial}`;\n"]}
@@ -1,3 +1,3 @@
1
1
  import { css } from 'lit';
2
- export const styles = css `:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[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{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:absolute;display:block;width:100%;height:100%;top:0;left:0;contain:content;overflow:hidden}`;
3
3
  //# 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,45BAA45B,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size);scrollbar-color:var(--ig-scrollbar-thumb-background) var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size);height:var(--ig-scrollbar-size);background:var(--ig-scrollbar-track-background)}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background)}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[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,ojCAAojC,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`:host{--is-large: clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-large, 3), 1);--is-medium: min( clamp(0, (var(--component-size, 1) + 1) - var(--ig-size-medium, 2), 1), clamp(0, var(--ig-size-large, 3) - var(--component-size, 1), 1) );--is-small: clamp(0, var(--ig-size-medium) - var(--component-size, 1), 1);position:relative;box-sizing:border-box;scrollbar-width:var(--ig-scrollbar-size, var(--sb-size));scrollbar-color:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color)) var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar{width:var(--ig-scrollbar-size, var(--sb-size));height:var(--ig-scrollbar-size, var(--sb-size));background:var(--ig-scrollbar-track-background, var(--sb-track-bg-color))}:host ::-webkit-scrollbar-thumb{background:var(--ig-scrollbar-thumb-background, var(--sb-thumb-bg-color))}:host *,:host *::before,:host *::after{box-sizing:border-box}:host([hidden]),[hidden]{display:none !important}:host{position:absolute;display:block;width:100%;height:100%;top:0;left:0;contain:content;overflow:hidden}`;\n"]}
@@ -1,6 +1,7 @@
1
1
  import { type TemplateResult } from 'lit';
2
2
  import { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';
3
3
  import type { AbstractConstructor } from '../common/mixins/constructor.js';
4
+ import { type FormValue } from '../common/mixins/forms/form-value.js';
4
5
  import IgcInputComponent from '../input/input.js';
5
6
  import { type IgcPlacement } from '../popover/popover.js';
6
7
  import IgcSelectGroupComponent from './select-group.js';
@@ -50,7 +51,7 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
50
51
  static readonly tagName = "igc-select";
51
52
  static styles: import("lit").CSSResult[];
52
53
  static register(): void;
53
- private _value;
54
+ protected _formValue: FormValue<string | undefined>;
54
55
  private _searchTerm;
55
56
  private _lastKeyTime;
56
57
  private _rootScrollController;
@@ -58,19 +59,16 @@ export default class IgcSelectComponent extends IgcSelectComponent_base {
58
59
  protected _selectedItem: IgcSelectItemComponent | null;
59
60
  protected _activeItem: IgcSelectItemComponent;
60
61
  protected get __validators(): import("../common/validators.js").Validator<IgcSelectComponent>[];
61
- protected input: IgcInputComponent;
62
- protected inputSuffix: Array<HTMLElement>;
63
- protected inputPrefix: Array<HTMLElement>;
62
+ protected _input: IgcInputComponent;
63
+ protected _inputSuffix: Array<HTMLElement>;
64
+ protected _inputPrefix: Array<HTMLElement>;
64
65
  protected _expandedIconSlot: Array<HTMLElement>;
65
- protected get hasExpandedIcon(): boolean;
66
- protected get hasPrefixes(): boolean;
67
- protected get hasSuffixes(): boolean;
68
66
  /**
69
67
  * The value attribute of the control.
70
68
  * @attr
71
69
  */
72
- get value(): string;
73
- set value(value: string);
70
+ set value(value: string | undefined);
71
+ get value(): string | undefined;
74
72
  /**
75
73
  * The outlined attribute of the control.
76
74
  * @attr