@nldd/design-system 0.8.77 → 0.8.78

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 (141) hide show
  1. package/custom-elements.json +1094 -186
  2. package/dist/components/actions/menu/menu.js +1 -1
  3. package/dist/components/actions/menu/menu.js.map +1 -1
  4. package/dist/components/actions/menu/menu.styles.d.ts.map +1 -1
  5. package/dist/components/actions/menu/menu.styles.js +1 -0
  6. package/dist/components/actions/menu/menu.styles.js.map +1 -1
  7. package/dist/components/actions/menu/menu.template.js +1 -1
  8. package/dist/components/actions/menu/menu.template.js.map +1 -1
  9. package/dist/components/components.js +16 -14
  10. package/dist/components/content/avatar/avatar.d.ts +9 -9
  11. package/dist/components/content/avatar/avatar.d.ts.map +1 -1
  12. package/dist/components/content/avatar/avatar.js +15 -15
  13. package/dist/components/content/avatar/avatar.js.map +1 -1
  14. package/dist/components/content/code-viewer/code-viewer.styles.js +2 -2
  15. package/dist/components/content/icon/icon-registry.js +1 -1
  16. package/dist/components/content/icon/icon-registry.js.map +1 -1
  17. package/dist/components/content/image/image.styles.d.ts.map +1 -1
  18. package/dist/components/content/image/image.styles.js +4 -1
  19. package/dist/components/content/image/image.styles.js.map +1 -1
  20. package/dist/components/content/tag/tag.js +6 -6
  21. package/dist/components/content/tag/tag.js.map +1 -1
  22. package/dist/components/forms/form/form.js +1 -1
  23. package/dist/components/forms/form-actions/form-actions.d.ts +3 -3
  24. package/dist/components/forms/form-actions/form-actions.js +3 -3
  25. package/dist/components/forms/form-section/form-section.d.ts.map +1 -1
  26. package/dist/components/forms/form-section/form-section.js +11 -10
  27. package/dist/components/forms/form-section/form-section.js.map +1 -1
  28. package/dist/components/{index-DVj2pCTH.js → index-BNg_kPou.js} +1 -1
  29. package/dist/components/{index-FhXfLApr.js → index-BmVf8Da6.js} +1 -1
  30. package/dist/components/{index-9C4reCh_.js → index-CU-wlUnI.js} +3141 -1752
  31. package/dist/components/{index-Cor-Ak4F.js → index-CcCKQ3Dj.js} +1 -1
  32. package/dist/components/{index-g0CP5dPz.js → index-D03jbAoU.js} +1 -1
  33. package/dist/components/{index-B5S5gihT.js → index-D68oJ-Le.js} +1 -1
  34. package/dist/components/{index-CB4c2A6P.js → index-v6dIt9IT.js} +1 -1
  35. package/dist/components/index.d.ts +2 -0
  36. package/dist/components/index.d.ts.map +1 -1
  37. package/dist/components/index.js +2 -0
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/inputs/date-field/date-field.d.ts +3 -3
  40. package/dist/components/inputs/date-field/date-field.d.ts.map +1 -1
  41. package/dist/components/inputs/date-field/date-field.i18n.js +7 -7
  42. package/dist/components/inputs/date-field/date-field.i18n.js.map +1 -1
  43. package/dist/components/inputs/date-field/date-field.js +3 -3
  44. package/dist/components/inputs/date-field/date-field.js.map +1 -1
  45. package/dist/components/inputs/date-field/date-field.styles.d.ts.map +1 -1
  46. package/dist/components/inputs/date-field/date-field.styles.js +31 -29
  47. package/dist/components/inputs/date-field/date-field.styles.js.map +1 -1
  48. package/dist/components/inputs/date-picker/date-picker.d.ts +5 -5
  49. package/dist/components/inputs/date-picker/date-picker.d.ts.map +1 -1
  50. package/dist/components/inputs/date-picker/date-picker.i18n.js +18 -18
  51. package/dist/components/inputs/date-picker/date-picker.i18n.js.map +1 -1
  52. package/dist/components/inputs/date-picker/date-picker.js +6 -6
  53. package/dist/components/inputs/date-picker/date-picker.js.map +1 -1
  54. package/dist/components/inputs/date-picker/date-picker.styles.js +1 -1
  55. package/dist/components/inputs/number-field/number-field.d.ts +1 -1
  56. package/dist/components/inputs/number-field/number-field.js +1 -1
  57. package/dist/components/inputs/search-field/search-field.d.ts.map +1 -1
  58. package/dist/components/inputs/search-field/search-field.js +9 -0
  59. package/dist/components/inputs/search-field/search-field.js.map +1 -1
  60. package/dist/components/inputs/text-editor/text-editor.markdown.js +3 -3
  61. package/dist/components/inputs/text-editor/text-editor.markdown.js.map +1 -1
  62. package/dist/components/inputs/time-field/time-field.d.ts +242 -0
  63. package/dist/components/inputs/time-field/time-field.d.ts.map +1 -0
  64. package/dist/components/inputs/time-field/time-field.i18n.d.ts +8 -0
  65. package/dist/components/inputs/time-field/time-field.i18n.d.ts.map +1 -0
  66. package/dist/components/inputs/time-field/time-field.i18n.js +14 -0
  67. package/dist/components/inputs/time-field/time-field.i18n.js.map +1 -0
  68. package/dist/components/inputs/time-field/time-field.js +641 -0
  69. package/dist/components/inputs/time-field/time-field.js.map +1 -0
  70. package/dist/components/inputs/time-field/time-field.styles.d.ts +2 -0
  71. package/dist/components/inputs/time-field/time-field.styles.d.ts.map +1 -0
  72. package/dist/components/inputs/time-field/time-field.styles.js +192 -0
  73. package/dist/components/inputs/time-field/time-field.styles.js.map +1 -0
  74. package/dist/components/inputs/time-field/time-field.template.d.ts +20 -0
  75. package/dist/components/inputs/time-field/time-field.template.d.ts.map +1 -0
  76. package/dist/components/inputs/time-field/time-field.template.js +126 -0
  77. package/dist/components/inputs/time-field/time-field.template.js.map +1 -0
  78. package/dist/components/inputs/time-picker/time-picker.d.ts +135 -0
  79. package/dist/components/inputs/time-picker/time-picker.d.ts.map +1 -0
  80. package/dist/components/inputs/time-picker/time-picker.i18n.d.ts +7 -0
  81. package/dist/components/inputs/time-picker/time-picker.i18n.d.ts.map +1 -0
  82. package/dist/components/inputs/time-picker/time-picker.i18n.js +10 -0
  83. package/dist/components/inputs/time-picker/time-picker.i18n.js.map +1 -0
  84. package/dist/components/inputs/time-picker/time-picker.js +386 -0
  85. package/dist/components/inputs/time-picker/time-picker.js.map +1 -0
  86. package/dist/components/inputs/time-picker/time-picker.styles.d.ts +2 -0
  87. package/dist/components/inputs/time-picker/time-picker.styles.d.ts.map +1 -0
  88. package/dist/components/inputs/time-picker/time-picker.styles.js +183 -0
  89. package/dist/components/inputs/time-picker/time-picker.styles.js.map +1 -0
  90. package/dist/components/inputs/time-picker/time-picker.template.d.ts +4 -0
  91. package/dist/components/inputs/time-picker/time-picker.template.d.ts.map +1 -0
  92. package/dist/components/inputs/time-picker/time-picker.template.js +87 -0
  93. package/dist/components/inputs/time-picker/time-picker.template.js.map +1 -0
  94. package/dist/components/layout/box/box.styles.js +1 -1
  95. package/dist/components/layout/page/page.styles.d.ts.map +1 -1
  96. package/dist/components/layout/page/page.styles.js +6 -0
  97. package/dist/components/layout/page/page.styles.js.map +1 -1
  98. package/dist/components/layout/popover/popover.d.ts +2 -2
  99. package/dist/components/layout/popover/popover.d.ts.map +1 -1
  100. package/dist/components/layout/popover/popover.js +67 -71
  101. package/dist/components/layout/popover/popover.js.map +1 -1
  102. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.d.ts.map +1 -1
  103. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js +14 -0
  104. package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js.map +1 -1
  105. package/dist/components/layout/window/window.js +6 -6
  106. package/dist/components/layout/window/window.js.map +1 -1
  107. package/dist/components/lists-and-tables/list/list.d.ts +1 -1
  108. package/dist/components/lists-and-tables/list/list.js +1 -1
  109. package/dist/components/lists-and-tables/list/list.styles.js +1 -1
  110. package/dist/components/lists-and-tables/list-item/list-item.d.ts +1 -1
  111. package/dist/components/lists-and-tables/list-item/list-item.js +1 -1
  112. package/dist/components/navigation/top-navigation-bar/top-navigation-bar.styles.js +3 -3
  113. package/dist/components/status-and-feedback/activity-indicator/activity-indicator.styles.js +1 -1
  114. package/dist/components/status-and-feedback/banner/banner.d.ts +3 -0
  115. package/dist/components/status-and-feedback/banner/banner.d.ts.map +1 -1
  116. package/dist/components/status-and-feedback/banner/banner.i18n.js +1 -1
  117. package/dist/components/status-and-feedback/banner/banner.i18n.js.map +1 -1
  118. package/dist/components/status-and-feedback/banner/banner.js +5 -0
  119. package/dist/components/status-and-feedback/banner/banner.js.map +1 -1
  120. package/dist/components/status-and-feedback/banner/banner.styles.d.ts.map +1 -1
  121. package/dist/components/status-and-feedback/banner/banner.styles.js +27 -10
  122. package/dist/components/status-and-feedback/banner/banner.styles.js.map +1 -1
  123. package/dist/components/status-and-feedback/banner/banner.template.js +1 -1
  124. package/dist/components/status-and-feedback/banner/banner.template.js.map +1 -1
  125. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js +1 -1
  126. package/dist/components/status-and-feedback/just-in-time-education/just-in-time-education.i18n.js.map +1 -1
  127. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.d.ts.map +1 -1
  128. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js +8 -2
  129. package/dist/components/status-and-feedback/progress-bar/progress-bar.styles.js.map +1 -1
  130. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.d.ts.map +1 -1
  131. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js +4 -1
  132. package/dist/components/status-and-feedback/progress-circle/progress-circle.styles.js.map +1 -1
  133. package/dist/css/variables.css +4 -1
  134. package/dist/nldd.min.js +22269 -0
  135. package/dist/palettes.html +245 -0
  136. package/dist/sample-images/butterfly-1200.jpg +0 -0
  137. package/dist/sample-images/butterfly-1600.jpg +0 -0
  138. package/dist/sample-images/butterfly-480.jpg +0 -0
  139. package/dist/sample-images/butterfly-960.jpg +0 -0
  140. package/dist/types/vue.d.ts +90 -3
  141. package/package.json +16 -4
@@ -0,0 +1,641 @@
1
+ /**
2
+ * NLDD Design System Time Field Component (Lit + TypeScript)
3
+ *
4
+ * Een tekstveld voor een tijd. De waarde is altijd 24-uurs `HH:mm`; dat is in
5
+ * het Nederlands ook de weergave, dus anders dan bij nldd-date-field valt er
6
+ * niets om te rekenen. Er wordt niet gemaskeerd tijdens het typen: invoer wordt
7
+ * royaal geaccepteerd en pas bij het verlaten van het veld genormaliseerd.
8
+ * Foutmeldingen horen bij nldd-form-field, niet hier. Dit veld reflecteert
9
+ * alleen `invalid` / `valid`, net als nldd-text-field.
10
+ *
11
+ * Wat je in de picker doet is een voorbeeld tot je hem verlaat: het veld toont
12
+ * de tijd meteen, maar legt hem pas vast bij het sluiten. "Klaar" en Enter
13
+ * houden de keuze, een klik ernaast ook zodra je iets gekozen hebt, en Annuleer
14
+ * en Escape zetten de oude tijd terug. Op een leeg veld openen de wielen op `min`, of
15
+ * anders op de huidige tijd afgerond op `step`; dat vult het veld nog niet in.
16
+ *
17
+ * @element nldd-time-field
18
+ *
19
+ * @attr {string} value - De tijd als `HH:mm` (24-uurs). Leeg wanneer er geen geldige tijd staat.
20
+ * @attr {string} min - Vroegst toegestane tijd als `HH:mm`. Is tevens de basis waarvandaan `step` telt.
21
+ * @attr {string} max - Laatst toegestane tijd als `HH:mm`.
22
+ * @attr {number} step - Minutenstap (standaard 1). Bepaalt welke tijden geldig zijn, waarop wordt afgerond en hoe ver de pijltjestoetsen verspringen.
23
+ * @attr {boolean} no-picker - Verbergt de picker-knop. Standaard staat die knop er wel.
24
+ * @attr {string} placeholder - Placeholdertekst. Zet hier geen formaat in; gebruik daarvoor de supporting-label van nldd-form-field.
25
+ * @attr {string} input-id - Zet het id op de interne input. Wordt automatisch gezet door nldd-form-field.
26
+ * @attr {string} size - 'md' (standaard) | 'sm'. Wordt automatisch gezet door nldd-form-field.
27
+ * @attr {boolean} invalid - Markeert het veld als ongeldig.
28
+ * @attr {boolean} valid - Markeert het veld als geldig.
29
+ * @attr {boolean} disabled - Uitgeschakelde staat.
30
+ * @attr {boolean} readonly - Alleen-lezen staat.
31
+ * @attr {boolean} required - Verplichte staat.
32
+ * @attr {string} name - Naam voor formulierverzending.
33
+ * @attr {string} autocomplete - Autocomplete-hint.
34
+ * @attr {string} accessible-label - Toegankelijk label voor de interne input. Wordt automatisch gezet door nldd-form-field.
35
+ * @attr {string} error-message-ids - Ids voor aria-describedby. Wordt automatisch gezet door nldd-form-field.
36
+ * @attr {string} width - Breedte. Standaard precies breed genoeg voor een tijd plus het validatie-icoon; 'full' vult de container, of geef een eigen CSS-lengte.
37
+ * @attr {object} translations - Vertalingen; niet opgegeven sleutels vallen terug op het Nederlands.
38
+ *
39
+ * @slot picker - Een eigen nldd-time-picker, in plaats van de standaardpicker. Het veld blijft `value`, `min`, `max` en `step` zetten; gebruik de slot voor wat alleen een picker weet, zoals eigen vertalingen.
40
+ *
41
+ * @fires input - Bij elke wijziging. detail: { value } met `HH:mm`, of '' zolang er geen geldige tijd staat.
42
+ * @fires change - Wanneer de waarde is vastgelegd: bij het verlaten van het veld, en bij het sluiten van de picker op een manier die de keuze houdt. detail: { value } met `HH:mm`, of ''.
43
+ */
44
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
45
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
47
+ 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;
48
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
49
+ };
50
+ var NLDDTimeField_1;
51
+ import { LitElement } from 'lit';
52
+ import { customElement, property, state } from 'lit/decorators.js';
53
+ import { FormAssociated } from '../../../utilities/form-associated-mixin.js';
54
+ import { reflectNonDefault } from '../../../utilities/reflect-non-default.js';
55
+ import { timeFieldStyles } from './time-field.styles.js';
56
+ import { timeFieldTemplate } from './time-field.template.js';
57
+ import { nlddTimeFieldTranslations } from './time-field.i18n.js';
58
+ /** Minutes since midnight of the last time on a day. */
59
+ const LAST_MINUTE_OF_DAY = 23 * 60 + 59;
60
+ function toMinutes(time) {
61
+ const [hours, minutes] = time.split(':');
62
+ return Number(hours) * 60 + Number(minutes);
63
+ }
64
+ function fromMinutes(total) {
65
+ const hours = Math.floor(total / 60);
66
+ const minutes = total % 60;
67
+ return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;
68
+ }
69
+ function toTime(hours, minutes) {
70
+ if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59)
71
+ return null;
72
+ return fromMinutes(hours * 60 + minutes);
73
+ }
74
+ /**
75
+ * Read a typed time generously. Deliberately not a mask: reformatting per
76
+ * keystroke moves the caret, breaks backspace mid-value and confuses screen
77
+ * readers, so we accept what people type and normalize once on commit.
78
+ *
79
+ * Accepts 9, 09, 9:30, 9.30, 9,30, 9u30, 930 and 0930. After a letter the
80
+ * minutes may be left off ("9u" is a finished thought), after punctuation they
81
+ * may not: "9:" is halfway through typing and should not produce a value yet.
82
+ */
83
+ export function parseTime(raw) {
84
+ const trimmed = raw.trim();
85
+ if (trimmed === '')
86
+ return null;
87
+ const withLetter = /^(\d{1,2})\s*[uh]\s*(\d{1,2})?$/i.exec(trimmed);
88
+ if (withLetter)
89
+ return toTime(Number(withLetter[1]), Number(withLetter[2] ?? 0));
90
+ const withPunctuation = /^(\d{1,2})\s*[:.,]\s*(\d{1,2})$/.exec(trimmed);
91
+ if (withPunctuation)
92
+ return toTime(Number(withPunctuation[1]), Number(withPunctuation[2]));
93
+ const bare = /^\d{1,4}$/.exec(trimmed);
94
+ if (bare) {
95
+ const digits = bare[0];
96
+ if (digits.length <= 2)
97
+ return toTime(Number(digits), 0);
98
+ const split = digits.length === 3 ? 1 : 2;
99
+ return toTime(Number(digits.slice(0, split)), Number(digits.slice(split)));
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * The nearest time that falls on the step, counted from `base`. Input exactly
105
+ * in between rounds up.
106
+ *
107
+ * Never rolls over the edge of the day: if rounding up would pass 23:59, step
108
+ * back instead. Rolling over to 00:00 silently shifts the day, and a consumer
109
+ * who puts this field next to a date field then has a bug nobody sees
110
+ * coming.
111
+ */
112
+ export function roundToStep(time, step, base = '00:00') {
113
+ if (step <= 1)
114
+ return time;
115
+ const baseMinutes = toMinutes(base);
116
+ const steps = Math.floor((toMinutes(time) - baseMinutes) / step + 0.5);
117
+ let rounded = baseMinutes + steps * step;
118
+ while (rounded > LAST_MINUTE_OF_DAY)
119
+ rounded -= step;
120
+ while (rounded < 0)
121
+ rounded += step;
122
+ return fromMinutes(rounded);
123
+ }
124
+ let NLDDTimeField = NLDDTimeField_1 = class NLDDTimeField extends FormAssociated(LitElement) {
125
+ constructor() {
126
+ super(...arguments);
127
+ this._initialValue = '';
128
+ this.size = 'md';
129
+ this.value = '';
130
+ this.min = '';
131
+ this.max = '';
132
+ this.step = 1;
133
+ this.noPicker = false;
134
+ this.inputId = '';
135
+ this.placeholder = '';
136
+ this.invalid = false;
137
+ this.valid = false;
138
+ this.disabled = false;
139
+ this.readonly = false;
140
+ this.required = false;
141
+ this.name = '';
142
+ this.autocomplete = '';
143
+ /** Accessible label for the inner input. Set automatically by nldd-form-field. */
144
+ this.accessibleLabel = '';
145
+ this.errorMessageIds = '';
146
+ /** Optional fixed width. Without a value the field is exactly wide enough. */
147
+ this.width = '';
148
+ /** Override one or more translation keys. Keys left out fall back to Dutch. */
149
+ this.translations = {};
150
+ this._finePointer = false;
151
+ this._handlePointerChange = () => {
152
+ this._finePointer = NLDDTimeField_1._getFinePointerQuery().matches;
153
+ };
154
+ /** What the user sees and types. Kept apart from `value`, which only ever
155
+ * carries a valid time or nothing. */
156
+ this._display = '';
157
+ /**
158
+ * Whether a consumer put their own picker in the slot. As state, not read
159
+ * during render: the built-in picker has to disappear the moment something is
160
+ * slotted, otherwise both sit in the popover.
161
+ */
162
+ this._hasSlottedPicker = false;
163
+ this._pickerOpen = false;
164
+ /** Where focus goes once the popover is closed. The popover restores focus to
165
+ * the element from before it opened, and Safari does not focus a button on
166
+ * click, so there it lands on the input instead of the button. We take over,
167
+ * but only after that restore, otherwise ours gets overwritten. */
168
+ this._focusTriggerOnClose = false;
169
+ /** The value from before opening, plus how the picker was left. Together they
170
+ * decide on close whether what stands in the selection stays or falls back. */
171
+ this._valueBeforePicker = '';
172
+ this._pickerTouched = false;
173
+ this._pickerConfirmed = false;
174
+ this._pickerCancelled = false;
175
+ /**
176
+ * Where the wheels open while the field is empty: `min` if there is one, and
177
+ * otherwise the current time rounded to the step. The same starting point the
178
+ * arrow keys use. An empty picker would show two columns on 00 with a colon
179
+ * between them, and then you scroll up from midnight to a time you already
180
+ * know.
181
+ *
182
+ * This does not set `value`: the field stays empty until you scroll or pick
183
+ * "Klaar".
184
+ */
185
+ this._pickerSeed = '';
186
+ /** Escape is canceling, a click beside it is not. The popover only reports
187
+ * that it closed, so we catch the key ourselves, before the browser acts. */
188
+ this._handlePickerEscape = (e) => {
189
+ if (e.key === 'Escape')
190
+ this._pickerCancelled = true;
191
+ };
192
+ }
193
+ static _getFinePointerQuery() {
194
+ NLDDTimeField_1._finePointerQuery ?? (NLDDTimeField_1._finePointerQuery = matchMedia('(pointer: fine)'));
195
+ return NLDDTimeField_1._finePointerQuery;
196
+ }
197
+ /** Size of the buttons in the popover: a finger needs the full control size,
198
+ * a mouse does not. Same split as the rows of the picker. */
199
+ get _pickerButtonSize() {
200
+ return this._finePointer ? 'sm' : 'md';
201
+ }
202
+ connectedCallback() {
203
+ super.connectedCallback();
204
+ const query = NLDDTimeField_1._getFinePointerQuery();
205
+ this._finePointer = query.matches;
206
+ query.addEventListener('change', this._handlePointerChange);
207
+ }
208
+ disconnectedCallback() {
209
+ NLDDTimeField_1._getFinePointerQuery().removeEventListener('change', this._handlePointerChange);
210
+ // Normally _settlePicker takes this one off, but that runs on the popover's
211
+ // toggle event. Disappear from the DOM with the picker open and no toggle
212
+ // arrives, leaving a listener on document that holds on to a detached field
213
+ // and keeps swallowing Escape for the rest of the session.
214
+ document.removeEventListener('keydown', this._handlePickerEscape, true);
215
+ super.disconnectedCallback();
216
+ }
217
+ _t(key) {
218
+ return this.translations[key] ?? nlddTimeFieldTranslations[key];
219
+ }
220
+ get _fieldLabel() {
221
+ return this.accessibleLabel || this._t('components.time-field.default-label');
222
+ }
223
+ get _displayValue() {
224
+ return this._display;
225
+ }
226
+ /** The base the step counts from. `min` when there is one, so a series that
227
+ * starts at :07 also works with a step of 15, otherwise midnight. Taken from
228
+ * `<input type="time">`, which uses `min` the same way. */
229
+ get _stepBase() {
230
+ return parseTime(this.min) ?? '00:00';
231
+ }
232
+ _withinBounds(time) {
233
+ const min = parseTime(this.min);
234
+ const max = parseTime(this.max);
235
+ // `HH:mm` compares lexically in the same order as it reads on the clock.
236
+ if (min && time < min)
237
+ return false;
238
+ if (max && time > max)
239
+ return false;
240
+ return true;
241
+ }
242
+ /** The parsed time, or '' when it is unreadable or out of bounds. In both
243
+ * cases the raw text stays put, so the user sees and can repair what they
244
+ * wrote. */
245
+ _commit(parsed) {
246
+ return parsed && this._withinBounds(parsed) ? parsed : '';
247
+ }
248
+ /** Rounding happens on commit, not on input: otherwise "09:1" jumps to 09:00
249
+ * before anyone can type the 5. */
250
+ _rounded(parsed) {
251
+ return parsed === null ? null : roundToStep(parsed, this.step, this._stepBase);
252
+ }
253
+ _handleInput(e) {
254
+ e.stopPropagation();
255
+ const text = e.target.value;
256
+ this._display = text;
257
+ this.value = this._commit(parseTime(text));
258
+ this._emit('input');
259
+ }
260
+ _handleChange(e) {
261
+ e.stopPropagation();
262
+ const input = e.target;
263
+ const committed = this._commit(this._rounded(parseTime(input.value)));
264
+ // Normalize on commit: 9u30 ends up as 09:30. Text that is unreadable or
265
+ // out of bounds stays put so it can be repaired.
266
+ const shown = committed || input.value;
267
+ this._display = shown;
268
+ // We write the input ourselves. Lit skips a DOM write as soon as the new
269
+ // text equals what it last rendered, and that is exactly the case when
270
+ // someone retypes an already normalized value differently: 09:30 becomes
271
+ // 930, which rounds back to 09:30. Without this line 930 stayed on screen
272
+ // while `value` had long been 09:30.
273
+ input.value = shown;
274
+ this.value = committed;
275
+ this._emit('change');
276
+ }
277
+ /**
278
+ * Arrow up and down move by `step`. With nothing there yet, the first press is
279
+ * the current time rounded to the step, or `min` when there is one. Starting
280
+ * at midnight would be a long climb from any realistic goal, and the calendar
281
+ * does the same: it opens on today as long as there is no date.
282
+ */
283
+ _handleInputKeydown(e) {
284
+ if (e.key !== 'ArrowUp' && e.key !== 'ArrowDown')
285
+ return;
286
+ if (this.disabled || this.readonly)
287
+ return;
288
+ e.preventDefault();
289
+ const current = this.value || parseTime(this._display);
290
+ const next = current
291
+ ? this._shift(current, e.key === 'ArrowUp' ? 1 : -1)
292
+ : this._startingPoint();
293
+ this._display = next;
294
+ this.value = this._withinBounds(next) ? next : '';
295
+ this._emit('input');
296
+ this._emit('change');
297
+ }
298
+ _startingPoint() {
299
+ const min = parseTime(this.min);
300
+ if (min)
301
+ return min;
302
+ const now = new Date();
303
+ const rounded = roundToStep(fromMinutes(now.getHours() * 60 + now.getMinutes()), this.step, this._stepBase);
304
+ const max = parseTime(this.max);
305
+ if (!max || toMinutes(rounded) <= toMinutes(max))
306
+ return rounded;
307
+ // Past `max` we land on the last step at or before it, not on `max` itself:
308
+ // a max that does not fall on the step is not in the wheel, and a value the
309
+ // wheel does not hold shows up as an empty selection.
310
+ const step = Math.max(1, Math.round(this.step));
311
+ const base = toMinutes(this._stepBase);
312
+ return fromMinutes(base + Math.max(0, Math.floor((toMinutes(max) - base) / step)) * step);
313
+ }
314
+ _shift(from, direction) {
315
+ const step = Math.max(1, Math.round(this.step));
316
+ const base = toMinutes(this._stepBase);
317
+ // From a time that does not fall on the step, move onto the grid first, so
318
+ // a second press does not land between two valid values again.
319
+ const aligned = toMinutes(roundToStep(from, step, this._stepBase));
320
+ const moved = aligned === toMinutes(from) || step === 1
321
+ ? aligned + direction * step
322
+ : aligned;
323
+ const clamped = Math.min(Math.max(moved, base % step), LAST_MINUTE_OF_DAY);
324
+ const minMinutes = parseTime(this.min) ? toMinutes(parseTime(this.min)) : 0;
325
+ const maxMinutes = parseTime(this.max) ? toMinutes(parseTime(this.max)) : LAST_MINUTE_OF_DAY;
326
+ return fromMinutes(Math.min(Math.max(clamped, minMinutes), maxMinutes));
327
+ }
328
+ get _slottedPicker() {
329
+ const slot = this.shadowRoot?.querySelector('slot[name="picker"]');
330
+ const found = slot?.assignedElements({ flatten: true })
331
+ .find((el) => el.localName === 'nldd-time-picker');
332
+ return found ?? null;
333
+ }
334
+ _handlePickerSlotChange() {
335
+ this._hasSlottedPicker = this._slottedPicker !== null;
336
+ }
337
+ get _pickerTrigger() {
338
+ return this.shadowRoot?.querySelector('.time-field__picker-button nldd-icon-button') ?? null;
339
+ }
340
+ get _popover() {
341
+ return this.shadowRoot?.querySelector('nldd-popover') ?? null;
342
+ }
343
+ /** One name for the dialog, both as the accessible name and as the visible
344
+ * title of the sheet. The field's own label says more than "Tijd kiezen" ever
345
+ * can: a sheet headed "Starttijd" tells you what you are filling in. */
346
+ get _pickerLabel() {
347
+ return this.accessibleLabel || this._t('components.time-field.to-pick-time-action');
348
+ }
349
+ _handlePickerClick() {
350
+ if (this._pickerOpen)
351
+ this._popover?.hide();
352
+ else
353
+ this._popover?.show();
354
+ }
355
+ get _pickerValue() {
356
+ return this.value || this._pickerSeed;
357
+ }
358
+ _handlePopoverToggle(e) {
359
+ this._pickerOpen = e.newState === 'open';
360
+ if (this._pickerOpen)
361
+ this._openPicker();
362
+ else
363
+ this._settlePicker();
364
+ if (this._pickerOpen || !this._focusTriggerOnClose)
365
+ return;
366
+ this._focusTriggerOnClose = false;
367
+ // Microtask, not rAF: this beats that same restore but does not get
368
+ // throttled while the tab has no focus.
369
+ queueMicrotask(() => this._pickerTrigger?.focus());
370
+ }
371
+ _openPicker() {
372
+ this._valueBeforePicker = this.value;
373
+ this._pickerTouched = false;
374
+ this._pickerConfirmed = false;
375
+ this._pickerCancelled = false;
376
+ this._pickerSeed = this.value || this._startingPoint();
377
+ document.addEventListener('keydown', this._handlePickerEscape, true);
378
+ // Only now does the picker have dimensions: while the popover was closed it
379
+ // could not scroll the chosen value into view and the column sat at the top.
380
+ // Wait for both renders, because the picker is only handed its starting
381
+ // point above.
382
+ void this.updateComplete.then(async () => {
383
+ const picker = this._slottedPicker ?? this.shadowRoot?.querySelector('nldd-time-picker');
384
+ if (!picker)
385
+ return;
386
+ await picker.updateComplete;
387
+ picker.scrollSelectedIntoView();
388
+ });
389
+ }
390
+ /**
391
+ * What happened while scrolling is a proposal, not an answer: the field shows
392
+ * it already, but only records it once you leave the picker in a way that
393
+ * keeps the choice. "Klaar" always does, a click beside it only when something
394
+ * has been chosen. Annuleer and Escape put the old value back.
395
+ *
396
+ * That way a picker opened by accident costs you nothing, and "Annuleer" is
397
+ * not a button that merely closes.
398
+ */
399
+ _settlePicker() {
400
+ document.removeEventListener('keydown', this._handlePickerEscape, true);
401
+ // Confirming beats an earlier Escape: that Escape need not have closed the
402
+ // popover, and then the last action is what counts.
403
+ if (!this._pickerConfirmed && (this._pickerCancelled || !this._pickerTouched)) {
404
+ if (this.value === this._valueBeforePicker)
405
+ return;
406
+ this.value = this._valueBeforePicker;
407
+ this._display = this._valueBeforePicker;
408
+ this._emit('input');
409
+ return;
410
+ }
411
+ // "Klaar" without touching anything: the starting point is what stands in
412
+ // the selection, and that is exactly what you are confirming.
413
+ if (!this.value && this._pickerSeed) {
414
+ this.value = this._pickerSeed;
415
+ this._display = this._pickerSeed;
416
+ this._emit('input');
417
+ }
418
+ if (this.value !== this._valueBeforePicker)
419
+ this._emit('change');
420
+ }
421
+ /**
422
+ * The picker reports every change as `input` and only a confirmation as
423
+ * `change`. Scrolling therefore hands over the new time but does not close the
424
+ * popover: otherwise it snaps shut the moment you stop scrolling and you never
425
+ * saw the second column.
426
+ */
427
+ _handlePickerInput(e) {
428
+ e.stopPropagation();
429
+ const detail = e.detail;
430
+ if (typeof detail?.value !== 'string')
431
+ return;
432
+ this._pickerTouched = true;
433
+ // An Escape that did not close the popover no longer counts: you are busy
434
+ // again.
435
+ this._pickerCancelled = false;
436
+ this.value = detail.value;
437
+ this._display = detail.value;
438
+ this._emit('input');
439
+ }
440
+ /**
441
+ * Recording a value does not close the popover. A time has two parts, so
442
+ * setting the hour is half an answer. Closing on that and you would never
443
+ * reach the minutes. The calendar is different, because there one day is the
444
+ * whole answer. The field therefore reports its own `change` only on close.
445
+ */
446
+ _handlePickerChange(e) {
447
+ e.stopPropagation();
448
+ const detail = e.detail;
449
+ if (typeof detail?.value !== 'string')
450
+ return;
451
+ this._pickerTouched = true;
452
+ this.value = detail.value;
453
+ this._display = detail.value;
454
+ }
455
+ _handlePickerConfirm(e) {
456
+ e.stopPropagation();
457
+ this._pickerConfirmed = true;
458
+ this._closePicker();
459
+ }
460
+ /**
461
+ * Enter on a value in the selection does what Enter in a dialog always does: the
462
+ * default action, and here that is "Klaar". With the arrow keys you are still
463
+ * adjusting, so this is the key that says you are done.
464
+ *
465
+ * We skip the button underneath, because the browser already gives it a click
466
+ * on Enter.
467
+ */
468
+ _handlePickerKeydown(e) {
469
+ if (e.key !== 'Enter')
470
+ return;
471
+ if (e.target?.closest('nldd-button'))
472
+ return;
473
+ e.preventDefault();
474
+ this._pickerConfirmed = true;
475
+ this._closePicker();
476
+ }
477
+ _closePicker() {
478
+ this._focusTriggerOnClose = true;
479
+ this._popover?.hide();
480
+ }
481
+ _handlePickerDismiss(e) {
482
+ e.stopPropagation();
483
+ this._pickerCancelled = true;
484
+ // Same as after a choice: focus back on the button. Without this, Annuleer,
485
+ // Escape and a click beside it leave focus on the input.
486
+ this._focusTriggerOnClose = true;
487
+ this._popover?.hide();
488
+ }
489
+ formValue() {
490
+ return this.value;
491
+ }
492
+ formResetCallback() {
493
+ this.value = this._initialValue;
494
+ this._display = this._initialValue;
495
+ this.commitFormValue();
496
+ }
497
+ formStateRestoreCallback(state) {
498
+ if (typeof state === 'string') {
499
+ this.value = state;
500
+ this._display = state;
501
+ }
502
+ }
503
+ _emit(type) {
504
+ this.commitFormValue();
505
+ this.dispatchEvent(new CustomEvent(type, {
506
+ detail: { value: this.value },
507
+ bubbles: true,
508
+ composed: true,
509
+ }));
510
+ }
511
+ firstUpdated() {
512
+ this._initialValue = this.value;
513
+ if (this.value)
514
+ this._display = this.value;
515
+ this.commitFormValue();
516
+ }
517
+ willUpdate(changed) {
518
+ // A value set from outside (property, reset, form) has to show up in the
519
+ // field. Not while typing: there `_display` is the source and this would
520
+ // overwrite the half-typed text.
521
+ if (changed.has('value') && (parseTime(this._display) ?? '') !== this.value) {
522
+ this._display = this.value;
523
+ }
524
+ }
525
+ updated(changed) {
526
+ const popover = this._popover;
527
+ const trigger = this._pickerTrigger;
528
+ if (popover && trigger && popover.anchorElement !== trigger) {
529
+ popover.anchorElement = trigger;
530
+ }
531
+ if (changed.has('width')) {
532
+ const w = this.width;
533
+ // Unlike a text field the default here is an intrinsic width that fits a
534
+ // time plus the icon, so 'full' has to say 100% explicitly instead of
535
+ // falling back on that default.
536
+ if (w === 'full') {
537
+ this.style.setProperty('--_width', '100%');
538
+ }
539
+ else if (w && CSS.supports('width', w)) {
540
+ this.style.setProperty('--_width', w);
541
+ }
542
+ else {
543
+ this.style.removeProperty('--_width');
544
+ }
545
+ }
546
+ }
547
+ render() {
548
+ return timeFieldTemplate(this);
549
+ }
550
+ };
551
+ NLDDTimeField.shadowRootOptions = {
552
+ ...LitElement.shadowRootOptions,
553
+ delegatesFocus: true,
554
+ };
555
+ NLDDTimeField.styles = timeFieldStyles;
556
+ /**
557
+ * Whether a fine pointer is in use. The picker already sets its row height
558
+ * with a media query, but a button's size is an attribute and so cannot be
559
+ * chosen in CSS. Hence the same question once more here, in JS.
560
+ *
561
+ * Created lazily and shared between all fields: calling matchMedia while the
562
+ * module loads breaks in an environment without window.
563
+ */
564
+ NLDDTimeField._finePointerQuery = null;
565
+ __decorate([
566
+ property({ reflect: true, converter: reflectNonDefault('md') })
567
+ ], NLDDTimeField.prototype, "size", void 0);
568
+ __decorate([
569
+ property({ type: String })
570
+ ], NLDDTimeField.prototype, "value", void 0);
571
+ __decorate([
572
+ property({ type: String })
573
+ ], NLDDTimeField.prototype, "min", void 0);
574
+ __decorate([
575
+ property({ type: String })
576
+ ], NLDDTimeField.prototype, "max", void 0);
577
+ __decorate([
578
+ property({ type: Number })
579
+ ], NLDDTimeField.prototype, "step", void 0);
580
+ __decorate([
581
+ property({ type: Boolean, reflect: true, attribute: 'no-picker' })
582
+ ], NLDDTimeField.prototype, "noPicker", void 0);
583
+ __decorate([
584
+ property({ type: String, attribute: 'input-id' })
585
+ ], NLDDTimeField.prototype, "inputId", void 0);
586
+ __decorate([
587
+ property({ reflect: true, converter: reflectNonDefault('') })
588
+ ], NLDDTimeField.prototype, "placeholder", void 0);
589
+ __decorate([
590
+ property({ type: Boolean, reflect: true })
591
+ ], NLDDTimeField.prototype, "invalid", void 0);
592
+ __decorate([
593
+ property({ type: Boolean, reflect: true })
594
+ ], NLDDTimeField.prototype, "valid", void 0);
595
+ __decorate([
596
+ property({ type: Boolean, reflect: true })
597
+ ], NLDDTimeField.prototype, "disabled", void 0);
598
+ __decorate([
599
+ property({ type: Boolean, reflect: true })
600
+ ], NLDDTimeField.prototype, "readonly", void 0);
601
+ __decorate([
602
+ property({ type: Boolean, reflect: true })
603
+ ], NLDDTimeField.prototype, "required", void 0);
604
+ __decorate([
605
+ property({ type: String, reflect: true })
606
+ ], NLDDTimeField.prototype, "name", void 0);
607
+ __decorate([
608
+ property({ type: String })
609
+ ], NLDDTimeField.prototype, "autocomplete", void 0);
610
+ __decorate([
611
+ property({ type: String, attribute: 'accessible-label' })
612
+ ], NLDDTimeField.prototype, "accessibleLabel", void 0);
613
+ __decorate([
614
+ property({ type: String, attribute: 'error-message-ids' })
615
+ ], NLDDTimeField.prototype, "errorMessageIds", void 0);
616
+ __decorate([
617
+ property({ type: String, reflect: true })
618
+ ], NLDDTimeField.prototype, "width", void 0);
619
+ __decorate([
620
+ property({ type: Object })
621
+ ], NLDDTimeField.prototype, "translations", void 0);
622
+ __decorate([
623
+ state()
624
+ ], NLDDTimeField.prototype, "_finePointer", void 0);
625
+ __decorate([
626
+ state()
627
+ ], NLDDTimeField.prototype, "_display", void 0);
628
+ __decorate([
629
+ state()
630
+ ], NLDDTimeField.prototype, "_hasSlottedPicker", void 0);
631
+ __decorate([
632
+ state()
633
+ ], NLDDTimeField.prototype, "_pickerOpen", void 0);
634
+ __decorate([
635
+ state()
636
+ ], NLDDTimeField.prototype, "_pickerSeed", void 0);
637
+ NLDDTimeField = NLDDTimeField_1 = __decorate([
638
+ customElement('nldd-time-field')
639
+ ], NLDDTimeField);
640
+ export { NLDDTimeField };
641
+ //# sourceMappingURL=time-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-field.js","sourceRoot":"","sources":["../../../../src/components/inputs/time-field/time-field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const timeFieldStyles: import("lit").CSSResult;
2
+ //# sourceMappingURL=time-field.styles.d.ts.map