@leavittsoftware/web 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/titanium/date-input/date-input.d.ts +134 -0
- package/titanium/date-input/date-input.js +483 -0
- package/titanium/date-input/date-input.js.map +1 -0
- package/titanium/date-range-selector/date-range-selector.d.ts +29 -17
- package/titanium/date-range-selector/date-range-selector.js +322 -117
- package/titanium/date-range-selector/date-range-selector.js.map +1 -1
- package/titanium/date-range-selector/types/date-ranges.js +9 -9
- package/titanium/date-range-selector/types/date-ranges.js.map +1 -1
- package/titanium/date-range-selector/types/range-label.d.ts +3 -1
- package/titanium/date-range-selector/types/range-label.js +11 -0
- package/titanium/date-range-selector/types/range-label.js.map +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import '@material/web/textfield/outlined-text-field';
|
|
2
1
|
import '@material/web/icon/icon';
|
|
3
|
-
import '@material/web/
|
|
4
|
-
import '@material/web/
|
|
2
|
+
import '@material/web/field/outlined-field';
|
|
3
|
+
import '@material/web/menu/menu';
|
|
4
|
+
import '@material/web/button/text-button';
|
|
5
|
+
import '@material/web/list/list';
|
|
6
|
+
import '@material/web/list/list-item';
|
|
7
|
+
import '../date-input/date-input';
|
|
5
8
|
import { LitElement, PropertyValues } from 'lit';
|
|
6
|
-
import { MdOutlinedTextField } from '@material/web/textfield/outlined-text-field';
|
|
7
|
-
import { MdOutlinedSelect } from '@material/web/select/outlined-select.js';
|
|
8
9
|
import { DateRangeOption } from './types/date-range-option';
|
|
10
|
+
import { TitaniumDateInput } from '../date-input/date-input';
|
|
9
11
|
/**
|
|
10
12
|
* Date range selector that allows selection from a list of pre-defined ranges or a custom range
|
|
11
13
|
*
|
|
@@ -16,6 +18,15 @@ import { DateRangeOption } from './types/date-range-option';
|
|
|
16
18
|
*/
|
|
17
19
|
export declare class TitaniumDateRangeSelector extends LitElement {
|
|
18
20
|
#private;
|
|
21
|
+
/**
|
|
22
|
+
* The selected selected range.
|
|
23
|
+
*/
|
|
24
|
+
accessor range: string;
|
|
25
|
+
/**
|
|
26
|
+
// * The selected start date.
|
|
27
|
+
// */
|
|
28
|
+
accessor startDate: string;
|
|
29
|
+
accessor endDate: string;
|
|
19
30
|
/**
|
|
20
31
|
* Sets floating label value.
|
|
21
32
|
*/
|
|
@@ -25,30 +36,31 @@ export declare class TitaniumDateRangeSelector extends LitElement {
|
|
|
25
36
|
*/
|
|
26
37
|
accessor enableTime: boolean;
|
|
27
38
|
/**
|
|
28
|
-
*
|
|
39
|
+
* Whether or not the input should be disabled
|
|
29
40
|
*/
|
|
30
|
-
accessor
|
|
41
|
+
accessor disabled: boolean;
|
|
31
42
|
/**
|
|
32
43
|
* Override default ranges with custom options. Needs to contain, at least, 'allTime'.
|
|
33
44
|
*/
|
|
34
45
|
accessor customDateRanges: Map<string, DateRangeOption> | null;
|
|
35
46
|
/**
|
|
36
|
-
*
|
|
37
|
-
|
|
38
|
-
accessor startDate: string;
|
|
39
|
-
/**
|
|
40
|
-
* The selected end date.
|
|
47
|
+
* Conveys additional information below the text field, such as how it should
|
|
48
|
+
* be used.
|
|
41
49
|
*/
|
|
42
|
-
accessor
|
|
43
|
-
protected accessor startDateField:
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
accessor supportingText: string;
|
|
51
|
+
protected accessor startDateField: TitaniumDateInput;
|
|
52
|
+
private accessor menu;
|
|
53
|
+
private accessor list;
|
|
54
|
+
private accessor proposedRange;
|
|
55
|
+
private accessor proposedStartDate;
|
|
56
|
+
private accessor proposedEndDate;
|
|
57
|
+
private accessor open;
|
|
58
|
+
private accessor focused;
|
|
46
59
|
updated(changedProps: PropertyValues<this>): Promise<void>;
|
|
47
60
|
/**
|
|
48
61
|
* resets the validity of the start and end date inputs
|
|
49
62
|
*/
|
|
50
63
|
reset(): Promise<void>;
|
|
51
|
-
reportValidity(): boolean;
|
|
52
64
|
static styles: import("lit").CSSResult;
|
|
53
65
|
render(): import("lit-html").TemplateResult<1>;
|
|
54
66
|
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import '@material/web/textfield/outlined-text-field';
|
|
3
2
|
import '@material/web/icon/icon';
|
|
4
|
-
import '@material/web/
|
|
5
|
-
import '@material/web/
|
|
6
|
-
import
|
|
3
|
+
import '@material/web/field/outlined-field';
|
|
4
|
+
import '@material/web/menu/menu';
|
|
5
|
+
import '@material/web/button/text-button';
|
|
6
|
+
import '@material/web/list/list';
|
|
7
|
+
import '@material/web/list/list-item';
|
|
8
|
+
import '../date-input/date-input';
|
|
7
9
|
import { css, html, LitElement } from 'lit';
|
|
8
|
-
import { property, customElement, query } from 'lit/decorators.js';
|
|
10
|
+
import { property, customElement, query, state } from 'lit/decorators.js';
|
|
9
11
|
import dayjs from 'dayjs/esm';
|
|
10
|
-
import { Debouncer } from '../helpers/helpers';
|
|
11
|
-
import { DateRangeChangedEvent } from './date-range-change-event';
|
|
12
12
|
import { DateTimeRanges } from './types/date-time-ranges';
|
|
13
13
|
import { DateRanges } from './types/date-ranges';
|
|
14
|
+
import { humanizeRange } from './types/range-label';
|
|
15
|
+
import { redispatchEvent } from '@material/web/internal/controller/events';
|
|
14
16
|
/**
|
|
15
17
|
* Date range selector that allows selection from a list of pre-defined ranges or a custom range
|
|
16
18
|
*
|
|
@@ -20,6 +22,24 @@ import { DateRanges } from './types/date-ranges';
|
|
|
20
22
|
*
|
|
21
23
|
*/
|
|
22
24
|
let TitaniumDateRangeSelector = class TitaniumDateRangeSelector extends LitElement {
|
|
25
|
+
#range_accessor_storage = 'custom';
|
|
26
|
+
/**
|
|
27
|
+
* The selected selected range.
|
|
28
|
+
*/
|
|
29
|
+
get range() { return this.#range_accessor_storage; }
|
|
30
|
+
set range(value) { this.#range_accessor_storage = value; }
|
|
31
|
+
#startDate_accessor_storage = '';
|
|
32
|
+
/**
|
|
33
|
+
// * The selected start date.
|
|
34
|
+
// */
|
|
35
|
+
get startDate() { return this.#startDate_accessor_storage; }
|
|
36
|
+
set startDate(value) { this.#startDate_accessor_storage = value; }
|
|
37
|
+
#endDate_accessor_storage = '';
|
|
38
|
+
// /**
|
|
39
|
+
// * The selected end date.
|
|
40
|
+
// */
|
|
41
|
+
get endDate() { return this.#endDate_accessor_storage; }
|
|
42
|
+
set endDate(value) { this.#endDate_accessor_storage = value; }
|
|
23
43
|
#label_accessor_storage = '';
|
|
24
44
|
/**
|
|
25
45
|
* Sets floating label value.
|
|
@@ -32,42 +52,60 @@ let TitaniumDateRangeSelector = class TitaniumDateRangeSelector extends LitEleme
|
|
|
32
52
|
*/
|
|
33
53
|
get enableTime() { return this.#enableTime_accessor_storage; }
|
|
34
54
|
set enableTime(value) { this.#enableTime_accessor_storage = value; }
|
|
35
|
-
#
|
|
55
|
+
#disabled_accessor_storage = false;
|
|
36
56
|
/**
|
|
37
|
-
*
|
|
57
|
+
* Whether or not the input should be disabled
|
|
38
58
|
*/
|
|
39
|
-
get
|
|
40
|
-
set
|
|
59
|
+
get disabled() { return this.#disabled_accessor_storage; }
|
|
60
|
+
set disabled(value) { this.#disabled_accessor_storage = value; }
|
|
41
61
|
#customDateRanges_accessor_storage = null;
|
|
42
62
|
/**
|
|
43
63
|
* Override default ranges with custom options. Needs to contain, at least, 'allTime'.
|
|
44
64
|
*/
|
|
45
65
|
get customDateRanges() { return this.#customDateRanges_accessor_storage; }
|
|
46
66
|
set customDateRanges(value) { this.#customDateRanges_accessor_storage = value; }
|
|
47
|
-
#
|
|
48
|
-
/**
|
|
49
|
-
* The selected start date.
|
|
50
|
-
*/
|
|
51
|
-
get startDate() { return this.#startDate_accessor_storage; }
|
|
52
|
-
set startDate(value) { this.#startDate_accessor_storage = value; }
|
|
53
|
-
#endDate_accessor_storage = '';
|
|
67
|
+
#supportingText_accessor_storage = '';
|
|
54
68
|
/**
|
|
55
|
-
*
|
|
69
|
+
* Conveys additional information below the text field, such as how it should
|
|
70
|
+
* be used.
|
|
56
71
|
*/
|
|
57
|
-
get
|
|
58
|
-
set
|
|
72
|
+
get supportingText() { return this.#supportingText_accessor_storage; }
|
|
73
|
+
set supportingText(value) { this.#supportingText_accessor_storage = value; }
|
|
59
74
|
#startDateField_accessor_storage;
|
|
60
75
|
get startDateField() { return this.#startDateField_accessor_storage; }
|
|
61
76
|
set startDateField(value) { this.#startDateField_accessor_storage = value; }
|
|
62
|
-
#
|
|
63
|
-
get
|
|
64
|
-
set
|
|
65
|
-
#
|
|
66
|
-
get
|
|
67
|
-
set
|
|
77
|
+
#menu_accessor_storage;
|
|
78
|
+
get menu() { return this.#menu_accessor_storage; }
|
|
79
|
+
set menu(value) { this.#menu_accessor_storage = value; }
|
|
80
|
+
#list_accessor_storage;
|
|
81
|
+
get list() { return this.#list_accessor_storage; }
|
|
82
|
+
set list(value) { this.#list_accessor_storage = value; }
|
|
83
|
+
#proposedRange_accessor_storage = 'custom';
|
|
84
|
+
get proposedRange() { return this.#proposedRange_accessor_storage; }
|
|
85
|
+
set proposedRange(value) { this.#proposedRange_accessor_storage = value; }
|
|
86
|
+
#proposedStartDate_accessor_storage = '';
|
|
87
|
+
get proposedStartDate() { return this.#proposedStartDate_accessor_storage; }
|
|
88
|
+
set proposedStartDate(value) { this.#proposedStartDate_accessor_storage = value; }
|
|
89
|
+
#proposedEndDate_accessor_storage = '';
|
|
90
|
+
get proposedEndDate() { return this.#proposedEndDate_accessor_storage; }
|
|
91
|
+
set proposedEndDate(value) { this.#proposedEndDate_accessor_storage = value; }
|
|
92
|
+
#open_accessor_storage;
|
|
93
|
+
get open() { return this.#open_accessor_storage; }
|
|
94
|
+
set open(value) { this.#open_accessor_storage = value; }
|
|
95
|
+
#focused_accessor_storage = false;
|
|
96
|
+
get focused() { return this.#focused_accessor_storage; }
|
|
97
|
+
set focused(value) { this.#focused_accessor_storage = value; }
|
|
68
98
|
async updated(changedProps) {
|
|
99
|
+
if (changedProps.has('range')) {
|
|
100
|
+
const range = this.#getRange(this.range);
|
|
101
|
+
if (range) {
|
|
102
|
+
this.startDate = range.startDate;
|
|
103
|
+
this.endDate = range.endDate;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
69
106
|
if (changedProps.has('endDate') || changedProps.has('startDate')) {
|
|
70
|
-
this
|
|
107
|
+
this.range =
|
|
108
|
+
Array.from(this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges).find((o) => o[1].startDate === this.startDate && o[1].endDate === this.endDate)?.[0] || 'custom';
|
|
71
109
|
}
|
|
72
110
|
}
|
|
73
111
|
/**
|
|
@@ -76,52 +114,99 @@ let TitaniumDateRangeSelector = class TitaniumDateRangeSelector extends LitEleme
|
|
|
76
114
|
async reset() {
|
|
77
115
|
this.range = 'allTime';
|
|
78
116
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.startDateField.setCustomValidity('From date must be before to date');
|
|
82
|
-
this.startDateField.reportValidity();
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
this.startDateField.setCustomValidity('');
|
|
86
|
-
this.startDateField.reportValidity();
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
#dateChangedDebouncer = new Debouncer(async () => {
|
|
90
|
-
//Keep range selector up to date with new date selection
|
|
91
|
-
this.range =
|
|
92
|
-
Array.from(this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges).find((o) => o[1].startDate === this.startDate && o[1].endDate === this.endDate)?.[0] || 'custom';
|
|
93
|
-
this.#notifyChangeIfValid();
|
|
94
|
-
}, 300);
|
|
95
|
-
#notifyChangeIfValid() {
|
|
96
|
-
if (this.reportValidity()) {
|
|
97
|
-
/**
|
|
98
|
-
* @ignore
|
|
99
|
-
*/
|
|
100
|
-
this.dispatchEvent(new DateRangeChangedEvent(this.range, this.startDate, this.endDate));
|
|
101
|
-
}
|
|
117
|
+
#validateDates(startDate, endDate) {
|
|
118
|
+
return !(!!startDate && !!endDate && dayjs(startDate).isAfter(dayjs(endDate)));
|
|
102
119
|
}
|
|
103
120
|
static { this.styles = css `
|
|
104
121
|
:host {
|
|
105
122
|
display: flex;
|
|
106
|
-
|
|
107
|
-
|
|
123
|
+
position: relative;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
main {
|
|
127
|
+
display: grid;
|
|
128
|
+
grid:
|
|
129
|
+
'list inputs'
|
|
130
|
+
'buttons buttons' / 220px minmax(300px, 1fr);
|
|
131
|
+
gap: 0 24px;
|
|
132
|
+
margin: 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
menu-actions {
|
|
136
|
+
grid-area: buttons;
|
|
137
|
+
display: flex;
|
|
138
|
+
flex-direction: row;
|
|
139
|
+
|
|
140
|
+
justify-content: flex-end;
|
|
141
|
+
|
|
142
|
+
gap: 12px;
|
|
143
|
+
padding-top: 12px;
|
|
144
|
+
border-top: 1px solid var(--md-sys-color-outline-variant);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
md-outlined-field {
|
|
148
|
+
width: 100%;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
md-outlined-field md-icon {
|
|
152
|
+
margin: 0 12px;
|
|
108
153
|
}
|
|
109
154
|
|
|
110
|
-
md-
|
|
111
|
-
|
|
112
|
-
|
|
155
|
+
md-list {
|
|
156
|
+
grid-area: list;
|
|
157
|
+
--md-list-container-color: --md-sys-color-surface-container;
|
|
158
|
+
|
|
159
|
+
max-height: 260px;
|
|
160
|
+
overflow-y: auto;
|
|
161
|
+
border-right: 1px solid var(--md-sys-color-outline-variant);
|
|
113
162
|
}
|
|
114
163
|
|
|
115
|
-
md-
|
|
116
|
-
|
|
117
|
-
flex-basis: calc(25% - 64px);
|
|
118
|
-
flex-grow: 1;
|
|
164
|
+
md-list-item[selected] {
|
|
165
|
+
background-color: rgb(from var(--md-sys-color-primary) r g b / 0.18);
|
|
119
166
|
}
|
|
120
167
|
|
|
121
168
|
@-moz-document url-prefix() {
|
|
122
|
-
md-
|
|
123
|
-
--md-
|
|
124
|
-
|
|
169
|
+
md-list-item[selected] {
|
|
170
|
+
background-color: var(--md-sys-color-outline-variant);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
input-container {
|
|
175
|
+
grid-area: inputs;
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-direction: column;
|
|
178
|
+
justify-content: center;
|
|
179
|
+
gap: 24px;
|
|
180
|
+
|
|
181
|
+
margin-right: 16px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
span[error] {
|
|
185
|
+
font-size: 12px;
|
|
186
|
+
margin-top: -18px;
|
|
187
|
+
color: var(--md-sys-color-error, #b3261e);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
[invisible] {
|
|
191
|
+
visibility: hidden;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@media (max-width: 450px) {
|
|
195
|
+
main {
|
|
196
|
+
grid:
|
|
197
|
+
'inputs'
|
|
198
|
+
'list'
|
|
199
|
+
'buttons' / 1fr;
|
|
200
|
+
min-width: 280px;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
input-container {
|
|
204
|
+
margin: 24px 24px 0 24px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
md-list {
|
|
208
|
+
max-height: 190px;
|
|
209
|
+
border-top: 1px solid var(--md-sys-color-outline-variant);
|
|
125
210
|
}
|
|
126
211
|
}
|
|
127
212
|
`; }
|
|
@@ -134,56 +219,164 @@ let TitaniumDateRangeSelector = class TitaniumDateRangeSelector extends LitEleme
|
|
|
134
219
|
}
|
|
135
220
|
return DateRanges.get(key);
|
|
136
221
|
}
|
|
222
|
+
#scrollSelectedListItemIntoView(focusItemToo = false) {
|
|
223
|
+
if (!this.list) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const items = this.list.items;
|
|
227
|
+
const selectedItem = items.find((o) => o.hasAttribute('selected')) || items[0];
|
|
228
|
+
if (selectedItem) {
|
|
229
|
+
this.list.scrollTop = selectedItem.offsetTop - 10;
|
|
230
|
+
selectedItem.tabIndex = 0;
|
|
231
|
+
if (focusItemToo) {
|
|
232
|
+
selectedItem.focus();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
137
236
|
render() {
|
|
138
237
|
return html `
|
|
139
|
-
<md-outlined-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
238
|
+
<md-outlined-field
|
|
239
|
+
aria-haspopup="listbox"
|
|
240
|
+
role="combobox"
|
|
241
|
+
part="field"
|
|
242
|
+
id="field"
|
|
243
|
+
tabindex=${this.disabled ? '-1' : '0'}
|
|
244
|
+
aria-describedby="description"
|
|
245
|
+
aria-controls="listbox"
|
|
246
|
+
label=${this.label}
|
|
247
|
+
.focused=${this.focused || this.open}
|
|
248
|
+
populated
|
|
249
|
+
.disabled=${this.disabled}
|
|
250
|
+
has-end
|
|
251
|
+
supporting-text=${this.supportingText}
|
|
252
|
+
@keydown=${(event) => {
|
|
253
|
+
if (this.open || this.disabled || !this.menu) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
const isOpenKey = event.code === 'Space' || event.code === 'ArrowDown' || event.code === 'Enter';
|
|
257
|
+
if (isOpenKey) {
|
|
258
|
+
event.preventDefault();
|
|
259
|
+
this.open = true;
|
|
260
|
+
return;
|
|
153
261
|
}
|
|
154
262
|
}}
|
|
263
|
+
@click=${() => (this.open = true)}
|
|
264
|
+
@focus=${() => (this.focused = true)}
|
|
265
|
+
@blur=${() => (this.focused = false)}
|
|
266
|
+
>
|
|
267
|
+
<!-- need to render so that line-height can apply and give it a
|
|
268
|
+
non-zero height -->
|
|
269
|
+
<!-- prettier-ignore -->
|
|
270
|
+
<div>${humanizeRange(this.range, this.startDate, this.endDate, this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges) || html ` `}</div>
|
|
271
|
+
|
|
272
|
+
<md-icon slot="start">${this.#getRange(this.range)?.icon || 'date_range'}</md-icon>
|
|
273
|
+
<md-icon slot="end">${this.open ? 'arrow_drop_up' : 'arrow_drop_down'}</md-icon>
|
|
274
|
+
</md-outlined-field>
|
|
275
|
+
|
|
276
|
+
<!-- stay-open-on-focusout -->
|
|
277
|
+
<md-menu
|
|
278
|
+
default-focus="none"
|
|
279
|
+
id="menu"
|
|
280
|
+
anchor="field"
|
|
281
|
+
.open=${this.open}
|
|
282
|
+
@closing=${(e) => {
|
|
283
|
+
this.open = false;
|
|
284
|
+
redispatchEvent(this, e);
|
|
285
|
+
}}
|
|
286
|
+
@opening=${async (e) => {
|
|
287
|
+
this.proposedEndDate = this.endDate;
|
|
288
|
+
this.proposedStartDate = this.startDate;
|
|
289
|
+
this.proposedRange = this.range;
|
|
290
|
+
redispatchEvent(this, e);
|
|
291
|
+
await this.updateComplete;
|
|
292
|
+
this.#scrollSelectedListItemIntoView();
|
|
293
|
+
}}
|
|
155
294
|
>
|
|
156
|
-
<
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
295
|
+
<main>
|
|
296
|
+
<md-list>
|
|
297
|
+
${Array.from(this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges).map((o) => html `<md-list-item
|
|
298
|
+
type="button"
|
|
299
|
+
?selected=${this.proposedRange === o[0]}
|
|
300
|
+
@click=${() => {
|
|
301
|
+
this.proposedRange = o[0];
|
|
302
|
+
const range = this.#getRange(o[0]);
|
|
303
|
+
if (range) {
|
|
304
|
+
this.proposedStartDate = range.startDate ?? '';
|
|
305
|
+
this.proposedEndDate = range.endDate ?? '';
|
|
306
|
+
}
|
|
307
|
+
}}
|
|
308
|
+
value=${o[0]}
|
|
309
|
+
>
|
|
310
|
+
<md-icon slot="start">${o[1].icon}</md-icon>
|
|
311
|
+
<div slot="headline">${o[1].name}</div>
|
|
312
|
+
</md-list-item>`)}
|
|
313
|
+
<md-list-item type="button" ?selected=${this.proposedRange === 'custom'} @click=${() => (this.proposedRange = 'custom')} value="custom">
|
|
314
|
+
<md-icon slot="start">date_range</md-icon>
|
|
315
|
+
<div slot="headline">Custom range</div>
|
|
316
|
+
</md-list-item>
|
|
317
|
+
</md-list>
|
|
318
|
+
<input-container>
|
|
319
|
+
<titanium-date-input
|
|
320
|
+
start-date
|
|
321
|
+
label="From"
|
|
322
|
+
type=${this.enableTime ? 'datetime-local' : 'date'}
|
|
323
|
+
.value=${this.proposedStartDate ?? ''}
|
|
324
|
+
@change=${async (e) => {
|
|
325
|
+
this.proposedStartDate = e.target.value ?? '';
|
|
326
|
+
this.proposedRange =
|
|
327
|
+
Array.from(this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges).find((o) => o[1].startDate === this.proposedStartDate && o[1].endDate === this.proposedEndDate)?.[0] || 'custom';
|
|
328
|
+
await this.updateComplete;
|
|
329
|
+
this.#scrollSelectedListItemIntoView();
|
|
330
|
+
}}
|
|
331
|
+
></titanium-date-input>
|
|
332
|
+
|
|
333
|
+
<titanium-date-input
|
|
334
|
+
end-date
|
|
335
|
+
label="To"
|
|
336
|
+
type=${this.enableTime ? 'datetime-local' : 'date'}
|
|
337
|
+
.value=${this.proposedEndDate ?? ''}
|
|
338
|
+
@change=${async (e) => {
|
|
339
|
+
this.proposedEndDate = e.target.value ?? '';
|
|
340
|
+
this.proposedRange =
|
|
341
|
+
Array.from(this.customDateRanges ? this.customDateRanges : this.enableTime ? DateTimeRanges : DateRanges).find((o) => o[1].startDate === this.proposedStartDate && o[1].endDate === this.proposedEndDate)?.[0] || 'custom';
|
|
342
|
+
await this.updateComplete;
|
|
343
|
+
this.#scrollSelectedListItemIntoView();
|
|
344
|
+
}}
|
|
345
|
+
>
|
|
346
|
+
</titanium-date-input>
|
|
347
|
+
<span error ?invisible=${this.#validateDates(this.proposedStartDate, this.proposedEndDate)}>From date cannot start after To date</span>
|
|
348
|
+
</input-container>
|
|
349
|
+
<menu-actions
|
|
350
|
+
><md-text-button @click=${() => (this.open = false)}>Cancel</md-text-button>
|
|
351
|
+
<md-text-button
|
|
352
|
+
?disabled=${this.startDate === this.proposedStartDate && this.endDate === this.proposedEndDate && this.proposedRange === this.range}
|
|
353
|
+
@click=${() => {
|
|
354
|
+
if (!this.#validateDates(this.proposedStartDate, this.proposedEndDate)) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
this.startDate = this.proposedStartDate;
|
|
358
|
+
this.endDate = this.proposedEndDate;
|
|
359
|
+
this.range = this.proposedRange;
|
|
360
|
+
this.dispatchEvent(new Event('change'));
|
|
361
|
+
this.open = false;
|
|
362
|
+
}}
|
|
363
|
+
>Apply</md-text-button
|
|
364
|
+
>
|
|
365
|
+
</menu-actions>
|
|
366
|
+
</main>
|
|
367
|
+
</md-menu>
|
|
184
368
|
`;
|
|
185
369
|
}
|
|
186
370
|
};
|
|
371
|
+
__decorate([
|
|
372
|
+
property({ type: String })
|
|
373
|
+
], TitaniumDateRangeSelector.prototype, "range", null);
|
|
374
|
+
__decorate([
|
|
375
|
+
property({ type: String })
|
|
376
|
+
], TitaniumDateRangeSelector.prototype, "startDate", null);
|
|
377
|
+
__decorate([
|
|
378
|
+
property({ type: String })
|
|
379
|
+
], TitaniumDateRangeSelector.prototype, "endDate", null);
|
|
187
380
|
__decorate([
|
|
188
381
|
property({ type: String })
|
|
189
382
|
], TitaniumDateRangeSelector.prototype, "label", null);
|
|
@@ -191,26 +384,38 @@ __decorate([
|
|
|
191
384
|
property({ type: Boolean })
|
|
192
385
|
], TitaniumDateRangeSelector.prototype, "enableTime", null);
|
|
193
386
|
__decorate([
|
|
194
|
-
property({ type:
|
|
195
|
-
], TitaniumDateRangeSelector.prototype, "
|
|
387
|
+
property({ type: Boolean, reflect: true })
|
|
388
|
+
], TitaniumDateRangeSelector.prototype, "disabled", null);
|
|
196
389
|
__decorate([
|
|
197
390
|
property({ type: Object })
|
|
198
391
|
], TitaniumDateRangeSelector.prototype, "customDateRanges", null);
|
|
199
392
|
__decorate([
|
|
200
|
-
property({
|
|
201
|
-
], TitaniumDateRangeSelector.prototype, "
|
|
202
|
-
__decorate([
|
|
203
|
-
property({ type: String })
|
|
204
|
-
], TitaniumDateRangeSelector.prototype, "endDate", null);
|
|
393
|
+
property({ attribute: 'supporting-text' })
|
|
394
|
+
], TitaniumDateRangeSelector.prototype, "supportingText", null);
|
|
205
395
|
__decorate([
|
|
206
|
-
query('
|
|
396
|
+
query('titanium-date-input[start-date]')
|
|
207
397
|
], TitaniumDateRangeSelector.prototype, "startDateField", null);
|
|
208
398
|
__decorate([
|
|
209
|
-
query('md-
|
|
210
|
-
], TitaniumDateRangeSelector.prototype, "
|
|
399
|
+
query('md-menu')
|
|
400
|
+
], TitaniumDateRangeSelector.prototype, "menu", null);
|
|
401
|
+
__decorate([
|
|
402
|
+
query('md-list')
|
|
403
|
+
], TitaniumDateRangeSelector.prototype, "list", null);
|
|
404
|
+
__decorate([
|
|
405
|
+
state()
|
|
406
|
+
], TitaniumDateRangeSelector.prototype, "proposedRange", null);
|
|
407
|
+
__decorate([
|
|
408
|
+
state()
|
|
409
|
+
], TitaniumDateRangeSelector.prototype, "proposedStartDate", null);
|
|
410
|
+
__decorate([
|
|
411
|
+
state()
|
|
412
|
+
], TitaniumDateRangeSelector.prototype, "proposedEndDate", null);
|
|
413
|
+
__decorate([
|
|
414
|
+
state()
|
|
415
|
+
], TitaniumDateRangeSelector.prototype, "open", null);
|
|
211
416
|
__decorate([
|
|
212
|
-
|
|
213
|
-
], TitaniumDateRangeSelector.prototype, "
|
|
417
|
+
state()
|
|
418
|
+
], TitaniumDateRangeSelector.prototype, "focused", null);
|
|
214
419
|
TitaniumDateRangeSelector = __decorate([
|
|
215
420
|
customElement('titanium-date-range-selector')
|
|
216
421
|
], TitaniumDateRangeSelector);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-selector.js","sourceRoot":"","sources":["date-range-selector.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"date-range-selector.js","sourceRoot":"","sources":["date-range-selector.ts"],"names":[],"mappings":"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"}
|