igniteui-webcomponents 4.6.0 → 4.7.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 (248) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/animations/player.js.map +1 -1
  3. package/components/accordion/accordion.js.map +1 -1
  4. package/components/avatar/avatar.d.ts +4 -3
  5. package/components/avatar/avatar.js +20 -24
  6. package/components/avatar/avatar.js.map +1 -1
  7. package/components/avatar/themes/themes.js +8 -9
  8. package/components/avatar/themes/themes.js.map +1 -1
  9. package/components/badge/badge.d.ts +4 -1
  10. package/components/badge/badge.js +15 -5
  11. package/components/badge/badge.js.map +1 -1
  12. package/components/badge/themes/themes.js +8 -9
  13. package/components/badge/themes/themes.js.map +1 -1
  14. package/components/button/button-base.d.ts +5 -6
  15. package/components/button/button-base.js +13 -26
  16. package/components/button/button-base.js.map +1 -1
  17. package/components/button/button.d.ts +2 -8
  18. package/components/button/button.js +6 -14
  19. package/components/button/button.js.map +1 -1
  20. package/components/button/icon-button.d.ts +1 -1
  21. package/components/button/icon-button.js +2 -1
  22. package/components/button/icon-button.js.map +1 -1
  23. package/components/button/themes/button/themes.js +8 -9
  24. package/components/button/themes/button/themes.js.map +1 -1
  25. package/components/button/themes/icon-button/themes.js +8 -9
  26. package/components/button/themes/icon-button/themes.js.map +1 -1
  27. package/components/button-group/button-group.d.ts +1 -1
  28. package/components/button-group/button-group.js +2 -1
  29. package/components/button-group/button-group.js.map +1 -1
  30. package/components/button-group/themes/button.js +6 -13
  31. package/components/button-group/themes/button.js.map +1 -1
  32. package/components/button-group/themes/group.js +8 -9
  33. package/components/button-group/themes/group.js.map +1 -1
  34. package/components/button-group/toggle-button.d.ts +2 -2
  35. package/components/button-group/toggle-button.js +7 -13
  36. package/components/button-group/toggle-button.js.map +1 -1
  37. package/components/calendar/calendar.d.ts +1 -1
  38. package/components/calendar/calendar.js +2 -1
  39. package/components/calendar/calendar.js.map +1 -1
  40. package/components/calendar/common/calendar-base.js.map +1 -1
  41. package/components/calendar/common/calendar.model.js.map +1 -1
  42. package/components/calendar/common/utils.js.map +1 -1
  43. package/components/calendar/days-view/days-view.js.map +1 -1
  44. package/components/calendar/months-view/months-view.js.map +1 -1
  45. package/components/calendar/themes/calendar.js +8 -9
  46. package/components/calendar/themes/calendar.js.map +1 -1
  47. package/components/calendar/years-view/years-view.js.map +1 -1
  48. package/components/card/card.content.d.ts +1 -1
  49. package/components/card/card.content.js +2 -1
  50. package/components/card/card.content.js.map +1 -1
  51. package/components/card/card.d.ts +1 -1
  52. package/components/card/card.header.d.ts +1 -1
  53. package/components/card/card.header.js +2 -1
  54. package/components/card/card.header.js.map +1 -1
  55. package/components/card/card.js +2 -1
  56. package/components/card/card.js.map +1 -1
  57. package/components/card/themes/container.js +8 -9
  58. package/components/card/themes/container.js.map +1 -1
  59. package/components/card/themes/content.js +8 -9
  60. package/components/card/themes/content.js.map +1 -1
  61. package/components/card/themes/header.js +8 -9
  62. package/components/card/themes/header.js.map +1 -1
  63. package/components/checkbox/checkbox-base.js.map +1 -1
  64. package/components/chip/chip.d.ts +1 -1
  65. package/components/chip/chip.js +2 -1
  66. package/components/chip/chip.js.map +1 -1
  67. package/components/chip/themes/themes.js +8 -9
  68. package/components/chip/themes/themes.js.map +1 -1
  69. package/components/combo/combo-item.d.ts +2 -0
  70. package/components/combo/combo-item.js +10 -11
  71. package/components/combo/combo-item.js.map +1 -1
  72. package/components/combo/combo-list.d.ts +0 -1
  73. package/components/combo/combo-list.js +0 -6
  74. package/components/combo/combo-list.js.map +1 -1
  75. package/components/combo/combo.d.ts +4 -5
  76. package/components/combo/combo.js +51 -39
  77. package/components/combo/combo.js.map +1 -1
  78. package/components/combo/controllers/navigation.js.map +1 -1
  79. package/components/combo/controllers/selection.js.map +1 -1
  80. package/components/combo/operations/group.d.ts +2 -2
  81. package/components/combo/operations/group.js +13 -26
  82. package/components/combo/operations/group.js.map +1 -1
  83. package/components/combo/themes/dark/combo.bootstrap.css.js +1 -1
  84. package/components/combo/themes/dark/combo.bootstrap.css.js.map +1 -1
  85. package/components/combo/themes/dark/combo.fluent.css.js +1 -1
  86. package/components/combo/themes/dark/combo.fluent.css.js.map +1 -1
  87. package/components/combo/themes/light/combo.bootstrap.css.js +1 -1
  88. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  89. package/components/combo/themes/light/combo.fluent.css.js +1 -1
  90. package/components/combo/themes/light/combo.fluent.css.js.map +1 -1
  91. package/components/common/controllers/key-bindings.js.map +1 -1
  92. package/components/common/controllers/root-click.d.ts +1 -1
  93. package/components/common/controllers/root-click.js.map +1 -1
  94. package/components/common/controllers/root-scroll.js.map +1 -1
  95. package/components/common/decorators/watch.js.map +1 -1
  96. package/components/common/definitions/defineComponents.js.map +1 -1
  97. package/components/common/definitions/register.js.map +1 -1
  98. package/components/common/mixins/alert.js.map +1 -1
  99. package/components/common/mixins/combo-box.js.map +1 -1
  100. package/components/common/mixins/form-associated.js.map +1 -1
  101. package/components/common/util.js.map +1 -1
  102. package/components/date-time-input/date-time-input.js.map +1 -1
  103. package/components/date-time-input/date-util.js.map +1 -1
  104. package/components/dialog/dialog.js +2 -1
  105. package/components/dialog/dialog.js.map +1 -1
  106. package/components/dialog/themes/themes.js +8 -9
  107. package/components/dialog/themes/themes.js.map +1 -1
  108. package/components/dropdown/dropdown.js.map +1 -1
  109. package/components/dropdown/themes/dark/dropdown.bootstrap.css.js +1 -1
  110. package/components/dropdown/themes/dark/dropdown.bootstrap.css.js.map +1 -1
  111. package/components/dropdown/themes/dark/dropdown.fluent.css.js +1 -1
  112. package/components/dropdown/themes/dark/dropdown.fluent.css.js.map +1 -1
  113. package/components/dropdown/themes/light/dropdown.bootstrap.css.js +1 -1
  114. package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
  115. package/components/dropdown/themes/light/dropdown.fluent.css.js +1 -1
  116. package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
  117. package/components/dropdown/themes/shared/item/dropdown-item.fluent.css.js +1 -1
  118. package/components/dropdown/themes/shared/item/dropdown-item.fluent.css.js.map +1 -1
  119. package/components/expansion-panel/expansion-panel.d.ts +1 -1
  120. package/components/expansion-panel/expansion-panel.js +2 -1
  121. package/components/expansion-panel/expansion-panel.js.map +1 -1
  122. package/components/expansion-panel/themes/themes.js +8 -9
  123. package/components/expansion-panel/themes/themes.js.map +1 -1
  124. package/components/form/form.js.map +1 -1
  125. package/components/icon/icon.d.ts +2 -2
  126. package/components/icon/icon.js +6 -7
  127. package/components/icon/icon.js.map +1 -1
  128. package/components/icon/icon.registry.js.map +1 -1
  129. package/components/icon/themes/themes.js +8 -9
  130. package/components/icon/themes/themes.js.map +1 -1
  131. package/components/input/input-base.js +0 -4
  132. package/components/input/input-base.js.map +1 -1
  133. package/components/list/list-header.d.ts +1 -1
  134. package/components/list/list-header.js +2 -1
  135. package/components/list/list-header.js.map +1 -1
  136. package/components/list/list-item.d.ts +1 -1
  137. package/components/list/list-item.js +2 -1
  138. package/components/list/list-item.js.map +1 -1
  139. package/components/list/themes/header.js +8 -9
  140. package/components/list/themes/header.js.map +1 -1
  141. package/components/list/themes/item.js +8 -9
  142. package/components/list/themes/item.js.map +1 -1
  143. package/components/mask-input/mask-input-base.js.map +1 -1
  144. package/components/mask-input/mask-input.js.map +1 -1
  145. package/components/mask-input/mask-parser.js.map +1 -1
  146. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
  147. package/components/nav-drawer/nav-drawer-header-item.js +2 -1
  148. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  149. package/components/nav-drawer/nav-drawer-item.d.ts +1 -1
  150. package/components/nav-drawer/nav-drawer-item.js +2 -1
  151. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  152. package/components/nav-drawer/nav-drawer.d.ts +1 -1
  153. package/components/nav-drawer/nav-drawer.js +2 -1
  154. package/components/nav-drawer/nav-drawer.js.map +1 -1
  155. package/components/nav-drawer/themes/container.base.css.js +1 -1
  156. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  157. package/components/nav-drawer/themes/container.js +8 -9
  158. package/components/nav-drawer/themes/container.js.map +1 -1
  159. package/components/nav-drawer/themes/header-item.js +2 -21
  160. package/components/nav-drawer/themes/header-item.js.map +1 -1
  161. package/components/nav-drawer/themes/item.js +4 -17
  162. package/components/nav-drawer/themes/item.js.map +1 -1
  163. package/components/navbar/navbar.d.ts +1 -1
  164. package/components/navbar/navbar.js +2 -1
  165. package/components/navbar/navbar.js.map +1 -1
  166. package/components/navbar/themes/themes.js +8 -9
  167. package/components/navbar/themes/themes.js.map +1 -1
  168. package/components/popover/popover.js.map +1 -1
  169. package/components/progress/base.js.map +1 -1
  170. package/components/progress/circular-progress.d.ts +1 -1
  171. package/components/progress/circular-progress.js +2 -1
  172. package/components/progress/circular-progress.js.map +1 -1
  173. package/components/progress/linear-progress.d.ts +1 -1
  174. package/components/progress/linear-progress.js +2 -1
  175. package/components/progress/linear-progress.js.map +1 -1
  176. package/components/progress/themes/circular/themes.js +8 -9
  177. package/components/progress/themes/circular/themes.js.map +1 -1
  178. package/components/progress/themes/linear/themes.js +8 -9
  179. package/components/progress/themes/linear/themes.js.map +1 -1
  180. package/components/radio/radio.js.map +1 -1
  181. package/components/radio/utils.js.map +1 -1
  182. package/components/rating/rating.d.ts +5 -0
  183. package/components/rating/rating.js +13 -2
  184. package/components/rating/rating.js.map +1 -1
  185. package/components/rating/themes/themes.js +8 -9
  186. package/components/rating/themes/themes.js.map +1 -1
  187. package/components/select/select-group.js.map +1 -1
  188. package/components/select/select-item.js.map +1 -1
  189. package/components/select/select.js.map +1 -1
  190. package/components/select/themes/dark/select.bootstrap.css.js +1 -1
  191. package/components/select/themes/dark/select.bootstrap.css.js.map +1 -1
  192. package/components/select/themes/dark/select.fluent.css.js +1 -1
  193. package/components/select/themes/dark/select.fluent.css.js.map +1 -1
  194. package/components/select/themes/light/select.bootstrap.css.js +1 -1
  195. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  196. package/components/select/themes/light/select.fluent.css.js +1 -1
  197. package/components/select/themes/light/select.fluent.css.js.map +1 -1
  198. package/components/slider/range-slider.js.map +1 -1
  199. package/components/slider/slider-base.js.map +1 -1
  200. package/components/slider/slider.js.map +1 -1
  201. package/components/snackbar/snackbar.d.ts +1 -1
  202. package/components/snackbar/snackbar.js +2 -1
  203. package/components/snackbar/snackbar.js.map +1 -1
  204. package/components/snackbar/themes/themes.js +8 -9
  205. package/components/snackbar/themes/themes.js.map +1 -1
  206. package/components/stepper/step.d.ts +1 -1
  207. package/components/stepper/step.js +2 -1
  208. package/components/stepper/step.js.map +1 -1
  209. package/components/stepper/stepper.js.map +1 -1
  210. package/components/stepper/themes/step/themes.js +8 -9
  211. package/components/stepper/themes/step/themes.js.map +1 -1
  212. package/components/tabs/tab.d.ts +1 -1
  213. package/components/tabs/tab.js +2 -1
  214. package/components/tabs/tab.js.map +1 -1
  215. package/components/tabs/tabs.d.ts +1 -1
  216. package/components/tabs/tabs.js +2 -1
  217. package/components/tabs/tabs.js.map +1 -1
  218. package/components/tabs/themes/tab-themes.js +4 -17
  219. package/components/tabs/themes/tab-themes.js.map +1 -1
  220. package/components/tabs/themes/tabs-themes.js +8 -9
  221. package/components/tabs/themes/tabs-themes.js.map +1 -1
  222. package/components/textarea/textarea.js.map +1 -1
  223. package/components/toast/themes/themes.js +8 -9
  224. package/components/toast/themes/themes.js.map +1 -1
  225. package/components/toast/toast.js +2 -1
  226. package/components/toast/toast.js.map +1 -1
  227. package/components/tree/tree-item.d.ts +1 -1
  228. package/components/tree/tree-item.js +20 -4
  229. package/components/tree/tree-item.js.map +1 -1
  230. package/components/tree/tree.d.ts +5 -0
  231. package/components/tree/tree.js +4 -0
  232. package/components/tree/tree.js.map +1 -1
  233. package/components/tree/tree.navigation.js.map +1 -1
  234. package/components/tree/tree.selection.js.map +1 -1
  235. package/custom-elements.json +190 -378
  236. package/package.json +1 -1
  237. package/theming/config.js.map +1 -1
  238. package/theming/theming-controller.js.map +1 -1
  239. package/theming/utils.js.map +1 -1
  240. package/components/toggle/toggle.controller.d.ts +0 -52
  241. package/components/toggle/toggle.controller.js +0 -92
  242. package/components/toggle/toggle.controller.js.map +0 -1
  243. package/components/toggle/toggle.directive.d.ts +0 -20
  244. package/components/toggle/toggle.directive.js +0 -94
  245. package/components/toggle/toggle.directive.js.map +0 -1
  246. package/components/toggle/types.d.ts +0 -51
  247. package/components/toggle/types.js +0 -2
  248. package/components/toggle/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-webcomponents",
3
- "version": "4.6.0",
3
+ "version": "4.7.0",
4
4
  "description": "Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.",
5
5
  "author": "Infragistics",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/theming/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,IAAI,KAAY,CAAC;AACjB,IAAI,YAA0B,CAAC;AAK/B,SAAS,oBAAoB,CAAC,MAA8B;IAC1D,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAGjB,GAAG,EAAE;IACP,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;QAC3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtB,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,gBAAgB,CACnD,IAAI,EAAE,CAAC;QAEV,KAAK;YACH,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAE,MAAM,CAAC,CAAC,CAAW;gBACtB,CAAC,CAAC,WAAW,CAAC;QAElB,YAAY;YACV,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1D,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAkB;gBAC/B,CAAC,CAAC,OAAO,CAAC;KACf;IAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,OAAqB,EAAE,EAAE;IAC9D,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,OAAO,CAAC;AACzB,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAQ,EAAE,IAAkB,OAAO,EAAE,EAAE;IACpE,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE;QAC/C,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChB;IAED,oBAAoB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC","sourcesContent":["import { CHANGE_THEME_EVENT, ChangeThemeEventDetail } from './theming-event.js';\nimport type { Theme, ThemeVariant } from './types.js';\nimport { getAllCSSVariables } from './utils.js';\n\nlet theme: Theme;\nlet themeVariant: ThemeVariant;\n\n/**\n * Dispatch an \"igc-change-theme\" event to `window` with the given detail.\n */\nfunction dispatchThemingEvent(detail: ChangeThemeEventDetail) {\n window.dispatchEvent(new CustomEvent(CHANGE_THEME_EVENT, { detail }));\n}\n\nfunction isOfTypeTheme(theme: string): theme is Theme {\n return ['bootstrap', 'material', 'indigo', 'fluent'].includes(theme);\n}\n\nfunction isOfTypeThemeVariant(variant: string): variant is ThemeVariant {\n return ['light', 'dark'].includes(variant);\n}\n\nexport const getTheme: () => {\n theme: Theme;\n themeVariant: ThemeVariant;\n} = () => {\n if (!theme || !themeVariant) {\n const [_theme, _variant] =\n Object.entries(getAllCSSVariables()).filter(\n ([v]) => v === 'igTheme' || v === 'igThemeVariant'\n ) || [];\n\n theme =\n _theme && _theme[1] && isOfTypeTheme(_theme[1])\n ? (_theme[1] as Theme)\n : 'bootstrap';\n\n themeVariant =\n _variant && _variant[1] && isOfTypeThemeVariant(_variant[1])\n ? (_variant[1] as ThemeVariant)\n : 'light';\n }\n\n return { theme, themeVariant };\n};\n\nexport const setTheme = (value: Theme, variant: ThemeVariant) => {\n theme = value;\n themeVariant = variant;\n};\n\n/**\n * Allows the global configuration of the active theme.\n *\n * Usage:\n * ```ts\n * import { configureTheme } from 'igniteui-webcomponents';\n *\n * configureTheme('material', 'light');\n * ```\n */\nexport const configureTheme = (t: Theme, v: ThemeVariant = 'light') => {\n if (isOfTypeTheme(t) && isOfTypeThemeVariant(v)) {\n setTheme(t, v);\n }\n\n dispatchThemingEvent({ theme, themeVariant });\n};\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/theming/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,IAAI,KAAY,CAAC;AACjB,IAAI,YAA0B,CAAC;AAK/B,SAAS,oBAAoB,CAAC,MAA8B;IAC1D,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAGjB,GAAG,EAAE;IACP,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtB,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,gBAAgB,CACnD,IAAI,EAAE,CAAC;QAEV,KAAK;YACH,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7C,CAAC,CAAE,MAAM,CAAC,CAAC,CAAW;gBACtB,CAAC,CAAC,WAAW,CAAC;QAElB,YAAY;YACV,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC1D,CAAC,CAAE,QAAQ,CAAC,CAAC,CAAkB;gBAC/B,CAAC,CAAC,OAAO,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,OAAqB,EAAE,EAAE;IAC9D,KAAK,GAAG,KAAK,CAAC;IACd,YAAY,GAAG,OAAO,CAAC;AACzB,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAQ,EAAE,IAAkB,OAAO,EAAE,EAAE;IACpE,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,oBAAoB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC","sourcesContent":["import { CHANGE_THEME_EVENT, ChangeThemeEventDetail } from './theming-event.js';\nimport type { Theme, ThemeVariant } from './types.js';\nimport { getAllCSSVariables } from './utils.js';\n\nlet theme: Theme;\nlet themeVariant: ThemeVariant;\n\n/**\n * Dispatch an \"igc-change-theme\" event to `window` with the given detail.\n */\nfunction dispatchThemingEvent(detail: ChangeThemeEventDetail) {\n window.dispatchEvent(new CustomEvent(CHANGE_THEME_EVENT, { detail }));\n}\n\nfunction isOfTypeTheme(theme: string): theme is Theme {\n return ['bootstrap', 'material', 'indigo', 'fluent'].includes(theme);\n}\n\nfunction isOfTypeThemeVariant(variant: string): variant is ThemeVariant {\n return ['light', 'dark'].includes(variant);\n}\n\nexport const getTheme: () => {\n theme: Theme;\n themeVariant: ThemeVariant;\n} = () => {\n if (!theme || !themeVariant) {\n const [_theme, _variant] =\n Object.entries(getAllCSSVariables()).filter(\n ([v]) => v === 'igTheme' || v === 'igThemeVariant'\n ) || [];\n\n theme =\n _theme && _theme[1] && isOfTypeTheme(_theme[1])\n ? (_theme[1] as Theme)\n : 'bootstrap';\n\n themeVariant =\n _variant && _variant[1] && isOfTypeThemeVariant(_variant[1])\n ? (_variant[1] as ThemeVariant)\n : 'light';\n }\n\n return { theme, themeVariant };\n};\n\nexport const setTheme = (value: Theme, variant: ThemeVariant) => {\n theme = value;\n themeVariant = variant;\n};\n\n/**\n * Allows the global configuration of the active theme.\n *\n * Usage:\n * ```ts\n * import { configureTheme } from 'igniteui-webcomponents';\n *\n * configureTheme('material', 'light');\n * ```\n */\nexport const configureTheme = (t: Theme, v: ThemeVariant = 'light') => {\n if (isOfTypeTheme(t) && isOfTypeThemeVariant(v)) {\n setTheme(t, v);\n }\n\n dispatchThemingEvent({ theme, themeVariant });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"theming-controller.js","sourceRoot":"","sources":["../../src/theming/theming-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n ReactiveController,\n ReactiveControllerHost,\n ReactiveElement,\n adoptStyles,\n css,\n} from 'lit';\n\nimport { getTheme } from './config.js';\nimport { CHANGE_THEME_EVENT } from './theming-event.js';\nimport type { Theme, ThemeController, ThemeVariant, Themes } from './types.js';\n\nclass ThemeEventListeners {\n private readonly listeners = new Set<Function>();\n\n public add(listener: Function) {\n window.addEventListener(CHANGE_THEME_EVENT, this);\n this.listeners.add(listener);\n }\n\n public remove(listener: Function) {\n this.listeners.delete(listener);\n if (this.listeners.size < 1) {\n window.removeEventListener(CHANGE_THEME_EVENT, this);\n }\n }\n\n public handleEvent = () => {\n for (const listener of this.listeners) {\n listener();\n }\n };\n}\n\nconst _themingEventListeners = new ThemeEventListeners();\n\nclass ThemingController implements ReactiveController, ThemeController {\n private themes: Themes;\n private host: ReactiveControllerHost & ReactiveElement;\n public theme!: Theme;\n public themeVariant!: ThemeVariant;\n\n constructor(host: ReactiveControllerHost & ReactiveElement, themes: Themes) {\n this.host = host;\n this.themes = themes;\n }\n\n public hostConnected() {\n this.adoptStyles();\n _themingEventListeners.add(this.themeChanged);\n }\n\n public hostDisconnected() {\n _themingEventListeners.remove(this.themeChanged);\n }\n\n protected adoptStyles() {\n const { theme, themeVariant } = getTheme();\n this.theme = theme;\n this.themeVariant = themeVariant;\n\n const ctor = this.host.constructor as typeof LitElement;\n\n const [_, cssResult] =\n Object.entries(this.themes[themeVariant]).find(\n ([name]) => name === this.theme\n ) ?? [];\n\n adoptStyles(this.host.shadowRoot as ShadowRoot, [\n ...ctor.elementStyles,\n cssResult ?? css``,\n ]);\n }\n\n private themeChanged = () => {\n this.adoptStyles();\n this.host.requestUpdate();\n };\n}\n\nconst _updateWhenThemeChanges = (\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n exposeTheme?: boolean\n) => {\n const controller = new ThemingController(host, themes);\n host.addController(controller);\n\n if (exposeTheme) {\n Object.defineProperty(host, themeSymbol, {\n get() {\n return controller.theme;\n },\n configurable: true,\n enumerable: false,\n });\n }\n\n return controller;\n};\n\nexport const updateWhenThemeChanges: typeof _updateWhenThemeChanges & {\n _THEMING_CONTROLLER_FN_?: never;\n} = _updateWhenThemeChanges;\n\nexport const themeSymbol = Symbol('Current active theme');\n"]}
1
+ {"version":3,"file":"theming-controller.js","sourceRoot":"","sources":["../../src/theming/theming-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n ReactiveController,\n ReactiveControllerHost,\n ReactiveElement,\n adoptStyles,\n css,\n} from 'lit';\n\nimport { getTheme } from './config.js';\nimport { CHANGE_THEME_EVENT } from './theming-event.js';\nimport type { Theme, ThemeController, ThemeVariant, Themes } from './types.js';\n\nclass ThemeEventListeners {\n private readonly listeners = new Set<Function>();\n\n public add(listener: Function) {\n window.addEventListener(CHANGE_THEME_EVENT, this);\n this.listeners.add(listener);\n }\n\n public remove(listener: Function) {\n this.listeners.delete(listener);\n if (this.listeners.size < 1) {\n window.removeEventListener(CHANGE_THEME_EVENT, this);\n }\n }\n\n public handleEvent = () => {\n for (const listener of this.listeners) {\n listener();\n }\n };\n}\n\nconst _themingEventListeners = new ThemeEventListeners();\n\nclass ThemingController implements ReactiveController, ThemeController {\n private themes: Themes;\n private host: ReactiveControllerHost & ReactiveElement;\n public theme!: Theme;\n public themeVariant!: ThemeVariant;\n\n constructor(host: ReactiveControllerHost & ReactiveElement, themes: Themes) {\n this.host = host;\n this.themes = themes;\n }\n\n public hostConnected() {\n this.adoptStyles();\n _themingEventListeners.add(this.themeChanged);\n }\n\n public hostDisconnected() {\n _themingEventListeners.remove(this.themeChanged);\n }\n\n protected adoptStyles() {\n const { theme, themeVariant } = getTheme();\n this.theme = theme;\n this.themeVariant = themeVariant;\n\n const ctor = this.host.constructor as typeof LitElement;\n\n const [_, cssResult] =\n Object.entries(this.themes[themeVariant]).find(\n ([name]) => name === this.theme\n ) ?? [];\n\n adoptStyles(this.host.shadowRoot as ShadowRoot, [\n ...ctor.elementStyles,\n cssResult ?? css``,\n ]);\n }\n\n private themeChanged = () => {\n this.adoptStyles();\n this.host.requestUpdate();\n };\n}\n\nconst _updateWhenThemeChanges = (\n host: ReactiveControllerHost & ReactiveElement,\n themes: Themes,\n exposeTheme?: boolean\n) => {\n const controller = new ThemingController(host, themes);\n host.addController(controller);\n\n if (exposeTheme) {\n Object.defineProperty(host, themeSymbol, {\n get() {\n return controller.theme;\n },\n configurable: true,\n enumerable: false,\n });\n }\n\n return controller;\n};\n\nexport const updateWhenThemeChanges: typeof _updateWhenThemeChanges & {\n _THEMING_CONTROLLER_FN_?: never;\n} = _updateWhenThemeChanges;\n\nexport const themeSymbol = Symbol('Current active theme');\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/theming/utils.ts"],"names":[],"mappings":"AACA,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,MAAM,sBAAsB,GAAG,CAC7B,cAA8B,QAAQ,CAAC,WAAW,EAClD,EAAE;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC7C,IAAI;YACF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBACpD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAC3B,OAAO;iBACR;gBAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACrB;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;QAAC,OAAO,CAAC,EAAE,GAAE;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,UAAyB,EACzB,UAAuB,QAAQ,CAAC,IAAI,EACpC,SAA6B,EAAE,EAC/B,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE;YACR,OAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;SACrD;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAA2B,EAAE;IAC7D,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnE,CAAC,CAAC","sourcesContent":["/*eslint no-empty: ['error', {allowEmptyCatch: true}]*/\nconst CssKeyToJsKey = (key: string) =>\n key.replace('--', '').replace(/-./g, (x) => x.toUpperCase()[1]);\n\nconst getAllCSSVariableNames = (\n styleSheets: StyleSheetList = document.styleSheets\n) => {\n const cssVars: string[] = [];\n\n Array.from(styleSheets).forEach((styleSheet) => {\n try {\n Array.from(styleSheet.cssRules).forEach((rule: any) => {\n if (!rule || !rule['style']) {\n return;\n }\n\n Array.from(rule['style']).forEach((style: any) => {\n if (style.startsWith('--') && cssVars.indexOf(style) == -1) {\n cssVars.push(style);\n }\n });\n });\n } catch (e) {}\n });\n\n return cssVars;\n};\n\nconst getElementCSSVariables = (\n allCSSVars: Array<string>,\n element: HTMLElement = document.body,\n pseudo: string | undefined = ''\n) => {\n const elStyles = window.getComputedStyle(element, pseudo);\n const cssVars = {};\n\n allCSSVars.forEach((key) => {\n const value = elStyles.getPropertyValue(key);\n\n if (value) {\n (cssVars as any)[CssKeyToJsKey(key)] = value.trim();\n }\n });\n\n return cssVars;\n};\n\nexport const getAllCSSVariables = (): Record<string, string> => {\n const cssVars = getAllCSSVariableNames();\n return getElementCSSVariables(cssVars, document.documentElement);\n};\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/theming/utils.ts"],"names":[],"mappings":"AACA,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,MAAM,sBAAsB,GAAG,CAC7B,cAA8B,QAAQ,CAAC,WAAW,EAClD,EAAE;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBACpD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;wBAC3D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,UAAyB,EACzB,UAAuB,QAAQ,CAAC,IAAI,EACpC,SAA6B,EAAE,EAC/B,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE7C,IAAI,KAAK,EAAE,CAAC;YACT,OAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAA2B,EAAE;IAC7D,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;AACnE,CAAC,CAAC","sourcesContent":["/*eslint no-empty: ['error', {allowEmptyCatch: true}]*/\nconst CssKeyToJsKey = (key: string) =>\n key.replace('--', '').replace(/-./g, (x) => x.toUpperCase()[1]);\n\nconst getAllCSSVariableNames = (\n styleSheets: StyleSheetList = document.styleSheets\n) => {\n const cssVars: string[] = [];\n\n Array.from(styleSheets).forEach((styleSheet) => {\n try {\n Array.from(styleSheet.cssRules).forEach((rule: any) => {\n if (!rule || !rule['style']) {\n return;\n }\n\n Array.from(rule['style']).forEach((style: any) => {\n if (style.startsWith('--') && cssVars.indexOf(style) == -1) {\n cssVars.push(style);\n }\n });\n });\n } catch (e) {}\n });\n\n return cssVars;\n};\n\nconst getElementCSSVariables = (\n allCSSVars: Array<string>,\n element: HTMLElement = document.body,\n pseudo: string | undefined = ''\n) => {\n const elStyles = window.getComputedStyle(element, pseudo);\n const cssVars = {};\n\n allCSSVars.forEach((key) => {\n const value = elStyles.getPropertyValue(key);\n\n if (value) {\n (cssVars as any)[CssKeyToJsKey(key)] = value.trim();\n }\n });\n\n return cssVars;\n};\n\nexport const getAllCSSVariables = (): Record<string, string> => {\n const cssVars = getAllCSSVariableNames();\n return getElementCSSVariables(cssVars, document.documentElement);\n};\n"]}
@@ -1,52 +0,0 @@
1
- import { ReactiveController, ReactiveControllerHost } from 'lit';
2
- import type { DirectiveResult } from 'lit/directive';
3
- import { IgcToggleDirective } from './toggle.directive.js';
4
- import type { IgcToggleComponent } from './types.js';
5
- type ToggleHost = ReactiveControllerHost & IgcToggleComponent & HTMLElement;
6
- /**
7
- * Toggle controller configuration
8
- */
9
- interface ToggleControllerConfig {
10
- /** The element, relative to which, the toggle will be positioned. */
11
- target?: HTMLElement;
12
- /**
13
- * The function to call when closing the toggle element from an user interaction (scroll, click).
14
- */
15
- closeCallback?: Function;
16
- }
17
- /**
18
- * Controller, bundling the creation of a toggle directive and handling global events,
19
- * related to the configuration of togglable components.
20
- */
21
- export declare class IgcToggleController implements ReactiveController {
22
- private host;
23
- private sourceElement?;
24
- private initialScrollTop;
25
- private initialScrollLeft;
26
- private _target;
27
- private _hide?;
28
- private _abortController;
29
- /**
30
- * Abort controller used to clean up document level event listeners
31
- * See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#add_an_abortable_listener
32
- */
33
- protected get abortController(): AbortController;
34
- /** The directive that marks the toggle. */
35
- toggleDirective: DirectiveResult<typeof IgcToggleDirective>;
36
- rendered: Promise<void>;
37
- set target(value: HTMLElement);
38
- /** The element, relative to which, the toggle will be positioned. */
39
- get target(): HTMLElement;
40
- constructor(host: ToggleHost, config?: ToggleControllerConfig);
41
- hostDisconnected(): void;
42
- update(): void;
43
- protected hide(): void;
44
- private addEventListeners;
45
- private configureListeners;
46
- private blockScroll;
47
- /** The document's click event handler to override in the host component if necessary. */
48
- private documentClicked;
49
- /** The document's scroll event handler to override in the host component if necessary. */
50
- private handleScroll;
51
- }
52
- export {};
@@ -1,92 +0,0 @@
1
- import { igcToggle } from './toggle.directive.js';
2
- export class IgcToggleController {
3
- get abortController() {
4
- if (this._abortController.signal.aborted) {
5
- this._abortController = new AbortController();
6
- }
7
- return this._abortController;
8
- }
9
- set target(value) {
10
- this._target = value;
11
- this.update();
12
- }
13
- get target() {
14
- return this._target;
15
- }
16
- constructor(host, config) {
17
- this.initialScrollTop = 0;
18
- this.initialScrollLeft = 0;
19
- this._abortController = new AbortController();
20
- this.blockScroll = (event) => {
21
- event.preventDefault();
22
- if (!this.sourceElement || this.sourceElement !== event.target) {
23
- this.sourceElement = event.target;
24
- this.initialScrollTop =
25
- this.sourceElement.scrollTop ??
26
- this.sourceElement.firstElementChild?.scrollTop;
27
- this.initialScrollLeft =
28
- this.sourceElement.scrollLeft ??
29
- this.sourceElement.firstElementChild?.scrollLeft;
30
- }
31
- this.sourceElement.scrollTop = this.initialScrollTop;
32
- this.sourceElement.scrollLeft = this.initialScrollLeft;
33
- if (this.sourceElement.firstElementChild) {
34
- this.sourceElement.firstElementChild.scrollTop = this.initialScrollTop;
35
- this.sourceElement.firstElementChild.scrollLeft = this.initialScrollLeft;
36
- }
37
- };
38
- this.documentClicked = (event) => {
39
- if (!this.host.keepOpenOnOutsideClick) {
40
- const tree = event.composed ? event.composedPath() : [event.target];
41
- if (tree.includes(this.host) || tree.includes(this.target)) {
42
- return;
43
- }
44
- this.hide();
45
- }
46
- };
47
- this.handleScroll = (event) => {
48
- switch (this.host.scrollStrategy) {
49
- case 'scroll':
50
- break;
51
- case 'block':
52
- this.blockScroll(event);
53
- break;
54
- case 'close':
55
- this.hide();
56
- break;
57
- }
58
- };
59
- (this.host = host).addController(this);
60
- if (config?.target) {
61
- this._target = config.target;
62
- }
63
- if (config?.closeCallback) {
64
- this._hide = config.closeCallback;
65
- }
66
- this.update();
67
- }
68
- hostDisconnected() {
69
- this.abortController.abort();
70
- }
71
- update() {
72
- this.toggleDirective = igcToggle(this.target, this.host, this);
73
- this.configureListeners();
74
- }
75
- hide() {
76
- this._hide ? this._hide() : this.host.hide();
77
- }
78
- addEventListeners() {
79
- const options = {
80
- capture: true,
81
- signal: this.abortController.signal,
82
- };
83
- if (!this.host.keepOpenOnOutsideClick) {
84
- document.addEventListener('click', this.documentClicked, options);
85
- }
86
- document.addEventListener('scroll', this.handleScroll, options);
87
- }
88
- configureListeners() {
89
- this.host.open ? this.addEventListeners() : this.abortController.abort();
90
- }
91
- }
92
- //# sourceMappingURL=toggle.controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle.controller.js","sourceRoot":"","sources":["../../../src/components/toggle/toggle.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAsBtE,MAAM,OAAO,mBAAmB;IAa9B,IAAc,eAAe;QAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE;YACxC,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAMD,IAAW,MAAM,CAAC,KAAkB;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAGD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY,IAAgB,EAAE,MAA+B;QA/BrD,qBAAgB,GAAG,CAAC,CAAC;QACrB,sBAAiB,GAAG,CAAC,CAAC;QAGtB,qBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAuEzC,gBAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACrC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;gBAC9D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAiB,CAAC;gBAC7C,IAAI,CAAC,gBAAgB;oBACnB,IAAI,CAAC,aAAa,CAAC,SAAS;wBAC5B,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,SAAS,CAAC;gBAClD,IAAI,CAAC,iBAAiB;oBACpB,IAAI,CAAC,aAAa,CAAC,UAAU;wBAC7B,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,UAAU,CAAC;aACpD;YAED,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACrD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACvD,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE;gBACxC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACvE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;aAC1E;QACH,CAAC,CAAC;QAGM,oBAAe,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC9C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC1D,OAAO;iBACR;gBAED,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;QACH,CAAC,CAAC;QAGM,iBAAY,GAAG,CAAC,KAAY,EAAE,EAAE;YACtC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBAChC,KAAK,QAAQ;oBACX,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,MAAM;aACT;QACH,CAAC,CAAC;QAxFA,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,MAAM,EAAE,MAAM,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;SAC9B;QAED,IAAI,MAAM,EAAE,aAAa,EAAE;YACzB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;SACnC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAES,IAAI;QACZ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAA4B;YACvC,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;SACpC,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;SACnE;QAED,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC3E,CAAC;CAgDF","sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\nimport type { DirectiveResult } from 'lit/directive';\n\nimport { IgcToggleDirective, igcToggle } from './toggle.directive.js';\nimport type { IgcToggleComponent } from './types.js';\n\ntype ToggleHost = ReactiveControllerHost & IgcToggleComponent & HTMLElement;\n\n/**\n * Toggle controller configuration\n */\ninterface ToggleControllerConfig {\n /** The element, relative to which, the toggle will be positioned. */\n target?: HTMLElement;\n /**\n * The function to call when closing the toggle element from an user interaction (scroll, click).\n */\n closeCallback?: Function;\n}\n\n/* blazorSuppress */\n/**\n * Controller, bundling the creation of a toggle directive and handling global events,\n * related to the configuration of togglable components.\n */\nexport class IgcToggleController implements ReactiveController {\n private host: IgcToggleComponent & HTMLElement;\n private sourceElement?: Element;\n private initialScrollTop = 0;\n private initialScrollLeft = 0;\n private _target!: HTMLElement;\n private _hide?: Function;\n private _abortController = new AbortController();\n\n /**\n * Abort controller used to clean up document level event listeners\n * See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#add_an_abortable_listener\n */\n protected get abortController() {\n if (this._abortController.signal.aborted) {\n this._abortController = new AbortController();\n }\n return this._abortController;\n }\n\n /** The directive that marks the toggle. */\n public toggleDirective!: DirectiveResult<typeof IgcToggleDirective>;\n public rendered!: Promise<void>;\n\n public set target(value: HTMLElement) {\n this._target = value;\n this.update();\n }\n\n /** The element, relative to which, the toggle will be positioned. */\n public get target() {\n return this._target;\n }\n\n constructor(host: ToggleHost, config?: ToggleControllerConfig) {\n (this.host = host).addController(this);\n\n if (config?.target) {\n this._target = config.target;\n }\n\n if (config?.closeCallback) {\n this._hide = config.closeCallback;\n }\n\n this.update();\n }\n\n public hostDisconnected() {\n this.abortController.abort();\n }\n\n public update() {\n this.toggleDirective = igcToggle(this.target, this.host, this);\n this.configureListeners();\n }\n\n protected hide() {\n this._hide ? this._hide() : this.host.hide();\n }\n\n private addEventListeners() {\n const options: AddEventListenerOptions = {\n capture: true,\n signal: this.abortController.signal,\n };\n\n if (!this.host.keepOpenOnOutsideClick) {\n document.addEventListener('click', this.documentClicked, options);\n }\n\n document.addEventListener('scroll', this.handleScroll, options);\n }\n\n private configureListeners() {\n this.host.open ? this.addEventListeners() : this.abortController.abort();\n }\n\n private blockScroll = (event: Event) => {\n event.preventDefault();\n if (!this.sourceElement || this.sourceElement !== event.target) {\n this.sourceElement = event.target as Element;\n this.initialScrollTop =\n this.sourceElement.scrollTop ??\n this.sourceElement.firstElementChild?.scrollTop;\n this.initialScrollLeft =\n this.sourceElement.scrollLeft ??\n this.sourceElement.firstElementChild?.scrollLeft;\n }\n\n this.sourceElement.scrollTop = this.initialScrollTop;\n this.sourceElement.scrollLeft = this.initialScrollLeft;\n if (this.sourceElement.firstElementChild) {\n this.sourceElement.firstElementChild.scrollTop = this.initialScrollTop;\n this.sourceElement.firstElementChild.scrollLeft = this.initialScrollLeft;\n }\n };\n\n /** The document's click event handler to override in the host component if necessary. */\n private documentClicked = (event: MouseEvent) => {\n if (!this.host.keepOpenOnOutsideClick) {\n const tree = event.composed ? event.composedPath() : [event.target];\n\n if (tree.includes(this.host) || tree.includes(this.target)) {\n return;\n }\n\n this.hide();\n }\n };\n\n /** The document's scroll event handler to override in the host component if necessary. */\n private handleScroll = (event: Event) => {\n switch (this.host.scrollStrategy) {\n case 'scroll':\n break;\n case 'block':\n this.blockScroll(event);\n break;\n case 'close':\n this.hide();\n break;\n }\n };\n}\n"]}
@@ -1,20 +0,0 @@
1
- import { Directive, PartInfo } from 'lit/directive.js';
2
- import type { IgcToggleController } from './toggle.controller.js';
3
- import type { IgcToggleOptions } from './types.js';
4
- export declare class IgcToggleDirective extends Directive {
5
- private part;
6
- private _floatingElement;
7
- private _dispose;
8
- private target;
9
- private options;
10
- private controller?;
11
- private get floatingElement();
12
- private dispose;
13
- private notifyController;
14
- private updatePosition;
15
- private reposition;
16
- private createMiddleware;
17
- constructor(partInfo: PartInfo);
18
- render(target: HTMLElement, options: IgcToggleOptions, controller?: IgcToggleController): symbol;
19
- }
20
- export declare const igcToggle: (target: HTMLElement, options: IgcToggleOptions, controller?: IgcToggleController | undefined) => import("lit-html/directive.js").DirectiveResult<typeof IgcToggleDirective>;
@@ -1,94 +0,0 @@
1
- import { autoUpdate, computePosition, flip, offset, shift, size, } from '@floating-ui/dom';
2
- import { noChange } from 'lit';
3
- import { Directive, PartType, directive, } from 'lit/directive.js';
4
- export class IgcToggleDirective extends Directive {
5
- get floatingElement() {
6
- if (!this._floatingElement) {
7
- this._floatingElement = this.part.element;
8
- }
9
- Object.assign(this._floatingElement.style, {
10
- display: this.options.open ? '' : 'none',
11
- });
12
- return this._floatingElement;
13
- }
14
- dispose() {
15
- if (this._dispose) {
16
- this._dispose();
17
- }
18
- }
19
- notifyController(promise) {
20
- if (this.controller) {
21
- this.controller.rendered = promise;
22
- }
23
- }
24
- updatePosition() {
25
- this.dispose();
26
- if (!this.floatingElement || !this.target || !this.options.open) {
27
- return noChange;
28
- }
29
- this._dispose = autoUpdate(this.target, this.floatingElement, this.reposition);
30
- return noChange;
31
- }
32
- createMiddleware(options) {
33
- const middleware = [];
34
- const { style: floatingStyles } = this._floatingElement;
35
- if (options.distance) {
36
- middleware.push(offset({
37
- mainAxis: options.distance,
38
- }));
39
- }
40
- if (options.flip) {
41
- middleware.push(flip());
42
- }
43
- middleware.push(shift({
44
- mainAxis: true,
45
- }));
46
- if (options.sameWidth) {
47
- middleware.push(size({
48
- apply: ({ rects }) => {
49
- Object.assign(floatingStyles, {
50
- width: `${rects.reference.width}px`,
51
- });
52
- },
53
- }));
54
- }
55
- else {
56
- Object.assign(floatingStyles, { width: '' });
57
- }
58
- return middleware;
59
- }
60
- constructor(partInfo) {
61
- super(partInfo);
62
- this.reposition = () => {
63
- if (!this.target) {
64
- this.dispose();
65
- this.notifyController(Promise.resolve());
66
- return noChange;
67
- }
68
- const config = {
69
- placement: this.options.placement ?? 'bottom-start',
70
- strategy: this.options.positionStrategy ?? 'absolute',
71
- middleware: this.createMiddleware(this.options),
72
- };
73
- const promise = computePosition(this.target, this.floatingElement, config).then(({ x, y }) => {
74
- Object.assign(this.floatingElement.style, {
75
- left: 0,
76
- top: 0,
77
- transform: `translate(${x}px,${y}px)`,
78
- });
79
- });
80
- this.notifyController(promise);
81
- return noChange;
82
- };
83
- this.part = partInfo;
84
- if (partInfo.type !== PartType.ELEMENT) {
85
- throw new Error('The `igcToggle` directive must be attached to an element tag.');
86
- }
87
- }
88
- render(target, options, controller) {
89
- Object.assign(this, { target, options, controller });
90
- return this.updatePosition();
91
- }
92
- }
93
- export const igcToggle = directive(IgcToggleDirective);
94
- //# sourceMappingURL=toggle.directive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toggle.directive.js","sourceRoot":"","sources":["../../../src/components/toggle/toggle.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ComputePositionConfig,\n Middleware,\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n size,\n} from '@floating-ui/dom';\nimport { noChange } from 'lit';\nimport {\n Directive,\n ElementPart,\n PartInfo,\n PartType,\n directive,\n} from 'lit/directive.js';\n\nimport type { IgcToggleController } from './toggle.controller.js';\nimport type { IgcToggleOptions } from './types.js';\n\n/* blazorSuppressComponent */\nexport class IgcToggleDirective extends Directive {\n private part: PartInfo;\n\n private _floatingElement!: HTMLElement;\n private _dispose!: Function;\n\n private target!: HTMLElement;\n private options!: IgcToggleOptions;\n private controller?: IgcToggleController;\n\n private get floatingElement() {\n if (!this._floatingElement) {\n this._floatingElement = (this.part as ElementPart).element as HTMLElement;\n }\n\n Object.assign(this._floatingElement.style, {\n display: this.options.open ? '' : 'none',\n });\n\n return this._floatingElement;\n }\n\n private dispose() {\n if (this._dispose) {\n this._dispose();\n }\n }\n\n private notifyController(promise: Promise<void>) {\n if (this.controller) {\n this.controller.rendered = promise;\n }\n }\n\n private updatePosition() {\n this.dispose();\n\n if (!this.floatingElement || !this.target || !this.options.open) {\n return noChange;\n }\n\n this._dispose = autoUpdate(\n this.target,\n this.floatingElement,\n this.reposition\n );\n\n return noChange;\n }\n\n private reposition = () => {\n if (!this.target) {\n this.dispose();\n this.notifyController(Promise.resolve());\n return noChange;\n }\n\n const config: Partial<ComputePositionConfig> = {\n placement: this.options.placement ?? 'bottom-start',\n strategy: this.options.positionStrategy ?? 'absolute',\n middleware: this.createMiddleware(this.options),\n };\n\n const promise = computePosition(\n this.target,\n this.floatingElement,\n config\n ).then(({ x, y }) => {\n Object.assign(this.floatingElement.style, {\n left: 0,\n top: 0,\n transform: `translate(${x}px,${y}px)`,\n });\n });\n\n this.notifyController(promise);\n return noChange;\n };\n\n private createMiddleware(options: IgcToggleOptions) {\n const middleware: Middleware[] = [];\n const { style: floatingStyles } = this._floatingElement;\n\n if (options.distance) {\n middleware.push(\n offset({\n mainAxis: options.distance,\n })\n );\n }\n\n if (options.flip) {\n middleware.push(flip());\n }\n\n middleware.push(\n shift({\n mainAxis: true,\n })\n );\n\n if (options.sameWidth) {\n middleware.push(\n size({\n apply: ({ rects }) => {\n Object.assign(floatingStyles, {\n width: `${rects.reference.width}px`,\n });\n },\n })\n );\n } else {\n // Reset previously applied `same-width` styles\n Object.assign(floatingStyles, { width: '' });\n }\n\n return middleware;\n }\n\n constructor(partInfo: PartInfo) {\n super(partInfo);\n this.part = partInfo;\n if (partInfo.type !== PartType.ELEMENT) {\n throw new Error(\n 'The `igcToggle` directive must be attached to an element tag.'\n );\n }\n }\n\n public render(\n target: HTMLElement,\n options: IgcToggleOptions,\n controller?: IgcToggleController\n ) {\n Object.assign(this, { target, options, controller });\n return this.updatePosition();\n }\n}\n\nexport const igcToggle = directive(IgcToggleDirective);\n"]}
@@ -1,51 +0,0 @@
1
- /**
2
- * Common events interface for toggle components
3
- */
4
- export interface IgcToggleEventMap {
5
- igcOpening: CustomEvent<void>;
6
- igcOpened: CustomEvent<void>;
7
- igcClosing: CustomEvent<void>;
8
- igcClosed: CustomEvent<void>;
9
- }
10
- /**
11
- * Interface describing the options for toggle components' configuration.
12
- */
13
- export interface IgcToggleOptions {
14
- /**
15
- * Whether the toggle is open.
16
- */
17
- open: boolean;
18
- /**
19
- * The preferred placement of the toggle element around the target element. */
20
- placement?: IgcPlacement;
21
- /**
22
- * The positioning strategy to use.
23
- * Use the `fixed` strategy when the target element is in a fixed container, otherwise - use `absolute`.
24
- */
25
- positionStrategy?: 'absolute' | 'fixed';
26
- /**
27
- * Whether the element should be flipped to the opposite side once it's about to overflow the visible area.
28
- * Once enough space is detected on its preferred side, it will flip back.
29
- */
30
- flip?: boolean;
31
- /**
32
- * Whether to prevent the element from being cut off by moving it so it stays visible within its boundary area.
33
- */
34
- distance?: number;
35
- /**
36
- * Whether to make the toggle the same width as the target.
37
- */
38
- sameWidth?: boolean;
39
- }
40
- export interface IgcToggleComponent extends IgcToggleOptions {
41
- scrollStrategy?: 'scroll' | 'block' | 'close';
42
- keepOpenOnOutsideClick?: boolean;
43
- hide(): void;
44
- show(): void;
45
- toggle(): void;
46
- }
47
- /**
48
- * Describes the preferred placement of a toggle component.
49
- */
50
- type IgcPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end';
51
- export {};
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/toggle/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Common events interface for toggle components\n */\nexport interface IgcToggleEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n}\n/**\n * Interface describing the options for toggle components' configuration.\n */\nexport interface IgcToggleOptions {\n /**\n * Whether the toggle is open.\n */\n open: boolean;\n /**\n * The preferred placement of the toggle element around the target element. */\n placement?: IgcPlacement;\n /**\n * The positioning strategy to use.\n * Use the `fixed` strategy when the target element is in a fixed container, otherwise - use `absolute`.\n */\n positionStrategy?: 'absolute' | 'fixed';\n /**\n * Whether the element should be flipped to the opposite side once it's about to overflow the visible area.\n * Once enough space is detected on its preferred side, it will flip back.\n */\n flip?: boolean;\n /**\n * Whether to prevent the element from being cut off by moving it so it stays visible within its boundary area.\n */\n distance?: number;\n /**\n * Whether to make the toggle the same width as the target.\n */\n sameWidth?: boolean;\n}\n\nexport interface IgcToggleComponent extends IgcToggleOptions {\n scrollStrategy?: 'scroll' | 'block' | 'close';\n keepOpenOnOutsideClick?: boolean;\n\n hide(): void;\n show(): void;\n toggle(): void;\n}\n\n/**\n * Describes the preferred placement of a toggle component.\n */\ntype IgcPlacement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n"]}