@refinitiv-ui/elements 5.0.0-beta.3 → 5.0.0-dev.204

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 (596) hide show
  1. package/CHANGELOG.md +325 -73
  2. package/README.md +13 -2
  3. package/lib/accordion/custom-elements.json +0 -13
  4. package/lib/accordion/custom-elements.md +18 -0
  5. package/lib/accordion/index.d.ts +13 -10
  6. package/lib/accordion/index.js +15 -18
  7. package/lib/appstate-bar/custom-elements.json +1 -1
  8. package/lib/appstate-bar/custom-elements.md +22 -0
  9. package/lib/appstate-bar/index.d.ts +15 -6
  10. package/lib/appstate-bar/index.js +17 -11
  11. package/lib/autosuggest/custom-elements.json +24 -4
  12. package/lib/autosuggest/custom-elements.md +54 -0
  13. package/lib/autosuggest/helpers/types.d.ts +22 -1
  14. package/lib/autosuggest/helpers/types.js +0 -1
  15. package/lib/autosuggest/helpers/utils.d.ts +2 -2
  16. package/lib/autosuggest/helpers/utils.js +1 -3
  17. package/lib/autosuggest/index.d.ts +21 -9
  18. package/lib/autosuggest/index.js +45 -31
  19. package/lib/button/custom-elements.json +3 -3
  20. package/lib/button/custom-elements.md +23 -0
  21. package/lib/button/index.d.ts +27 -20
  22. package/lib/button/index.js +92 -74
  23. package/lib/button/themes/halo/dark/index.js +1 -1
  24. package/lib/button/themes/halo/light/index.js +1 -1
  25. package/lib/button/themes/solar/charcoal/index.js +1 -1
  26. package/lib/button/themes/solar/pearl/index.js +1 -1
  27. package/lib/button-bar/custom-elements.md +9 -0
  28. package/lib/button-bar/index.d.ts +60 -4
  29. package/lib/button-bar/index.js +164 -19
  30. package/lib/calendar/constants.d.ts +26 -0
  31. package/lib/calendar/constants.js +28 -0
  32. package/lib/calendar/custom-elements.json +8 -6
  33. package/lib/calendar/custom-elements.md +35 -0
  34. package/lib/calendar/index.d.ts +119 -21
  35. package/lib/calendar/index.js +512 -157
  36. package/lib/calendar/locales.d.ts +1 -31
  37. package/lib/calendar/locales.js +3 -107
  38. package/lib/calendar/themes/halo/dark/index.js +1 -1
  39. package/lib/calendar/themes/halo/light/index.js +1 -1
  40. package/lib/calendar/themes/solar/charcoal/index.js +1 -1
  41. package/lib/calendar/themes/solar/pearl/index.js +1 -1
  42. package/lib/calendar/types.d.ts +12 -13
  43. package/lib/calendar/types.js +1 -7
  44. package/lib/calendar/utils.d.ts +31 -1
  45. package/lib/calendar/utils.js +105 -3
  46. package/lib/canvas/custom-elements.json +9 -7
  47. package/lib/canvas/custom-elements.md +27 -0
  48. package/lib/canvas/index.d.ts +14 -6
  49. package/lib/canvas/index.js +17 -12
  50. package/lib/card/custom-elements.json +21 -9
  51. package/lib/card/custom-elements.md +24 -0
  52. package/lib/card/helpers/types.d.ts +1 -1
  53. package/lib/card/helpers/types.js +0 -1
  54. package/lib/card/index.d.ts +67 -20
  55. package/lib/card/index.js +132 -35
  56. package/lib/card/themes/halo/dark/index.js +1 -1
  57. package/lib/card/themes/halo/light/index.js +1 -1
  58. package/lib/card/themes/solar/charcoal/index.js +1 -1
  59. package/lib/card/themes/solar/pearl/index.js +1 -1
  60. package/lib/chart/custom-elements.json +3 -3
  61. package/lib/chart/custom-elements.md +16 -0
  62. package/lib/chart/helpers/index.d.ts +2 -0
  63. package/lib/chart/helpers/index.js +2 -0
  64. package/lib/chart/helpers/legend.d.ts +2 -2
  65. package/lib/chart/helpers/legend.js +2 -3
  66. package/lib/chart/helpers/merge.d.ts +15 -0
  67. package/lib/chart/helpers/merge.js +28 -0
  68. package/lib/chart/helpers/types.d.ts +40 -12
  69. package/lib/chart/helpers/types.js +0 -1
  70. package/lib/chart/index.d.ts +34 -26
  71. package/lib/chart/index.js +58 -55
  72. package/lib/chart/plugins/doughnut-center-label.js +4 -5
  73. package/lib/checkbox/custom-elements.json +4 -4
  74. package/lib/checkbox/custom-elements.md +18 -0
  75. package/lib/checkbox/index.d.ts +29 -14
  76. package/lib/checkbox/index.js +65 -34
  77. package/lib/checkbox/themes/halo/dark/index.js +1 -1
  78. package/lib/checkbox/themes/halo/light/index.js +1 -1
  79. package/lib/clock/custom-elements.json +21 -4
  80. package/lib/clock/custom-elements.md +28 -0
  81. package/lib/clock/index.d.ts +25 -6
  82. package/lib/clock/index.js +44 -18
  83. package/lib/clock/themes/halo/dark/index.js +1 -1
  84. package/lib/clock/themes/halo/light/index.js +1 -1
  85. package/lib/clock/themes/solar/charcoal/index.js +1 -1
  86. package/lib/clock/themes/solar/pearl/index.js +1 -1
  87. package/lib/clock/utils/TickManager.js +2 -3
  88. package/lib/clock/utils/timestamps.js +0 -1
  89. package/lib/collapse/custom-elements.md +27 -0
  90. package/lib/collapse/index.d.ts +15 -8
  91. package/lib/collapse/index.js +18 -13
  92. package/lib/color-dialog/custom-elements.json +29 -16
  93. package/lib/color-dialog/custom-elements.md +39 -0
  94. package/lib/color-dialog/elements/color-palettes.d.ts +13 -6
  95. package/lib/color-dialog/elements/color-palettes.js +16 -13
  96. package/lib/color-dialog/elements/grayscale-palettes.d.ts +13 -6
  97. package/lib/color-dialog/elements/grayscale-palettes.js +17 -13
  98. package/lib/color-dialog/elements/palettes.d.ts +15 -3
  99. package/lib/color-dialog/elements/palettes.js +65 -45
  100. package/lib/color-dialog/helpers/color-helpers.d.ts +7 -53
  101. package/lib/color-dialog/helpers/color-helpers.js +12 -110
  102. package/lib/color-dialog/helpers/value-model.d.ts +1 -1
  103. package/lib/color-dialog/helpers/value-model.js +18 -17
  104. package/lib/color-dialog/index.d.ts +27 -20
  105. package/lib/color-dialog/index.js +54 -45
  106. package/lib/combo-box/custom-elements.json +51 -17
  107. package/lib/combo-box/custom-elements.md +42 -0
  108. package/lib/combo-box/helpers/filter.d.ts +4 -4
  109. package/lib/combo-box/helpers/filter.js +0 -1
  110. package/lib/combo-box/helpers/keyboard-event.js +0 -1
  111. package/lib/combo-box/helpers/renderer.d.ts +8 -0
  112. package/lib/combo-box/helpers/renderer.js +24 -0
  113. package/lib/combo-box/helpers/types.d.ts +2 -2
  114. package/lib/combo-box/helpers/types.js +0 -1
  115. package/lib/combo-box/index.d.ts +63 -32
  116. package/lib/combo-box/index.js +102 -60
  117. package/lib/combo-box/themes/halo/dark/index.js +2 -3
  118. package/lib/combo-box/themes/halo/light/index.js +2 -3
  119. package/lib/combo-box/themes/solar/charcoal/index.js +2 -3
  120. package/lib/combo-box/themes/solar/pearl/index.js +2 -3
  121. package/lib/counter/custom-elements.json +39 -0
  122. package/lib/counter/custom-elements.md +11 -0
  123. package/lib/counter/index.d.ts +91 -0
  124. package/lib/counter/index.js +154 -0
  125. package/lib/counter/themes/halo/dark/index.js +3 -0
  126. package/lib/counter/themes/halo/light/index.js +3 -0
  127. package/lib/counter/themes/solar/charcoal/index.js +3 -0
  128. package/lib/counter/themes/solar/pearl/index.js +3 -0
  129. package/lib/counter/utils.d.ts +13 -0
  130. package/lib/counter/utils.js +52 -0
  131. package/lib/datetime-picker/custom-elements.json +53 -24
  132. package/lib/datetime-picker/custom-elements.md +57 -0
  133. package/lib/datetime-picker/index.d.ts +34 -16
  134. package/lib/datetime-picker/index.js +56 -38
  135. package/lib/datetime-picker/locales.d.ts +1 -1
  136. package/lib/datetime-picker/locales.js +12 -2
  137. package/lib/datetime-picker/themes/solar/charcoal/index.js +1 -1
  138. package/lib/datetime-picker/themes/solar/pearl/index.js +1 -1
  139. package/lib/datetime-picker/types.d.ts +1 -1
  140. package/lib/datetime-picker/types.js +0 -1
  141. package/lib/datetime-picker/utils.js +1 -2
  142. package/lib/dialog/custom-elements.json +34 -12
  143. package/lib/dialog/custom-elements.md +47 -0
  144. package/lib/dialog/draggable-element.js +25 -16
  145. package/lib/dialog/index.d.ts +25 -21
  146. package/lib/dialog/index.js +36 -32
  147. package/lib/email-field/custom-elements.json +81 -94
  148. package/lib/email-field/custom-elements.md +37 -0
  149. package/lib/email-field/index.d.ts +47 -112
  150. package/lib/email-field/index.js +48 -241
  151. package/lib/email-field/themes/halo/dark/index.js +1 -1
  152. package/lib/email-field/themes/halo/light/index.js +1 -1
  153. package/lib/email-field/themes/solar/charcoal/index.js +1 -1
  154. package/lib/email-field/themes/solar/pearl/index.js +1 -1
  155. package/lib/events.d.ts +121 -0
  156. package/lib/events.js +1 -0
  157. package/lib/flag/custom-elements.md +10 -0
  158. package/lib/flag/index.d.ts +14 -5
  159. package/lib/flag/index.js +19 -12
  160. package/lib/flag/utils/FlagLoader.d.ts +1 -1
  161. package/lib/flag/utils/FlagLoader.js +1 -2
  162. package/lib/header/custom-elements.md +18 -0
  163. package/lib/header/index.d.ts +10 -3
  164. package/lib/header/index.js +12 -8
  165. package/lib/heatmap/custom-elements.json +13 -0
  166. package/lib/heatmap/custom-elements.md +26 -0
  167. package/lib/heatmap/helpers/color.d.ts +1 -1
  168. package/lib/heatmap/helpers/color.js +1 -2
  169. package/lib/heatmap/helpers/text.d.ts +1 -1
  170. package/lib/heatmap/helpers/text.js +0 -1
  171. package/lib/heatmap/helpers/track.js +2 -3
  172. package/lib/heatmap/helpers/types.js +0 -1
  173. package/lib/heatmap/index.d.ts +32 -13
  174. package/lib/heatmap/index.js +61 -35
  175. package/lib/icon/custom-elements.json +6 -4
  176. package/lib/icon/custom-elements.md +8 -0
  177. package/lib/icon/index.d.ts +17 -7
  178. package/lib/icon/index.js +36 -18
  179. package/lib/icon/utils/IconLoader.d.ts +6 -1
  180. package/lib/icon/utils/IconLoader.js +24 -18
  181. package/lib/index.d.ts +2 -0
  182. package/lib/index.js +2 -1
  183. package/lib/interactive-chart/custom-elements.json +5 -11
  184. package/lib/interactive-chart/custom-elements.md +31 -0
  185. package/lib/interactive-chart/helpers/merge.d.ts +15 -0
  186. package/lib/interactive-chart/helpers/merge.js +28 -0
  187. package/lib/interactive-chart/helpers/types.d.ts +10 -9
  188. package/lib/interactive-chart/helpers/types.js +6 -2
  189. package/lib/interactive-chart/index.d.ts +37 -18
  190. package/lib/interactive-chart/index.js +61 -51
  191. package/lib/item/custom-elements.json +4 -4
  192. package/lib/item/custom-elements.md +29 -0
  193. package/lib/item/helpers/types.d.ts +1 -1
  194. package/lib/item/helpers/types.js +0 -1
  195. package/lib/item/index.d.ts +26 -9
  196. package/lib/item/index.js +43 -16
  197. package/lib/label/custom-elements.json +7 -16
  198. package/lib/label/custom-elements.md +11 -0
  199. package/lib/label/index.d.ts +41 -73
  200. package/lib/label/index.js +150 -187
  201. package/lib/layout/custom-elements.md +26 -0
  202. package/lib/layout/index.d.ts +11 -4
  203. package/lib/layout/index.js +13 -9
  204. package/lib/led-gauge/custom-elements.json +4 -4
  205. package/lib/led-gauge/custom-elements.md +17 -0
  206. package/lib/led-gauge/index.d.ts +13 -5
  207. package/lib/led-gauge/index.js +16 -11
  208. package/lib/list/custom-elements.json +37 -5
  209. package/lib/list/custom-elements.md +33 -0
  210. package/lib/list/extensible-function.js +2 -1
  211. package/lib/list/helpers/list-renderer.d.ts +2 -2
  212. package/lib/list/helpers/list-renderer.js +4 -3
  213. package/lib/list/helpers/types.d.ts +2 -2
  214. package/lib/list/helpers/types.js +0 -1
  215. package/lib/list/index.d.ts +47 -12
  216. package/lib/list/index.js +100 -39
  217. package/lib/list/renderer.d.ts +2 -2
  218. package/lib/list/renderer.js +1 -2
  219. package/lib/loader/custom-elements.md +5 -0
  220. package/lib/loader/index.d.ts +8 -1
  221. package/lib/loader/index.js +11 -8
  222. package/lib/multi-input/custom-elements.json +7 -6
  223. package/lib/multi-input/custom-elements.md +43 -0
  224. package/lib/multi-input/helpers/types.d.ts +1 -1
  225. package/lib/multi-input/helpers/types.js +0 -1
  226. package/lib/multi-input/index.d.ts +19 -8
  227. package/lib/multi-input/index.js +28 -18
  228. package/lib/multi-input/themes/solar/charcoal/index.js +1 -1
  229. package/lib/multi-input/themes/solar/pearl/index.js +1 -1
  230. package/lib/notification/custom-elements.md +26 -0
  231. package/lib/notification/elements/notification-tray.d.ts +10 -4
  232. package/lib/notification/elements/notification-tray.js +15 -11
  233. package/lib/notification/elements/notification.d.ts +19 -7
  234. package/lib/notification/elements/notification.js +25 -13
  235. package/lib/notification/helpers/status.d.ts +1 -1
  236. package/lib/notification/helpers/status.js +1 -2
  237. package/lib/notification/helpers/types.d.ts +1 -1
  238. package/lib/notification/helpers/types.js +0 -1
  239. package/lib/notification/index.d.ts +2 -2
  240. package/lib/notification/index.js +2 -3
  241. package/lib/number-field/custom-elements.json +99 -54
  242. package/lib/number-field/custom-elements.md +42 -0
  243. package/lib/number-field/index.d.ts +104 -52
  244. package/lib/number-field/index.js +129 -88
  245. package/lib/number-field/themes/halo/dark/index.js +1 -1
  246. package/lib/number-field/themes/halo/light/index.js +1 -1
  247. package/lib/number-field/themes/solar/charcoal/index.js +1 -1
  248. package/lib/number-field/themes/solar/pearl/index.js +1 -1
  249. package/lib/overlay/custom-elements.json +26 -13
  250. package/lib/overlay/custom-elements.md +54 -0
  251. package/lib/overlay/elements/overlay-backdrop.d.ts +12 -5
  252. package/lib/overlay/elements/overlay-backdrop.js +13 -9
  253. package/lib/overlay/elements/overlay-viewport.d.ts +11 -4
  254. package/lib/overlay/elements/overlay-viewport.js +12 -9
  255. package/lib/overlay/elements/overlay.d.ts +18 -6
  256. package/lib/overlay/elements/overlay.js +35 -28
  257. package/lib/overlay/helpers/functions.js +0 -1
  258. package/lib/overlay/helpers/types.js +0 -1
  259. package/lib/overlay/index.d.ts +2 -2
  260. package/lib/overlay/index.js +1 -2
  261. package/lib/overlay/managers/backdrop-manager.d.ts +2 -2
  262. package/lib/overlay/managers/backdrop-manager.js +2 -3
  263. package/lib/overlay/managers/close-manager.d.ts +1 -1
  264. package/lib/overlay/managers/close-manager.js +1 -2
  265. package/lib/overlay/managers/focus-manager.d.ts +1 -1
  266. package/lib/overlay/managers/focus-manager.js +3 -5
  267. package/lib/overlay/managers/interaction-lock-manager.js +2 -3
  268. package/lib/overlay/managers/viewport-manager.d.ts +3 -3
  269. package/lib/overlay/managers/viewport-manager.js +6 -3
  270. package/lib/overlay/managers/zindex-manager.d.ts +1 -1
  271. package/lib/overlay/managers/zindex-manager.js +1 -4
  272. package/lib/overlay-menu/custom-elements.json +126 -12
  273. package/lib/overlay-menu/custom-elements.md +44 -0
  274. package/lib/overlay-menu/helpers/types.d.ts +3 -3
  275. package/lib/overlay-menu/helpers/types.js +0 -1
  276. package/lib/overlay-menu/index.d.ts +44 -12
  277. package/lib/overlay-menu/index.js +66 -35
  278. package/lib/overlay-menu/managers/menu-manager.d.ts +2 -2
  279. package/lib/overlay-menu/managers/menu-manager.js +8 -8
  280. package/lib/pagination/custom-elements.json +16 -33
  281. package/lib/pagination/custom-elements.md +26 -0
  282. package/lib/pagination/index.d.ts +156 -81
  283. package/lib/pagination/index.js +373 -214
  284. package/lib/pagination/themes/halo/dark/index.js +1 -1
  285. package/lib/pagination/themes/halo/light/index.js +1 -1
  286. package/lib/pagination/themes/solar/charcoal/index.js +1 -1
  287. package/lib/pagination/themes/solar/pearl/index.js +1 -1
  288. package/lib/panel/custom-elements.md +11 -0
  289. package/lib/panel/index.d.ts +11 -4
  290. package/lib/panel/index.js +13 -9
  291. package/lib/password-field/custom-elements.json +62 -67
  292. package/lib/password-field/custom-elements.md +39 -0
  293. package/lib/password-field/index.d.ts +46 -90
  294. package/lib/password-field/index.js +52 -190
  295. package/lib/password-field/themes/halo/dark/index.js +1 -1
  296. package/lib/password-field/themes/halo/light/index.js +1 -1
  297. package/lib/password-field/themes/solar/charcoal/index.js +1 -1
  298. package/lib/password-field/themes/solar/pearl/index.js +1 -1
  299. package/lib/pill/custom-elements.json +9 -7
  300. package/lib/pill/custom-elements.md +22 -0
  301. package/lib/pill/index.d.ts +15 -7
  302. package/lib/pill/index.js +21 -27
  303. package/lib/pill/themes/halo/dark/index.js +1 -1
  304. package/lib/pill/themes/halo/light/index.js +1 -1
  305. package/lib/progress-bar/custom-elements.md +18 -0
  306. package/lib/progress-bar/index.d.ts +11 -15
  307. package/lib/progress-bar/index.js +14 -25
  308. package/lib/radio-button/custom-elements.json +4 -4
  309. package/lib/radio-button/custom-elements.md +19 -0
  310. package/lib/radio-button/index.d.ts +33 -9
  311. package/lib/radio-button/index.js +97 -24
  312. package/lib/radio-button/radio-button-registry.d.ts +3 -2
  313. package/lib/radio-button/radio-button-registry.js +57 -5
  314. package/lib/radio-button/themes/halo/dark/index.js +1 -1
  315. package/lib/radio-button/themes/halo/light/index.js +1 -1
  316. package/lib/rating/custom-elements.md +17 -0
  317. package/lib/rating/index.d.ts +11 -4
  318. package/lib/rating/index.js +16 -10
  319. package/lib/search-field/custom-elements.json +70 -74
  320. package/lib/search-field/custom-elements.md +41 -0
  321. package/lib/search-field/index.d.ts +47 -97
  322. package/lib/search-field/index.js +50 -212
  323. package/lib/search-field/themes/halo/dark/index.js +1 -1
  324. package/lib/search-field/themes/halo/light/index.js +1 -1
  325. package/lib/search-field/themes/solar/charcoal/index.js +1 -1
  326. package/lib/search-field/themes/solar/pearl/index.js +1 -1
  327. package/lib/select/custom-elements.json +5 -4
  328. package/lib/select/custom-elements.md +24 -0
  329. package/lib/select/helpers/types.d.ts +1 -1
  330. package/lib/select/helpers/types.js +0 -1
  331. package/lib/select/index.d.ts +26 -11
  332. package/lib/select/index.js +93 -52
  333. package/lib/select/themes/halo/dark/index.js +1 -1
  334. package/lib/select/themes/halo/light/index.js +1 -1
  335. package/lib/sidebar-layout/custom-elements.json +2 -6
  336. package/lib/sidebar-layout/custom-elements.md +21 -0
  337. package/lib/sidebar-layout/index.d.ts +15 -7
  338. package/lib/sidebar-layout/index.js +16 -10
  339. package/lib/slider/custom-elements.json +4 -4
  340. package/lib/slider/custom-elements.md +28 -0
  341. package/lib/slider/index.d.ts +18 -5
  342. package/lib/slider/index.js +69 -16
  343. package/lib/sparkline/custom-elements.json +4 -4
  344. package/lib/sparkline/custom-elements.md +16 -0
  345. package/lib/sparkline/index.d.ts +14 -5
  346. package/lib/sparkline/index.js +17 -10
  347. package/lib/swing-gauge/const.d.ts +22 -0
  348. package/lib/swing-gauge/const.js +26 -0
  349. package/lib/swing-gauge/custom-elements.json +51 -22
  350. package/lib/swing-gauge/custom-elements.md +17 -0
  351. package/lib/swing-gauge/helpers.d.ts +8 -0
  352. package/lib/swing-gauge/helpers.js +105 -0
  353. package/lib/swing-gauge/index.d.ts +220 -72
  354. package/lib/swing-gauge/index.js +648 -168
  355. package/lib/swing-gauge/themes/halo/dark/index.js +1 -1
  356. package/lib/swing-gauge/themes/halo/light/index.js +1 -1
  357. package/lib/swing-gauge/themes/solar/charcoal/index.js +1 -1
  358. package/lib/swing-gauge/themes/solar/pearl/index.js +1 -1
  359. package/lib/swing-gauge/types.d.ts +34 -0
  360. package/lib/swing-gauge/types.js +1 -0
  361. package/lib/tab/custom-elements.json +10 -21
  362. package/lib/tab/custom-elements.md +22 -0
  363. package/lib/tab/index.d.ts +19 -14
  364. package/lib/tab/index.js +31 -40
  365. package/lib/tab/themes/halo/dark/index.js +1 -1
  366. package/lib/tab/themes/halo/light/index.js +1 -1
  367. package/lib/tab/themes/solar/charcoal/index.js +1 -1
  368. package/lib/tab/themes/solar/pearl/index.js +1 -1
  369. package/lib/tab-bar/custom-elements.json +0 -6
  370. package/lib/tab-bar/custom-elements.md +11 -0
  371. package/lib/tab-bar/helpers/animate.d.ts +1 -1
  372. package/lib/tab-bar/helpers/animate.js +5 -2
  373. package/lib/tab-bar/index.d.ts +12 -5
  374. package/lib/tab-bar/index.js +18 -21
  375. package/lib/tab-bar/themes/solar/charcoal/index.js +1 -1
  376. package/lib/tab-bar/themes/solar/pearl/index.js +1 -1
  377. package/lib/text-field/custom-elements.json +78 -89
  378. package/lib/text-field/custom-elements.md +35 -0
  379. package/lib/text-field/index.d.ts +67 -80
  380. package/lib/text-field/index.js +106 -157
  381. package/lib/text-field/themes/halo/dark/index.js +1 -1
  382. package/lib/text-field/themes/halo/light/index.js +1 -1
  383. package/lib/text-field/themes/solar/charcoal/index.js +1 -1
  384. package/lib/text-field/themes/solar/pearl/index.js +1 -1
  385. package/lib/time-picker/custom-elements.json +6 -8
  386. package/lib/time-picker/custom-elements.md +28 -0
  387. package/lib/time-picker/index.d.ts +105 -65
  388. package/lib/time-picker/index.js +297 -169
  389. package/lib/time-picker/themes/solar/charcoal/index.js +1 -1
  390. package/lib/time-picker/themes/solar/pearl/index.js +1 -1
  391. package/lib/toggle/custom-elements.json +4 -4
  392. package/lib/toggle/custom-elements.md +19 -0
  393. package/lib/toggle/index.d.ts +22 -5
  394. package/lib/toggle/index.js +58 -13
  395. package/lib/toggle/themes/halo/dark/index.js +1 -1
  396. package/lib/toggle/themes/halo/light/index.js +1 -1
  397. package/lib/toggle/themes/solar/charcoal/index.js +1 -1
  398. package/lib/toggle/themes/solar/pearl/index.js +1 -1
  399. package/lib/tooltip/custom-elements.md +14 -0
  400. package/lib/tooltip/elements/title-tooltip.js +2 -3
  401. package/lib/tooltip/elements/tooltip-element.d.ts +2 -3
  402. package/lib/tooltip/elements/tooltip-element.js +0 -2
  403. package/lib/tooltip/helpers/overflow-tooltip.d.ts +1 -1
  404. package/lib/tooltip/helpers/overflow-tooltip.js +1 -2
  405. package/lib/tooltip/helpers/renderer.d.ts +1 -1
  406. package/lib/tooltip/helpers/renderer.js +0 -1
  407. package/lib/tooltip/helpers/types.d.ts +1 -1
  408. package/lib/tooltip/helpers/types.js +0 -1
  409. package/lib/tooltip/index.d.ts +18 -11
  410. package/lib/tooltip/index.js +27 -23
  411. package/lib/tooltip/managers/tooltip-manager.d.ts +2 -2
  412. package/lib/tooltip/managers/tooltip-manager.js +17 -11
  413. package/lib/tornado-chart/custom-elements.md +18 -0
  414. package/lib/tornado-chart/elements/tornado-chart.d.ts +12 -5
  415. package/lib/tornado-chart/elements/tornado-chart.js +15 -11
  416. package/lib/tornado-chart/elements/tornado-item.d.ts +13 -6
  417. package/lib/tornado-chart/elements/tornado-item.js +17 -12
  418. package/lib/tornado-chart/index.d.ts +2 -2
  419. package/lib/tornado-chart/index.js +2 -3
  420. package/lib/tree/custom-elements.json +30 -2
  421. package/lib/tree/custom-elements.md +32 -0
  422. package/lib/tree/elements/tree-item.d.ts +53 -5
  423. package/lib/tree/elements/tree-item.js +114 -34
  424. package/lib/tree/elements/tree.d.ts +65 -20
  425. package/lib/tree/elements/tree.js +151 -34
  426. package/lib/tree/helpers/filter.d.ts +8 -0
  427. package/lib/tree/helpers/filter.js +33 -0
  428. package/lib/tree/helpers/renderer.d.ts +2 -2
  429. package/lib/tree/helpers/renderer.js +4 -4
  430. package/lib/tree/helpers/types.d.ts +13 -1
  431. package/lib/tree/helpers/types.js +0 -1
  432. package/lib/tree/index.d.ts +4 -4
  433. package/lib/tree/index.js +3 -4
  434. package/lib/tree/managers/tree-manager.d.ts +22 -10
  435. package/lib/tree/managers/tree-manager.js +56 -41
  436. package/lib/tree/themes/halo/dark/index.js +1 -1
  437. package/lib/tree/themes/halo/light/index.js +1 -1
  438. package/lib/tree/themes/solar/charcoal/index.js +1 -1
  439. package/lib/tree/themes/solar/pearl/index.js +1 -1
  440. package/lib/tree-select/custom-elements.json +14 -5
  441. package/lib/tree-select/custom-elements.md +26 -0
  442. package/lib/tree-select/helpers/types.d.ts +2 -2
  443. package/lib/tree-select/helpers/types.js +0 -1
  444. package/lib/tree-select/index.d.ts +55 -27
  445. package/lib/tree-select/index.js +107 -45
  446. package/lib/tree-select/themes/halo/dark/index.js +3 -2
  447. package/lib/tree-select/themes/halo/light/index.js +3 -2
  448. package/lib/tree-select/themes/solar/charcoal/index.js +3 -2
  449. package/lib/tree-select/themes/solar/pearl/index.js +3 -2
  450. package/lib/version.d.ts +1 -0
  451. package/lib/version.js +1 -0
  452. package/package.json +601 -25
  453. package/lib/accordion/index.js.map +0 -1
  454. package/lib/appstate-bar/index.js.map +0 -1
  455. package/lib/autosuggest/helpers/const.d.ts +0 -2
  456. package/lib/autosuggest/helpers/const.js +0 -4
  457. package/lib/autosuggest/helpers/const.js.map +0 -1
  458. package/lib/autosuggest/helpers/types.js.map +0 -1
  459. package/lib/autosuggest/helpers/utils.js.map +0 -1
  460. package/lib/autosuggest/index.js.map +0 -1
  461. package/lib/button/index.js.map +0 -1
  462. package/lib/button-bar/index.js.map +0 -1
  463. package/lib/calendar/index.js.map +0 -1
  464. package/lib/calendar/locales.js.map +0 -1
  465. package/lib/calendar/types.js.map +0 -1
  466. package/lib/calendar/utils.js.map +0 -1
  467. package/lib/canvas/index.js.map +0 -1
  468. package/lib/card/helpers/types.js.map +0 -1
  469. package/lib/card/index.js.map +0 -1
  470. package/lib/chart/helpers/legend.js.map +0 -1
  471. package/lib/chart/helpers/types.js.map +0 -1
  472. package/lib/chart/index.js.map +0 -1
  473. package/lib/chart/plugins/doughnut-center-label.js.map +0 -1
  474. package/lib/checkbox/index.js.map +0 -1
  475. package/lib/clock/index.js.map +0 -1
  476. package/lib/clock/utils/TickManager.js.map +0 -1
  477. package/lib/clock/utils/timestamps.js.map +0 -1
  478. package/lib/collapse/index.js.map +0 -1
  479. package/lib/color-dialog/elements/color-palettes.js.map +0 -1
  480. package/lib/color-dialog/elements/grayscale-palettes.js.map +0 -1
  481. package/lib/color-dialog/elements/palettes.js.map +0 -1
  482. package/lib/color-dialog/helpers/color-helpers.js.map +0 -1
  483. package/lib/color-dialog/helpers/value-model.js.map +0 -1
  484. package/lib/color-dialog/index.js.map +0 -1
  485. package/lib/combo-box/helpers/filter.js.map +0 -1
  486. package/lib/combo-box/helpers/keyboard-event.js.map +0 -1
  487. package/lib/combo-box/helpers/types.js.map +0 -1
  488. package/lib/combo-box/index.js.map +0 -1
  489. package/lib/datetime-picker/index.js.map +0 -1
  490. package/lib/datetime-picker/locales.js.map +0 -1
  491. package/lib/datetime-picker/types.js.map +0 -1
  492. package/lib/datetime-picker/utils.js.map +0 -1
  493. package/lib/dialog/draggable-element.js.map +0 -1
  494. package/lib/dialog/index.js.map +0 -1
  495. package/lib/email-field/index.js.map +0 -1
  496. package/lib/flag/index.js.map +0 -1
  497. package/lib/flag/utils/FlagLoader.js.map +0 -1
  498. package/lib/header/index.js.map +0 -1
  499. package/lib/heatmap/helpers/color.js.map +0 -1
  500. package/lib/heatmap/helpers/text.js.map +0 -1
  501. package/lib/heatmap/helpers/track.js.map +0 -1
  502. package/lib/heatmap/helpers/types.js.map +0 -1
  503. package/lib/heatmap/index.js.map +0 -1
  504. package/lib/icon/index.js.map +0 -1
  505. package/lib/icon/utils/IconLoader.js.map +0 -1
  506. package/lib/index.js.map +0 -1
  507. package/lib/interactive-chart/helpers/types.js.map +0 -1
  508. package/lib/interactive-chart/index.js.map +0 -1
  509. package/lib/item/helpers/types.js.map +0 -1
  510. package/lib/item/index.js.map +0 -1
  511. package/lib/label/helpers/text.d.ts +0 -35
  512. package/lib/label/helpers/text.js +0 -57
  513. package/lib/label/helpers/text.js.map +0 -1
  514. package/lib/label/index.js.map +0 -1
  515. package/lib/layout/index.js.map +0 -1
  516. package/lib/led-gauge/index.js.map +0 -1
  517. package/lib/list/extensible-function.js.map +0 -1
  518. package/lib/list/helpers/list-renderer.js.map +0 -1
  519. package/lib/list/helpers/types.js.map +0 -1
  520. package/lib/list/index.js.map +0 -1
  521. package/lib/list/renderer.js.map +0 -1
  522. package/lib/loader/index.js.map +0 -1
  523. package/lib/multi-input/helpers/types.js.map +0 -1
  524. package/lib/multi-input/index.js.map +0 -1
  525. package/lib/notification/elements/notification-tray.js.map +0 -1
  526. package/lib/notification/elements/notification.js.map +0 -1
  527. package/lib/notification/helpers/status.js.map +0 -1
  528. package/lib/notification/helpers/types.js.map +0 -1
  529. package/lib/notification/index.js.map +0 -1
  530. package/lib/number-field/index.js.map +0 -1
  531. package/lib/overlay/elements/overlay-backdrop.js.map +0 -1
  532. package/lib/overlay/elements/overlay-viewport.js.map +0 -1
  533. package/lib/overlay/elements/overlay.js.map +0 -1
  534. package/lib/overlay/helpers/functions.js.map +0 -1
  535. package/lib/overlay/helpers/types.js.map +0 -1
  536. package/lib/overlay/index.js.map +0 -1
  537. package/lib/overlay/managers/backdrop-manager.js.map +0 -1
  538. package/lib/overlay/managers/close-manager.js.map +0 -1
  539. package/lib/overlay/managers/focus-manager.js.map +0 -1
  540. package/lib/overlay/managers/interaction-lock-manager.js.map +0 -1
  541. package/lib/overlay/managers/viewport-manager.js.map +0 -1
  542. package/lib/overlay/managers/zindex-manager.js.map +0 -1
  543. package/lib/overlay-menu/helpers/types.js.map +0 -1
  544. package/lib/overlay-menu/helpers/uuid.d.ts +0 -7
  545. package/lib/overlay-menu/helpers/uuid.js +0 -14
  546. package/lib/overlay-menu/helpers/uuid.js.map +0 -1
  547. package/lib/overlay-menu/index.js.map +0 -1
  548. package/lib/overlay-menu/managers/menu-manager.js.map +0 -1
  549. package/lib/pagination/helpers/types.d.ts +0 -9
  550. package/lib/pagination/helpers/types.js +0 -2
  551. package/lib/pagination/helpers/types.js.map +0 -1
  552. package/lib/pagination/index.js.map +0 -1
  553. package/lib/panel/index.js.map +0 -1
  554. package/lib/password-field/index.js.map +0 -1
  555. package/lib/pill/index.js.map +0 -1
  556. package/lib/progress-bar/index.js.map +0 -1
  557. package/lib/radio-button/index.js.map +0 -1
  558. package/lib/radio-button/radio-button-registry.js.map +0 -1
  559. package/lib/rating/index.js.map +0 -1
  560. package/lib/search-field/index.js.map +0 -1
  561. package/lib/select/helpers/types.js.map +0 -1
  562. package/lib/select/index.js.map +0 -1
  563. package/lib/sidebar-layout/index.js.map +0 -1
  564. package/lib/slider/index.js.map +0 -1
  565. package/lib/sparkline/index.js.map +0 -1
  566. package/lib/swing-gauge/helpers/canvas.d.ts +0 -8
  567. package/lib/swing-gauge/helpers/canvas.js +0 -115
  568. package/lib/swing-gauge/helpers/canvas.js.map +0 -1
  569. package/lib/swing-gauge/helpers/types.d.ts +0 -33
  570. package/lib/swing-gauge/helpers/types.js +0 -2
  571. package/lib/swing-gauge/helpers/types.js.map +0 -1
  572. package/lib/swing-gauge/index.js.map +0 -1
  573. package/lib/tab/index.js.map +0 -1
  574. package/lib/tab-bar/helpers/animate.js.map +0 -1
  575. package/lib/tab-bar/index.js.map +0 -1
  576. package/lib/text-field/index.js.map +0 -1
  577. package/lib/time-picker/index.js.map +0 -1
  578. package/lib/toggle/index.js.map +0 -1
  579. package/lib/tooltip/elements/title-tooltip.js.map +0 -1
  580. package/lib/tooltip/elements/tooltip-element.js.map +0 -1
  581. package/lib/tooltip/helpers/overflow-tooltip.js.map +0 -1
  582. package/lib/tooltip/helpers/renderer.js.map +0 -1
  583. package/lib/tooltip/helpers/types.js.map +0 -1
  584. package/lib/tooltip/index.js.map +0 -1
  585. package/lib/tooltip/managers/tooltip-manager.js.map +0 -1
  586. package/lib/tornado-chart/elements/tornado-chart.js.map +0 -1
  587. package/lib/tornado-chart/elements/tornado-item.js.map +0 -1
  588. package/lib/tornado-chart/index.js.map +0 -1
  589. package/lib/tree/elements/tree-item.js.map +0 -1
  590. package/lib/tree/elements/tree.js.map +0 -1
  591. package/lib/tree/helpers/renderer.js.map +0 -1
  592. package/lib/tree/helpers/types.js.map +0 -1
  593. package/lib/tree/index.js.map +0 -1
  594. package/lib/tree/managers/tree-manager.js.map +0 -1
  595. package/lib/tree-select/helpers/types.js.map +0 -1
  596. package/lib/tree-select/index.js.map +0 -1
@@ -1,25 +1,25 @@
1
1
  import { JSXInterface } from '../jsx';
2
- import { ResponsiveElement, TemplateResult, CSSResult, PropertyValues } from '@refinitiv-ui/core';
3
- import '../tooltip';
2
+ import { BasicElement, TemplateResult, CSSResultGroup } from '@refinitiv-ui/core';
4
3
  /**
5
4
  * Displays a text with alternative truncation
6
5
  */
7
- export declare class Label extends ResponsiveElement {
6
+ export declare class Label extends BasicElement {
8
7
  /**
9
- * A `CSSResult` that will be used
8
+ * Element version number
9
+ * @returns version number
10
+ */
11
+ static get version(): string;
12
+ /**
13
+ * A `CSSResultGroup` that will be used
10
14
  * to style the host, slotted children
11
15
  * and the internal template of the element.
12
16
  * @returns CSS template
13
17
  */
14
- static get styles(): CSSResult | CSSResult[];
15
- /**
16
- * Enable shortening the slot content
17
- */
18
- truncate: 'center' | '' | null | undefined;
18
+ static get styles(): CSSResultGroup;
19
19
  /**
20
20
  * Limit the number of lines before truncating
21
21
  */
22
- maxLine: null;
22
+ lineClamp: number;
23
23
  /**
24
24
  * Set state to error
25
25
  */
@@ -29,90 +29,56 @@ export declare class Label extends ResponsiveElement {
29
29
  */
30
30
  warning: boolean;
31
31
  /**
32
- * Use to set title attribute for tooltip
33
- */
34
- private span;
35
- /**
36
- * Use to prevent resizes observer in certain use cases
32
+ * Trimmed chunks of textual content
37
33
  */
38
- private updateTimer;
34
+ private chunks;
39
35
  /**
40
- * Store trimmed text content
36
+ * Mutation Observer used to detect changes in the Light DOM
41
37
  */
42
- private rawText;
38
+ private mutationObserver;
43
39
  /**
44
- * Tooltip state when truncate = center
40
+ * Render used to display the tooltip
41
+ * @returns Tooltip text
45
42
  */
46
- private enableTooltip;
47
- private mutationObserver?;
43
+ protected tooltipRenderer: () => string;
48
44
  /**
49
- * The lifecycle method called when properties changed first time
50
- * @param changedProperties properties it's the Map object which has the updated properties
51
- * @returns {void}
45
+ * Condition used to display the tooltip
46
+ * @param target Tooltip target
47
+ * @returns Whether the tooltip should be shown or not.
52
48
  */
53
- protected firstUpdated(changedProperties: PropertyValues): void;
49
+ protected tooltipCondition: (target: HTMLElement) => boolean;
54
50
  /**
55
- * Called when the element’s DOM has been updated and rendered
56
- * @param changedProperties Properties that has changed
57
- * @returns shouldUpdate
51
+ * @override
58
52
  */
59
- protected updated(changedProperties: PropertyValues): void;
53
+ connectedCallback(): void;
60
54
  /**
61
- * Used to prevent handler fired when previous content are the same as last content
55
+ * @override
62
56
  */
63
- private previousContent;
57
+ disconnectedCallback(): void;
64
58
  /**
65
- * Handle statement after slot or innerHTML has been changed
66
- * @returns void
59
+ * Decides whether the tooltip should b shown
60
+ * @param tooltipTarget Target element passed by the tooltip condition
61
+ * @returns True if the tooltip should be shown
67
62
  */
68
- private handleSlotChange;
63
+ protected shouldShowTooltip(tooltipTarget: HTMLElement): boolean;
69
64
  /**
70
- * Restore text content
65
+ * Handles any modifications to the internal HTML
66
+ * @param [mutation=false] is the request from a mutation event?
71
67
  * @returns {void}
72
68
  */
73
- private restoreTextContent;
69
+ protected recalculate(mutation?: boolean): void;
74
70
  /**
75
- * concatenating all of text content in the slots
76
- * @returns trimmed text content
71
+ * Returns cleaned version of `this.textContent`.
77
72
  */
78
- private retrieveSlotContent;
73
+ protected get text(): string;
79
74
  /**
80
- * Get element width minus padding
81
- * @param node parent node that wrapper text node
82
- * @returns {number} width minus padding
83
- */
84
- private getElementWidthMinusPadding;
85
- /**
86
- * Truncate a long string in the middle and add an ellipsis.
87
- * @param parentNode parent node
88
- * @param textNode text node
89
- * @param fullText string
90
- * @returns {void}
75
+ * Default template
91
76
  */
92
- private middleEllipsis;
77
+ protected get truncateTemplate(): TemplateResult;
93
78
  /**
94
- * Handle text ellipsis and tooltip state when element has been resized
95
- * @returns void
79
+ * Template for when line clamp is set
96
80
  */
97
- private onResize;
98
- /**
99
- * Handle tooltip statement when properties changed
100
- * @returns void
101
- */
102
- private updateTooltip;
103
- /**
104
- * private method but can't override
105
- * access modifiers in typescript.
106
- * @ignore
107
- * @param size element dimensions
108
- * @returns {void}
109
- */
110
- resizedCallback(): void;
111
- /**
112
- * Determine show/hide tooltip state
113
- * @returns {boolean} true if center truncate or the element is smaller than a parent
114
- */
115
- private isShowTooltip;
81
+ protected get clampTemplate(): TemplateResult;
116
82
  /**
117
83
  * A `TemplateResult` that will be used
118
84
  * to render the updated internal template.
@@ -131,4 +97,6 @@ declare global {
131
97
  'ef-label': Partial<Label> | JSXInterface.HTMLAttributes<Label>;
132
98
  }
133
99
  }
134
- }
100
+ }
101
+
102
+ export {};
@@ -1,32 +1,39 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { ResponsiveElement, html, css, customElement, property, query } from '@refinitiv-ui/core';
8
- import '../tooltip';
9
- import { TextHelpers } from './helpers/text';
10
- // Observer config for items
1
+ import { __decorate } from "tslib";
2
+ import { BasicElement, html, css } from '@refinitiv-ui/core';
3
+ import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
4
+ import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
5
+ import { styleMap } from '@refinitiv-ui/core/lib/directives/style-map.js';
6
+ import { VERSION } from '../version.js';
7
+ import { isIE } from '@refinitiv-ui/utils/lib/browser.js';
8
+ import { addTooltipCondition, removeTooltipCondition } from '../tooltip/index.js';
9
+ /**
10
+ * Configuration object
11
+ * for mutations observers
12
+ */
11
13
  const observerOptions = {
12
14
  subtree: true,
13
15
  childList: true,
14
16
  characterData: true
15
17
  };
18
+ /**
19
+ * Reusable SPACE
20
+ */
21
+ const _ = ' ';
22
+ /**
23
+ * Determines if the browser is legacy or modern.
24
+ */
25
+ /* istanbul ignore next */
26
+ const browserType = isIE ? 'legacy' : 'modern';
16
27
  /**
17
28
  * Displays a text with alternative truncation
18
29
  */
19
- let Label = class Label extends ResponsiveElement {
30
+ let Label = class Label extends BasicElement {
20
31
  constructor() {
21
32
  super(...arguments);
22
- /**
23
- * Enable shortening the slot content
24
- */
25
- this.truncate = null;
26
33
  /**
27
34
  * Limit the number of lines before truncating
28
35
  */
29
- this.maxLine = null;
36
+ this.lineClamp = 0;
30
37
  /**
31
38
  * Set state to error
32
39
  */
@@ -36,20 +43,34 @@ let Label = class Label extends ResponsiveElement {
36
43
  */
37
44
  this.warning = false;
38
45
  /**
39
- * Store trimmed text content
46
+ * Trimmed chunks of textual content
40
47
  */
41
- this.rawText = '';
48
+ this.chunks = [];
42
49
  /**
43
- * Tooltip state when truncate = center
50
+ * Mutation Observer used to detect changes in the Light DOM
44
51
  */
45
- this.enableTooltip = false;
52
+ this.mutationObserver = new MutationObserver(() => this.recalculate(true));
46
53
  /**
47
- * Used to prevent handler fired when previous content are the same as last content
54
+ * Render used to display the tooltip
55
+ * @returns Tooltip text
48
56
  */
49
- this.previousContent = '';
57
+ this.tooltipRenderer = () => this.text;
58
+ /**
59
+ * Condition used to display the tooltip
60
+ * @param target Tooltip target
61
+ * @returns Whether the tooltip should be shown or not.
62
+ */
63
+ this.tooltipCondition = (target) => this.shouldShowTooltip(target);
64
+ }
65
+ /**
66
+ * Element version number
67
+ * @returns version number
68
+ */
69
+ static get version() {
70
+ return VERSION;
50
71
  }
51
72
  /**
52
- * A `CSSResult` that will be used
73
+ * A `CSSResultGroup` that will be used
53
74
  * to style the host, slotted children
54
75
  * and the internal template of the element.
55
76
  * @returns CSS template
@@ -57,192 +78,140 @@ let Label = class Label extends ResponsiveElement {
57
78
  static get styles() {
58
79
  return css `
59
80
  :host {
60
- display: inline-block;
81
+ display: inline-flex;
61
82
  max-width: 100%;
62
- box-sizing: border-box;
63
83
  }
64
- :host([truncate]) {
65
- white-space: nowrap;
66
- text-overflow: ellipsis;
84
+ .split {
85
+ height: 1.2em;
86
+ line-height: 1.2em;
87
+ margin-top: -0.1em;
88
+ flex: 0 1 auto;
89
+ min-width: 0;
67
90
  overflow: hidden;
91
+ white-space: nowrap;
68
92
  }
69
- :host([max-line]) {
70
- display: -webkit-inline-box;
71
- -webkit-line-clamp: var(--max-line);
93
+ .left.modern {
94
+ word-break: break-all;
72
95
  white-space: normal;
73
- -webkit-box-orient: vertical;
96
+ }
97
+ .left.legacy {
74
98
  text-overflow: ellipsis;
75
- overflow: hidden;
76
99
  }
77
- :host([truncate=center]) {
78
- white-space: nowrap;
79
- text-overflow: clip;
100
+ .center {
101
+ flex: 0 100 auto;
102
+ }
103
+ .right.modern {
104
+ direction: rtl;
105
+ text-overflow: ellipsis;
106
+ }
107
+ .right.legacy span {
108
+ float: right;
109
+ }
110
+ .clamp {
111
+ overflow: hidden;
112
+ -webkit-box-orient: vertical;
113
+ display: -webkit-inline-box;
114
+ text-overflow: ellipsis;
115
+ position: relative;
116
+ overflow-wrap: break-word;
80
117
  }
81
118
  `;
82
119
  }
83
120
  /**
84
- * The lifecycle method called when properties changed first time
85
- * @param changedProperties properties it's the Map object which has the updated properties
86
- * @returns {void}
87
- */
88
- firstUpdated(changedProperties) {
89
- super.firstUpdated(changedProperties);
90
- this.rawText = this.retrieveSlotContent();
91
- }
92
- /**
93
- * Called when the element’s DOM has been updated and rendered
94
- * @param changedProperties Properties that has changed
95
- * @returns shouldUpdate
121
+ * @override
96
122
  */
97
- updated(changedProperties) {
98
- super.updated(changedProperties);
99
- if (changedProperties.has('truncate')) {
100
- if (this.truncate === 'center') {
101
- this.restoreTextContent();
102
- this.middleEllipsis(this, this.span, this.rawText);
103
- }
104
- else {
105
- this.restoreTextContent();
106
- if (this.maxLine) {
107
- this.style.setProperty('--max-line', this.maxLine);
108
- }
109
- }
110
- this.updateTooltip();
111
- }
112
- else if (changedProperties.has('maxLine')) {
113
- this.style.setProperty('--max-line', this.maxLine);
114
- this.updateTooltip();
115
- }
116
- // we must wait while all elements in the tree are updated before starting the mutation observer
117
- void this.updateComplete.then(() => {
118
- if (!this.mutationObserver) {
119
- // Start watching for any child mutations
120
- this.mutationObserver = new MutationObserver(this.handleSlotChange.bind(this));
121
- this.mutationObserver.observe(this, observerOptions);
122
- }
123
- });
123
+ connectedCallback() {
124
+ super.connectedCallback();
125
+ addTooltipCondition(this.tooltipCondition, this.tooltipRenderer);
126
+ this.mutationObserver.observe(this, observerOptions);
127
+ !isIE && this.recalculate(); // In IE the mutation will trigger
124
128
  }
125
129
  /**
126
- * Handle statement after slot or innerHTML has been changed
127
- * @returns void
130
+ * @override
128
131
  */
129
- handleSlotChange() {
130
- // get new text content when label changed
131
- this.rawText = this.retrieveSlotContent();
132
- if (this.previousContent !== this.rawText) {
133
- this.previousContent = this.rawText;
134
- this.restoreTextContent();
135
- if (this.truncate === 'center') {
136
- this.middleEllipsis(this, this.span, this.rawText);
137
- }
138
- this.updateTooltip();
139
- }
132
+ disconnectedCallback() {
133
+ super.disconnectedCallback();
134
+ removeTooltipCondition(this.tooltipCondition);
135
+ this.mutationObserver.disconnect();
140
136
  }
141
137
  /**
142
- * Restore text content
143
- * @returns {void}
138
+ * Decides whether the tooltip should b shown
139
+ * @param tooltipTarget Target element passed by the tooltip condition
140
+ * @returns True if the tooltip should be shown
144
141
  */
145
- restoreTextContent() {
146
- this.span.innerHTML = this.rawText;
147
- }
148
- /**
149
- * concatenating all of text content in the slots
150
- * @returns trimmed text content
151
- */
152
- retrieveSlotContent() {
153
- let text = this.textContent || '';
154
- const slot = this.querySelector('slot');
155
- if (slot) {
156
- const slotContent = slot.assignedNodes({ flatten: true });
157
- for (let i = 0; i < slotContent.length; i++) {
158
- text += slotContent[i].textContent;
159
- }
142
+ shouldShowTooltip(tooltipTarget) {
143
+ const targetMatches = tooltipTarget === this;
144
+ const part = this.renderRoot.firstElementChild;
145
+ if (targetMatches && part) {
146
+ return part.clientHeight !== part.scrollHeight || part.clientWidth !== part.scrollWidth;
160
147
  }
161
- return TextHelpers.trim(text);
162
- }
163
- /**
164
- * Get element width minus padding
165
- * @param node parent node that wrapper text node
166
- * @returns {number} width minus padding
167
- */
168
- getElementWidthMinusPadding(node) {
169
- const paddingLeft = getComputedStyle(node).paddingLeft;
170
- const paddingRight = getComputedStyle(node).paddingRight;
171
- return node.offsetWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);
148
+ return false;
172
149
  }
173
150
  /**
174
- * Truncate a long string in the middle and add an ellipsis.
175
- * @param parentNode parent node
176
- * @param textNode text node
177
- * @param fullText string
151
+ * Handles any modifications to the internal HTML
152
+ * @param [mutation=false] is the request from a mutation event?
178
153
  * @returns {void}
179
154
  */
180
- middleEllipsis(parentNode, textNode, fullText) {
181
- const parentWidth = this.getElementWidthMinusPadding(parentNode);
182
- const textWidth = textNode.offsetWidth;
183
- this.enableTooltip = false;
184
- if (textWidth <= parentWidth) {
185
- return;
155
+ recalculate(mutation = false) {
156
+ mutation; // keeping here for future use
157
+ const oldValue = this.text;
158
+ const raw = this.textContent || '';
159
+ this.chunks = raw.split(_).map(chunk => chunk.trim()).filter(chunk => chunk);
160
+ const newValue = this.text;
161
+ if (oldValue !== newValue) {
162
+ this.requestUpdate('text', oldValue);
186
163
  }
187
- TextHelpers.middleEllipsis(textNode, parentWidth, fullText);
188
- this.enableTooltip = true;
189
- void this.requestUpdate();
190
164
  }
191
165
  /**
192
- * Handle text ellipsis and tooltip state when element has been resized
193
- * @returns void
166
+ * Returns cleaned version of `this.textContent`.
194
167
  */
195
- onResize() {
196
- if (this.truncate === 'center') {
197
- this.restoreTextContent(); // TODO: find a way to remove this to improve performance
198
- this.middleEllipsis(this, this.span, TextHelpers.trim(this.span.textContent || ''));
199
- }
200
- this.updateTooltip();
168
+ get text() {
169
+ return this.chunks.join(_);
201
170
  }
202
171
  /**
203
- * Handle tooltip statement when properties changed
204
- * @returns void
172
+ * Default template
205
173
  */
206
- updateTooltip() {
207
- // determine tooltip state
208
- if (this.isShowTooltip()) {
209
- this.span.setAttribute('title', this.rawText);
174
+ get truncateTemplate() {
175
+ const words = this.chunks;
176
+ const left = [];
177
+ const right = [];
178
+ const isSingleWord = words.length === 1;
179
+ if (isSingleWord) {
180
+ const word = words[0];
181
+ const split = Math.round(word.length / 2);
182
+ left.push(word.substr(0, split));
183
+ right.push(word.substr(split));
210
184
  }
211
185
  else {
212
- this.span.removeAttribute('tooltip');
213
- this.span.removeAttribute('title');
186
+ const split = Math.round(words.length / 2);
187
+ for (let i = 0; i < words.length; i += 1) {
188
+ (i < split ? left : right).push(words[i]);
189
+ }
214
190
  }
191
+ const leftPart = html `<div class="split left ${browserType}">${left.join(_)}</div>`;
192
+ const centerPart = isSingleWord ? undefined : html `<div class="split center">&nbsp;</div>`;
193
+ const rightPart = right.length ? html `<div class="split right ${browserType}"><span dir="ltr">${right.join(_)}</span></div>` : undefined;
194
+ return html `${leftPart}${centerPart}${rightPart}`;
215
195
  }
216
196
  /**
217
- * private method but can't override
218
- * access modifiers in typescript.
219
- * @ignore
220
- * @param size element dimensions
221
- * @returns {void}
222
- */
223
- resizedCallback() {
224
- clearTimeout(this.updateTimer);
225
- // split layout updating to another execution-loop
226
- // to prevents resizeObserver triggers resize-loop-error
227
- this.updateTimer = setTimeout(() => this.onResize(), 0);
228
- }
229
- /**
230
- * Determine show/hide tooltip state
231
- * @returns {boolean} true if center truncate or the element is smaller than a parent
197
+ * Template for when line clamp is set
232
198
  */
233
- isShowTooltip() {
234
- if (this.offsetWidth !== this.scrollWidth) {
235
- return true;
236
- }
237
- // truncate is center and text is overflow
238
- if (this.truncate === 'center' && this.enableTooltip) {
239
- return true;
240
- }
241
- // maxLine is provided and text is overflow
242
- else if (this.maxLine && this.offsetHeight !== this.scrollHeight) {
243
- return true;
199
+ get clampTemplate() {
200
+ const styles = {
201
+ lineClamp: `${this.lineClamp}`,
202
+ '-webkit-line-clamp': `${this.lineClamp}`,
203
+ wordBreak: this.lineClamp === 1 ? 'break-all' : ''
204
+ };
205
+ /* istanbul ignore if */
206
+ if (browserType === 'legacy') {
207
+ const cs = getComputedStyle(this);
208
+ const lineHeight = parseFloat(cs.lineHeight) || 1.2 /* css default */;
209
+ styles.maxHeight = `calc(1em * ${lineHeight} * ${this.lineClamp})`; // faux clamp in legacy browsers
210
+ styles.whiteSpace = this.lineClamp === 1 ? 'nowrap' : ''; // show ellipsis in legacy browsers
244
211
  }
245
- return false;
212
+ return html `
213
+ <span class="clamp ${browserType}" style="${styleMap(styles)}">${this.text}</span>
214
+ `;
246
215
  }
247
216
  /**
248
217
  * A `TemplateResult` that will be used
@@ -250,33 +219,27 @@ let Label = class Label extends ResponsiveElement {
250
219
  * @return Render template
251
220
  */
252
221
  render() {
253
- return html `
254
- <div style="display: none;">
255
- <slot></slot>
256
- </div>
257
- <span .title=${this.isShowTooltip() ? this.rawText : ''}></span>
258
- `;
222
+ const template = this.lineClamp ? this.clampTemplate : this.truncateTemplate;
223
+ /* istanbul ignore if */
224
+ if (browserType === 'legacy') {
225
+ // Mutation observer does not fire in IE11 if slot is not present
226
+ return html `${template}<span style="display: none !important;"><slot></slot></span>`;
227
+ }
228
+ return template;
259
229
  }
260
230
  };
261
231
  __decorate([
262
- property({ type: String, reflect: true })
263
- ], Label.prototype, "truncate", void 0);
264
- __decorate([
265
- property({ type: String, reflect: true, attribute: 'max-line' })
266
- ], Label.prototype, "maxLine", void 0);
232
+ property({ type: Number, attribute: 'line-clamp' })
233
+ ], Label.prototype, "lineClamp", void 0);
267
234
  __decorate([
268
235
  property({ type: Boolean, reflect: true })
269
236
  ], Label.prototype, "error", void 0);
270
237
  __decorate([
271
238
  property({ type: Boolean, reflect: true })
272
239
  ], Label.prototype, "warning", void 0);
273
- __decorate([
274
- query('span', true)
275
- ], Label.prototype, "span", void 0);
276
240
  Label = __decorate([
277
241
  customElement('ef-label', {
278
242
  alias: 'quartz-label'
279
243
  })
280
244
  ], Label);
281
245
  export { Label };
282
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,26 @@
1
+ # ef-layout
2
+
3
+ Layout component for creating responsive applications and components
4
+
5
+ ## Properties
6
+
7
+ | Property | Attribute | Type | Default | Description |
8
+ |--------------|--------------|------------------|---------|--------------------------------------------------|
9
+ | `basis` | `basis` | `string \| null` | null | Sets the rough size of the element based on other siblings and content.<br />Value could be pixel, percents or auto. |
10
+ | `container` | `container` | `boolean` | false | Tells the element to display as a container,<br />displaying children in a vertical nowrap layout. |
11
+ | `debug` | `debug` | `boolean` | false | Displays debug lines. |
12
+ | `flex` | `flex` | `boolean` | false | Tells the element to display flex,<br />displaying children in a row wrap layout. |
13
+ | `maxHeight` | `max-height` | `string \| null` | null | Prevents the height from expanding past a certain point.<br />Value could be pixel, percents or _empty_. |
14
+ | `maxWidth` | `max-width` | `string \| null` | null | Prevents the width from expanding past a certain point.<br />Value could be pixel, percents or _empty_. |
15
+ | `minHeight` | `min-height` | `string \| null` | null | Allows the height to shrink below its contents.<br />Also prevents the height from shrinking past a certain point.<br />Value could be pixel, percents or _empty_. |
16
+ | `minWidth` | `min-width` | `string \| null` | null | Allows the width to shrink below its contents.<br />Also prevents the width from shrinking past a certain point.<br />Value could be pixel, percents or _empty_. |
17
+ | `noflex` | `noflex` | `boolean` | false | Prevents the element from being flexible,<br />when inside of another flex layout. |
18
+ | `nowrap` | `nowrap` | `boolean` | false | Prevents wrapping flex items,<br />when the parent isn't a container. |
19
+ | `scrollable` | `scrollable` | `boolean` | false | Makes the element a scrollable viewport. |
20
+ | `size` | `size` | `string \| null` | null | Sets the fixed size of the element.<br />Value could be pixel, percents or auto. |
21
+
22
+ ## Events
23
+
24
+ | Event | Description |
25
+ |----------|----------------------------------------|
26
+ | `resize` | Fired when the element's size changes. |
@@ -1,17 +1,22 @@
1
1
  import { JSXInterface } from '../jsx';
2
- import { ResponsiveElement, TemplateResult, CSSResult, PropertyValues } from '@refinitiv-ui/core';
2
+ import { ResponsiveElement, TemplateResult, CSSResultGroup, PropertyValues } from '@refinitiv-ui/core';
3
3
  /**
4
4
  * Layout component for creating responsive applications and components
5
5
  * @fires resize - Fired when the element's size changes.
6
6
  */
7
7
  export declare class Layout extends ResponsiveElement {
8
8
  /**
9
- * A `CSSResult` that will be used
9
+ * Element version number
10
+ * @returns version number
11
+ */
12
+ static get version(): string;
13
+ /**
14
+ * A `CSSResultGroup` that will be used
10
15
  * to style the host, slotted children
11
16
  * and the internal template of the element.
12
17
  * @return CSS template
13
18
  */
14
- static get styles(): CSSResult | CSSResult[];
19
+ static get styles(): CSSResultGroup;
15
20
  /**
16
21
  * Displays debug lines.
17
22
  * @type {boolean}
@@ -97,4 +102,6 @@ declare global {
97
102
  'ef-layout': Partial<Layout> | JSXInterface.HTMLAttributes<Layout>;
98
103
  }
99
104
  }
100
- }
105
+ }
106
+
107
+ export {};