@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.
- package/build/src/elements/highlight/MarkdownStyles.d.ts.map +1 -1
- package/build/src/elements/highlight/MarkdownStyles.js +0 -13
- package/build/src/elements/highlight/MarkdownStyles.js.map +1 -1
- package/build/src/elements/http/BodyEditor.d.ts +0 -13
- package/build/src/elements/http/BodyEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyEditor.js +0 -13
- package/build/src/elements/http/BodyEditor.js.map +1 -1
- package/build/src/elements/http/BodyTextEditor.d.ts +0 -13
- package/build/src/elements/http/BodyTextEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyTextEditor.js +0 -13
- package/build/src/elements/http/BodyTextEditor.js.map +1 -1
- package/build/src/elements/http/BodyUrlEncodedEditor.d.ts +0 -13
- package/build/src/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyUrlEncodedEditor.js +0 -13
- package/build/src/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/build/src/elements/http/UrlInput.d.ts +0 -13
- package/build/src/elements/http/UrlInput.d.ts.map +1 -1
- package/build/src/elements/http/UrlInput.js +0 -13
- package/build/src/elements/http/UrlInput.js.map +1 -1
- package/build/src/index.d.ts +2 -0
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +2 -0
- package/build/src/index.js.map +1 -1
- package/build/src/md/button/internals/button.styles.js +1 -1
- package/build/src/md/button/internals/button.styles.js.map +1 -1
- package/build/src/md/date/internals/DateTime.d.ts +0 -13
- package/build/src/md/date/internals/DateTime.d.ts.map +1 -1
- package/build/src/md/date/internals/DateTime.js +0 -13
- package/build/src/md/date/internals/DateTime.js.map +1 -1
- package/build/src/md/date-picker/index.d.ts +13 -0
- package/build/src/md/date-picker/index.d.ts.map +1 -0
- package/build/src/md/date-picker/index.js +13 -0
- package/build/src/md/date-picker/index.js.map +1 -0
- package/build/src/md/date-picker/internals/DatePicker.styles.d.ts +4 -0
- package/build/src/md/date-picker/internals/DatePicker.styles.d.ts.map +1 -0
- package/build/src/md/date-picker/internals/DatePicker.styles.js +336 -0
- package/build/src/md/date-picker/internals/DatePicker.styles.js.map +1 -0
- package/build/src/md/date-picker/internals/DatePickerCalendar.d.ts +159 -0
- package/build/src/md/date-picker/internals/DatePickerCalendar.d.ts.map +1 -0
- package/build/src/md/date-picker/internals/DatePickerCalendar.js +770 -0
- package/build/src/md/date-picker/internals/DatePickerCalendar.js.map +1 -0
- package/build/src/md/date-picker/internals/DatePickerUtils.d.ts +93 -0
- package/build/src/md/date-picker/internals/DatePickerUtils.d.ts.map +1 -0
- package/build/src/md/date-picker/internals/DatePickerUtils.js +221 -0
- package/build/src/md/date-picker/internals/DatePickerUtils.js.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-input.d.ts +108 -0
- package/build/src/md/date-picker/ui-date-picker-input.d.ts.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-input.js +397 -0
- package/build/src/md/date-picker/ui-date-picker-input.js.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-modal-input.d.ts +119 -0
- package/build/src/md/date-picker/ui-date-picker-modal-input.d.ts.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-modal-input.js +473 -0
- package/build/src/md/date-picker/ui-date-picker-modal-input.js.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-modal.d.ts +108 -0
- package/build/src/md/date-picker/ui-date-picker-modal.d.ts.map +1 -0
- package/build/src/md/date-picker/ui-date-picker-modal.js +344 -0
- package/build/src/md/date-picker/ui-date-picker-modal.js.map +1 -0
- package/build/src/md/dialog/internals/Dialog.styles.d.ts.map +1 -1
- package/build/src/md/dialog/internals/Dialog.styles.js +1 -0
- package/build/src/md/dialog/internals/Dialog.styles.js.map +1 -1
- package/demo/elements/har/har2.json +1 -1
- package/demo/md/date-picker/date-picker.ts +301 -0
- package/demo/md/date-picker/index.html +171 -0
- package/demo/md/index.html +2 -0
- package/package.json +1 -1
- package/src/elements/highlight/MarkdownStyles.ts +0 -13
- package/src/elements/http/BodyEditor.ts +0 -13
- package/src/elements/http/BodyTextEditor.ts +0 -13
- package/src/elements/http/BodyUrlEncodedEditor.ts +0 -13
- package/src/elements/http/UrlInput.ts +0 -13
- package/src/index.ts +17 -0
- package/src/md/button/internals/button.styles.ts +1 -1
- package/src/md/date/internals/DateTime.ts +0 -14
- package/src/md/date-picker/README.md +184 -0
- package/src/md/date-picker/index.ts +17 -0
- package/src/md/date-picker/internals/DatePicker.styles.ts +338 -0
- package/src/md/date-picker/internals/DatePickerCalendar.ts +697 -0
- package/src/md/date-picker/internals/DatePickerUtils.ts +288 -0
- package/src/md/date-picker/ui-date-picker-input.ts +272 -0
- package/src/md/date-picker/ui-date-picker-modal-input.ts +371 -0
- package/src/md/date-picker/ui-date-picker-modal.ts +263 -0
- package/src/md/dialog/internals/Dialog.styles.ts +1 -0
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
+
import { LitElement, html } from 'lit';
|
|
3
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
4
|
+
import { modalStyles } from './internals/DatePicker.styles.js';
|
|
5
|
+
import { formatDate, parseDate } from './internals/DatePickerUtils.js';
|
|
6
|
+
import '../../md/dialog/ui-dialog.js';
|
|
7
|
+
import '../../md/button/ui-button.js';
|
|
8
|
+
import '../../md/icon-button/ui-icon-button.js';
|
|
9
|
+
import '../../md/text-field/ui-outlined-text-field.js';
|
|
10
|
+
import '../../md/icons/ui-icon.js';
|
|
11
|
+
/**
|
|
12
|
+
* A modal date input picker for manual date entry using keyboard.
|
|
13
|
+
* Ideal for compact layouts and precise date entry.
|
|
14
|
+
*
|
|
15
|
+
* ## Usage
|
|
16
|
+
*
|
|
17
|
+
* ```html
|
|
18
|
+
* <ui-date-picker-modal-input
|
|
19
|
+
* .open=${true}
|
|
20
|
+
* .selectedRange=${{ start: new Date(), end: null }}
|
|
21
|
+
* @date-input-change=${this.handleRangeChange}
|
|
22
|
+
* @close=${this.handleClose}
|
|
23
|
+
* ></ui-date-picker-modal-input>
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* ### Single date mode
|
|
27
|
+
* ```html
|
|
28
|
+
* <ui-date-picker-modal-input
|
|
29
|
+
* .rangeMode=${false}
|
|
30
|
+
* .selectedDate=${new Date()}
|
|
31
|
+
* ></ui-date-picker-modal-input>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
let UiDatePickerModalInput = (() => {
|
|
35
|
+
let _classDecorators = [customElement('ui-date-picker-modal-input')];
|
|
36
|
+
let _classDescriptor;
|
|
37
|
+
let _classExtraInitializers = [];
|
|
38
|
+
let _classThis;
|
|
39
|
+
let _classSuper = LitElement;
|
|
40
|
+
let _open_decorators;
|
|
41
|
+
let _open_initializers = [];
|
|
42
|
+
let _open_extraInitializers = [];
|
|
43
|
+
let _title_decorators;
|
|
44
|
+
let _title_initializers = [];
|
|
45
|
+
let _title_extraInitializers = [];
|
|
46
|
+
let _rangeMode_decorators;
|
|
47
|
+
let _rangeMode_initializers = [];
|
|
48
|
+
let _rangeMode_extraInitializers = [];
|
|
49
|
+
let _startLabel_decorators;
|
|
50
|
+
let _startLabel_initializers = [];
|
|
51
|
+
let _startLabel_extraInitializers = [];
|
|
52
|
+
let _endLabel_decorators;
|
|
53
|
+
let _endLabel_initializers = [];
|
|
54
|
+
let _endLabel_extraInitializers = [];
|
|
55
|
+
let _placeholder_decorators;
|
|
56
|
+
let _placeholder_initializers = [];
|
|
57
|
+
let _placeholder_extraInitializers = [];
|
|
58
|
+
let _selectedDate_decorators;
|
|
59
|
+
let _selectedDate_initializers = [];
|
|
60
|
+
let _selectedDate_extraInitializers = [];
|
|
61
|
+
let _selectedRange_decorators;
|
|
62
|
+
let _selectedRange_initializers = [];
|
|
63
|
+
let _selectedRange_extraInitializers = [];
|
|
64
|
+
let _minDate_decorators;
|
|
65
|
+
let _minDate_initializers = [];
|
|
66
|
+
let _minDate_extraInitializers = [];
|
|
67
|
+
let _maxDate_decorators;
|
|
68
|
+
let _maxDate_initializers = [];
|
|
69
|
+
let _maxDate_extraInitializers = [];
|
|
70
|
+
let _locale_decorators;
|
|
71
|
+
let _locale_initializers = [];
|
|
72
|
+
let _locale_extraInitializers = [];
|
|
73
|
+
let __startInput_decorators;
|
|
74
|
+
let __startInput_initializers = [];
|
|
75
|
+
let __startInput_extraInitializers = [];
|
|
76
|
+
let __endInput_decorators;
|
|
77
|
+
let __endInput_initializers = [];
|
|
78
|
+
let __endInput_extraInitializers = [];
|
|
79
|
+
let __startError_decorators;
|
|
80
|
+
let __startError_initializers = [];
|
|
81
|
+
let __startError_extraInitializers = [];
|
|
82
|
+
let __endError_decorators;
|
|
83
|
+
let __endError_initializers = [];
|
|
84
|
+
let __endError_extraInitializers = [];
|
|
85
|
+
var UiDatePickerModalInput = class extends _classSuper {
|
|
86
|
+
static { _classThis = this; }
|
|
87
|
+
static {
|
|
88
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
89
|
+
_open_decorators = [property({ type: Boolean })];
|
|
90
|
+
_title_decorators = [property({ type: String })];
|
|
91
|
+
_rangeMode_decorators = [property({ type: Boolean })];
|
|
92
|
+
_startLabel_decorators = [property({ type: String })];
|
|
93
|
+
_endLabel_decorators = [property({ type: String })];
|
|
94
|
+
_placeholder_decorators = [property({ type: String })];
|
|
95
|
+
_selectedDate_decorators = [property({ type: Object })];
|
|
96
|
+
_selectedRange_decorators = [property({ type: Object })];
|
|
97
|
+
_minDate_decorators = [property({ type: Object })];
|
|
98
|
+
_maxDate_decorators = [property({ type: Object })];
|
|
99
|
+
_locale_decorators = [property({ type: String })];
|
|
100
|
+
__startInput_decorators = [state()];
|
|
101
|
+
__endInput_decorators = [state()];
|
|
102
|
+
__startError_decorators = [state()];
|
|
103
|
+
__endError_decorators = [state()];
|
|
104
|
+
__esDecorate(this, null, _open_decorators, { kind: "accessor", name: "open", static: false, private: false, access: { has: obj => "open" in obj, get: obj => obj.open, set: (obj, value) => { obj.open = value; } }, metadata: _metadata }, _open_initializers, _open_extraInitializers);
|
|
105
|
+
__esDecorate(this, null, _title_decorators, { kind: "accessor", name: "title", static: false, private: false, access: { has: obj => "title" in obj, get: obj => obj.title, set: (obj, value) => { obj.title = value; } }, metadata: _metadata }, _title_initializers, _title_extraInitializers);
|
|
106
|
+
__esDecorate(this, null, _rangeMode_decorators, { kind: "accessor", name: "rangeMode", static: false, private: false, access: { has: obj => "rangeMode" in obj, get: obj => obj.rangeMode, set: (obj, value) => { obj.rangeMode = value; } }, metadata: _metadata }, _rangeMode_initializers, _rangeMode_extraInitializers);
|
|
107
|
+
__esDecorate(this, null, _startLabel_decorators, { kind: "accessor", name: "startLabel", static: false, private: false, access: { has: obj => "startLabel" in obj, get: obj => obj.startLabel, set: (obj, value) => { obj.startLabel = value; } }, metadata: _metadata }, _startLabel_initializers, _startLabel_extraInitializers);
|
|
108
|
+
__esDecorate(this, null, _endLabel_decorators, { kind: "accessor", name: "endLabel", static: false, private: false, access: { has: obj => "endLabel" in obj, get: obj => obj.endLabel, set: (obj, value) => { obj.endLabel = value; } }, metadata: _metadata }, _endLabel_initializers, _endLabel_extraInitializers);
|
|
109
|
+
__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);
|
|
110
|
+
__esDecorate(this, null, _selectedDate_decorators, { kind: "accessor", name: "selectedDate", static: false, private: false, access: { has: obj => "selectedDate" in obj, get: obj => obj.selectedDate, set: (obj, value) => { obj.selectedDate = value; } }, metadata: _metadata }, _selectedDate_initializers, _selectedDate_extraInitializers);
|
|
111
|
+
__esDecorate(this, null, _selectedRange_decorators, { kind: "accessor", name: "selectedRange", static: false, private: false, access: { has: obj => "selectedRange" in obj, get: obj => obj.selectedRange, set: (obj, value) => { obj.selectedRange = value; } }, metadata: _metadata }, _selectedRange_initializers, _selectedRange_extraInitializers);
|
|
112
|
+
__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);
|
|
113
|
+
__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);
|
|
114
|
+
__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);
|
|
115
|
+
__esDecorate(this, null, __startInput_decorators, { kind: "accessor", name: "_startInput", static: false, private: false, access: { has: obj => "_startInput" in obj, get: obj => obj._startInput, set: (obj, value) => { obj._startInput = value; } }, metadata: _metadata }, __startInput_initializers, __startInput_extraInitializers);
|
|
116
|
+
__esDecorate(this, null, __endInput_decorators, { kind: "accessor", name: "_endInput", static: false, private: false, access: { has: obj => "_endInput" in obj, get: obj => obj._endInput, set: (obj, value) => { obj._endInput = value; } }, metadata: _metadata }, __endInput_initializers, __endInput_extraInitializers);
|
|
117
|
+
__esDecorate(this, null, __startError_decorators, { kind: "accessor", name: "_startError", static: false, private: false, access: { has: obj => "_startError" in obj, get: obj => obj._startError, set: (obj, value) => { obj._startError = value; } }, metadata: _metadata }, __startError_initializers, __startError_extraInitializers);
|
|
118
|
+
__esDecorate(this, null, __endError_decorators, { kind: "accessor", name: "_endError", static: false, private: false, access: { has: obj => "_endError" in obj, get: obj => obj._endError, set: (obj, value) => { obj._endError = value; } }, metadata: _metadata }, __endError_initializers, __endError_extraInitializers);
|
|
119
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
120
|
+
UiDatePickerModalInput = _classThis = _classDescriptor.value;
|
|
121
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
122
|
+
}
|
|
123
|
+
static styles = modalStyles;
|
|
124
|
+
#open_accessor_storage = __runInitializers(this, _open_initializers, false
|
|
125
|
+
/**
|
|
126
|
+
* The modal title
|
|
127
|
+
*/
|
|
128
|
+
);
|
|
129
|
+
/**
|
|
130
|
+
* Whether the modal is open
|
|
131
|
+
*/
|
|
132
|
+
get open() { return this.#open_accessor_storage; }
|
|
133
|
+
set open(value) { this.#open_accessor_storage = value; }
|
|
134
|
+
#title_accessor_storage = (__runInitializers(this, _open_extraInitializers), __runInitializers(this, _title_initializers, 'Enter dates'
|
|
135
|
+
/**
|
|
136
|
+
* Whether to use range mode (two date inputs) or single date mode
|
|
137
|
+
*/
|
|
138
|
+
));
|
|
139
|
+
/**
|
|
140
|
+
* The modal title
|
|
141
|
+
*/
|
|
142
|
+
get title() { return this.#title_accessor_storage; }
|
|
143
|
+
set title(value) { this.#title_accessor_storage = value; }
|
|
144
|
+
#rangeMode_accessor_storage = (__runInitializers(this, _title_extraInitializers), __runInitializers(this, _rangeMode_initializers, true
|
|
145
|
+
/**
|
|
146
|
+
* Label for the start date (or single date)
|
|
147
|
+
*/
|
|
148
|
+
));
|
|
149
|
+
/**
|
|
150
|
+
* Whether to use range mode (two date inputs) or single date mode
|
|
151
|
+
*/
|
|
152
|
+
get rangeMode() { return this.#rangeMode_accessor_storage; }
|
|
153
|
+
set rangeMode(value) { this.#rangeMode_accessor_storage = value; }
|
|
154
|
+
#startLabel_accessor_storage = (__runInitializers(this, _rangeMode_extraInitializers), __runInitializers(this, _startLabel_initializers, 'Start date'
|
|
155
|
+
/**
|
|
156
|
+
* Label for the end date (only used in range mode)
|
|
157
|
+
*/
|
|
158
|
+
));
|
|
159
|
+
/**
|
|
160
|
+
* Label for the start date (or single date)
|
|
161
|
+
*/
|
|
162
|
+
get startLabel() { return this.#startLabel_accessor_storage; }
|
|
163
|
+
set startLabel(value) { this.#startLabel_accessor_storage = value; }
|
|
164
|
+
#endLabel_accessor_storage = (__runInitializers(this, _startLabel_extraInitializers), __runInitializers(this, _endLabel_initializers, 'End date'
|
|
165
|
+
/**
|
|
166
|
+
* Placeholder for date inputs
|
|
167
|
+
*/
|
|
168
|
+
));
|
|
169
|
+
/**
|
|
170
|
+
* Label for the end date (only used in range mode)
|
|
171
|
+
*/
|
|
172
|
+
get endLabel() { return this.#endLabel_accessor_storage; }
|
|
173
|
+
set endLabel(value) { this.#endLabel_accessor_storage = value; }
|
|
174
|
+
#placeholder_accessor_storage = (__runInitializers(this, _endLabel_extraInitializers), __runInitializers(this, _placeholder_initializers, 'MM/DD/YYYY'
|
|
175
|
+
/**
|
|
176
|
+
* The selected date (single mode)
|
|
177
|
+
*/
|
|
178
|
+
));
|
|
179
|
+
/**
|
|
180
|
+
* Placeholder for date inputs
|
|
181
|
+
*/
|
|
182
|
+
get placeholder() { return this.#placeholder_accessor_storage; }
|
|
183
|
+
set placeholder(value) { this.#placeholder_accessor_storage = value; }
|
|
184
|
+
#selectedDate_accessor_storage = (__runInitializers(this, _placeholder_extraInitializers), __runInitializers(this, _selectedDate_initializers, null
|
|
185
|
+
/**
|
|
186
|
+
* The selected date range (range mode)
|
|
187
|
+
*/
|
|
188
|
+
));
|
|
189
|
+
/**
|
|
190
|
+
* The selected date (single mode)
|
|
191
|
+
*/
|
|
192
|
+
get selectedDate() { return this.#selectedDate_accessor_storage; }
|
|
193
|
+
set selectedDate(value) { this.#selectedDate_accessor_storage = value; }
|
|
194
|
+
#selectedRange_accessor_storage = (__runInitializers(this, _selectedDate_extraInitializers), __runInitializers(this, _selectedRange_initializers, null
|
|
195
|
+
/**
|
|
196
|
+
* Minimum selectable date
|
|
197
|
+
*/
|
|
198
|
+
));
|
|
199
|
+
/**
|
|
200
|
+
* The selected date range (range mode)
|
|
201
|
+
*/
|
|
202
|
+
get selectedRange() { return this.#selectedRange_accessor_storage; }
|
|
203
|
+
set selectedRange(value) { this.#selectedRange_accessor_storage = value; }
|
|
204
|
+
#minDate_accessor_storage = (__runInitializers(this, _selectedRange_extraInitializers), __runInitializers(this, _minDate_initializers, undefined
|
|
205
|
+
/**
|
|
206
|
+
* Maximum selectable date
|
|
207
|
+
*/
|
|
208
|
+
));
|
|
209
|
+
/**
|
|
210
|
+
* Minimum selectable date
|
|
211
|
+
*/
|
|
212
|
+
get minDate() { return this.#minDate_accessor_storage; }
|
|
213
|
+
set minDate(value) { this.#minDate_accessor_storage = value; }
|
|
214
|
+
#maxDate_accessor_storage = (__runInitializers(this, _minDate_extraInitializers), __runInitializers(this, _maxDate_initializers, undefined
|
|
215
|
+
/**
|
|
216
|
+
* Locale for date formatting
|
|
217
|
+
*/
|
|
218
|
+
));
|
|
219
|
+
/**
|
|
220
|
+
* Maximum selectable date
|
|
221
|
+
*/
|
|
222
|
+
get maxDate() { return this.#maxDate_accessor_storage; }
|
|
223
|
+
set maxDate(value) { this.#maxDate_accessor_storage = value; }
|
|
224
|
+
#locale_accessor_storage = (__runInitializers(this, _maxDate_extraInitializers), __runInitializers(this, _locale_initializers, undefined));
|
|
225
|
+
/**
|
|
226
|
+
* Locale for date formatting
|
|
227
|
+
*/
|
|
228
|
+
get locale() { return this.#locale_accessor_storage; }
|
|
229
|
+
set locale(value) { this.#locale_accessor_storage = value; }
|
|
230
|
+
#_startInput_accessor_storage = (__runInitializers(this, _locale_extraInitializers), __runInitializers(this, __startInput_initializers, ''));
|
|
231
|
+
get _startInput() { return this.#_startInput_accessor_storage; }
|
|
232
|
+
set _startInput(value) { this.#_startInput_accessor_storage = value; }
|
|
233
|
+
#_endInput_accessor_storage = (__runInitializers(this, __startInput_extraInitializers), __runInitializers(this, __endInput_initializers, ''));
|
|
234
|
+
get _endInput() { return this.#_endInput_accessor_storage; }
|
|
235
|
+
set _endInput(value) { this.#_endInput_accessor_storage = value; }
|
|
236
|
+
#_startError_accessor_storage = (__runInitializers(this, __endInput_extraInitializers), __runInitializers(this, __startError_initializers, ''));
|
|
237
|
+
get _startError() { return this.#_startError_accessor_storage; }
|
|
238
|
+
set _startError(value) { this.#_startError_accessor_storage = value; }
|
|
239
|
+
#_endError_accessor_storage = (__runInitializers(this, __startError_extraInitializers), __runInitializers(this, __endError_initializers, ''));
|
|
240
|
+
get _endError() { return this.#_endError_accessor_storage; }
|
|
241
|
+
set _endError(value) { this.#_endError_accessor_storage = value; }
|
|
242
|
+
connectedCallback() {
|
|
243
|
+
super.connectedCallback();
|
|
244
|
+
this._updateInputValues();
|
|
245
|
+
}
|
|
246
|
+
willUpdate(changedProperties) {
|
|
247
|
+
if (changedProperties.has('selectedDate') || changedProperties.has('selectedRange')) {
|
|
248
|
+
this._updateInputValues();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
_updateInputValues() {
|
|
252
|
+
if (this.rangeMode && this.selectedRange) {
|
|
253
|
+
this._startInput = this.selectedRange.start ? formatDate(this.selectedRange.start, this.locale) : '';
|
|
254
|
+
this._endInput = this.selectedRange.end ? formatDate(this.selectedRange.end, this.locale) : '';
|
|
255
|
+
}
|
|
256
|
+
else if (!this.rangeMode && this.selectedDate) {
|
|
257
|
+
this._startInput = formatDate(this.selectedDate, this.locale);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
_validateDate(dateString, isEndDate = false) {
|
|
261
|
+
if (!dateString.trim())
|
|
262
|
+
return null;
|
|
263
|
+
const parsedDate = parseDate(dateString);
|
|
264
|
+
if (!parsedDate)
|
|
265
|
+
return null;
|
|
266
|
+
// Check min/max constraints
|
|
267
|
+
if (this.minDate && parsedDate < this.minDate)
|
|
268
|
+
return null;
|
|
269
|
+
if (this.maxDate && parsedDate > this.maxDate)
|
|
270
|
+
return null;
|
|
271
|
+
// For range mode, validate end date is after start date
|
|
272
|
+
if (this.rangeMode && isEndDate) {
|
|
273
|
+
const startDate = parseDate(this._startInput);
|
|
274
|
+
if (startDate && parsedDate < startDate)
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
return parsedDate;
|
|
278
|
+
}
|
|
279
|
+
_handleStartInput(event) {
|
|
280
|
+
const target = event.target;
|
|
281
|
+
this._startInput = target.value;
|
|
282
|
+
this._startError = '';
|
|
283
|
+
if (this._startInput.trim()) {
|
|
284
|
+
const date = this._validateDate(this._startInput);
|
|
285
|
+
if (!date) {
|
|
286
|
+
this._startError = 'Invalid date format or out of range';
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
if (this.rangeMode) {
|
|
290
|
+
const currentRange = this.selectedRange || { start: null, end: null };
|
|
291
|
+
this.selectedRange = { ...currentRange, start: date };
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
this.selectedDate = date;
|
|
295
|
+
}
|
|
296
|
+
this._dispatchChangeEvent();
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
_handleEndInput(event) {
|
|
300
|
+
const target = event.target;
|
|
301
|
+
this._endInput = target.value;
|
|
302
|
+
this._endError = '';
|
|
303
|
+
if (this._endInput.trim()) {
|
|
304
|
+
const date = this._validateDate(this._endInput, true);
|
|
305
|
+
if (!date) {
|
|
306
|
+
this._endError = 'Invalid date format, out of range, or before start date';
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
const currentRange = this.selectedRange || { start: null, end: null };
|
|
310
|
+
this.selectedRange = { ...currentRange, end: date };
|
|
311
|
+
this._dispatchChangeEvent();
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
_handleCancel() {
|
|
315
|
+
this._dispatchCloseEvent(false);
|
|
316
|
+
}
|
|
317
|
+
_handleConfirm() {
|
|
318
|
+
// Validate all inputs before confirming
|
|
319
|
+
let hasErrors = false;
|
|
320
|
+
if (this.rangeMode) {
|
|
321
|
+
if (!this._startInput.trim()) {
|
|
322
|
+
this._startError = 'Start date is required';
|
|
323
|
+
hasErrors = true;
|
|
324
|
+
}
|
|
325
|
+
else if (!this._validateDate(this._startInput)) {
|
|
326
|
+
this._startError = 'Invalid start date';
|
|
327
|
+
hasErrors = true;
|
|
328
|
+
}
|
|
329
|
+
if (!this._endInput.trim()) {
|
|
330
|
+
this._endError = 'End date is required';
|
|
331
|
+
hasErrors = true;
|
|
332
|
+
}
|
|
333
|
+
else if (!this._validateDate(this._endInput, true)) {
|
|
334
|
+
this._endError = 'Invalid end date';
|
|
335
|
+
hasErrors = true;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
if (!this._startInput.trim()) {
|
|
340
|
+
this._startError = 'Date is required';
|
|
341
|
+
hasErrors = true;
|
|
342
|
+
}
|
|
343
|
+
else if (!this._validateDate(this._startInput)) {
|
|
344
|
+
this._startError = 'Invalid date';
|
|
345
|
+
hasErrors = true;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
if (!hasErrors) {
|
|
349
|
+
this._dispatchCloseEvent(true);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
_dispatchChangeEvent() {
|
|
353
|
+
if (this.rangeMode && this.selectedRange) {
|
|
354
|
+
const event = {
|
|
355
|
+
range: this.selectedRange,
|
|
356
|
+
formattedRange: {
|
|
357
|
+
start: this.selectedRange.start ? formatDate(this.selectedRange.start, this.locale) : null,
|
|
358
|
+
end: this.selectedRange.end ? formatDate(this.selectedRange.end, this.locale) : null,
|
|
359
|
+
},
|
|
360
|
+
};
|
|
361
|
+
this.dispatchEvent(new CustomEvent('date-input-change', {
|
|
362
|
+
detail: event,
|
|
363
|
+
bubbles: true,
|
|
364
|
+
composed: true,
|
|
365
|
+
}));
|
|
366
|
+
}
|
|
367
|
+
else if (!this.rangeMode && this.selectedDate) {
|
|
368
|
+
this.dispatchEvent(new CustomEvent('date-input-change', {
|
|
369
|
+
detail: {
|
|
370
|
+
date: this.selectedDate,
|
|
371
|
+
formattedDate: formatDate(this.selectedDate, this.locale),
|
|
372
|
+
},
|
|
373
|
+
bubbles: true,
|
|
374
|
+
composed: true,
|
|
375
|
+
}));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
_dispatchCloseEvent(confirmed) {
|
|
379
|
+
this.dispatchEvent(new CustomEvent('modal-input-close', {
|
|
380
|
+
detail: {
|
|
381
|
+
confirmed,
|
|
382
|
+
date: confirmed && !this.rangeMode ? this.selectedDate : null,
|
|
383
|
+
range: confirmed && this.rangeMode ? this.selectedRange : null,
|
|
384
|
+
},
|
|
385
|
+
bubbles: true,
|
|
386
|
+
composed: true,
|
|
387
|
+
}));
|
|
388
|
+
}
|
|
389
|
+
_renderHeader() {
|
|
390
|
+
return html `
|
|
391
|
+
<div class="modal-header">
|
|
392
|
+
<h2 class="modal-title">${this.title}</h2>
|
|
393
|
+
<ui-icon-button @click=${this._handleCancel} aria-label="Close" title="Close">
|
|
394
|
+
<ui-icon icon="close"></ui-icon>
|
|
395
|
+
</ui-icon-button>
|
|
396
|
+
</div>
|
|
397
|
+
`;
|
|
398
|
+
}
|
|
399
|
+
_renderInputs() {
|
|
400
|
+
return html `
|
|
401
|
+
<div class="modal-content">
|
|
402
|
+
<div style="display: flex; flex-direction: column; gap: 16px; width: 100%; max-width: 400px;">
|
|
403
|
+
<ui-outlined-text-field
|
|
404
|
+
.label=${this.rangeMode ? this.startLabel : 'Date'}
|
|
405
|
+
.placeholder=${this.placeholder}
|
|
406
|
+
.value=${this._startInput}
|
|
407
|
+
.errorMessage=${this._startError}
|
|
408
|
+
.error=${!!this._startError}
|
|
409
|
+
@input=${this._handleStartInput}
|
|
410
|
+
>
|
|
411
|
+
<ui-icon slot="trailing-icon" icon="calendarToday"></ui-icon>
|
|
412
|
+
</ui-outlined-text-field>
|
|
413
|
+
|
|
414
|
+
${this.rangeMode
|
|
415
|
+
? html `
|
|
416
|
+
<ui-outlined-text-field
|
|
417
|
+
.label=${this.endLabel}
|
|
418
|
+
.placeholder=${this.placeholder}
|
|
419
|
+
.value=${this._endInput}
|
|
420
|
+
.errorMessage=${this._endError}
|
|
421
|
+
.error=${!!this._endError}
|
|
422
|
+
@input=${this._handleEndInput}
|
|
423
|
+
>
|
|
424
|
+
<ui-icon slot="trailing-icon" icon="calendarToday"></ui-icon>
|
|
425
|
+
</ui-outlined-text-field>
|
|
426
|
+
`
|
|
427
|
+
: ''}
|
|
428
|
+
|
|
429
|
+
<div
|
|
430
|
+
style="margin-top: 16px; padding: 16px; background: var(--ui-color-surface-variant, #e7e0ec); border-radius: 12px;"
|
|
431
|
+
>
|
|
432
|
+
<p style="margin: 0; font-size: 14px; color: var(--ui-color-on-surface-variant, #49454f);">
|
|
433
|
+
<strong>Supported formats:</strong><br />
|
|
434
|
+
MM/DD/YYYY, MM-DD-YYYY, YYYY-MM-DD
|
|
435
|
+
</p>
|
|
436
|
+
<p style="margin: 8px 0 0; font-size: 14px; color: var(--ui-color-on-surface-variant, #49454f);">
|
|
437
|
+
<strong>Examples:</strong> 12/25/2024, 12-25-2024, 2024-12-25
|
|
438
|
+
</p>
|
|
439
|
+
</div>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
`;
|
|
443
|
+
}
|
|
444
|
+
_renderActions() {
|
|
445
|
+
const hasValidInput = this.rangeMode
|
|
446
|
+
? this._startInput.trim() && this._endInput.trim() && !this._startError && !this._endError
|
|
447
|
+
: this._startInput.trim() && !this._startError;
|
|
448
|
+
return html `
|
|
449
|
+
<div class="modal-actions">
|
|
450
|
+
<ui-button color="text" @click=${this._handleCancel}>Cancel</ui-button>
|
|
451
|
+
<ui-button color="filled" @click=${this._handleConfirm} .disabled=${!hasValidInput}> Confirm </ui-button>
|
|
452
|
+
</div>
|
|
453
|
+
`;
|
|
454
|
+
}
|
|
455
|
+
render() {
|
|
456
|
+
return html `
|
|
457
|
+
<ui-dialog .open=${this.open} @close=${this._handleCancel}>
|
|
458
|
+
${this._renderHeader()} ${this._renderInputs()} ${this._renderActions()}
|
|
459
|
+
</ui-dialog>
|
|
460
|
+
`;
|
|
461
|
+
}
|
|
462
|
+
constructor() {
|
|
463
|
+
super(...arguments);
|
|
464
|
+
__runInitializers(this, __endError_extraInitializers);
|
|
465
|
+
}
|
|
466
|
+
static {
|
|
467
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
return UiDatePickerModalInput = _classThis;
|
|
471
|
+
})();
|
|
472
|
+
export { UiDatePickerModalInput };
|
|
473
|
+
//# sourceMappingURL=ui-date-picker-modal-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-date-picker-modal-input.js","sourceRoot":"","sources":["../../../../src/md/date-picker/ui-date-picker-modal-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { modalStyles } from './internals/DatePicker.styles.js'\nimport { DateRange, formatDate, parseDate } from './internals/DatePickerUtils.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/icon-button/ui-icon-button.js'\nimport '../../md/text-field/ui-outlined-text-field.js'\nimport '../../md/icons/ui-icon.js'\n\nexport interface ModalInputDatePickerChangeEvent {\n range: DateRange\n formattedRange: {\n start: string | null\n end: string | null\n }\n}\n\n/**\n * A modal date input picker for manual date entry using keyboard.\n * Ideal for compact layouts and precise date entry.\n *\n * ## Usage\n *\n * ```html\n * <ui-date-picker-modal-input\n * .open=${true}\n * .selectedRange=${{ start: new Date(), end: null }}\n * @date-input-change=${this.handleRangeChange}\n * @close=${this.handleClose}\n * ></ui-date-picker-modal-input>\n * ```\n *\n * ### Single date mode\n * ```html\n * <ui-date-picker-modal-input\n * .rangeMode=${false}\n * .selectedDate=${new Date()}\n * ></ui-date-picker-modal-input>\n * ```\n */\n@customElement('ui-date-picker-modal-input')\nexport class UiDatePickerModalInput extends LitElement {\n static override styles = modalStyles\n\n /**\n * Whether the modal is open\n */\n @property({ type: Boolean }) accessor open = false\n\n /**\n * The modal title\n */\n @property({ type: String }) override accessor title = 'Enter dates'\n\n /**\n * Whether to use range mode (two date inputs) or single date mode\n */\n @property({ type: Boolean }) accessor rangeMode = true\n\n /**\n * Label for the start date (or single date)\n */\n @property({ type: String }) accessor startLabel = 'Start date'\n\n /**\n * Label for the end date (only used in range mode)\n */\n @property({ type: String }) accessor endLabel = 'End date'\n\n /**\n * Placeholder for date inputs\n */\n @property({ type: String }) accessor placeholder = 'MM/DD/YYYY'\n\n /**\n * The selected date (single mode)\n */\n @property({ type: Object }) accessor selectedDate: Date | null = null\n\n /**\n * The selected date range (range mode)\n */\n @property({ type: Object }) accessor selectedRange: DateRange | null = null\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 * Locale for date formatting\n */\n @property({ type: String }) accessor locale: string | undefined = undefined\n\n @state() private accessor _startInput = ''\n\n @state() private accessor _endInput = ''\n\n @state() private accessor _startError = ''\n\n @state() private accessor _endError = ''\n\n override connectedCallback(): void {\n super.connectedCallback()\n this._updateInputValues()\n }\n\n override willUpdate(changedProperties: Map<string | number | symbol, unknown>): void {\n if (changedProperties.has('selectedDate') || changedProperties.has('selectedRange')) {\n this._updateInputValues()\n }\n }\n\n private _updateInputValues(): void {\n if (this.rangeMode && this.selectedRange) {\n this._startInput = this.selectedRange.start ? formatDate(this.selectedRange.start, this.locale) : ''\n this._endInput = this.selectedRange.end ? formatDate(this.selectedRange.end, this.locale) : ''\n } else if (!this.rangeMode && this.selectedDate) {\n this._startInput = formatDate(this.selectedDate, this.locale)\n }\n }\n\n private _validateDate(dateString: string, isEndDate = false): Date | null {\n if (!dateString.trim()) return null\n\n const parsedDate = parseDate(dateString)\n if (!parsedDate) return null\n\n // Check min/max constraints\n if (this.minDate && parsedDate < this.minDate) return null\n if (this.maxDate && parsedDate > this.maxDate) return null\n\n // For range mode, validate end date is after start date\n if (this.rangeMode && isEndDate) {\n const startDate = parseDate(this._startInput)\n if (startDate && parsedDate < startDate) return null\n }\n\n return parsedDate\n }\n\n private _handleStartInput(event: Event): void {\n const target = event.target as HTMLInputElement\n this._startInput = target.value\n this._startError = ''\n\n if (this._startInput.trim()) {\n const date = this._validateDate(this._startInput)\n if (!date) {\n this._startError = 'Invalid date format or out of range'\n return\n }\n\n if (this.rangeMode) {\n const currentRange = this.selectedRange || { start: null, end: null }\n this.selectedRange = { ...currentRange, start: date }\n } else {\n this.selectedDate = date\n }\n\n this._dispatchChangeEvent()\n }\n }\n\n private _handleEndInput(event: Event): void {\n const target = event.target as HTMLInputElement\n this._endInput = target.value\n this._endError = ''\n\n if (this._endInput.trim()) {\n const date = this._validateDate(this._endInput, true)\n if (!date) {\n this._endError = 'Invalid date format, out of range, or before start date'\n return\n }\n\n const currentRange = this.selectedRange || { start: null, end: null }\n this.selectedRange = { ...currentRange, end: date }\n this._dispatchChangeEvent()\n }\n }\n\n private _handleCancel(): void {\n this._dispatchCloseEvent(false)\n }\n\n private _handleConfirm(): void {\n // Validate all inputs before confirming\n let hasErrors = false\n\n if (this.rangeMode) {\n if (!this._startInput.trim()) {\n this._startError = 'Start date is required'\n hasErrors = true\n } else if (!this._validateDate(this._startInput)) {\n this._startError = 'Invalid start date'\n hasErrors = true\n }\n\n if (!this._endInput.trim()) {\n this._endError = 'End date is required'\n hasErrors = true\n } else if (!this._validateDate(this._endInput, true)) {\n this._endError = 'Invalid end date'\n hasErrors = true\n }\n } else {\n if (!this._startInput.trim()) {\n this._startError = 'Date is required'\n hasErrors = true\n } else if (!this._validateDate(this._startInput)) {\n this._startError = 'Invalid date'\n hasErrors = true\n }\n }\n\n if (!hasErrors) {\n this._dispatchCloseEvent(true)\n }\n }\n\n private _dispatchChangeEvent(): void {\n if (this.rangeMode && this.selectedRange) {\n const event: ModalInputDatePickerChangeEvent = {\n range: this.selectedRange,\n formattedRange: {\n start: this.selectedRange.start ? formatDate(this.selectedRange.start, this.locale) : null,\n end: this.selectedRange.end ? formatDate(this.selectedRange.end, this.locale) : null,\n },\n }\n\n this.dispatchEvent(\n new CustomEvent('date-input-change', {\n detail: event,\n bubbles: true,\n composed: true,\n })\n )\n } else if (!this.rangeMode && this.selectedDate) {\n this.dispatchEvent(\n new CustomEvent('date-input-change', {\n detail: {\n date: this.selectedDate,\n formattedDate: formatDate(this.selectedDate, this.locale),\n },\n bubbles: true,\n composed: true,\n })\n )\n }\n }\n\n private _dispatchCloseEvent(confirmed: boolean): void {\n this.dispatchEvent(\n new CustomEvent('modal-input-close', {\n detail: {\n confirmed,\n date: confirmed && !this.rangeMode ? this.selectedDate : null,\n range: confirmed && this.rangeMode ? this.selectedRange : null,\n },\n bubbles: true,\n composed: true,\n })\n )\n }\n\n private _renderHeader(): TemplateResult {\n return html`\n <div class=\"modal-header\">\n <h2 class=\"modal-title\">${this.title}</h2>\n <ui-icon-button @click=${this._handleCancel} aria-label=\"Close\" title=\"Close\">\n <ui-icon icon=\"close\"></ui-icon>\n </ui-icon-button>\n </div>\n `\n }\n\n private _renderInputs(): TemplateResult {\n return html`\n <div class=\"modal-content\">\n <div style=\"display: flex; flex-direction: column; gap: 16px; width: 100%; max-width: 400px;\">\n <ui-outlined-text-field\n .label=${this.rangeMode ? this.startLabel : 'Date'}\n .placeholder=${this.placeholder}\n .value=${this._startInput}\n .errorMessage=${this._startError}\n .error=${!!this._startError}\n @input=${this._handleStartInput}\n >\n <ui-icon slot=\"trailing-icon\" icon=\"calendarToday\"></ui-icon>\n </ui-outlined-text-field>\n\n ${this.rangeMode\n ? html`\n <ui-outlined-text-field\n .label=${this.endLabel}\n .placeholder=${this.placeholder}\n .value=${this._endInput}\n .errorMessage=${this._endError}\n .error=${!!this._endError}\n @input=${this._handleEndInput}\n >\n <ui-icon slot=\"trailing-icon\" icon=\"calendarToday\"></ui-icon>\n </ui-outlined-text-field>\n `\n : ''}\n\n <div\n style=\"margin-top: 16px; padding: 16px; background: var(--ui-color-surface-variant, #e7e0ec); border-radius: 12px;\"\n >\n <p style=\"margin: 0; font-size: 14px; color: var(--ui-color-on-surface-variant, #49454f);\">\n <strong>Supported formats:</strong><br />\n MM/DD/YYYY, MM-DD-YYYY, YYYY-MM-DD\n </p>\n <p style=\"margin: 8px 0 0; font-size: 14px; color: var(--ui-color-on-surface-variant, #49454f);\">\n <strong>Examples:</strong> 12/25/2024, 12-25-2024, 2024-12-25\n </p>\n </div>\n </div>\n </div>\n `\n }\n\n private _renderActions(): TemplateResult {\n const hasValidInput = this.rangeMode\n ? this._startInput.trim() && this._endInput.trim() && !this._startError && !this._endError\n : this._startInput.trim() && !this._startError\n\n return html`\n <div class=\"modal-actions\">\n <ui-button color=\"text\" @click=${this._handleCancel}>Cancel</ui-button>\n <ui-button color=\"filled\" @click=${this._handleConfirm} .disabled=${!hasValidInput}> Confirm </ui-button>\n </div>\n `\n }\n\n override render(): TemplateResult {\n return html`\n <ui-dialog .open=${this.open} @close=${this._handleCancel}>\n ${this._renderHeader()} ${this._renderInputs()} ${this._renderActions()}\n </ui-dialog>\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui-date-picker-modal-input': UiDatePickerModalInput\n }\n\n interface HTMLElementEventMap {\n 'date-input-change': CustomEvent<\n | ModalInputDatePickerChangeEvent\n | {\n date: Date\n formattedDate: string\n }\n >\n 'modal-input-close': CustomEvent<{\n confirmed: boolean\n date?: Date | null\n range?: DateRange | null\n }>\n }\n}\n"]}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit';
|
|
2
|
+
import { DateRange } from './internals/DatePickerUtils.js';
|
|
3
|
+
import './internals/DatePickerCalendar.js';
|
|
4
|
+
import '../../md/dialog/ui-dialog.js';
|
|
5
|
+
import '../../md/button/ui-button.js';
|
|
6
|
+
import '../../md/icon-button/ui-icon-button.js';
|
|
7
|
+
import '../../md/icons/ui-icon.js';
|
|
8
|
+
export interface ModalDatePickerChangeEvent {
|
|
9
|
+
range: DateRange;
|
|
10
|
+
formattedRange: {
|
|
11
|
+
start: string | null;
|
|
12
|
+
end: string | null;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A modal date picker for selecting date ranges.
|
|
17
|
+
* Extends full-screen and is ideal for date range selection like flight bookings.
|
|
18
|
+
*
|
|
19
|
+
* ## Usage
|
|
20
|
+
*
|
|
21
|
+
* ```html
|
|
22
|
+
* <ui-date-picker-modal
|
|
23
|
+
* .open=${true}
|
|
24
|
+
* .selectedRange=${{ start: new Date(), end: null }}
|
|
25
|
+
* @change=${this.handleRangeChange}
|
|
26
|
+
* @close=${this.handleClose}
|
|
27
|
+
* ></ui-date-picker-modal>
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* ### Custom labels
|
|
31
|
+
* ```html
|
|
32
|
+
* <ui-date-picker-modal
|
|
33
|
+
* title="Select travel dates"
|
|
34
|
+
* startLabel="Check-in"
|
|
35
|
+
* endLabel="Check-out"
|
|
36
|
+
* ></ui-date-picker-modal>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare class UiDatePickerModal extends LitElement {
|
|
40
|
+
static styles: import("lit").CSSResult;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the modal is open
|
|
43
|
+
*/
|
|
44
|
+
accessor open: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* The modal title
|
|
47
|
+
*/
|
|
48
|
+
accessor title: string;
|
|
49
|
+
/**
|
|
50
|
+
* Label for the start date
|
|
51
|
+
*/
|
|
52
|
+
accessor startLabel: string;
|
|
53
|
+
/**
|
|
54
|
+
* Label for the end date
|
|
55
|
+
*/
|
|
56
|
+
accessor endLabel: string;
|
|
57
|
+
/**
|
|
58
|
+
* The selected date range
|
|
59
|
+
*/
|
|
60
|
+
accessor selectedRange: DateRange | null;
|
|
61
|
+
/**
|
|
62
|
+
* Minimum selectable date
|
|
63
|
+
*/
|
|
64
|
+
accessor minDate: Date | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Maximum selectable date
|
|
67
|
+
*/
|
|
68
|
+
accessor maxDate: Date | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Array of disabled dates
|
|
71
|
+
*/
|
|
72
|
+
accessor disabledDates: Date[] | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Locale for date formatting
|
|
75
|
+
*/
|
|
76
|
+
accessor locale: string | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Whether to show edit/calendar toggle button
|
|
79
|
+
*/
|
|
80
|
+
accessor showModeToggle: boolean;
|
|
81
|
+
private accessor _isInputMode;
|
|
82
|
+
private _handleRangeSelect;
|
|
83
|
+
private _handleCancel;
|
|
84
|
+
private _handleConfirm;
|
|
85
|
+
private _handleModeToggle;
|
|
86
|
+
private _dispatchChangeEvent;
|
|
87
|
+
private _dispatchCloseEvent;
|
|
88
|
+
private _renderHeader;
|
|
89
|
+
private _renderDateDisplay;
|
|
90
|
+
private _renderCalendar;
|
|
91
|
+
private _renderInputMode;
|
|
92
|
+
private _renderContent;
|
|
93
|
+
private _renderActions;
|
|
94
|
+
render(): TemplateResult;
|
|
95
|
+
}
|
|
96
|
+
declare global {
|
|
97
|
+
interface HTMLElementTagNameMap {
|
|
98
|
+
'ui-date-picker-modal': UiDatePickerModal;
|
|
99
|
+
}
|
|
100
|
+
interface HTMLElementEventMap {
|
|
101
|
+
'date-range-change': CustomEvent<ModalDatePickerChangeEvent>;
|
|
102
|
+
'close': CustomEvent<{
|
|
103
|
+
confirmed: boolean;
|
|
104
|
+
range: DateRange | null;
|
|
105
|
+
}>;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=ui-date-picker-modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-date-picker-modal.d.ts","sourceRoot":"","sources":["../../../../src/md/date-picker/ui-date-picker-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAA;AAGtD,OAAO,EAAE,SAAS,EAAc,MAAM,gCAAgC,CAAA;AAEtE,OAAO,mCAAmC,CAAA;AAC1C,OAAO,8BAA8B,CAAA;AACrC,OAAO,8BAA8B,CAAA;AACrC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,2BAA2B,CAAA;AAElC,MAAM,WAAW,0BAA0B;IACzC,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;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAc;IAEpC;;OAEG;IAC0B,QAAQ,CAAC,IAAI,UAAQ;IAElD;;OAEG;IACH,SAA8C,KAAK,SAAiB;IAEpE;;OAEG;IACyB,QAAQ,CAAC,UAAU,SAAe;IAE9D;;OAEG;IACyB,QAAQ,CAAC,QAAQ,SAAa;IAE1D;;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;IACwB,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,SAAS,CAAY;IAEjF;;OAEG;IACyB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAY;IAE3E;;OAEG;IAC0B,QAAQ,CAAC,cAAc,UAAO;IAElD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IAE9C,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IAWb,MAAM,IAAI,cAAc;CAOlC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,iBAAiB,CAAA;KAC1C;IAED,UAAU,mBAAmB;QAC3B,mBAAmB,EAAE,WAAW,CAAC,0BAA0B,CAAC,CAAA;QAC5D,OAAO,EAAE,WAAW,CAAC;YACnB,SAAS,EAAE,OAAO,CAAA;YAClB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;SACxB,CAAC,CAAA;KACH;CACF"}
|