@api-client/ui 0.5.5 → 0.5.6

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 (82) hide show
  1. package/build/src/elements/highlight/MarkdownStyles.d.ts.map +1 -1
  2. package/build/src/elements/highlight/MarkdownStyles.js +0 -13
  3. package/build/src/elements/highlight/MarkdownStyles.js.map +1 -1
  4. package/build/src/elements/http/BodyEditor.d.ts +0 -13
  5. package/build/src/elements/http/BodyEditor.d.ts.map +1 -1
  6. package/build/src/elements/http/BodyEditor.js +0 -13
  7. package/build/src/elements/http/BodyEditor.js.map +1 -1
  8. package/build/src/elements/http/BodyTextEditor.d.ts +0 -13
  9. package/build/src/elements/http/BodyTextEditor.d.ts.map +1 -1
  10. package/build/src/elements/http/BodyTextEditor.js +0 -13
  11. package/build/src/elements/http/BodyTextEditor.js.map +1 -1
  12. package/build/src/elements/http/BodyUrlEncodedEditor.d.ts +0 -13
  13. package/build/src/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  14. package/build/src/elements/http/BodyUrlEncodedEditor.js +0 -13
  15. package/build/src/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  16. package/build/src/elements/http/UrlInput.d.ts +0 -13
  17. package/build/src/elements/http/UrlInput.d.ts.map +1 -1
  18. package/build/src/elements/http/UrlInput.js +0 -13
  19. package/build/src/elements/http/UrlInput.js.map +1 -1
  20. package/build/src/index.d.ts +2 -0
  21. package/build/src/index.d.ts.map +1 -1
  22. package/build/src/index.js +2 -0
  23. package/build/src/index.js.map +1 -1
  24. package/build/src/md/button/internals/button.styles.js +1 -1
  25. package/build/src/md/button/internals/button.styles.js.map +1 -1
  26. package/build/src/md/date/internals/DateTime.d.ts +0 -13
  27. package/build/src/md/date/internals/DateTime.d.ts.map +1 -1
  28. package/build/src/md/date/internals/DateTime.js +0 -13
  29. package/build/src/md/date/internals/DateTime.js.map +1 -1
  30. package/build/src/md/date-picker/index.d.ts +13 -0
  31. package/build/src/md/date-picker/index.d.ts.map +1 -0
  32. package/build/src/md/date-picker/index.js +13 -0
  33. package/build/src/md/date-picker/index.js.map +1 -0
  34. package/build/src/md/date-picker/internals/DatePicker.styles.d.ts +4 -0
  35. package/build/src/md/date-picker/internals/DatePicker.styles.d.ts.map +1 -0
  36. package/build/src/md/date-picker/internals/DatePicker.styles.js +336 -0
  37. package/build/src/md/date-picker/internals/DatePicker.styles.js.map +1 -0
  38. package/build/src/md/date-picker/internals/DatePickerCalendar.d.ts +159 -0
  39. package/build/src/md/date-picker/internals/DatePickerCalendar.d.ts.map +1 -0
  40. package/build/src/md/date-picker/internals/DatePickerCalendar.js +770 -0
  41. package/build/src/md/date-picker/internals/DatePickerCalendar.js.map +1 -0
  42. package/build/src/md/date-picker/internals/DatePickerUtils.d.ts +93 -0
  43. package/build/src/md/date-picker/internals/DatePickerUtils.d.ts.map +1 -0
  44. package/build/src/md/date-picker/internals/DatePickerUtils.js +221 -0
  45. package/build/src/md/date-picker/internals/DatePickerUtils.js.map +1 -0
  46. package/build/src/md/date-picker/ui-date-picker-input.d.ts +108 -0
  47. package/build/src/md/date-picker/ui-date-picker-input.d.ts.map +1 -0
  48. package/build/src/md/date-picker/ui-date-picker-input.js +397 -0
  49. package/build/src/md/date-picker/ui-date-picker-input.js.map +1 -0
  50. package/build/src/md/date-picker/ui-date-picker-modal-input.d.ts +119 -0
  51. package/build/src/md/date-picker/ui-date-picker-modal-input.d.ts.map +1 -0
  52. package/build/src/md/date-picker/ui-date-picker-modal-input.js +473 -0
  53. package/build/src/md/date-picker/ui-date-picker-modal-input.js.map +1 -0
  54. package/build/src/md/date-picker/ui-date-picker-modal.d.ts +108 -0
  55. package/build/src/md/date-picker/ui-date-picker-modal.d.ts.map +1 -0
  56. package/build/src/md/date-picker/ui-date-picker-modal.js +344 -0
  57. package/build/src/md/date-picker/ui-date-picker-modal.js.map +1 -0
  58. package/build/src/md/dialog/internals/Dialog.styles.d.ts.map +1 -1
  59. package/build/src/md/dialog/internals/Dialog.styles.js +1 -0
  60. package/build/src/md/dialog/internals/Dialog.styles.js.map +1 -1
  61. package/demo/elements/har/har2.json +1 -1
  62. package/demo/md/date-picker/date-picker.ts +301 -0
  63. package/demo/md/date-picker/index.html +171 -0
  64. package/demo/md/index.html +2 -0
  65. package/package.json +1 -1
  66. package/src/elements/highlight/MarkdownStyles.ts +0 -13
  67. package/src/elements/http/BodyEditor.ts +0 -13
  68. package/src/elements/http/BodyTextEditor.ts +0 -13
  69. package/src/elements/http/BodyUrlEncodedEditor.ts +0 -13
  70. package/src/elements/http/UrlInput.ts +0 -13
  71. package/src/index.ts +17 -0
  72. package/src/md/button/internals/button.styles.ts +1 -1
  73. package/src/md/date/internals/DateTime.ts +0 -14
  74. package/src/md/date-picker/README.md +184 -0
  75. package/src/md/date-picker/index.ts +17 -0
  76. package/src/md/date-picker/internals/DatePicker.styles.ts +338 -0
  77. package/src/md/date-picker/internals/DatePickerCalendar.ts +697 -0
  78. package/src/md/date-picker/internals/DatePickerUtils.ts +288 -0
  79. package/src/md/date-picker/ui-date-picker-input.ts +272 -0
  80. package/src/md/date-picker/ui-date-picker-modal-input.ts +371 -0
  81. package/src/md/date-picker/ui-date-picker-modal.ts +263 -0
  82. package/src/md/dialog/internals/Dialog.styles.ts +1 -0
@@ -0,0 +1,397 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { LitElement, html } from 'lit';
3
+ import { customElement, property, state, query } from 'lit/decorators.js';
4
+ import { inputStyles } from './internals/DatePicker.styles.js';
5
+ import { formatDate, parseDate } from './internals/DatePickerUtils.js';
6
+ import './internals/DatePickerCalendar.js';
7
+ import '../../md/text-field/ui-outlined-text-field.js';
8
+ import '../../md/icons/ui-icon.js';
9
+ /**
10
+ * A docked date picker that opens from a text field input.
11
+ * Ideal for forms and date selection in medium to large layouts.
12
+ *
13
+ * ## Usage
14
+ *
15
+ * ```html
16
+ * <ui-date-picker-input
17
+ * label="Select date"
18
+ * placeholder="MM/DD/YYYY"
19
+ * .value=${new Date()}
20
+ * ></ui-date-picker-input>
21
+ * ```
22
+ *
23
+ * ### Custom date format
24
+ * ```html
25
+ * <ui-date-picker-input
26
+ * label="Birth date"
27
+ * .dateFormat=${date => date.toLocaleDateString('en-GB')}
28
+ * ></ui-date-picker-input>
29
+ * ```
30
+ */
31
+ let UiDatePickerInput = (() => {
32
+ let _classDecorators = [customElement('ui-date-picker-input')];
33
+ let _classDescriptor;
34
+ let _classExtraInitializers = [];
35
+ let _classThis;
36
+ let _classSuper = LitElement;
37
+ let _label_decorators;
38
+ let _label_initializers = [];
39
+ let _label_extraInitializers = [];
40
+ let _placeholder_decorators;
41
+ let _placeholder_initializers = [];
42
+ let _placeholder_extraInitializers = [];
43
+ let _value_decorators;
44
+ let _value_initializers = [];
45
+ let _value_extraInitializers = [];
46
+ let _disabled_decorators;
47
+ let _disabled_initializers = [];
48
+ let _disabled_extraInitializers = [];
49
+ let _required_decorators;
50
+ let _required_initializers = [];
51
+ let _required_extraInitializers = [];
52
+ let _errorMessage_decorators;
53
+ let _errorMessage_initializers = [];
54
+ let _errorMessage_extraInitializers = [];
55
+ let _error_decorators;
56
+ let _error_initializers = [];
57
+ let _error_extraInitializers = [];
58
+ let _minDate_decorators;
59
+ let _minDate_initializers = [];
60
+ let _minDate_extraInitializers = [];
61
+ let _maxDate_decorators;
62
+ let _maxDate_initializers = [];
63
+ let _maxDate_extraInitializers = [];
64
+ let _disabledDates_decorators;
65
+ let _disabledDates_initializers = [];
66
+ let _disabledDates_extraInitializers = [];
67
+ let _locale_decorators;
68
+ let _locale_initializers = [];
69
+ let _locale_extraInitializers = [];
70
+ let _dateFormat_decorators;
71
+ let _dateFormat_initializers = [];
72
+ let _dateFormat_extraInitializers = [];
73
+ let __isOpen_decorators;
74
+ let __isOpen_initializers = [];
75
+ let __isOpen_extraInitializers = [];
76
+ let __inputValue_decorators;
77
+ let __inputValue_initializers = [];
78
+ let __inputValue_extraInitializers = [];
79
+ let __textField_decorators;
80
+ let __textField_initializers = [];
81
+ let __textField_extraInitializers = [];
82
+ var UiDatePickerInput = class extends _classSuper {
83
+ static { _classThis = this; }
84
+ static {
85
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
86
+ _label_decorators = [property({ type: String })];
87
+ _placeholder_decorators = [property({ type: String })];
88
+ _value_decorators = [property({ type: Object })];
89
+ _disabled_decorators = [property({ type: Boolean })];
90
+ _required_decorators = [property({ type: Boolean })];
91
+ _errorMessage_decorators = [property({ type: String })];
92
+ _error_decorators = [property({ type: Boolean })];
93
+ _minDate_decorators = [property({ type: Object })];
94
+ _maxDate_decorators = [property({ type: Object })];
95
+ _disabledDates_decorators = [property({ type: Array })];
96
+ _locale_decorators = [property({ type: String })];
97
+ _dateFormat_decorators = [property({ type: Object })];
98
+ __isOpen_decorators = [state()];
99
+ __inputValue_decorators = [state()];
100
+ __textField_decorators = [query('ui-outlined-text-field')];
101
+ __esDecorate(this, null, _label_decorators, { kind: "accessor", name: "label", static: false, private: false, access: { has: obj => "label" in obj, get: obj => obj.label, set: (obj, value) => { obj.label = value; } }, metadata: _metadata }, _label_initializers, _label_extraInitializers);
102
+ __esDecorate(this, null, _placeholder_decorators, { kind: "accessor", name: "placeholder", static: false, private: false, access: { has: obj => "placeholder" in obj, get: obj => obj.placeholder, set: (obj, value) => { obj.placeholder = value; } }, metadata: _metadata }, _placeholder_initializers, _placeholder_extraInitializers);
103
+ __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
104
+ __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
105
+ __esDecorate(this, null, _required_decorators, { kind: "accessor", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
106
+ __esDecorate(this, null, _errorMessage_decorators, { kind: "accessor", name: "errorMessage", static: false, private: false, access: { has: obj => "errorMessage" in obj, get: obj => obj.errorMessage, set: (obj, value) => { obj.errorMessage = value; } }, metadata: _metadata }, _errorMessage_initializers, _errorMessage_extraInitializers);
107
+ __esDecorate(this, null, _error_decorators, { kind: "accessor", name: "error", static: false, private: false, access: { has: obj => "error" in obj, get: obj => obj.error, set: (obj, value) => { obj.error = value; } }, metadata: _metadata }, _error_initializers, _error_extraInitializers);
108
+ __esDecorate(this, null, _minDate_decorators, { kind: "accessor", name: "minDate", static: false, private: false, access: { has: obj => "minDate" in obj, get: obj => obj.minDate, set: (obj, value) => { obj.minDate = value; } }, metadata: _metadata }, _minDate_initializers, _minDate_extraInitializers);
109
+ __esDecorate(this, null, _maxDate_decorators, { kind: "accessor", name: "maxDate", static: false, private: false, access: { has: obj => "maxDate" in obj, get: obj => obj.maxDate, set: (obj, value) => { obj.maxDate = value; } }, metadata: _metadata }, _maxDate_initializers, _maxDate_extraInitializers);
110
+ __esDecorate(this, null, _disabledDates_decorators, { kind: "accessor", name: "disabledDates", static: false, private: false, access: { has: obj => "disabledDates" in obj, get: obj => obj.disabledDates, set: (obj, value) => { obj.disabledDates = value; } }, metadata: _metadata }, _disabledDates_initializers, _disabledDates_extraInitializers);
111
+ __esDecorate(this, null, _locale_decorators, { kind: "accessor", name: "locale", static: false, private: false, access: { has: obj => "locale" in obj, get: obj => obj.locale, set: (obj, value) => { obj.locale = value; } }, metadata: _metadata }, _locale_initializers, _locale_extraInitializers);
112
+ __esDecorate(this, null, _dateFormat_decorators, { kind: "accessor", name: "dateFormat", static: false, private: false, access: { has: obj => "dateFormat" in obj, get: obj => obj.dateFormat, set: (obj, value) => { obj.dateFormat = value; } }, metadata: _metadata }, _dateFormat_initializers, _dateFormat_extraInitializers);
113
+ __esDecorate(this, null, __isOpen_decorators, { kind: "accessor", name: "_isOpen", static: false, private: false, access: { has: obj => "_isOpen" in obj, get: obj => obj._isOpen, set: (obj, value) => { obj._isOpen = value; } }, metadata: _metadata }, __isOpen_initializers, __isOpen_extraInitializers);
114
+ __esDecorate(this, null, __inputValue_decorators, { kind: "accessor", name: "_inputValue", static: false, private: false, access: { has: obj => "_inputValue" in obj, get: obj => obj._inputValue, set: (obj, value) => { obj._inputValue = value; } }, metadata: _metadata }, __inputValue_initializers, __inputValue_extraInitializers);
115
+ __esDecorate(this, null, __textField_decorators, { kind: "accessor", name: "_textField", static: false, private: false, access: { has: obj => "_textField" in obj, get: obj => obj._textField, set: (obj, value) => { obj._textField = value; } }, metadata: _metadata }, __textField_initializers, __textField_extraInitializers);
116
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
117
+ UiDatePickerInput = _classThis = _classDescriptor.value;
118
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
119
+ }
120
+ static styles = inputStyles;
121
+ static shadowRootOptions = {
122
+ mode: 'open',
123
+ delegatesFocus: true,
124
+ };
125
+ #label_accessor_storage = __runInitializers(this, _label_initializers, ''
126
+ /**
127
+ * Placeholder text for the input
128
+ */
129
+ );
130
+ /**
131
+ * The label for the input field
132
+ */
133
+ get label() { return this.#label_accessor_storage; }
134
+ set label(value) { this.#label_accessor_storage = value; }
135
+ #placeholder_accessor_storage = (__runInitializers(this, _label_extraInitializers), __runInitializers(this, _placeholder_initializers, 'MM/DD/YYYY'
136
+ /**
137
+ * The currently selected date
138
+ */
139
+ ));
140
+ /**
141
+ * Placeholder text for the input
142
+ */
143
+ get placeholder() { return this.#placeholder_accessor_storage; }
144
+ set placeholder(value) { this.#placeholder_accessor_storage = value; }
145
+ #value_accessor_storage = (__runInitializers(this, _placeholder_extraInitializers), __runInitializers(this, _value_initializers, null
146
+ /**
147
+ * Whether the date picker is disabled
148
+ */
149
+ ));
150
+ /**
151
+ * The currently selected date
152
+ */
153
+ get value() { return this.#value_accessor_storage; }
154
+ set value(value) { this.#value_accessor_storage = value; }
155
+ #disabled_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _disabled_initializers, false
156
+ /**
157
+ * Whether the input is required
158
+ */
159
+ ));
160
+ /**
161
+ * Whether the date picker is disabled
162
+ */
163
+ get disabled() { return this.#disabled_accessor_storage; }
164
+ set disabled(value) { this.#disabled_accessor_storage = value; }
165
+ #required_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _required_initializers, false
166
+ /**
167
+ * Error message to display
168
+ */
169
+ ));
170
+ /**
171
+ * Whether the input is required
172
+ */
173
+ get required() { return this.#required_accessor_storage; }
174
+ set required(value) { this.#required_accessor_storage = value; }
175
+ #errorMessage_accessor_storage = (__runInitializers(this, _required_extraInitializers), __runInitializers(this, _errorMessage_initializers, ''
176
+ /**
177
+ * Whether the input has an error state
178
+ */
179
+ ));
180
+ /**
181
+ * Error message to display
182
+ */
183
+ get errorMessage() { return this.#errorMessage_accessor_storage; }
184
+ set errorMessage(value) { this.#errorMessage_accessor_storage = value; }
185
+ #error_accessor_storage = (__runInitializers(this, _errorMessage_extraInitializers), __runInitializers(this, _error_initializers, false
186
+ /**
187
+ * Minimum selectable date
188
+ */
189
+ ));
190
+ /**
191
+ * Whether the input has an error state
192
+ */
193
+ get error() { return this.#error_accessor_storage; }
194
+ set error(value) { this.#error_accessor_storage = value; }
195
+ #minDate_accessor_storage = (__runInitializers(this, _error_extraInitializers), __runInitializers(this, _minDate_initializers, undefined
196
+ /**
197
+ * Maximum selectable date
198
+ */
199
+ ));
200
+ /**
201
+ * Minimum selectable date
202
+ */
203
+ get minDate() { return this.#minDate_accessor_storage; }
204
+ set minDate(value) { this.#minDate_accessor_storage = value; }
205
+ #maxDate_accessor_storage = (__runInitializers(this, _minDate_extraInitializers), __runInitializers(this, _maxDate_initializers, undefined
206
+ /**
207
+ * Array of disabled dates
208
+ */
209
+ ));
210
+ /**
211
+ * Maximum selectable date
212
+ */
213
+ get maxDate() { return this.#maxDate_accessor_storage; }
214
+ set maxDate(value) { this.#maxDate_accessor_storage = value; }
215
+ #disabledDates_accessor_storage = (__runInitializers(this, _maxDate_extraInitializers), __runInitializers(this, _disabledDates_initializers, undefined
216
+ /**
217
+ * Locale for date formatting
218
+ */
219
+ ));
220
+ /**
221
+ * Array of disabled dates
222
+ */
223
+ get disabledDates() { return this.#disabledDates_accessor_storage; }
224
+ set disabledDates(value) { this.#disabledDates_accessor_storage = value; }
225
+ #locale_accessor_storage = (__runInitializers(this, _disabledDates_extraInitializers), __runInitializers(this, _locale_initializers, undefined
226
+ /**
227
+ * Custom date format function
228
+ */
229
+ ));
230
+ /**
231
+ * Locale for date formatting
232
+ */
233
+ get locale() { return this.#locale_accessor_storage; }
234
+ set locale(value) { this.#locale_accessor_storage = value; }
235
+ #dateFormat_accessor_storage = (__runInitializers(this, _locale_extraInitializers), __runInitializers(this, _dateFormat_initializers, undefined));
236
+ /**
237
+ * Custom date format function
238
+ */
239
+ get dateFormat() { return this.#dateFormat_accessor_storage; }
240
+ set dateFormat(value) { this.#dateFormat_accessor_storage = value; }
241
+ #_isOpen_accessor_storage = (__runInitializers(this, _dateFormat_extraInitializers), __runInitializers(this, __isOpen_initializers, false));
242
+ get _isOpen() { return this.#_isOpen_accessor_storage; }
243
+ set _isOpen(value) { this.#_isOpen_accessor_storage = value; }
244
+ #_inputValue_accessor_storage = (__runInitializers(this, __isOpen_extraInitializers), __runInitializers(this, __inputValue_initializers, ''));
245
+ get _inputValue() { return this.#_inputValue_accessor_storage; }
246
+ set _inputValue(value) { this.#_inputValue_accessor_storage = value; }
247
+ #_textField_accessor_storage = (__runInitializers(this, __inputValue_extraInitializers), __runInitializers(this, __textField_initializers, void 0));
248
+ get _textField() { return this.#_textField_accessor_storage; }
249
+ set _textField(value) { this.#_textField_accessor_storage = value; }
250
+ connectedCallback() {
251
+ super.connectedCallback();
252
+ this._updateInputValue();
253
+ document.addEventListener('click', this._handleDocumentClick.bind(this));
254
+ }
255
+ disconnectedCallback() {
256
+ super.disconnectedCallback();
257
+ document.removeEventListener('click', this._handleDocumentClick.bind(this));
258
+ }
259
+ willUpdate(changedProperties) {
260
+ if (changedProperties.has('value')) {
261
+ this._updateInputValue();
262
+ }
263
+ }
264
+ updated(changedProperties) {
265
+ if (changedProperties.has('_isOpen') && this._isOpen) {
266
+ // Set anchor name on text field for CSS Anchor Positioning API
267
+ if (this._textField) {
268
+ // Using setProperty since anchorName is not in TypeScript types yet
269
+ this._textField.style.setProperty('anchor-name', '--ui-date-picker-anchor');
270
+ }
271
+ }
272
+ }
273
+ _updateInputValue() {
274
+ if (this.value) {
275
+ this._inputValue = this.dateFormat ? this.dateFormat(this.value) : formatDate(this.value, this.locale);
276
+ }
277
+ else {
278
+ this._inputValue = '';
279
+ }
280
+ }
281
+ _handleDocumentClick(event) {
282
+ if (!this.contains(event.target)) {
283
+ this._isOpen = false;
284
+ }
285
+ }
286
+ _handleInputClick() {
287
+ if (!this.disabled) {
288
+ this._isOpen = !this._isOpen;
289
+ }
290
+ }
291
+ _handleInputChange(event) {
292
+ const target = event.target;
293
+ this._inputValue = target.value;
294
+ const parsedDate = parseDate(this._inputValue);
295
+ if (parsedDate) {
296
+ this.value = parsedDate;
297
+ this._dispatchChangeEvent();
298
+ }
299
+ }
300
+ _handleCalendarDateSelect(event) {
301
+ this.value = event.detail.date;
302
+ this._isOpen = false;
303
+ this._dispatchChangeEvent();
304
+ }
305
+ _handleCalendarDateCancel() {
306
+ this._isOpen = false;
307
+ }
308
+ _handleKeyDown(event) {
309
+ switch (event.key) {
310
+ case 'Escape':
311
+ this._isOpen = false;
312
+ break;
313
+ case 'ArrowDown':
314
+ if (!this._isOpen) {
315
+ event.preventDefault();
316
+ this._isOpen = true;
317
+ }
318
+ break;
319
+ case 'Enter':
320
+ if (this._isOpen) {
321
+ event.preventDefault();
322
+ this._isOpen = false;
323
+ }
324
+ break;
325
+ }
326
+ }
327
+ _dispatchChangeEvent() {
328
+ this.dispatchEvent(new CustomEvent('change', {
329
+ detail: {
330
+ value: this.value,
331
+ formattedValue: this._inputValue,
332
+ },
333
+ bubbles: true,
334
+ composed: true,
335
+ }));
336
+ }
337
+ _renderCalendarIcon() {
338
+ return html `
339
+ <ui-icon slot="suffix" icon="calendarToday" @click=${this._handleInputClick} style="cursor: pointer;"></ui-icon>
340
+ `;
341
+ }
342
+ _renderDropdown() {
343
+ if (!this._isOpen)
344
+ return null;
345
+ const currentDate = this.value || new Date();
346
+ return html `
347
+ <div class="dropdown-container">
348
+ <ui-date-picker-calendar
349
+ .year=${currentDate.getFullYear()}
350
+ .month=${currentDate.getMonth()}
351
+ .selectedDate=${this.value}
352
+ .minDate=${this.minDate}
353
+ .maxDate=${this.maxDate}
354
+ .disabledDates=${this.disabledDates}
355
+ .locale=${this.locale}
356
+ showActions
357
+ @date-select=${this._handleCalendarDateSelect}
358
+ @date-cancel=${this._handleCalendarDateCancel}
359
+ ></ui-date-picker-calendar>
360
+ </div>
361
+ `;
362
+ }
363
+ render() {
364
+ return html `
365
+ <div class="input-container">
366
+ ${this._isOpen ? html `<div class="backdrop" @click=${() => (this._isOpen = false)}></div>` : ''}
367
+ <ui-outlined-text-field
368
+ .label=${this.label}
369
+ .placeholder=${this.placeholder}
370
+ .value=${this._inputValue}
371
+ .disabled=${this.disabled}
372
+ .required=${this.required}
373
+ .errorMessage=${this.errorMessage}
374
+ .error=${this.error}
375
+ readonly
376
+ @click=${this._handleInputClick}
377
+ @input=${this._handleInputChange}
378
+ @keydown=${this._handleKeyDown}
379
+ >
380
+ ${this._renderCalendarIcon()}
381
+ </ui-outlined-text-field>
382
+ ${this._renderDropdown()}
383
+ </div>
384
+ `;
385
+ }
386
+ constructor() {
387
+ super(...arguments);
388
+ __runInitializers(this, __textField_extraInitializers);
389
+ }
390
+ static {
391
+ __runInitializers(_classThis, _classExtraInitializers);
392
+ }
393
+ };
394
+ return UiDatePickerInput = _classThis;
395
+ })();
396
+ export { UiDatePickerInput };
397
+ //# sourceMappingURL=ui-date-picker-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-date-picker-input.js","sourceRoot":"","sources":["../../../../src/md/date-picker/ui-date-picker-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, TemplateResult } from 'lit'\nimport { customElement, property, state, query } from 'lit/decorators.js'\nimport { inputStyles } from './internals/DatePicker.styles.js'\nimport { formatDate, parseDate } from './internals/DatePickerUtils.js'\nimport type { DateSelectEvent } from './internals/DatePickerCalendar.js'\nimport './internals/DatePickerCalendar.js'\nimport '../../md/text-field/ui-outlined-text-field.js'\nimport '../../md/icons/ui-icon.js'\n\n/**\n * A docked date picker that opens from a text field input.\n * Ideal for forms and date selection in medium to large layouts.\n *\n * ## Usage\n *\n * ```html\n * <ui-date-picker-input\n * label=\"Select date\"\n * placeholder=\"MM/DD/YYYY\"\n * .value=${new Date()}\n * ></ui-date-picker-input>\n * ```\n *\n * ### Custom date format\n * ```html\n * <ui-date-picker-input\n * label=\"Birth date\"\n * .dateFormat=${date => date.toLocaleDateString('en-GB')}\n * ></ui-date-picker-input>\n * ```\n */\n@customElement('ui-date-picker-input')\nexport class UiDatePickerInput extends LitElement {\n static override styles = inputStyles\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n }\n\n /**\n * The label for the input field\n */\n @property({ type: String }) accessor label = ''\n\n /**\n * Placeholder text for the input\n */\n @property({ type: String }) accessor placeholder = 'MM/DD/YYYY'\n\n /**\n * The currently selected date\n */\n @property({ type: Object }) accessor value: Date | null = null\n\n /**\n * Whether the date picker is disabled\n */\n @property({ type: Boolean }) accessor disabled = false\n\n /**\n * Whether the input is required\n */\n @property({ type: Boolean }) accessor required = false\n\n /**\n * Error message to display\n */\n @property({ type: String }) accessor errorMessage = ''\n\n /**\n * Whether the input has an error state\n */\n @property({ type: Boolean }) accessor error = false\n\n /**\n * Minimum selectable date\n */\n @property({ type: Object }) accessor minDate: Date | undefined = undefined\n\n /**\n * Maximum selectable date\n */\n @property({ type: Object }) accessor maxDate: Date | undefined = undefined\n\n /**\n * Array of disabled dates\n */\n @property({ type: Array }) accessor disabledDates: Date[] | undefined = undefined\n\n /**\n * Locale for date formatting\n */\n @property({ type: String }) accessor locale: string | undefined = undefined\n\n /**\n * Custom date format function\n */\n @property({ type: Object }) accessor dateFormat: ((date: Date) => string) | undefined = undefined\n\n @state() private accessor _isOpen = false\n\n @state() private accessor _inputValue = ''\n\n @query('ui-outlined-text-field') private accessor _textField!: HTMLElement\n\n override connectedCallback(): void {\n super.connectedCallback()\n this._updateInputValue()\n document.addEventListener('click', this._handleDocumentClick.bind(this))\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n document.removeEventListener('click', this._handleDocumentClick.bind(this))\n }\n\n override willUpdate(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has('value')) {\n this._updateInputValue()\n }\n }\n\n override updated(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has('_isOpen') && this._isOpen) {\n // Set anchor name on text field for CSS Anchor Positioning API\n if (this._textField) {\n // Using setProperty since anchorName is not in TypeScript types yet\n this._textField.style.setProperty('anchor-name', '--ui-date-picker-anchor')\n }\n }\n }\n\n private _updateInputValue(): void {\n if (this.value) {\n this._inputValue = this.dateFormat ? this.dateFormat(this.value) : formatDate(this.value, this.locale)\n } else {\n this._inputValue = ''\n }\n }\n\n private _handleDocumentClick(event: Event): void {\n if (!this.contains(event.target as Node)) {\n this._isOpen = false\n }\n }\n\n private _handleInputClick(): void {\n if (!this.disabled) {\n this._isOpen = !this._isOpen\n }\n }\n\n private _handleInputChange(event: Event): void {\n const target = event.target as HTMLInputElement\n this._inputValue = target.value\n\n const parsedDate = parseDate(this._inputValue)\n if (parsedDate) {\n this.value = parsedDate\n this._dispatchChangeEvent()\n }\n }\n\n private _handleCalendarDateSelect(event: CustomEvent<DateSelectEvent>): void {\n this.value = event.detail.date\n this._isOpen = false\n this._dispatchChangeEvent()\n }\n\n private _handleCalendarDateCancel(): void {\n this._isOpen = false\n }\n\n private _handleKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Escape':\n this._isOpen = false\n break\n case 'ArrowDown':\n if (!this._isOpen) {\n event.preventDefault()\n this._isOpen = true\n }\n break\n case 'Enter':\n if (this._isOpen) {\n event.preventDefault()\n this._isOpen = false\n }\n break\n }\n }\n\n private _dispatchChangeEvent(): void {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n value: this.value,\n formattedValue: this._inputValue,\n },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n private _renderCalendarIcon(): TemplateResult {\n return html`\n <ui-icon slot=\"suffix\" icon=\"calendarToday\" @click=${this._handleInputClick} style=\"cursor: pointer;\"></ui-icon>\n `\n }\n\n private _renderDropdown(): TemplateResult | null {\n if (!this._isOpen) return null\n\n const currentDate = this.value || new Date()\n\n return html`\n <div class=\"dropdown-container\">\n <ui-date-picker-calendar\n .year=${currentDate.getFullYear()}\n .month=${currentDate.getMonth()}\n .selectedDate=${this.value}\n .minDate=${this.minDate}\n .maxDate=${this.maxDate}\n .disabledDates=${this.disabledDates}\n .locale=${this.locale}\n showActions\n @date-select=${this._handleCalendarDateSelect}\n @date-cancel=${this._handleCalendarDateCancel}\n ></ui-date-picker-calendar>\n </div>\n `\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"input-container\">\n ${this._isOpen ? html`<div class=\"backdrop\" @click=${() => (this._isOpen = false)}></div>` : ''}\n <ui-outlined-text-field\n .label=${this.label}\n .placeholder=${this.placeholder}\n .value=${this._inputValue}\n .disabled=${this.disabled}\n .required=${this.required}\n .errorMessage=${this.errorMessage}\n .error=${this.error}\n readonly\n @click=${this._handleInputClick}\n @input=${this._handleInputChange}\n @keydown=${this._handleKeyDown}\n >\n ${this._renderCalendarIcon()}\n </ui-outlined-text-field>\n ${this._renderDropdown()}\n </div>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-date-picker-input': UiDatePickerInput\n }\n\n interface HTMLElementEventMap {\n change: CustomEvent<{\n value: Date | null\n formattedValue: string\n }>\n }\n}\n"]}
@@ -0,0 +1,119 @@
1
+ import { LitElement, TemplateResult } from 'lit';
2
+ import { DateRange } from './internals/DatePickerUtils.js';
3
+ import '../../md/dialog/ui-dialog.js';
4
+ import '../../md/button/ui-button.js';
5
+ import '../../md/icon-button/ui-icon-button.js';
6
+ import '../../md/text-field/ui-outlined-text-field.js';
7
+ import '../../md/icons/ui-icon.js';
8
+ export interface ModalInputDatePickerChangeEvent {
9
+ range: DateRange;
10
+ formattedRange: {
11
+ start: string | null;
12
+ end: string | null;
13
+ };
14
+ }
15
+ /**
16
+ * A modal date input picker for manual date entry using keyboard.
17
+ * Ideal for compact layouts and precise date entry.
18
+ *
19
+ * ## Usage
20
+ *
21
+ * ```html
22
+ * <ui-date-picker-modal-input
23
+ * .open=${true}
24
+ * .selectedRange=${{ start: new Date(), end: null }}
25
+ * @date-input-change=${this.handleRangeChange}
26
+ * @close=${this.handleClose}
27
+ * ></ui-date-picker-modal-input>
28
+ * ```
29
+ *
30
+ * ### Single date mode
31
+ * ```html
32
+ * <ui-date-picker-modal-input
33
+ * .rangeMode=${false}
34
+ * .selectedDate=${new Date()}
35
+ * ></ui-date-picker-modal-input>
36
+ * ```
37
+ */
38
+ export declare class UiDatePickerModalInput extends LitElement {
39
+ static styles: import("lit").CSSResult;
40
+ /**
41
+ * Whether the modal is open
42
+ */
43
+ accessor open: boolean;
44
+ /**
45
+ * The modal title
46
+ */
47
+ accessor title: string;
48
+ /**
49
+ * Whether to use range mode (two date inputs) or single date mode
50
+ */
51
+ accessor rangeMode: boolean;
52
+ /**
53
+ * Label for the start date (or single date)
54
+ */
55
+ accessor startLabel: string;
56
+ /**
57
+ * Label for the end date (only used in range mode)
58
+ */
59
+ accessor endLabel: string;
60
+ /**
61
+ * Placeholder for date inputs
62
+ */
63
+ accessor placeholder: string;
64
+ /**
65
+ * The selected date (single mode)
66
+ */
67
+ accessor selectedDate: Date | null;
68
+ /**
69
+ * The selected date range (range mode)
70
+ */
71
+ accessor selectedRange: DateRange | null;
72
+ /**
73
+ * Minimum selectable date
74
+ */
75
+ accessor minDate: Date | undefined;
76
+ /**
77
+ * Maximum selectable date
78
+ */
79
+ accessor maxDate: Date | undefined;
80
+ /**
81
+ * Locale for date formatting
82
+ */
83
+ accessor locale: string | undefined;
84
+ private accessor _startInput;
85
+ private accessor _endInput;
86
+ private accessor _startError;
87
+ private accessor _endError;
88
+ connectedCallback(): void;
89
+ willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
90
+ private _updateInputValues;
91
+ private _validateDate;
92
+ private _handleStartInput;
93
+ private _handleEndInput;
94
+ private _handleCancel;
95
+ private _handleConfirm;
96
+ private _dispatchChangeEvent;
97
+ private _dispatchCloseEvent;
98
+ private _renderHeader;
99
+ private _renderInputs;
100
+ private _renderActions;
101
+ render(): TemplateResult;
102
+ }
103
+ declare global {
104
+ interface HTMLElementTagNameMap {
105
+ 'ui-date-picker-modal-input': UiDatePickerModalInput;
106
+ }
107
+ interface HTMLElementEventMap {
108
+ 'date-input-change': CustomEvent<ModalInputDatePickerChangeEvent | {
109
+ date: Date;
110
+ formattedDate: string;
111
+ }>;
112
+ 'modal-input-close': CustomEvent<{
113
+ confirmed: boolean;
114
+ date?: Date | null;
115
+ range?: DateRange | null;
116
+ }>;
117
+ }
118
+ }
119
+ //# sourceMappingURL=ui-date-picker-modal-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-date-picker-modal-input.d.ts","sourceRoot":"","sources":["../../../../src/md/date-picker/ui-date-picker-modal-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAyB,MAAM,gCAAgC,CAAA;AACjF,OAAO,8BAA8B,CAAA;AACrC,OAAO,8BAA8B,CAAA;AACrC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,+CAA+C,CAAA;AACtD,OAAO,2BAA2B,CAAA;AAElC,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KACnB,CAAA;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBACa,sBAAuB,SAAQ,UAAU;IACpD,OAAgB,MAAM,0BAAc;IAEpC;;OAEG;IAC0B,QAAQ,CAAC,IAAI,UAAQ;IAElD;;OAEG;IACH,SAA8C,KAAK,SAAgB;IAEnE;;OAEG;IAC0B,QAAQ,CAAC,SAAS,UAAO;IAEtD;;OAEG;IACyB,QAAQ,CAAC,UAAU,SAAe;IAE9D;;OAEG;IACyB,QAAQ,CAAC,QAAQ,SAAa;IAE1D;;OAEG;IACyB,QAAQ,CAAC,WAAW,SAAe;IAE/D;;OAEG;IACyB,QAAQ,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAO;IAErE;;OAEG;IACyB,QAAQ,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAE3E;;OAEG;IACyB,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,SAAS,CAAY;IAE1E;;OAEG;IACyB,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,SAAS,CAAY;IAE1E;;OAEG;IACyB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAY;IAElE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAK;IAE/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAK;IAEjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAK;IAE/B,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAMpF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IA8CrB,OAAO,CAAC,cAAc;IAab,MAAM,IAAI,cAAc;CAOlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,4BAA4B,EAAE,sBAAsB,CAAA;KACrD;IAED,UAAU,mBAAmB;QAC3B,mBAAmB,EAAE,WAAW,CAC5B,+BAA+B,GAC/B;YACE,IAAI,EAAE,IAAI,CAAA;YACV,aAAa,EAAE,MAAM,CAAA;SACtB,CACJ,CAAA;QACD,mBAAmB,EAAE,WAAW,CAAC;YAC/B,SAAS,EAAE,OAAO,CAAA;YAClB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;YAClB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;SACzB,CAAC,CAAA;KACH;CACF"}