@vonage/vivid 4.16.2 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/custom-elements.json +3426 -506
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +147 -39
  5. package/index.js +64 -59
  6. package/lib/accordion/definition.d.ts +2 -0
  7. package/lib/accordion-item/definition.d.ts +2 -0
  8. package/lib/action-group/definition.d.ts +2 -0
  9. package/lib/alert/definition.d.ts +2 -0
  10. package/lib/audio-player/definition.d.ts +2 -0
  11. package/lib/avatar/definition.d.ts +2 -0
  12. package/lib/badge/definition.d.ts +2 -0
  13. package/lib/banner/definition.d.ts +2 -0
  14. package/lib/breadcrumb/definition.d.ts +2 -0
  15. package/lib/breadcrumb-item/definition.d.ts +2 -0
  16. package/lib/button/definition.d.ts +2 -0
  17. package/lib/calendar/calendar.d.ts +2 -0
  18. package/lib/calendar/definition.d.ts +2 -0
  19. package/lib/calendar-event/definition.d.ts +2 -0
  20. package/lib/card/definition.d.ts +2 -0
  21. package/lib/checkbox/definition.d.ts +2 -0
  22. package/lib/combobox/definition.d.ts +2 -0
  23. package/lib/components.d.ts +1 -0
  24. package/lib/data-grid/definition.d.ts +4 -0
  25. package/lib/date-picker/definition.d.ts +2 -0
  26. package/lib/date-range-picker/definition.d.ts +2 -0
  27. package/lib/dial-pad/definition.d.ts +2 -0
  28. package/lib/dialog/definition.d.ts +2 -0
  29. package/lib/divider/definition.d.ts +2 -0
  30. package/lib/empty-state/definition.d.ts +2 -0
  31. package/lib/enums.d.ts +6 -0
  32. package/lib/fab/definition.d.ts +2 -0
  33. package/lib/file-picker/definition.d.ts +2 -0
  34. package/lib/header/definition.d.ts +2 -0
  35. package/lib/icon/definition.d.ts +2 -0
  36. package/lib/layout/definition.d.ts +2 -0
  37. package/lib/menu/definition.d.ts +2 -0
  38. package/lib/menu/menu.d.ts +454 -4
  39. package/lib/menu-item/definition.d.ts +2 -0
  40. package/lib/nav/definition.d.ts +2 -0
  41. package/lib/nav-disclosure/definition.d.ts +2 -0
  42. package/lib/nav-item/definition.d.ts +2 -0
  43. package/lib/note/definition.d.ts +2 -0
  44. package/lib/number-field/definition.d.ts +2 -0
  45. package/lib/option/definition.d.ts +2 -0
  46. package/lib/pagination/definition.d.ts +2 -0
  47. package/lib/popup/definition.d.ts +0 -1
  48. package/lib/popup/popup.d.ts +25 -0
  49. package/lib/progress/definition.d.ts +2 -0
  50. package/lib/progress-ring/definition.d.ts +2 -0
  51. package/lib/radio/definition.d.ts +2 -0
  52. package/lib/radio-group/definition.d.ts +2 -0
  53. package/lib/range-slider/definition.d.ts +2 -0
  54. package/lib/rich-text-editor/definition.d.ts +2 -0
  55. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +2 -0
  56. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +7 -0
  57. package/lib/rich-text-editor/rich-text-editor.d.ts +13 -0
  58. package/lib/rich-text-editor/rich-text-editor.template.d.ts +4 -0
  59. package/lib/searchable-select/definition.d.ts +2 -0
  60. package/lib/select/definition.d.ts +2 -0
  61. package/lib/selectable-box/definition.d.ts +2 -0
  62. package/lib/side-drawer/definition.d.ts +2 -0
  63. package/lib/slider/definition.d.ts +2 -0
  64. package/lib/split-button/definition.d.ts +2 -0
  65. package/lib/switch/definition.d.ts +2 -0
  66. package/lib/tab/definition.d.ts +2 -0
  67. package/lib/tab-panel/definition.d.ts +2 -0
  68. package/lib/tabs/definition.d.ts +2 -0
  69. package/lib/tag/definition.d.ts +2 -0
  70. package/lib/tag-group/definition.d.ts +2 -0
  71. package/lib/text-area/definition.d.ts +2 -0
  72. package/lib/text-field/definition.d.ts +2 -0
  73. package/lib/time-picker/definition.d.ts +2 -0
  74. package/lib/time-picker/inline-time-picker/columns.d.ts +13 -0
  75. package/lib/time-picker/inline-time-picker/definition.d.ts +1 -0
  76. package/lib/time-picker/inline-time-picker/inline-time-picker.d.ts +15 -0
  77. package/lib/time-picker/inline-time-picker/inline-time-picker.template.d.ts +5 -0
  78. package/lib/time-picker/time-picker.template.d.ts +1 -2
  79. package/lib/toggletip/definition.d.ts +2 -0
  80. package/lib/toggletip/toggletip.d.ts +454 -4
  81. package/lib/tooltip/definition.d.ts +2 -0
  82. package/lib/tooltip/tooltip.d.ts +454 -4
  83. package/lib/tree-item/definition.d.ts +2 -0
  84. package/lib/tree-view/definition.d.ts +2 -0
  85. package/lib/video-player/definition.d.ts +2 -0
  86. package/menu/index.js +1 -1
  87. package/package.json +7 -2
  88. package/popup/index.cjs +1 -1
  89. package/popup/index.js +1 -1
  90. package/rich-text-editor/index.cjs +5 -0
  91. package/rich-text-editor/index.js +3 -0
  92. package/searchable-select/index.cjs +1 -1
  93. package/searchable-select/index.js +1 -1
  94. package/select/index.cjs +1 -1
  95. package/select/index.js +1 -1
  96. package/selectable-box/index.cjs +1 -1
  97. package/selectable-box/index.js +1 -1
  98. package/shared/affix.cjs +1 -3
  99. package/shared/affix.js +2 -4
  100. package/shared/anchored.cjs +12 -9
  101. package/shared/anchored.js +13 -10
  102. package/shared/definition.js +1 -1
  103. package/shared/definition10.cjs +1 -0
  104. package/shared/definition10.js +2 -2
  105. package/shared/definition11.cjs +1 -1
  106. package/shared/definition11.js +2 -2
  107. package/shared/definition12.cjs +1 -1
  108. package/shared/definition12.js +2 -2
  109. package/shared/definition13.cjs +15 -2
  110. package/shared/definition13.js +16 -4
  111. package/shared/definition14.cjs +3 -2
  112. package/shared/definition14.js +4 -4
  113. package/shared/definition15.cjs +1 -1
  114. package/shared/definition15.js +2 -2
  115. package/shared/definition16.cjs +18 -18
  116. package/shared/definition16.js +6 -6
  117. package/shared/definition17.cjs +3 -0
  118. package/shared/definition17.js +2 -2
  119. package/shared/definition18.cjs +7 -7
  120. package/shared/definition18.js +4 -4
  121. package/shared/definition19.cjs +15 -15
  122. package/shared/definition19.js +4 -4
  123. package/shared/definition2.cjs +1 -0
  124. package/shared/definition2.js +2 -2
  125. package/shared/definition20.cjs +5 -4
  126. package/shared/definition20.js +6 -6
  127. package/shared/definition21.cjs +3 -2
  128. package/shared/definition21.js +4 -4
  129. package/shared/definition22.js +1 -1
  130. package/shared/definition23.cjs +2 -1
  131. package/shared/definition23.js +3 -3
  132. package/shared/definition24.cjs +2 -1
  133. package/shared/definition24.js +3 -3
  134. package/shared/definition25.cjs +14 -14
  135. package/shared/definition25.js +3 -3
  136. package/shared/definition26.cjs +2 -1
  137. package/shared/definition26.js +3 -3
  138. package/shared/definition27.cjs +1 -1
  139. package/shared/definition27.js +2 -2
  140. package/shared/definition28.cjs +1 -0
  141. package/shared/definition28.js +2 -2
  142. package/shared/definition29.cjs +53 -61
  143. package/shared/definition29.js +54 -63
  144. package/shared/definition3.cjs +1 -0
  145. package/shared/definition3.js +2 -2
  146. package/shared/definition30.cjs +1 -0
  147. package/shared/definition30.js +2 -2
  148. package/shared/definition31.cjs +1 -0
  149. package/shared/definition31.js +2 -2
  150. package/shared/definition32.cjs +1 -0
  151. package/shared/definition32.js +2 -2
  152. package/shared/definition33.cjs +2 -1
  153. package/shared/definition33.js +3 -3
  154. package/shared/definition34.cjs +25 -25
  155. package/shared/definition34.js +5 -5
  156. package/shared/definition35.cjs +1 -1
  157. package/shared/definition35.js +2 -2
  158. package/shared/definition36.cjs +2 -1
  159. package/shared/definition36.js +3 -3
  160. package/shared/definition37.cjs +1 -1
  161. package/shared/definition37.js +2 -2
  162. package/shared/definition38.cjs +2 -1
  163. package/shared/definition38.js +3 -3
  164. package/shared/definition39.cjs +1 -0
  165. package/shared/definition39.js +2 -2
  166. package/shared/definition4.cjs +3 -2
  167. package/shared/definition4.js +4 -4
  168. package/shared/definition40.cjs +1 -1
  169. package/shared/definition40.js +2 -2
  170. package/shared/definition41.cjs +30 -30
  171. package/shared/definition41.js +5 -5
  172. package/shared/definition42.cjs +12538 -1052
  173. package/shared/definition42.js +12538 -1053
  174. package/shared/definition43.cjs +927 -701
  175. package/shared/definition43.js +929 -702
  176. package/shared/definition44.cjs +874 -104
  177. package/shared/definition44.js +874 -104
  178. package/shared/definition45.cjs +114 -90
  179. package/shared/definition45.js +113 -90
  180. package/shared/definition46.cjs +88 -464
  181. package/shared/definition46.js +87 -463
  182. package/shared/definition47.cjs +463 -109
  183. package/shared/definition47.js +462 -109
  184. package/shared/definition48.cjs +108 -106
  185. package/shared/definition48.js +107 -106
  186. package/shared/definition49.cjs +139 -13
  187. package/shared/definition49.js +138 -13
  188. package/shared/definition5.cjs +3 -2
  189. package/shared/definition5.js +5 -5
  190. package/shared/definition50.cjs +16 -114
  191. package/shared/definition50.js +15 -114
  192. package/shared/definition51.cjs +79 -485
  193. package/shared/definition51.js +78 -485
  194. package/shared/definition52.cjs +503 -23
  195. package/shared/definition52.js +502 -23
  196. package/shared/definition53.cjs +25 -123
  197. package/shared/definition53.js +24 -123
  198. package/shared/definition54.cjs +96 -254
  199. package/shared/definition54.js +96 -255
  200. package/shared/definition55.cjs +261 -59
  201. package/shared/definition55.js +262 -60
  202. package/shared/definition56.cjs +72 -861
  203. package/shared/definition56.js +72 -861
  204. package/shared/definition57.cjs +880 -107
  205. package/shared/definition57.js +880 -107
  206. package/shared/definition58.cjs +104 -88
  207. package/shared/definition58.js +104 -89
  208. package/shared/definition59.cjs +80 -165
  209. package/shared/definition59.js +79 -163
  210. package/shared/definition6.cjs +2 -1
  211. package/shared/definition6.js +3 -3
  212. package/shared/definition60.cjs +142 -228
  213. package/shared/definition60.js +141 -229
  214. package/shared/definition61.cjs +233 -70146
  215. package/shared/definition61.js +232 -70146
  216. package/shared/definition62.cjs +69381 -28
  217. package/shared/definition62.js +69380 -27
  218. package/shared/definition63.cjs +28 -2163
  219. package/shared/definition63.js +27 -2161
  220. package/shared/definition64.cjs +2195 -0
  221. package/shared/definition64.js +2190 -0
  222. package/shared/definition7.cjs +2 -1
  223. package/shared/definition7.js +3 -3
  224. package/shared/definition8.cjs +2 -1
  225. package/shared/definition8.js +3 -3
  226. package/shared/definition9.cjs +1 -1
  227. package/shared/definition9.js +2 -2
  228. package/shared/enums.cjs +8 -0
  229. package/shared/enums.js +8 -1
  230. package/shared/form-associated.js +1 -1
  231. package/shared/form-elements.cjs +7 -7
  232. package/shared/form-elements.js +8 -8
  233. package/shared/foundation/vivid-element/vivid-element.d.ts +1 -0
  234. package/shared/patterns/anchored.d.ts +891 -10
  235. package/shared/patterns/trapped-focus.d.ts +2 -0
  236. package/shared/presentationDate.cjs +5 -7
  237. package/shared/presentationDate.js +5 -7
  238. package/shared/slider.template.cjs +4 -4
  239. package/shared/slider.template.js +4 -4
  240. package/shared/text-anchor.template.cjs +2 -2
  241. package/shared/text-anchor.template.js +2 -2
  242. package/shared/text-field.cjs +555 -2
  243. package/shared/text-field.js +554 -2
  244. package/shared/text-field2.cjs +2 -572
  245. package/shared/text-field2.js +2 -571
  246. package/shared/trapped-focus.cjs +7 -1
  247. package/shared/trapped-focus.js +7 -1
  248. package/shared/utils/mixins.d.ts +3 -0
  249. package/shared/vivid-element.cjs +3 -0
  250. package/shared/vivid-element.js +4 -1
  251. package/side-drawer/index.cjs +1 -1
  252. package/side-drawer/index.js +1 -1
  253. package/slider/index.cjs +1 -1
  254. package/slider/index.js +1 -1
  255. package/split-button/index.cjs +1 -1
  256. package/split-button/index.js +1 -1
  257. package/styles/core/all.css +1 -1
  258. package/styles/core/theme.css +1 -1
  259. package/styles/core/typography.css +1 -1
  260. package/styles/tokens/theme-dark.css +4 -4
  261. package/styles/tokens/theme-light.css +4 -4
  262. package/styles/tokens/vivid-2-compat.css +1 -1
  263. package/switch/index.cjs +1 -1
  264. package/switch/index.js +1 -1
  265. package/tab/index.cjs +1 -1
  266. package/tab/index.js +1 -1
  267. package/tab-panel/index.cjs +1 -1
  268. package/tab-panel/index.js +1 -1
  269. package/tabs/index.cjs +1 -1
  270. package/tabs/index.js +1 -1
  271. package/tag/index.cjs +1 -1
  272. package/tag/index.js +1 -1
  273. package/tag-group/index.cjs +1 -1
  274. package/tag-group/index.js +1 -1
  275. package/text-anchor/index.js +1 -1
  276. package/text-area/index.cjs +1 -1
  277. package/text-area/index.js +1 -1
  278. package/text-field/index.cjs +1 -1
  279. package/text-field/index.js +1 -1
  280. package/time-picker/index.cjs +1 -1
  281. package/time-picker/index.js +1 -1
  282. package/toggletip/index.cjs +1 -1
  283. package/toggletip/index.js +1 -1
  284. package/tooltip/index.cjs +1 -1
  285. package/tooltip/index.js +1 -1
  286. package/tree-item/index.cjs +1 -1
  287. package/tree-item/index.js +1 -1
  288. package/tree-view/index.cjs +1 -1
  289. package/tree-view/index.js +1 -1
  290. package/video-player/index.cjs +1 -1
  291. package/video-player/index.js +1 -1
  292. package/vivid.api.json +22795 -1
@@ -1,873 +1,84 @@
1
- import { t as textFieldDefinition } from './definition55.js';
2
- import { P as Popup, p as popupDefinition } from './definition63.js';
3
- import { B as Button, b as buttonDefinition } from './definition11.js';
4
- import { V as VividElement, O as Observable, i as defaultExecutionContext, D as DOM, a as attr, v as volatile, o as observable, n as nullableNumberConverter, h as html, d as defineVividComponent, f as createRegisterFunction } from './vivid-element.js';
5
- import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
6
- import { h as handleEscapeKeyAndStopPropogation } from './index.js';
7
- import { s as scrollIntoView } from './scrollIntoView.js';
8
- import { F as FormAssociated } from './form-associated.js';
9
- import { e as errorText, f as formElements, a as FormElementHelperText } from './form-elements.js';
10
- import { T as TrappedFocus } from './trapped-focus.js';
11
- import { L as Localized } from './localized.js';
12
- import { T as TextField } from './text-field2.js';
13
- import { r as ref } from './ref.js';
14
- import { s as slotted } from './slotted.js';
15
- import { w as when } from './when.js';
16
- import { r as repeat } from './repeat.js';
1
+ import { i as iconDefinition } from './definition27.js';
2
+ import { h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { T as TextField } from './text-field.js';
4
+ import { s as styles } from './text-field2.js';
5
+ import { a as affixIconTemplateFactory } from './affix.js';
17
6
  import { c as classNames } from './class-names.js';
7
+ import { w as when } from './when.js';
8
+ import { s as slotted } from './slotted.js';
9
+ import { g as getFeedbackTemplate } from './form-elements.js';
18
10
 
19
- const styles = ":host{display:inline-block}.base,.control{inline-size:100%}.dialog{display:inline-flex;flex-direction:column}.dialog .footer{display:flex;align-items:center;justify-content:flex-end;padding:8px;border-top:1px solid var(--vvd-color-neutral-200);gap:8px}.time-pickers{display:flex;overflow:hidden;justify-content:center;padding:4px;block-size:188px;gap:4px}.time-pickers .picker{position:relative;display:flex;overflow:hidden;flex-direction:column;padding:0;border-radius:4px;margin:0;gap:4px;inline-size:50px;list-style:none}.time-pickers .picker:hover{overflow-y:auto}.time-pickers .picker:after{display:block;flex-shrink:0;block-size:156px;content:\"\"}.time-pickers .picker:focus-visible{--focus-stroke-gap-color: transparent;--focus-inset: -2px;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}.time-pickers .item{--_connotation-color-primary: var(--vvd-time-picker-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-firm: var(--vvd-time-picker-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-time-picker-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-time-picker-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-dim: var(--vvd-time-picker-accent-dim, var(--vvd-color-neutral-200));--_connotation-color-pale: var(--vvd-time-picker-accent-pale, var(--vvd-color-neutral-300))}.time-pickers .item{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.time-pickers .item:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.time-pickers .item:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.time-pickers .item:where(.selected):where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: transparent}.time-pickers .item{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:28px;color:var(--_appearance-color-text);cursor:pointer;font:var(--vvd-typography-base);inline-size:50px}";
20
-
21
- class _TimePicker extends VividElement {
22
- }
23
- class FormAssociatedTimePicker extends FormAssociated(_TimePicker) {
24
- constructor() {
25
- super(...arguments);
26
- this.proxy = document.createElement("input");
27
- }
28
- }
29
-
30
- const isValidTimeStr = (timeStr) => {
31
- const parts = timeStr.split(":");
32
- if (parts.length !== 3) {
33
- return false;
34
- }
35
- const [hours, minutes, seconds] = parts;
36
- if (hours.length !== 2 || minutes.length !== 2 || seconds.length !== 2) {
37
- return false;
38
- }
39
- const hoursNum = parseInt(hours, 10);
40
- const minutesNum = parseInt(minutes, 10);
41
- const secondsNum = parseInt(seconds, 10);
42
- if (isNaN(hoursNum) || isNaN(minutesNum) || isNaN(secondsNum)) {
43
- return false;
44
- }
45
- if (hoursNum < 0 || hoursNum > 23) {
46
- return false;
47
- }
48
- if (minutesNum < 0 || minutesNum > 59) {
49
- return false;
50
- }
51
- if (secondsNum < 0 || secondsNum > 59) {
52
- return false;
53
- }
54
- return true;
55
- };
56
- const parseTimePart = (partStr) => Number.parseInt(partStr, 10);
57
- const formatTimePart = (part) => part.toString().padStart(2, "0");
58
- const parseTimeStr = (timeStr) => {
59
- const [hoursStr, minutesStr, secondsStr] = timeStr.split(":");
60
- const hours = parseTimePart(hoursStr);
61
- const minutes = parseTimePart(minutesStr);
62
- const seconds = parseTimePart(secondsStr);
63
- return {
64
- hourStr: hoursStr,
65
- hours,
66
- minuteStr: minutesStr,
67
- minutes,
68
- secondStr: secondsStr,
69
- seconds,
70
- meridiem: hours < 12 ? "AM" : "PM"
71
- };
72
- };
73
- const hoursAs12hClock = (hour) => hour % 12 || 12;
74
-
75
- const formatPresentationTime = (timeStr, includeSeconds, use12HourClock) => {
76
- const time = parseTimeStr(timeStr);
77
- const hoursStr = formatTimePart(
78
- use12HourClock ? hoursAs12hClock(time.hours) : time.hours
79
- );
80
- let result = `${hoursStr}:${time.minuteStr}`;
81
- if (includeSeconds) {
82
- result += `:${time.secondStr}`;
83
- }
84
- if (use12HourClock) {
85
- result += ` ${time.meridiem}`;
86
- }
87
- return result;
88
- };
89
- const isDigit = (char) => char >= "0" && char <= "9";
90
- const parsePresentationTime = (input, use12HourClock) => {
91
- const cleanedInput = input.toLowerCase();
92
- const numerals = [];
93
- let meridiem;
94
- for (let i = 0; i < cleanedInput.length; i++) {
95
- const char = cleanedInput[i];
96
- if (char === "a" && cleanedInput[i + 1] === "m") {
97
- i++;
98
- meridiem = "AM";
99
- }
100
- if (char === "p" && cleanedInput[i + 1] === "m") {
101
- i++;
102
- meridiem = "PM";
103
- }
104
- if (isDigit(char)) {
105
- let numeral = char;
106
- while (isDigit(cleanedInput[i + 1])) {
107
- i++;
108
- numeral += cleanedInput[i];
109
- }
110
- numerals.push(Number.parseInt(numeral, 10));
111
- }
112
- }
113
- if (numerals.length === 0 || numerals.length > 3) {
114
- throw new Error("Invalid time format");
115
- }
116
- if (meridiem && (numerals[0] < 1 || numerals[0] > 12)) {
117
- throw new Error("Invalid time format");
118
- }
119
- if (meridiem || use12HourClock) {
120
- if (numerals[0] === 12) {
121
- numerals[0] = 0;
122
- }
123
- }
124
- if (meridiem === "PM") {
125
- numerals[0] = numerals[0] + 12;
126
- }
127
- const [hours, minutes = 0, seconds = 0] = numerals;
128
- if (hours > 23 || minutes > 59 || seconds > 59) {
129
- throw new Error("Invalid value");
130
- }
131
- return [hours, minutes, seconds].map(formatTimePart).join(":");
132
- };
133
-
134
- const fallsIntoMeridiem = (meridiem, hour) => meridiem === "AM" && hour < 12 || meridiem === "PM" && hour >= 12;
135
- const getHoursOptions = (min, max, forMeridiem) => {
136
- const result = [];
137
- const minHour = min ? parseTimeStr(min).hours : 0;
138
- const maxHour = max ? parseTimeStr(max).hours : 23;
139
- for (let i = minHour; i <= maxHour; i++) {
140
- if (forMeridiem && !fallsIntoMeridiem(forMeridiem, i)) {
141
- continue;
142
- }
143
- result.push({
144
- value: formatTimePart(i),
145
- label: formatTimePart(forMeridiem ? hoursAs12hClock(i) : i)
146
- });
147
- }
148
- return result;
149
- };
150
- const getMinutesOptions = (step, value, min, max) => {
151
- const result = [];
152
- let minMinute = 0;
153
- let maxMinute = 59;
154
- if (min) {
155
- const { hourStr: minHourStr, minutes: minMinutes } = parseTimeStr(min);
156
- if (value && parseTimeStr(value).hourStr === minHourStr) {
157
- minMinute = minMinutes;
158
- }
159
- }
160
- if (max) {
161
- const { hourStr: maxHourStr, minutes: maxMinutes } = parseTimeStr(max);
162
- if (value && parseTimeStr(value).hourStr === maxHourStr) {
163
- maxMinute = maxMinutes;
164
- }
165
- }
166
- for (let i = minMinute; i <= maxMinute; i += Math.max(1, step ?? 1)) {
167
- const minutes = formatTimePart(i);
168
- result.push({
169
- value: minutes,
170
- label: minutes
171
- });
172
- }
173
- return result;
174
- };
175
- const getSecondsOptions = (step, value, min, max) => {
176
- const result = [];
177
- let minSecond = 0;
178
- let maxSecond = 59;
179
- if (min) {
180
- const minTime = parseTimeStr(min);
181
- if (value && (parseTimeStr(value).hourStr === minTime.hourStr && parseTimeStr(value).minuteStr) === minTime.minuteStr) {
182
- minSecond = minTime.seconds;
183
- }
184
- }
185
- if (max) {
186
- const maxTime = parseTimeStr(max);
187
- if (value && (parseTimeStr(value).hourStr === maxTime.hourStr && parseTimeStr(value).minuteStr) === maxTime.minuteStr) {
188
- maxSecond = maxTime.seconds;
189
- }
190
- }
191
- for (let i = minSecond; i <= maxSecond; i += Math.max(1, step)) {
192
- const seconds = formatTimePart(i);
193
- result.push({
194
- value: seconds,
195
- label: seconds
196
- });
197
- }
198
- return result;
199
- };
200
- const getMeridiesOptions = (min, max) => {
201
- const result = [];
202
- const hideAM = min ? parseTimeStr(min).meridiem === "PM" : false;
203
- if (!hideAM) {
204
- result.push({
205
- value: "AM",
206
- label: "AM"
207
- });
208
- }
209
- const hidePM = max ? parseTimeStr(max).meridiem === "AM" : false;
210
- if (!hidePM) {
211
- result.push({
212
- value: "PM",
213
- label: "PM"
214
- });
215
- }
216
- return result;
217
- };
218
-
219
- var __defProp = Object.defineProperty;
220
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
221
- var __typeError = (msg) => {
222
- throw TypeError(msg);
223
- };
224
- var __decorateClass = (decorators, target, key, kind) => {
225
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
226
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
227
- if (decorator = decorators[i])
228
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
229
- if (kind && result) __defProp(target, key, result);
230
- return result;
231
- };
232
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
233
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
234
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
235
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
236
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
237
- var _clockChangeHandler, _clockChangeObserver, _getFocusableEls, _TimePicker_instances, updateValueDueToUserInteraction_fn, _onFocusIn, _onFocusOut, _dismissOnClickOutside, openPopupIfPossible_fn, scrollToItem_fn;
238
- const ValidTimeFilter = {
239
- fromView: (value) => {
240
- if (value && isValidTimeStr(value)) {
241
- return value;
242
- }
243
- return "";
244
- },
245
- toView(value) {
246
- return value;
247
- }
248
- };
249
- let TimePicker = class extends FormAssociatedTimePicker {
250
- constructor() {
251
- super();
252
- __privateAdd(this, _TimePicker_instances);
253
- this.readOnly = false;
254
- this.minutesStep = null;
255
- this.secondsStep = null;
256
- // Reformat the presentation value when the clock changes
257
- __privateAdd(this, _clockChangeHandler, {
258
- handleChange: () => {
259
- if (this.value) {
260
- this._presentationValue = formatPresentationTime(
261
- this.value,
262
- this._displaySeconds,
263
- this._use12hClock
264
- );
265
- }
266
- }
267
- });
268
- __privateAdd(this, _clockChangeObserver);
269
- __privateAdd(this, _getFocusableEls, () => this.shadowRoot.querySelectorAll(`
270
- .dialog [tabindex="0"],
271
- .dialog .vwc-button:not(:disabled)
272
- `));
273
- __privateAdd(this, _onFocusIn, () => {
274
- this.$emit("focus", void 0, { bubbles: false });
275
- });
276
- __privateAdd(this, _onFocusOut, () => {
277
- this.$emit("blur", void 0, { bubbles: false });
278
- });
279
- this._popupOpen = false;
280
- __privateAdd(this, _dismissOnClickOutside, (event) => {
281
- if (!this._popupOpen) {
282
- return;
283
- }
284
- const path = event.composedPath();
285
- const elementsToIgnoreClicksOn = [this._dialogEl, this._clockButtonEl];
286
- if (!elementsToIgnoreClicksOn.some((element) => path.includes(element))) {
287
- this._closePopup(false);
288
- }
289
- });
290
- this._presentationValue = "";
291
- this.value = "";
292
- this.min = "";
293
- this.max = "";
294
- this.proxy.type = "time";
295
- this.proxy.step = "1";
296
- }
297
- /**
298
- * @internal
299
- */
300
- readOnlyChanged() {
301
- if (this.proxy instanceof HTMLInputElement) {
302
- this.proxy.readOnly = this.readOnly;
303
- this.validate();
304
- }
305
- }
306
- /**
307
- * @internal
308
- */
309
- minChanged(_, newMin) {
310
- if (this.proxy instanceof HTMLInputElement) {
311
- this.proxy.min = newMin;
312
- this.validate();
313
- }
314
- }
315
- /**
316
- * @internal
317
- */
318
- maxChanged(_, newMax) {
319
- if (this.proxy instanceof HTMLInputElement) {
320
- this.proxy.max = newMax;
321
- this.validate();
322
- }
323
- }
324
- // --- Core ---
325
- /**
326
- * @internal
327
- */
328
- get _displaySeconds() {
329
- return this.secondsStep !== null;
330
- }
331
- get _use12hClock() {
332
- return this.clock ? this.clock === "12h" : this.locale.timePicker.defaultTo12HourClock;
333
- }
334
- /**
335
- * @internal
336
- */
337
- valueChanged(previous, next) {
338
- super.valueChanged(previous, next);
339
- if (this.value) {
340
- if (!isValidTimeStr(this.value)) {
341
- this.value = "";
342
- return;
343
- }
344
- this._presentationValue = formatPresentationTime(
345
- this.value,
346
- this._displaySeconds,
347
- this._use12hClock
348
- );
349
- } else {
350
- this._presentationValue = "";
351
- }
352
- }
353
- connectedCallback() {
354
- super.connectedCallback();
355
- document.addEventListener("click", __privateGet(this, _dismissOnClickOutside));
356
- this.addEventListener("focusin", __privateGet(this, _onFocusIn));
357
- this.addEventListener("focusout", __privateGet(this, _onFocusOut));
358
- __privateSet(this, _clockChangeObserver, Observable.binding(
359
- () => this._use12hClock,
360
- __privateGet(this, _clockChangeHandler)
361
- ));
362
- __privateGet(this, _clockChangeObserver).observe(this, defaultExecutionContext);
363
- }
364
- disconnectedCallback() {
365
- super.disconnectedCallback();
366
- document.removeEventListener("click", __privateGet(this, _dismissOnClickOutside));
367
- this.removeEventListener("focusin", __privateGet(this, _onFocusIn));
368
- this.removeEventListener("focusout", __privateGet(this, _onFocusOut));
369
- __privateGet(this, _clockChangeObserver).disconnect();
370
- }
371
- /**
372
- * @internal
373
- */
374
- _closePopup(restoreFocusToTextField = true) {
375
- this._popupOpen = false;
376
- if (restoreFocusToTextField) {
377
- this._textFieldEl.focus();
378
- }
379
- }
380
- /**
381
- * On keydown anywhere in the time picker.
382
- * @internal
383
- */
384
- _onBaseKeyDown(event) {
385
- if (handleEscapeKeyAndStopPropogation(event)) {
386
- this._closePopup();
387
- return false;
388
- }
389
- if (this._trappedFocus(event, __privateGet(this, _getFocusableEls))) {
390
- return false;
391
- }
392
- return true;
393
- }
394
- /**
395
- * @internal
396
- */
397
- _presentationValueChanged() {
398
- this.dirtyValue = true;
399
- this.validate();
400
- }
401
- /**
402
- * @internal
403
- */
404
- get _textFieldPlaceholder() {
405
- let format = "hh:mm";
406
- if (this._displaySeconds) {
407
- format += ":ss";
408
- }
409
- if (this._use12hClock) {
410
- format += " aa";
411
- }
412
- return format;
413
- }
414
- /**
415
- * @internal
416
- */
417
- _onTextFieldInput(event) {
418
- const textField = event.currentTarget;
419
- this._presentationValue = textField.value;
420
- }
421
- /**
422
- * @internal
423
- */
424
- _onTextFieldChange() {
425
- if (this._presentationValue === "") {
426
- __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, "");
427
- return;
428
- }
429
- try {
430
- __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, parsePresentationTime(this._presentationValue, this._use12hClock));
431
- } catch (_) {
432
- return;
433
- }
434
- }
435
- // --- Clock button ---
436
- /**
437
- * @internal
438
- */
439
- get _clockButtonLabel() {
440
- if (this.value) {
441
- return this.locale.timePicker.changeTimeLabel(
442
- formatPresentationTime(
443
- this.value,
444
- this._displaySeconds,
445
- this._use12hClock
446
- )
447
- );
448
- }
449
- return this.locale.timePicker.chooseTimeLabel;
450
- }
451
- /**
452
- * @internal
453
- */
454
- _onClockButtonClick() {
455
- if (this._popupOpen) {
456
- this._closePopup();
457
- } else {
458
- __privateMethod(this, _TimePicker_instances, openPopupIfPossible_fn).call(this);
459
- DOM.processUpdates();
460
- if (this._selectedHour) {
461
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "hours", this._selectedHour, "start");
462
- }
463
- if (this._selectedMinute) {
464
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "minutes", this._selectedMinute, "start");
465
- }
466
- if (this._displaySeconds && this._selectedSecond) {
467
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "seconds", this._selectedSecond, "start");
468
- }
469
- if (this._use12hClock && this._selectedMeridiem) {
470
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, "meridies", this._selectedMeridiem, "start");
471
- }
472
- __privateGet(this, _getFocusableEls).call(this)[0].focus();
473
- }
474
- }
475
- // --- Pickers ---
476
- /**
477
- * @internal
478
- */
479
- get _hours() {
480
- return getHoursOptions(
481
- this.min,
482
- this.max,
483
- this._use12hClock ? this._selectedMeridiem ?? this._meridies[0].value : void 0
484
- );
485
- }
486
- /**
487
- * @internal
488
- */
489
- get _selectedHour() {
490
- return this.value ? parseTimeStr(this.value).hourStr : void 0;
491
- }
492
- /**
493
- * @internal
494
- */
495
- set _selectedHour(value) {
496
- if (this.value) {
497
- const { minuteStr, secondStr } = parseTimeStr(this.value);
498
- this.value = `${value}:${minuteStr}:${secondStr}`;
499
- } else {
500
- this.value = `${value}:00:00`;
501
- }
502
- }
503
- /**
504
- * @internal
505
- */
506
- get _minutes() {
507
- return getMinutesOptions(this.minutesStep, this.value, this.min, this.max);
508
- }
509
- /**
510
- * @internal
511
- */
512
- get _selectedMinute() {
513
- return this.value ? parseTimeStr(this.value).minuteStr : void 0;
514
- }
515
- /**
516
- * @internal
517
- */
518
- set _selectedMinute(value) {
519
- if (this.value) {
520
- const { hourStr, secondStr } = parseTimeStr(this.value);
521
- this.value = `${hourStr}:${value}:${secondStr}`;
522
- } else {
523
- this.value = `00:${value}:00`;
524
- }
525
- }
526
- /**
527
- * @internal
528
- */
529
- get _seconds() {
530
- return getSecondsOptions(this.secondsStep, this.value, this.min, this.max);
531
- }
532
- /**
533
- * @internal
534
- */
535
- get _selectedSecond() {
536
- return this.value ? parseTimeStr(this.value).secondStr : void 0;
537
- }
538
- /**
539
- * @internal
540
- */
541
- set _selectedSecond(value) {
542
- if (this.value) {
543
- const { hourStr, minuteStr } = parseTimeStr(this.value);
544
- this.value = `${hourStr}:${minuteStr}:${value}`;
545
- } else {
546
- this.value = `00:00:${value}`;
547
- }
548
- }
549
- /**
550
- * @internal
551
- */
552
- get _meridies() {
553
- return getMeridiesOptions(this.min, this.max);
554
- }
555
- /**
556
- * @internal
557
- */
558
- get _selectedMeridiem() {
559
- return this.value ? parseTimeStr(this.value).meridiem : void 0;
560
- }
561
- /**
562
- * @internal
563
- */
564
- set _selectedMeridiem(value) {
565
- if (this.value) {
566
- const { hours, minuteStr, secondStr } = parseTimeStr(this.value);
567
- let adjustedHours = hours;
568
- if (value === "AM" && hours >= 12) {
569
- adjustedHours -= 12;
570
- } else if (value === "PM" && hours < 12) {
571
- adjustedHours += 12;
572
- }
573
- this.value = `${formatTimePart(adjustedHours)}:${minuteStr}:${secondStr}`;
574
- } else {
575
- if (value === "AM") {
576
- this.value = "00:00:00";
577
- } else {
578
- this.value = "12:00:00";
579
- }
580
- }
581
- }
582
- /**
583
- * @internal
584
- */
585
- _onPickerKeyDown(picker, options, selectedValue, setSelectedValue, event) {
586
- const offset = {
587
- ArrowUp: -1,
588
- ArrowDown: 1
589
- }[event.key];
590
- if (offset) {
591
- event.preventDefault();
592
- const index = options.findIndex((h) => h.value === selectedValue);
593
- const newRawIndex = index === -1 ? 0 : index + offset;
594
- const newIndex = (newRawIndex + options.length) % options.length;
595
- const newValue = options[newIndex].value;
596
- setSelectedValue(newValue);
597
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, picker, newValue, "nearest");
598
- __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, this.value);
599
- }
600
- return true;
601
- }
602
- /**
603
- * @internal
604
- */
605
- _onPickerItemClick(picker, setSelectedValue, value) {
606
- setSelectedValue(value);
607
- __privateMethod(this, _TimePicker_instances, scrollToItem_fn).call(this, picker, value, "start");
608
- __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, this.value);
609
- const nextPickerEl = this.shadowRoot.querySelector(
610
- `#${picker} + .picker`
611
- );
612
- if (nextPickerEl) {
613
- nextPickerEl.focus();
614
- } else {
615
- this._closePopup();
616
- }
617
- }
618
- // --- Dialog footer ---
619
- /**
620
- * @internal
621
- */
622
- _onOkClick() {
623
- this._closePopup();
624
- }
625
- /**
626
- * @internal
627
- */
628
- _onClearClick() {
629
- __privateMethod(this, _TimePicker_instances, updateValueDueToUserInteraction_fn).call(this, "");
630
- this._closePopup();
631
- }
632
- // --- Validation ---
633
- /**
634
- * @internal
635
- */
636
- validate() {
637
- if (this.proxy) {
638
- this.proxy.setCustomValidity(this._getCustomValidationError() ?? "");
639
- }
640
- super.validate(this._textFieldEl?.querySelector("input") ?? void 0);
641
- }
642
- /**
643
- * @internal
644
- */
645
- _getCustomValidationError() {
646
- if (this._isPresentationValueInvalid()) {
647
- return this.locale.timePicker.invalidTimeError;
648
- }
649
- return null;
650
- }
651
- /**
652
- * @internal
653
- */
654
- _isPresentationValueInvalid() {
655
- if (this._presentationValue === "") {
656
- return false;
657
- }
658
- try {
659
- parsePresentationTime(this._presentationValue, this._use12hClock);
660
- return false;
661
- } catch (_) {
662
- return true;
663
- }
664
- }
665
- };
666
- _clockChangeHandler = new WeakMap();
667
- _clockChangeObserver = new WeakMap();
668
- _getFocusableEls = new WeakMap();
669
- _TimePicker_instances = new WeakSet();
670
- updateValueDueToUserInteraction_fn = function(newValue) {
671
- this.value = newValue;
672
- this.$emit("change");
673
- this.$emit("input");
674
- };
675
- _onFocusIn = new WeakMap();
676
- _onFocusOut = new WeakMap();
677
- _dismissOnClickOutside = new WeakMap();
678
- openPopupIfPossible_fn = function() {
679
- if (!this.readOnly) {
680
- this._popupOpen = true;
681
- }
682
- };
683
- scrollToItem_fn = function(picker, selectedValue, position) {
684
- const element = this.shadowRoot.querySelector(
685
- `#${picker}-${selectedValue}`
686
- );
687
- if (!element) {
688
- return;
689
- }
690
- scrollIntoView(element, element.parentElement, position);
691
- };
692
- __decorateClass([
693
- attr({ attribute: "readonly", mode: "boolean" })
694
- ], TimePicker.prototype, "readOnly", 2);
695
- __decorateClass([
696
- attr({ attribute: "minutes-step", converter: nullableNumberConverter })
697
- ], TimePicker.prototype, "minutesStep", 2);
698
- __decorateClass([
699
- attr({ attribute: "seconds-step", converter: nullableNumberConverter })
700
- ], TimePicker.prototype, "secondsStep", 2);
701
- __decorateClass([
702
- attr
703
- ], TimePicker.prototype, "clock", 2);
704
- __decorateClass([
705
- attr({ converter: ValidTimeFilter })
706
- ], TimePicker.prototype, "min", 2);
707
- __decorateClass([
708
- attr({ converter: ValidTimeFilter })
709
- ], TimePicker.prototype, "max", 2);
710
- __decorateClass([
711
- volatile
712
- ], TimePicker.prototype, "_use12hClock", 1);
713
- __decorateClass([
714
- observable
715
- ], TimePicker.prototype, "_popupOpen", 2);
716
- __decorateClass([
717
- observable
718
- ], TimePicker.prototype, "_presentationValue", 2);
719
- TimePicker = __decorateClass([
720
- errorText,
721
- formElements
722
- ], TimePicker);
723
- applyMixinsWithObservables(
724
- TimePicker,
725
- Localized,
726
- FormElementHelperText,
727
- TrappedFocus
11
+ const getStateClasses = ({
12
+ errorValidationMessage,
13
+ disabled,
14
+ value,
15
+ readOnly,
16
+ placeholder,
17
+ appearance,
18
+ shape,
19
+ label,
20
+ successText,
21
+ actionItemsSlottedContent,
22
+ leadingActionItemsSlottedContent,
23
+ icon,
24
+ scale
25
+ }) => classNames(
26
+ ["error", Boolean(errorValidationMessage)],
27
+ ["disabled", disabled],
28
+ ["has-value", Boolean(value)],
29
+ ["readonly", readOnly],
30
+ ["placeholder", Boolean(placeholder)],
31
+ [`appearance-${appearance}`, Boolean(appearance)],
32
+ [`shape-${shape}`, Boolean(shape)],
33
+ ["no-label", !label],
34
+ ["has-icon", !!icon],
35
+ ["success", Boolean(successText)],
36
+ ["action-items", !!actionItemsSlottedContent?.length],
37
+ ["leading-action-items", !!leadingActionItemsSlottedContent?.length],
38
+ ["no-leading", !(leadingActionItemsSlottedContent?.length || icon)],
39
+ [`size-${scale}`, Boolean(scale)]
728
40
  );
729
-
730
- const renderPicker = (id, getLabel, getSelected, setSelected, getOptions) => {
41
+ function renderCharCount() {
731
42
  return html`
732
- <ul
733
- id="${id}"
734
- class="picker"
735
- role="listbox"
736
- tabindex="0"
737
- aria-label="${getLabel}"
738
- aria-activedescendant="${(x) => getSelected(x) ? `${id}-${getSelected(x)}` : void 0}"
739
- @keydown="${(x, c) => x._onPickerKeyDown(
740
- id,
741
- getOptions(x),
742
- getSelected(x),
743
- setSelected(x),
744
- c.event
745
- )}"
43
+ <span class="char-count"
44
+ >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
746
45
  >
747
- ${repeat(
748
- getOptions,
749
- html`
750
- <li
751
- id="${(x) => `${id}-${x.value}`}"
752
- class="${(x, c) => classNames("item", [
753
- "selected",
754
- getSelected(c.parent) === x.value
755
- ])}"
756
- role="option"
757
- aria-selected="${(x, c) => getSelected(c.parent) === x.value}"
758
- @click="${(x, c) => c.parent._onPickerItemClick(id, setSelected(c.parent), x.value)}"
759
- >
760
- ${(x) => x.label}
761
- </li>
762
- `
763
- )}
764
- </ul>
765
46
  `;
766
- };
767
- const TimePickerTemplate = (context) => {
768
- const popupTag = context.tagFor(Popup);
769
- const textFieldTag = context.tagFor(TextField);
770
- const buttonTag = context.tagFor(Button);
771
- return html`<div class="base" @keydown="${(x, { event }) => x._onBaseKeyDown(event)}">
772
- <${textFieldTag} id="text-field"
773
- ${ref("_textFieldEl")}
774
- class="control"
775
- label="${(x) => x.label}"
776
- helper-text="${(x) => x.helperText}"
777
- error-text="${(x) => x.errorValidationMessage}"
778
- placeholder="${(x) => x._textFieldPlaceholder}"
779
- current-value="${(x) => x._presentationValue}"
780
- ?disabled="${(x) => x.disabled}"
781
- ?readonly="${(x) => x.readOnly}"
782
- @input="${(x, c) => x._onTextFieldInput(c.event)}"
783
- @change="${(x) => x._onTextFieldChange()}"
784
- >
785
- <slot
786
- slot="${(x) => x._helperTextSlottedContent?.length ? "helper-text" : void 0}"
787
- name="helper-text"
788
- ${slotted("_helperTextSlottedContent")}
789
- ></slot>
790
- <${buttonTag}
791
- id="clock-button"
792
- ${ref("_clockButtonEl")}
793
- slot="action-items"
794
- size="condensed"
795
- icon="clock-line"
796
- appearance="ghost"
797
- ?disabled="${(x) => x.disabled || x.readOnly}"
798
- aria-label="${(x) => x._clockButtonLabel}"
799
- @click="${(x) => x._onClockButtonClick()}"
800
- ></${buttonTag}>
801
- </${textFieldTag}>
802
- <${popupTag}
803
- ?open="${(x) => x._popupOpen}"
804
- :anchor="${(x) => x._textFieldEl}"
805
- placement="bottom-start"
806
- class="popup">
807
- <div class="dialog" role="dialog" ${ref(
808
- "_dialogEl"
809
- )} aria-modal="true" aria-label="${(x) => x.locale.timePicker.chooseTimeLabel}">
810
- <div class="time-pickers">
811
- ${renderPicker(
812
- "hours",
813
- (x) => x.locale.timePicker.hoursLabel,
814
- (x) => x._selectedHour,
815
- (x) => (v) => x._selectedHour = v,
816
- (x) => x._hours
817
- )}
818
- ${renderPicker(
819
- "minutes",
820
- (x) => x.locale.timePicker.minutesLabel,
821
- (x) => x._selectedMinute,
822
- (x) => (v) => x._selectedMinute = v,
823
- (x) => x._minutes
824
- )}
825
- ${when(
826
- (x) => x._displaySeconds,
827
- renderPicker(
828
- "seconds",
829
- (x) => x.locale.timePicker.secondsLabel,
830
- (x) => x._selectedSecond,
831
- (x) => (v) => x._selectedSecond = v,
832
- (x) => x._seconds
833
- )
834
- )}
835
- ${when(
836
- (x) => x._use12hClock,
837
- renderPicker(
838
- "meridies",
839
- (x) => x.locale.timePicker.meridiesLabel,
840
- (x) => x._selectedMeridiem,
841
- (x) => (v) => x._selectedMeridiem = v,
842
- (x) => x._meridies
843
- )
844
- )}
47
+ }
48
+ const TextfieldTemplate = (context) => {
49
+ const affixIconTemplate = affixIconTemplateFactory(context);
50
+ return html` <div class="base ${getStateClasses}">
51
+ ${when((x) => x.charCount && x.maxlength, renderCharCount())}
52
+ <slot class="label" name="_label"></slot>
53
+ <div class="fieldset">
54
+ <div class="leading-items-wrapper">
55
+ <slot
56
+ name="leading-action-items"
57
+ ${slotted("leadingActionItemsSlottedContent")}
58
+ ></slot>
59
+ ${(x) => affixIconTemplate(x.icon)}
60
+ </div>
61
+
62
+ <div class="wrapper">
63
+ <slot class="control" name="_control"></slot>
845
64
  </div>
846
- <div class="footer">
847
- <${buttonTag}
848
- class="vwc-button"
849
- size="condensed"
850
- label="${(x) => x.locale.timePicker.clearLabel}"
851
- @click="${(x) => x._onClearClick()}"
852
- ></${buttonTag}>
853
- <${buttonTag}
854
- class="vwc-button"
855
- size="condensed"
856
- appearance="filled"
857
- label="${(x) => x.locale.timePicker.okLabel}"
858
- @click="${(x) => x._onOkClick()}"
859
- ></${buttonTag}>
65
+ <div class="action-items-wrapper">
66
+ <slot
67
+ name="action-items"
68
+ ${slotted("actionItemsSlottedContent")}
69
+ ></slot>
860
70
  </div>
861
71
  </div>
862
- </${popupTag}>
863
- </div>`;
72
+ ${getFeedbackTemplate(context)}
73
+ </div>
74
+ <slot name="_mirrored-helper-text"></slot>`;
864
75
  };
865
76
 
866
- const timePickerDefinition = defineVividComponent(
867
- "time-picker",
868
- TimePicker,
869
- TimePickerTemplate,
870
- [textFieldDefinition, popupDefinition, buttonDefinition],
77
+ const textFieldDefinition = defineVividComponent(
78
+ "text-field",
79
+ TextField,
80
+ TextfieldTemplate,
81
+ [iconDefinition],
871
82
  {
872
83
  styles,
873
84
  shadowOptions: {
@@ -875,6 +86,6 @@ const timePickerDefinition = defineVividComponent(
875
86
  }
876
87
  }
877
88
  );
878
- const registerTimePicker = createRegisterFunction(timePickerDefinition);
89
+ const registerTextField = createRegisterFunction(textFieldDefinition);
879
90
 
880
- export { registerTimePicker as r, timePickerDefinition as t };
91
+ export { registerTextField as r, textFieldDefinition as t };