@refinitiv-ui/elements 5.5.0 → 5.8.1

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 (328) hide show
  1. package/CHANGELOG.md +65 -8
  2. package/lib/accordion/custom-elements.md +18 -0
  3. package/lib/accordion/index.d.ts +5 -5
  4. package/lib/accordion/index.js +8 -11
  5. package/lib/appstate-bar/custom-elements.md +22 -0
  6. package/lib/appstate-bar/index.d.ts +5 -5
  7. package/lib/appstate-bar/index.js +8 -11
  8. package/lib/autosuggest/custom-elements.json +24 -4
  9. package/lib/autosuggest/custom-elements.md +54 -0
  10. package/lib/autosuggest/helpers/types.d.ts +1 -1
  11. package/lib/autosuggest/helpers/utils.d.ts +2 -2
  12. package/lib/autosuggest/helpers/utils.js +1 -2
  13. package/lib/autosuggest/index.d.ts +13 -8
  14. package/lib/autosuggest/index.js +38 -31
  15. package/lib/button/custom-elements.json +2 -2
  16. package/lib/button/custom-elements.md +23 -0
  17. package/lib/button/index.d.ts +13 -13
  18. package/lib/button/index.js +41 -31
  19. package/lib/button-bar/custom-elements.md +9 -0
  20. package/lib/button-bar/index.d.ts +3 -3
  21. package/lib/button-bar/index.js +8 -10
  22. package/lib/calendar/constants.d.ts +22 -0
  23. package/lib/calendar/constants.js +23 -0
  24. package/lib/calendar/custom-elements.json +8 -6
  25. package/lib/calendar/custom-elements.md +35 -0
  26. package/lib/calendar/index.d.ts +9 -7
  27. package/lib/calendar/index.js +20 -38
  28. package/lib/calendar/locales.d.ts +1 -31
  29. package/lib/calendar/locales.js +0 -104
  30. package/lib/calendar/types.d.ts +1 -5
  31. package/lib/calendar/types.js +1 -6
  32. package/lib/calendar/utils.d.ts +31 -1
  33. package/lib/calendar/utils.js +104 -2
  34. package/lib/canvas/custom-elements.json +7 -5
  35. package/lib/canvas/custom-elements.md +27 -0
  36. package/lib/canvas/index.d.ts +4 -3
  37. package/lib/canvas/index.js +8 -10
  38. package/lib/card/custom-elements.json +3 -1
  39. package/lib/card/custom-elements.md +24 -0
  40. package/lib/card/helpers/types.d.ts +1 -1
  41. package/lib/card/index.d.ts +10 -8
  42. package/lib/card/index.js +14 -13
  43. package/lib/chart/custom-elements.json +1 -1
  44. package/lib/chart/custom-elements.md +16 -0
  45. package/lib/chart/helpers/index.d.ts +2 -2
  46. package/lib/chart/helpers/index.js +2 -2
  47. package/lib/chart/index.d.ts +6 -6
  48. package/lib/chart/index.js +12 -14
  49. package/lib/checkbox/custom-elements.json +4 -4
  50. package/lib/checkbox/custom-elements.md +18 -0
  51. package/lib/checkbox/index.d.ts +21 -13
  52. package/lib/checkbox/index.js +56 -31
  53. package/lib/clock/custom-elements.json +21 -4
  54. package/lib/clock/custom-elements.md +28 -0
  55. package/lib/clock/index.d.ts +17 -5
  56. package/lib/clock/index.js +37 -18
  57. package/lib/clock/themes/halo/dark/index.js +1 -1
  58. package/lib/clock/themes/halo/light/index.js +1 -1
  59. package/lib/clock/themes/solar/charcoal/index.js +1 -1
  60. package/lib/clock/themes/solar/pearl/index.js +1 -1
  61. package/lib/clock/utils/TickManager.js +2 -2
  62. package/lib/collapse/custom-elements.md +27 -0
  63. package/lib/collapse/index.d.ts +7 -7
  64. package/lib/collapse/index.js +11 -13
  65. package/lib/color-dialog/custom-elements.json +29 -16
  66. package/lib/color-dialog/custom-elements.md +39 -0
  67. package/lib/color-dialog/elements/color-palettes.d.ts +5 -5
  68. package/lib/color-dialog/elements/color-palettes.js +8 -12
  69. package/lib/color-dialog/elements/grayscale-palettes.d.ts +5 -5
  70. package/lib/color-dialog/elements/grayscale-palettes.js +9 -12
  71. package/lib/color-dialog/elements/palettes.d.ts +3 -3
  72. package/lib/color-dialog/elements/palettes.js +49 -47
  73. package/lib/color-dialog/helpers/value-model.js +2 -2
  74. package/lib/color-dialog/index.d.ts +19 -19
  75. package/lib/color-dialog/index.js +36 -35
  76. package/lib/combo-box/custom-elements.json +28 -16
  77. package/lib/combo-box/custom-elements.md +35 -0
  78. package/lib/combo-box/helpers/filter.d.ts +4 -4
  79. package/lib/combo-box/helpers/types.d.ts +2 -2
  80. package/lib/combo-box/index.d.ts +26 -18
  81. package/lib/combo-box/index.js +36 -27
  82. package/lib/combo-box/themes/halo/dark/index.js +1 -1
  83. package/lib/combo-box/themes/halo/light/index.js +1 -1
  84. package/lib/combo-box/themes/solar/charcoal/index.js +1 -1
  85. package/lib/combo-box/themes/solar/pearl/index.js +1 -1
  86. package/lib/counter/custom-elements.json +8 -4
  87. package/lib/counter/custom-elements.md +11 -0
  88. package/lib/counter/index.d.ts +5 -3
  89. package/lib/counter/index.js +11 -12
  90. package/lib/datetime-picker/custom-elements.json +52 -23
  91. package/lib/datetime-picker/custom-elements.md +57 -0
  92. package/lib/datetime-picker/index.d.ts +25 -14
  93. package/lib/datetime-picker/index.js +46 -35
  94. package/lib/datetime-picker/locales.d.ts +1 -1
  95. package/lib/datetime-picker/locales.js +12 -1
  96. package/lib/datetime-picker/types.d.ts +1 -1
  97. package/lib/datetime-picker/utils.js +1 -1
  98. package/lib/dialog/custom-elements.json +34 -12
  99. package/lib/dialog/custom-elements.md +47 -0
  100. package/lib/dialog/index.d.ts +17 -20
  101. package/lib/dialog/index.js +28 -31
  102. package/lib/email-field/custom-elements.json +81 -94
  103. package/lib/email-field/custom-elements.md +37 -0
  104. package/lib/email-field/index.d.ts +44 -116
  105. package/lib/email-field/index.js +48 -249
  106. package/lib/events.d.ts +2 -2
  107. package/lib/events.js +1 -2
  108. package/lib/flag/custom-elements.md +10 -0
  109. package/lib/flag/index.d.ts +6 -4
  110. package/lib/flag/index.js +12 -12
  111. package/lib/flag/utils/FlagLoader.d.ts +1 -1
  112. package/lib/flag/utils/FlagLoader.js +1 -1
  113. package/lib/header/custom-elements.md +18 -0
  114. package/lib/header/index.d.ts +2 -2
  115. package/lib/header/index.js +5 -8
  116. package/lib/heatmap/custom-elements.md +26 -0
  117. package/lib/heatmap/helpers/color.d.ts +1 -1
  118. package/lib/heatmap/helpers/color.js +1 -1
  119. package/lib/heatmap/helpers/text.d.ts +1 -1
  120. package/lib/heatmap/index.d.ts +7 -7
  121. package/lib/heatmap/index.js +15 -16
  122. package/lib/icon/custom-elements.json +6 -4
  123. package/lib/icon/custom-elements.md +8 -0
  124. package/lib/icon/index.d.ts +9 -6
  125. package/lib/icon/index.js +28 -18
  126. package/lib/icon/utils/IconLoader.d.ts +6 -1
  127. package/lib/icon/utils/IconLoader.js +24 -17
  128. package/lib/index.d.ts +2 -1
  129. package/lib/index.js +2 -1
  130. package/lib/interactive-chart/custom-elements.json +6 -10
  131. package/lib/interactive-chart/custom-elements.md +31 -0
  132. package/lib/interactive-chart/helpers/types.d.ts +2 -2
  133. package/lib/interactive-chart/index.d.ts +11 -8
  134. package/lib/interactive-chart/index.js +17 -17
  135. package/lib/item/custom-elements.json +4 -4
  136. package/lib/item/custom-elements.md +29 -0
  137. package/lib/item/helpers/types.d.ts +1 -1
  138. package/lib/item/index.d.ts +18 -8
  139. package/lib/item/index.js +36 -16
  140. package/lib/label/custom-elements.md +11 -0
  141. package/lib/label/index.d.ts +3 -3
  142. package/lib/label/index.js +12 -20
  143. package/lib/layout/custom-elements.md +26 -0
  144. package/lib/layout/index.d.ts +3 -3
  145. package/lib/layout/index.js +6 -9
  146. package/lib/led-gauge/custom-elements.json +4 -4
  147. package/lib/led-gauge/custom-elements.md +17 -0
  148. package/lib/led-gauge/index.d.ts +5 -4
  149. package/lib/led-gauge/index.js +9 -11
  150. package/lib/list/custom-elements.json +18 -5
  151. package/lib/list/custom-elements.md +32 -0
  152. package/lib/list/helpers/list-renderer.d.ts +2 -2
  153. package/lib/list/helpers/list-renderer.js +4 -2
  154. package/lib/list/helpers/types.d.ts +2 -2
  155. package/lib/list/index.d.ts +27 -10
  156. package/lib/list/index.js +54 -25
  157. package/lib/list/renderer.d.ts +2 -2
  158. package/lib/list/renderer.js +1 -1
  159. package/lib/loader/custom-elements.md +5 -0
  160. package/lib/loader/index.js +4 -8
  161. package/lib/multi-input/custom-elements.json +7 -6
  162. package/lib/multi-input/custom-elements.md +43 -0
  163. package/lib/multi-input/helpers/types.d.ts +1 -1
  164. package/lib/multi-input/index.d.ts +11 -7
  165. package/lib/multi-input/index.js +20 -17
  166. package/lib/notification/custom-elements.md +26 -0
  167. package/lib/notification/elements/notification-tray.d.ts +2 -2
  168. package/lib/notification/elements/notification-tray.js +6 -9
  169. package/lib/notification/elements/notification.d.ts +5 -5
  170. package/lib/notification/elements/notification.js +8 -11
  171. package/lib/notification/helpers/status.d.ts +1 -1
  172. package/lib/notification/helpers/status.js +1 -1
  173. package/lib/notification/helpers/types.d.ts +1 -1
  174. package/lib/notification/index.d.ts +2 -2
  175. package/lib/notification/index.js +2 -2
  176. package/lib/number-field/custom-elements.json +99 -54
  177. package/lib/number-field/custom-elements.md +42 -0
  178. package/lib/number-field/index.d.ts +96 -51
  179. package/lib/number-field/index.js +121 -89
  180. package/lib/overlay/custom-elements.json +26 -13
  181. package/lib/overlay/custom-elements.md +54 -0
  182. package/lib/overlay/elements/overlay-backdrop.d.ts +4 -4
  183. package/lib/overlay/elements/overlay-backdrop.js +6 -9
  184. package/lib/overlay/elements/overlay-viewport.d.ts +3 -3
  185. package/lib/overlay/elements/overlay-viewport.js +5 -9
  186. package/lib/overlay/elements/overlay.d.ts +10 -5
  187. package/lib/overlay/elements/overlay.js +18 -23
  188. package/lib/overlay/index.d.ts +2 -2
  189. package/lib/overlay/index.js +1 -1
  190. package/lib/overlay/managers/backdrop-manager.d.ts +1 -1
  191. package/lib/overlay/managers/backdrop-manager.js +2 -2
  192. package/lib/overlay/managers/close-manager.js +1 -1
  193. package/lib/overlay/managers/focus-manager.js +2 -2
  194. package/lib/overlay/managers/interaction-lock-manager.js +2 -2
  195. package/lib/overlay/managers/viewport-manager.d.ts +2 -2
  196. package/lib/overlay/managers/viewport-manager.js +6 -2
  197. package/lib/overlay/managers/zindex-manager.js +1 -1
  198. package/lib/overlay-menu/custom-elements.json +70 -20
  199. package/lib/overlay-menu/custom-elements.md +44 -0
  200. package/lib/overlay-menu/helpers/types.d.ts +3 -3
  201. package/lib/overlay-menu/index.d.ts +21 -19
  202. package/lib/overlay-menu/index.js +32 -31
  203. package/lib/overlay-menu/managers/menu-manager.d.ts +2 -2
  204. package/lib/overlay-menu/managers/menu-manager.js +3 -3
  205. package/lib/pagination/custom-elements.md +27 -0
  206. package/lib/pagination/index.d.ts +8 -8
  207. package/lib/pagination/index.js +13 -15
  208. package/lib/panel/custom-elements.md +11 -0
  209. package/lib/panel/index.d.ts +3 -3
  210. package/lib/panel/index.js +6 -9
  211. package/lib/password-field/custom-elements.json +62 -67
  212. package/lib/password-field/custom-elements.md +39 -0
  213. package/lib/password-field/index.d.ts +43 -94
  214. package/lib/password-field/index.js +52 -198
  215. package/lib/pill/custom-elements.json +8 -6
  216. package/lib/pill/custom-elements.md +22 -0
  217. package/lib/pill/index.d.ts +5 -5
  218. package/lib/pill/index.js +9 -11
  219. package/lib/progress-bar/custom-elements.md +18 -0
  220. package/lib/progress-bar/index.d.ts +3 -3
  221. package/lib/progress-bar/index.js +7 -9
  222. package/lib/radio-button/custom-elements.json +4 -4
  223. package/lib/radio-button/custom-elements.md +19 -0
  224. package/lib/radio-button/index.d.ts +25 -8
  225. package/lib/radio-button/index.js +84 -21
  226. package/lib/radio-button/radio-button-registry.d.ts +3 -2
  227. package/lib/radio-button/radio-button-registry.js +57 -4
  228. package/lib/rating/custom-elements.md +17 -0
  229. package/lib/rating/index.d.ts +3 -3
  230. package/lib/rating/index.js +9 -10
  231. package/lib/search-field/custom-elements.json +70 -74
  232. package/lib/search-field/custom-elements.md +41 -0
  233. package/lib/search-field/index.d.ts +44 -101
  234. package/lib/search-field/index.js +50 -220
  235. package/lib/select/custom-elements.json +5 -4
  236. package/lib/select/custom-elements.md +24 -0
  237. package/lib/select/helpers/types.d.ts +1 -1
  238. package/lib/select/index.d.ts +18 -10
  239. package/lib/select/index.js +84 -45
  240. package/lib/sidebar-layout/custom-elements.json +2 -6
  241. package/lib/sidebar-layout/custom-elements.md +21 -0
  242. package/lib/sidebar-layout/index.d.ts +7 -6
  243. package/lib/sidebar-layout/index.js +9 -10
  244. package/lib/slider/custom-elements.json +4 -4
  245. package/lib/slider/custom-elements.md +28 -0
  246. package/lib/slider/index.d.ts +4 -4
  247. package/lib/slider/index.js +9 -10
  248. package/lib/sparkline/custom-elements.json +4 -4
  249. package/lib/sparkline/custom-elements.md +16 -0
  250. package/lib/sparkline/index.d.ts +6 -4
  251. package/lib/sparkline/index.js +10 -10
  252. package/lib/swing-gauge/custom-elements.json +5 -3
  253. package/lib/swing-gauge/custom-elements.md +17 -0
  254. package/lib/swing-gauge/helpers.d.ts +1 -1
  255. package/lib/swing-gauge/helpers.js +1 -1
  256. package/lib/swing-gauge/index.d.ts +9 -7
  257. package/lib/swing-gauge/index.js +17 -15
  258. package/lib/tab/custom-elements.json +2 -2
  259. package/lib/tab/custom-elements.md +22 -0
  260. package/lib/tab/index.d.ts +5 -5
  261. package/lib/tab/index.js +9 -12
  262. package/lib/tab-bar/custom-elements.md +11 -0
  263. package/lib/tab-bar/index.d.ts +4 -4
  264. package/lib/tab-bar/index.js +9 -11
  265. package/lib/text-field/custom-elements.json +78 -89
  266. package/lib/text-field/custom-elements.md +35 -0
  267. package/lib/text-field/index.d.ts +59 -79
  268. package/lib/text-field/index.js +99 -158
  269. package/lib/time-picker/custom-elements.json +4 -4
  270. package/lib/time-picker/custom-elements.md +28 -0
  271. package/lib/time-picker/index.d.ts +7 -4
  272. package/lib/time-picker/index.js +15 -14
  273. package/lib/toggle/custom-elements.json +4 -4
  274. package/lib/toggle/custom-elements.md +19 -0
  275. package/lib/toggle/index.d.ts +14 -4
  276. package/lib/toggle/index.js +31 -12
  277. package/lib/tooltip/custom-elements.md +14 -0
  278. package/lib/tooltip/elements/title-tooltip.js +2 -2
  279. package/lib/tooltip/elements/tooltip-element.d.ts +1 -1
  280. package/lib/tooltip/helpers/overflow-tooltip.d.ts +1 -1
  281. package/lib/tooltip/helpers/overflow-tooltip.js +1 -1
  282. package/lib/tooltip/helpers/renderer.d.ts +1 -1
  283. package/lib/tooltip/helpers/types.d.ts +1 -1
  284. package/lib/tooltip/index.d.ts +9 -9
  285. package/lib/tooltip/index.js +18 -20
  286. package/lib/tooltip/managers/tooltip-manager.d.ts +2 -2
  287. package/lib/tooltip/managers/tooltip-manager.js +3 -7
  288. package/lib/tornado-chart/custom-elements.md +18 -0
  289. package/lib/tornado-chart/elements/tornado-chart.d.ts +4 -4
  290. package/lib/tornado-chart/elements/tornado-chart.js +8 -11
  291. package/lib/tornado-chart/elements/tornado-item.d.ts +5 -5
  292. package/lib/tornado-chart/elements/tornado-item.js +10 -12
  293. package/lib/tornado-chart/index.d.ts +2 -2
  294. package/lib/tornado-chart/index.js +2 -2
  295. package/lib/tree/custom-elements.json +4 -3
  296. package/lib/tree/custom-elements.md +32 -0
  297. package/lib/tree/elements/tree-item.d.ts +4 -4
  298. package/lib/tree/elements/tree-item.js +10 -13
  299. package/lib/tree/elements/tree.d.ts +6 -5
  300. package/lib/tree/elements/tree.js +9 -12
  301. package/lib/tree/helpers/filter.d.ts +2 -2
  302. package/lib/tree/helpers/renderer.d.ts +2 -2
  303. package/lib/tree/helpers/renderer.js +3 -3
  304. package/lib/tree/helpers/types.d.ts +1 -1
  305. package/lib/tree/index.d.ts +4 -4
  306. package/lib/tree/index.js +3 -3
  307. package/lib/tree/managers/tree-manager.d.ts +22 -10
  308. package/lib/tree/managers/tree-manager.js +56 -40
  309. package/lib/tree/themes/halo/dark/index.js +1 -1
  310. package/lib/tree/themes/halo/light/index.js +1 -1
  311. package/lib/tree/themes/solar/charcoal/index.js +1 -1
  312. package/lib/tree/themes/solar/pearl/index.js +1 -1
  313. package/lib/tree-select/custom-elements.json +10 -6
  314. package/lib/tree-select/custom-elements.md +26 -0
  315. package/lib/tree-select/helpers/types.d.ts +2 -2
  316. package/lib/tree-select/index.d.ts +28 -20
  317. package/lib/tree-select/index.js +44 -31
  318. package/lib/tree-select/themes/halo/dark/index.js +1 -1
  319. package/lib/tree-select/themes/halo/light/index.js +1 -1
  320. package/lib/tree-select/themes/solar/charcoal/index.js +1 -1
  321. package/lib/tree-select/themes/solar/pearl/index.js +1 -1
  322. package/lib/version.d.ts +1 -0
  323. package/lib/version.js +1 -0
  324. package/package.json +298 -15
  325. package/lib/autosuggest/helpers/const.d.ts +0 -2
  326. package/lib/autosuggest/helpers/const.js +0 -3
  327. package/lib/overlay-menu/helpers/uuid.d.ts +0 -7
  328. package/lib/overlay-menu/helpers/uuid.js +0 -13
@@ -1,63 +1,59 @@
1
1
  import { JSXInterface } from '../jsx';
2
- import { ControlElement, CSSResult, PropertyValues, TemplateResult } from '@refinitiv-ui/core';
3
- import '../icon';
4
- declare type SelectionIndex = number | null;
2
+ import { FormFieldElement, CSSResultGroup, PropertyValues, TemplateResult } from '@refinitiv-ui/core';
3
+ import { TemplateMap } from '@refinitiv-ui/core/lib/directives/template-map.js';
4
+ import '../icon/index.js';
5
5
  /**
6
- * Form control element for text
6
+ * Form control element for text.
7
7
  *
8
8
  * @fires value-changed - Dispatched when value changes
9
9
  * @fires error-changed - Dispatched when error state changes
10
+ * @fires icon-click - Dispatched when icon is clicked
10
11
  *
11
- * @attr {string} value - Input's value
12
- * @prop {string} [value=] - Input's value
12
+ * @attr {boolean} disabled - Set disabled state
13
+ * @prop {boolean} [disabled=false] - Set disabled state
14
+ *
15
+ * @attr {boolean} error - Set error state
16
+ * @prop {boolean} [error=false] - Set error state
17
+ *
18
+ * @attr {string} placeholder - Set placeholder text
19
+ * @prop {string} [placeholder=""] - Set placeholder text
13
20
  *
14
21
  * @attr {boolean} readonly - Set readonly state
15
22
  * @prop {boolean} [readonly=false] - Set readonly state
16
23
  *
17
- * @attr {boolean} disabled - Set disabled state
18
- * @prop {boolean} [disabled=false] - Set disabled state
24
+ * @attr {boolean} transparent - Disables all other states and border/background styles.
25
+ * @prop {boolean} [transparent=false] - Disables all other states and border/background styles.
26
+ *
27
+ * @attr {boolean} warning - Set warning state
28
+ * @prop {boolean} [warning=false] - Set warning state
29
+ *
30
+ * @attr {string} value - Input's value
31
+ * @prop {string} [value=""] - Input's value
19
32
  */
20
- export declare class TextField extends ControlElement {
33
+ export declare class TextField extends FormFieldElement {
21
34
  /**
22
35
  * Element version number
23
36
  * @returns version number
24
37
  */
25
38
  static get version(): string;
26
39
  /**
27
- * @returns A `CSSResult` that will be used to style the host,
40
+ * A `CSSResultGroup` that will be used to style the host,
28
41
  * slotted children and the internal template of the element.
42
+ * @returns CSS template
29
43
  */
30
- static get styles(): CSSResult | CSSResult[];
44
+ static get styles(): CSSResultGroup;
31
45
  /**
32
46
  * Set regular expression for input validation
33
47
  */
34
48
  pattern: string;
35
- /**
36
- * Set place holder text
37
- */
38
- placeholder: string;
39
- /**
40
- * Set state to error
41
- */
42
- error: boolean;
43
- /**
44
- * Set state to warning
45
- */
46
- warning: boolean;
47
49
  /**
48
50
  * Specify icon to display in input. Value can be icon name
49
51
  */
50
- icon: string;
52
+ icon: string | null;
51
53
  /**
52
54
  * Specify when icon need to be clickable
53
55
  */
54
56
  iconHasAction: boolean;
55
- /**
56
- * Disables all other states and border/background styles.
57
- * Use with advanced composite elements requiring e.g. multi selection in
58
- * combo-box when parent container handles element states.
59
- */
60
- transparent: boolean;
61
57
  /**
62
58
  * Set character max limit
63
59
  */
@@ -66,32 +62,6 @@ export declare class TextField extends ControlElement {
66
62
  * Set character min limit
67
63
  */
68
64
  minLength: number | null;
69
- /**
70
- * Get native input element from shadow roots
71
- */
72
- private inputElement;
73
- /**
74
- * Selection start index
75
- */
76
- get selectionStart(): number | null;
77
- set selectionStart(index: SelectionIndex);
78
- /**
79
- * Selection end index
80
- */
81
- get selectionEnd(): number | null;
82
- set selectionEnd(index: SelectionIndex);
83
- /**
84
- * Select the contents of input
85
- * @returns void
86
- */
87
- select(): void;
88
- /**
89
- * Set the selection range
90
- * @param startSelection Start of selection
91
- * @param endSelection End of the selection
92
- * @returns {void}
93
- */
94
- setSelectionRange(startSelection: number, endSelection: number): void;
95
65
  /**
96
66
  * Called after the component is first rendered
97
67
  * @param changedProperties Properties which have changed
@@ -109,52 +79,62 @@ export declare class TextField extends ControlElement {
109
79
  * @param changedProperties Properties that has changed
110
80
  * @returns True if input should be re-validated
111
81
  */
112
- private shouldValidateInput;
82
+ protected shouldValidateInput(changedProperties: PropertyValues): boolean;
113
83
  /**
114
- * renders icon element if property present
84
+ * Runs on input element `input` event
85
+ * @param event `input` event
115
86
  * @returns {void}
116
87
  */
117
- private renderIcon;
88
+ protected onInputInput(event: InputEvent): void;
118
89
  /**
119
- * A `TemplateResult` that will be used
120
- * to render the updated internal template.
121
- * @return Render template
90
+ * Runs on input element `change` event
91
+ * @param event `change` event
92
+ * @returns {void}
122
93
  */
123
- protected render(): TemplateResult;
94
+ protected onInputChange(event: InputEvent): void;
124
95
  /**
125
- * check if value is changed and fire event
96
+ * Check if value is changed and fire event
126
97
  * @returns {void}
127
98
  */
128
- private onPossibleValueChange;
99
+ protected onPossibleValueChange(event: InputEvent): void;
129
100
  /**
130
- * validate input according `pattern`, `minLength` and `maxLength` properties
101
+ * Validate input according `pattern`, `minLength` and `maxLength` properties
131
102
  * change state of `error` property according pattern validation
132
- * @returns void
103
+ * @returns {void}
133
104
  */
134
- private validateInput;
105
+ protected validateInput(): void;
135
106
  /**
136
107
  * @param error existing state of error
137
108
  * @returns true if there is no error and browser is IE11 and minLength more than 0 and value exists
138
109
  */
139
- private shouldValidateForMinLength;
110
+ protected shouldValidateForMinLength(error: boolean): boolean;
140
111
  /**
141
- * Detect `enter` and `space` keydown and fire
142
- * @param event keydown event
112
+ * Fires event on `icon` click
143
113
  * @returns {void}
144
114
  */
145
- private handleKeyDown;
115
+ protected iconClick(): void;
146
116
  /**
147
- * Process internal icon click and fire `icon-click` event
148
- * @returns void
117
+ * Decorate `<input>` element with common properties extended from form field element:
118
+ * type="text" - always `text`
119
+ * part="input" - always "input", used for styling
120
+ * maxlength - calculated from `this.maxLength`
121
+ * minlength - calculated from `this.minLength`
122
+ * pattern - calculated from `this.pattern`
123
+ * @returns template map
149
124
  */
150
- private iconClick;
125
+ protected get decorateInputMap(): TemplateMap;
151
126
  /**
152
- * Fire event on `icon` click
127
+ * Renders icon element if property present
153
128
  * @returns {void}
154
129
  */
155
- private notifyIcon;
130
+ protected renderIcon(): TemplateResult | null;
131
+ /**
132
+ * A `TemplateResult` that will be used
133
+ * to render the updated internal template.
134
+ * @return Render template
135
+ */
136
+ protected render(): TemplateResult;
156
137
  }
157
- export {};
158
138
 
159
139
  declare global {
160
140
  interface HTMLElementTagNameMap {
@@ -163,7 +143,7 @@ declare global {
163
143
 
164
144
  namespace JSX {
165
145
  interface IntrinsicElements {
166
- 'ef-text-field': Partial<TextField> | JSXInterface.ControlHTMLAttributes<TextField>;
146
+ 'ef-text-field': Partial<TextField> | JSXInterface.HTMLAttributes<TextField>;
167
147
  }
168
148
  }
169
149
  }
@@ -1,63 +1,56 @@
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 { ControlElement, css, customElement, html, ifDefined, property, query } from '@refinitiv-ui/core';
8
- import { VERSION } from '../';
9
- import '../icon';
10
- import { registerOverflowTooltip } from '../tooltip';
1
+ import { __decorate } from "tslib";
2
+ import { FormFieldElement, css, html } 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 { ifDefined } from '@refinitiv-ui/core/lib/directives/if-defined.js';
6
+ import { VERSION } from '../version.js';
7
+ import { isIE } from '@refinitiv-ui/utils/lib/browser.js';
8
+ import '../icon/index.js';
9
+ import { registerOverflowTooltip } from '../tooltip/index.js';
11
10
  const hasChanged = (newVal, oldVal) => oldVal === undefined ? false : newVal !== oldVal;
12
- const isIE = (/Trident/g).test(navigator.userAgent);
13
11
  /**
14
- * Form control element for text
12
+ * Form control element for text.
15
13
  *
16
14
  * @fires value-changed - Dispatched when value changes
17
15
  * @fires error-changed - Dispatched when error state changes
16
+ * @fires icon-click - Dispatched when icon is clicked
18
17
  *
19
- * @attr {string} value - Input's value
20
- * @prop {string} [value=] - Input's value
18
+ * @attr {boolean} disabled - Set disabled state
19
+ * @prop {boolean} [disabled=false] - Set disabled state
20
+ *
21
+ * @attr {boolean} error - Set error state
22
+ * @prop {boolean} [error=false] - Set error state
23
+ *
24
+ * @attr {string} placeholder - Set placeholder text
25
+ * @prop {string} [placeholder=""] - Set placeholder text
21
26
  *
22
27
  * @attr {boolean} readonly - Set readonly state
23
28
  * @prop {boolean} [readonly=false] - Set readonly state
24
29
  *
25
- * @attr {boolean} disabled - Set disabled state
26
- * @prop {boolean} [disabled=false] - Set disabled state
30
+ * @attr {boolean} transparent - Disables all other states and border/background styles.
31
+ * @prop {boolean} [transparent=false] - Disables all other states and border/background styles.
32
+ *
33
+ * @attr {boolean} warning - Set warning state
34
+ * @prop {boolean} [warning=false] - Set warning state
35
+ *
36
+ * @attr {string} value - Input's value
37
+ * @prop {string} [value=""] - Input's value
27
38
  */
28
- let TextField = class TextField extends ControlElement {
39
+ let TextField = class TextField extends FormFieldElement {
29
40
  constructor() {
30
41
  super(...arguments);
31
42
  /**
32
43
  * Set regular expression for input validation
33
44
  */
34
45
  this.pattern = '';
35
- /**
36
- * Set place holder text
37
- */
38
- this.placeholder = '';
39
- /**
40
- * Set state to error
41
- */
42
- this.error = false;
43
- /**
44
- * Set state to warning
45
- */
46
- this.warning = false;
47
46
  /**
48
47
  * Specify icon to display in input. Value can be icon name
49
48
  */
50
- this.icon = '';
49
+ this.icon = null;
51
50
  /**
52
51
  * Specify when icon need to be clickable
53
52
  */
54
53
  this.iconHasAction = false;
55
- /**
56
- * Disables all other states and border/background styles.
57
- * Use with advanced composite elements requiring e.g. multi selection in
58
- * combo-box when parent container handles element states.
59
- */
60
- this.transparent = false;
61
54
  /**
62
55
  * Set character max limit
63
56
  */
@@ -75,8 +68,9 @@ let TextField = class TextField extends ControlElement {
75
68
  return VERSION;
76
69
  }
77
70
  /**
78
- * @returns A `CSSResult` that will be used to style the host,
71
+ * A `CSSResultGroup` that will be used to style the host,
79
72
  * slotted children and the internal template of the element.
73
+ * @returns CSS template
80
74
  */
81
75
  static get styles() {
82
76
  return css `
@@ -107,42 +101,6 @@ let TextField = class TextField extends ControlElement {
107
101
  }
108
102
  `;
109
103
  }
110
- /**
111
- * Selection start index
112
- */
113
- get selectionStart() {
114
- return this.inputElement.selectionStart;
115
- }
116
- set selectionStart(index) {
117
- this.inputElement.selectionStart = index;
118
- }
119
- /**
120
- * Selection end index
121
- */
122
- get selectionEnd() {
123
- return this.inputElement.selectionEnd;
124
- }
125
- set selectionEnd(index) {
126
- this.inputElement.selectionEnd = index;
127
- }
128
- /**
129
- * Select the contents of input
130
- * @returns void
131
- */
132
- select() {
133
- if (!this.disabled && !this.readonly) {
134
- this.inputElement.select();
135
- }
136
- }
137
- /**
138
- * Set the selection range
139
- * @param startSelection Start of selection
140
- * @param endSelection End of the selection
141
- * @returns {void}
142
- */
143
- setSelectionRange(startSelection, endSelection) {
144
- this.inputElement.setSelectionRange(startSelection, endSelection);
145
- }
146
104
  /**
147
105
  * Called after the component is first rendered
148
106
  * @param changedProperties Properties which have changed
@@ -150,7 +108,9 @@ let TextField = class TextField extends ControlElement {
150
108
  */
151
109
  firstUpdated(changedProperties) {
152
110
  super.firstUpdated(changedProperties);
153
- registerOverflowTooltip(this.inputElement, () => this.value);
111
+ if (this.inputElement) {
112
+ registerOverflowTooltip(this.inputElement, () => this.value);
113
+ }
154
114
  }
155
115
  /**
156
116
  * Called when the element’s DOM has been updated and rendered
@@ -159,8 +119,8 @@ let TextField = class TextField extends ControlElement {
159
119
  */
160
120
  updated(changedProperties) {
161
121
  super.updated(changedProperties);
162
- if (this.inputElement.value !== this.value) {
163
- this.inputElement.value = this.value;
122
+ if (this.inputValue !== this.value) {
123
+ this.inputValue = this.value;
164
124
  }
165
125
  if (this.shouldValidateInput(changedProperties)) {
166
126
  this.validateInput();
@@ -171,146 +131,127 @@ let TextField = class TextField extends ControlElement {
171
131
  * @param changedProperties Properties that has changed
172
132
  * @returns True if input should be re-validated
173
133
  */
134
+ /* istanbul ignore next */
174
135
  shouldValidateInput(changedProperties) {
136
+ // TODO: This validation should be refactored
175
137
  return (changedProperties.has('pattern') || !!(this.pattern && changedProperties.has('value')))
176
- || (changedProperties.has('minLength') || !!(this.minLength && changedProperties.has('value')));
138
+ || (changedProperties.has('minLength') || !!(this.minLength && changedProperties.has('value')))
139
+ || (changedProperties.has('maxLength') || !!(this.maxLength && changedProperties.has('value')));
177
140
  }
178
141
  /**
179
- * renders icon element if property present
142
+ * Runs on input element `input` event
143
+ * @param event `input` event
180
144
  * @returns {void}
181
145
  */
182
- renderIcon() {
183
- return this.icon ? html `
184
- <ef-icon
185
- part="icon"
186
- icon="${this.icon}"
187
- ?readonly="${this.readonly}"
188
- ?disabled="${this.disabled}"
189
- @tap="${this.iconClick}"
190
- @keydown="${this.handleKeyDown}"
191
- tabindex="${ifDefined(this.iconHasAction ? '0' : undefined)}"
192
- ></ef-icon>
193
- ` : null;
146
+ onInputInput(event) {
147
+ this.onPossibleValueChange(event);
194
148
  }
195
149
  /**
196
- * A `TemplateResult` that will be used
197
- * to render the updated internal template.
198
- * @return Render template
150
+ * Runs on input element `change` event
151
+ * @param event `change` event
152
+ * @returns {void}
199
153
  */
200
- render() {
201
- return html `
202
- <input
203
- type="text"
204
- part="input"
205
- ?readonly="${this.readonly}"
206
- ?disabled="${this.disabled}"
207
- placeholder="${ifDefined(this.placeholder || undefined)}"
208
- maxlength="${ifDefined(this.maxLength || undefined)}"
209
- minlength="${ifDefined(this.minLength || undefined)}"
210
- @input="${this.onPossibleValueChange}"
211
- @change="${this.onPossibleValueChange}"
212
- pattern="${ifDefined(this.pattern || undefined)}"
213
- autocomplete="off"
214
- />
215
- ${this.renderIcon()}
216
- `;
154
+ onInputChange(event) {
155
+ this.onPossibleValueChange(event);
217
156
  }
218
157
  /**
219
- * check if value is changed and fire event
158
+ * Check if value is changed and fire event
220
159
  * @returns {void}
221
160
  */
222
- onPossibleValueChange() {
223
- const value = this.inputElement.value;
161
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
162
+ onPossibleValueChange(event) {
163
+ var _a;
164
+ const value = ((_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.value) || '';
224
165
  this.setValueAndNotify(value);
225
166
  }
226
167
  /**
227
- * validate input according `pattern`, `minLength` and `maxLength` properties
168
+ * Validate input according `pattern`, `minLength` and `maxLength` properties
228
169
  * change state of `error` property according pattern validation
229
- * @returns void
170
+ * @returns {void}
230
171
  */
231
172
  validateInput() {
232
- let error = !this.inputElement.checkValidity();
173
+ var _a;
174
+ let error = !((_a = this.inputElement) === null || _a === void 0 ? void 0 : _a.checkValidity());
175
+ /* istanbul ignore next */
233
176
  if (this.shouldValidateForMinLength(error)) {
234
177
  error = !!this.minLength && (this.minLength > this.value.length);
235
178
  }
236
- if (this.error !== error) {
237
- this.error = error;
238
- this.notifyPropertyChange('error', this.error);
239
- }
179
+ this.notifyErrorChange(error);
240
180
  }
241
181
  /**
242
182
  * @param error existing state of error
243
183
  * @returns true if there is no error and browser is IE11 and minLength more than 0 and value exists
244
184
  */
185
+ /* istanbul ignore next */
245
186
  shouldValidateForMinLength(error) {
246
187
  return !!(!error && isIE && this.minLength && !!this.value);
247
188
  }
248
189
  /**
249
- * Detect `enter` and `space` keydown and fire
250
- * @param event keydown event
190
+ * Fires event on `icon` click
251
191
  * @returns {void}
252
192
  */
253
- handleKeyDown(event) {
254
- if (event.key === 'Spacebar' || event.key === ' ' || event.key === 'Enter') {
255
- this.notifyIcon();
193
+ iconClick() {
194
+ if (this.iconHasAction && !this.disabled) {
195
+ this.dispatchEvent(new CustomEvent('icon-click', { bubbles: false }));
256
196
  }
257
197
  }
258
198
  /**
259
- * Process internal icon click and fire `icon-click` event
260
- * @returns void
199
+ * Decorate `<input>` element with common properties extended from form field element:
200
+ * type="text" - always `text`
201
+ * part="input" - always "input", used for styling
202
+ * maxlength - calculated from `this.maxLength`
203
+ * minlength - calculated from `this.minLength`
204
+ * pattern - calculated from `this.pattern`
205
+ * @returns template map
261
206
  */
262
- iconClick() {
263
- this.notifyIcon();
207
+ get decorateInputMap() {
208
+ return Object.assign(Object.assign({}, super.decorateInputMap), { 'type': 'text', 'part': 'input', 'maxlength': this.maxLength, 'minlength': this.minLength, 'pattern': this.pattern || null });
264
209
  }
265
210
  /**
266
- * Fire event on `icon` click
211
+ * Renders icon element if property present
267
212
  * @returns {void}
268
213
  */
269
- notifyIcon() {
270
- if (this.iconHasAction) {
271
- /**
272
- * Dispatched only when element has icon-has-action attribute and icon is clicked
273
- */
274
- this.dispatchEvent(new CustomEvent('icon-click', { bubbles: false }));
275
- }
214
+ renderIcon() {
215
+ return this.icon ? html `
216
+ <ef-icon
217
+ role="${ifDefined(this.iconHasAction ? 'button' : undefined)}"
218
+ part="icon"
219
+ icon="${this.icon}"
220
+ aria-label="${ifDefined(this.iconHasAction ? this.icon : undefined)}"
221
+ ?readonly="${this.readonly}"
222
+ ?disabled="${this.disabled}"
223
+ @tap="${this.iconClick}"
224
+ tabindex="${ifDefined(this.iconHasAction ? '0' : undefined)}"
225
+ ></ef-icon>
226
+ ` : null;
227
+ }
228
+ /**
229
+ * A `TemplateResult` that will be used
230
+ * to render the updated internal template.
231
+ * @return Render template
232
+ */
233
+ render() {
234
+ return html `
235
+ ${super.render()}
236
+ ${this.renderIcon()}
237
+ `;
276
238
  }
277
239
  };
278
240
  __decorate([
279
241
  property({ type: String, hasChanged })
280
242
  ], TextField.prototype, "pattern", void 0);
281
- __decorate([
282
- property({ type: String })
283
- ], TextField.prototype, "placeholder", void 0);
284
- __decorate([
285
- property({ type: Boolean, reflect: true })
286
- ], TextField.prototype, "error", void 0);
287
- __decorate([
288
- property({ type: Boolean, reflect: true })
289
- ], TextField.prototype, "warning", void 0);
290
243
  __decorate([
291
244
  property({ type: String, reflect: true })
292
245
  ], TextField.prototype, "icon", void 0);
293
246
  __decorate([
294
247
  property({ type: Boolean, reflect: true, attribute: 'icon-has-action' })
295
248
  ], TextField.prototype, "iconHasAction", void 0);
296
- __decorate([
297
- property({ type: Boolean, reflect: true })
298
- ], TextField.prototype, "transparent", void 0);
299
249
  __decorate([
300
250
  property({ type: Number, attribute: 'maxlength', reflect: true })
301
251
  ], TextField.prototype, "maxLength", void 0);
302
252
  __decorate([
303
253
  property({ type: Number, attribute: 'minlength', reflect: true, hasChanged })
304
254
  ], TextField.prototype, "minLength", void 0);
305
- __decorate([
306
- query('[part="input"]')
307
- ], TextField.prototype, "inputElement", void 0);
308
- __decorate([
309
- property({ type: Number, attribute: false })
310
- ], TextField.prototype, "selectionStart", null);
311
- __decorate([
312
- property({ type: Number, attribute: false })
313
- ], TextField.prototype, "selectionEnd", null);
314
255
  TextField = __decorate([
315
256
  customElement('ef-text-field', {
316
257
  alias: 'coral-text-field'
@@ -42,13 +42,13 @@
42
42
  "name": "readonly",
43
43
  "description": "Set readonly state",
44
44
  "type": "boolean",
45
- "default": "\"false\""
45
+ "default": "false"
46
46
  },
47
47
  {
48
48
  "name": "disabled",
49
49
  "description": "Set disabled state",
50
50
  "type": "boolean",
51
- "default": "\"false\""
51
+ "default": "false"
52
52
  }
53
53
  ],
54
54
  "properties": [
@@ -96,14 +96,14 @@
96
96
  "attribute": "readonly",
97
97
  "description": "Set readonly state",
98
98
  "type": "boolean",
99
- "default": "\"false\""
99
+ "default": "false"
100
100
  },
101
101
  {
102
102
  "name": "disabled",
103
103
  "attribute": "disabled",
104
104
  "description": "Set disabled state",
105
105
  "type": "boolean",
106
- "default": "\"false\""
106
+ "default": "false"
107
107
  }
108
108
  ],
109
109
  "events": [
@@ -0,0 +1,28 @@
1
+ # ef-time-picker
2
+
3
+ Control the time input
4
+
5
+ ## Properties
6
+
7
+ | Property | Attribute | Type | Default | Description |
8
+ |---------------|----------------|------------------|---------|--------------------------------------------------|
9
+ | `amPm` | `am-pm` | `boolean` | false | Toggles 12hr time display |
10
+ | `disabled` | `disabled` | `boolean` | false | Set disabled state |
11
+ | `hours` | `hours` | `number \| null` | null | Hours time segment in 24hr format |
12
+ | `minutes` | `minutes` | `number \| null` | null | Minutes time segment |
13
+ | `readonly` | `readonly` | `boolean` | false | Set readonly state |
14
+ | `seconds` | `seconds` | `number \| null` | null | Seconds time segment |
15
+ | `showSeconds` | `show-seconds` | `boolean` | false | Flag to show seconds time segment in display.<br />Seconds are automatically shown when `hh:mm:ss` time format is provided as a value. |
16
+ | `value` | `value` | `string` | "" | Value of the element |
17
+
18
+ ## Methods
19
+
20
+ | Method | Type | Description |
21
+ |----------|------------|-------------------------|
22
+ | `toggle` | `(): void` | Toggles the AM/PM state |
23
+
24
+ ## Events
25
+
26
+ | Event | Description |
27
+ |-----------------|-------------------------------|
28
+ | `value-changed` | Dispatched when value changes |