@tylertech/forge 3.9.2 → 3.10.1
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/custom-elements.json +169 -11
- package/dist/lib.js +22 -22
- package/dist/lib.js.map +3 -3
- package/dist/vscode.html-custom-data.json +20 -0
- package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +1 -1
- package/esm/core/mask/date-input-mask.js +18 -1
- package/esm/core/utils/date-utils.d.ts +14 -5
- package/esm/core/utils/date-utils.js +228 -69
- package/esm/date-picker/base/base-date-picker-constants.d.ts +19 -4
- package/esm/date-picker/base/base-date-picker-constants.js +20 -1
- package/esm/date-picker/base/base-date-picker-core.d.ts +11 -3
- package/esm/date-picker/base/base-date-picker-core.js +68 -13
- package/esm/date-picker/base/base-date-picker.d.ts +10 -2
- package/esm/date-picker/base/base-date-picker.js +17 -1
- package/esm/date-picker/date-picker-core.js +1 -1
- package/esm/date-range-picker/date-range-picker-core.d.ts +1 -0
- package/esm/date-range-picker/date-range-picker-core.js +14 -4
- package/esm/floating-action-button/floating-action-button-adapter.d.ts +0 -4
- package/esm/floating-action-button/floating-action-button-adapter.js +3 -24
- package/esm/floating-action-button/floating-action-button-core.d.ts +0 -1
- package/esm/floating-action-button/floating-action-button-core.js +0 -3
- package/esm/floating-action-button/floating-action-button.d.ts +0 -1
- package/esm/floating-action-button/floating-action-button.js +0 -3
- package/esm/list/list/list.js +1 -1
- package/esm/list/list-item/list-item.js +1 -1
- package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
- package/esm/time-picker/time-picker-core.d.ts +1 -0
- package/esm/time-picker/time-picker-core.js +80 -16
- package/package.json +1 -1
- package/sass/list/list/list.scss +4 -2
- package/sass/list/list-item/list-item.scss +3 -1
|
@@ -20,6 +20,7 @@ export class BaseDatePickerCore {
|
|
|
20
20
|
this._masked = true;
|
|
21
21
|
this._maskFormat = DEFAULT_DATE_MASK;
|
|
22
22
|
this._showMaskFormat = false;
|
|
23
|
+
this._dateFormat = BASE_DATE_PICKER_CONSTANTS.defaults.DATE_FORMAT;
|
|
23
24
|
this._valueMode = 'object';
|
|
24
25
|
this._notifyInputValueChanges = true;
|
|
25
26
|
this._allowInvalidDate = false;
|
|
@@ -160,6 +161,24 @@ export class BaseDatePickerCore {
|
|
|
160
161
|
this._emitCloseEvent();
|
|
161
162
|
}
|
|
162
163
|
}
|
|
164
|
+
_getDefaultShortcuts() {
|
|
165
|
+
const handleTodayShortcut = () => {
|
|
166
|
+
this._onToday();
|
|
167
|
+
if (this._open) {
|
|
168
|
+
this._closeCalendar(true);
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const formatAllowsMonthAbbreviations = this._dateFormat.toUpperCase().includes('MMM');
|
|
172
|
+
// We only allow "t" shortcut for today if the date format allows month abbreviations
|
|
173
|
+
// because otherwise it could conflict with the "n" shortcut for month names
|
|
174
|
+
if (formatAllowsMonthAbbreviations) {
|
|
175
|
+
return { t: handleTodayShortcut };
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
n: handleTodayShortcut,
|
|
179
|
+
t: handleTodayShortcut
|
|
180
|
+
};
|
|
181
|
+
}
|
|
163
182
|
_onInputKeydown(evt) {
|
|
164
183
|
// Handle keyboard shortcuts that make use of the shift key first
|
|
165
184
|
if (evt.shiftKey) {
|
|
@@ -188,6 +207,24 @@ export class BaseDatePickerCore {
|
|
|
188
207
|
break;
|
|
189
208
|
}
|
|
190
209
|
}
|
|
210
|
+
// Handle date entry shortcuts
|
|
211
|
+
const shortcuts = Object.entries(this._shortcuts ?? this._getDefaultShortcuts());
|
|
212
|
+
if (shortcuts.length && !evt.shiftKey && evt.key.length === 1) {
|
|
213
|
+
const key = evt.key.toLowerCase();
|
|
214
|
+
const shortcut = shortcuts.find(([k]) => k === key);
|
|
215
|
+
if (shortcut) {
|
|
216
|
+
evt.preventDefault();
|
|
217
|
+
const [_k, callback] = shortcut;
|
|
218
|
+
if (typeof callback === 'function') {
|
|
219
|
+
const date = callback({ instance: this._adapter.hostElement });
|
|
220
|
+
if (isValidDate(date)) {
|
|
221
|
+
this._onDateSelected({ date, selected: true, type: 'date' });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Handle shortcuts that do not require the shift key
|
|
191
228
|
switch (evt.key) {
|
|
192
229
|
case 'Escape':
|
|
193
230
|
if (this._open) {
|
|
@@ -230,14 +267,6 @@ export class BaseDatePickerCore {
|
|
|
230
267
|
this._adapter.propagateCalendarKey(evt);
|
|
231
268
|
}
|
|
232
269
|
break;
|
|
233
|
-
case 'n':
|
|
234
|
-
case 't':
|
|
235
|
-
evt.preventDefault();
|
|
236
|
-
this._onToday();
|
|
237
|
-
if (this._open) {
|
|
238
|
-
this._closeCalendar(true);
|
|
239
|
-
}
|
|
240
|
-
break;
|
|
241
270
|
case 'PageUp':
|
|
242
271
|
case 'PageDown':
|
|
243
272
|
if (this._open) {
|
|
@@ -260,7 +289,7 @@ export class BaseDatePickerCore {
|
|
|
260
289
|
}
|
|
261
290
|
}
|
|
262
291
|
_getSanitizedDateString(value) {
|
|
263
|
-
return value.replace(/_
|
|
292
|
+
return value.replace(/_/g, '').replace(/\/$|\/\/$/, '');
|
|
264
293
|
}
|
|
265
294
|
_onToggleMousedown(evt) {
|
|
266
295
|
if (this._disabled) {
|
|
@@ -312,16 +341,16 @@ export class BaseDatePickerCore {
|
|
|
312
341
|
}
|
|
313
342
|
_formatDate(date) {
|
|
314
343
|
if (!isValidDate(date)) {
|
|
315
|
-
return
|
|
344
|
+
return null;
|
|
316
345
|
}
|
|
317
|
-
return typeof this._formatCallback === 'function' ? this._formatCallback(date) : formatDate(date);
|
|
346
|
+
return typeof this._formatCallback === 'function' ? this._formatCallback(date) : formatDate(date, this._dateFormat);
|
|
318
347
|
}
|
|
319
348
|
_parseDateString(value) {
|
|
320
|
-
value = value.replace(/_
|
|
349
|
+
value = value.replace(/_/g, '');
|
|
321
350
|
if (!value || !value.length) {
|
|
322
351
|
return null;
|
|
323
352
|
}
|
|
324
|
-
const parsedDate = typeof this._parseCallback === 'function' ? this._parseCallback(value) : parseDateString(value);
|
|
353
|
+
const parsedDate = typeof this._parseCallback === 'function' ? this._parseCallback(value) : parseDateString(value, this._dateFormat);
|
|
325
354
|
return isValidDate(parsedDate) ? parsedDate : null;
|
|
326
355
|
}
|
|
327
356
|
_coerceDateValue(value) {
|
|
@@ -408,6 +437,16 @@ export class BaseDatePickerCore {
|
|
|
408
437
|
this._adapter.setHostAttribute(BASE_DATE_PICKER_CONSTANTS.observedAttributes.VALUE_MODE, this._valueMode);
|
|
409
438
|
}
|
|
410
439
|
}
|
|
440
|
+
get shortcuts() {
|
|
441
|
+
return this._shortcuts;
|
|
442
|
+
}
|
|
443
|
+
set shortcuts(value) {
|
|
444
|
+
if (value === 'off') {
|
|
445
|
+
this._shortcuts = {};
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
this._shortcuts = Object.prototype.toString.call(value) === '[object Object]' ? value : undefined;
|
|
449
|
+
}
|
|
411
450
|
get min() {
|
|
412
451
|
return this._min ? new Date(this._min.getTime()) : null;
|
|
413
452
|
}
|
|
@@ -536,6 +575,22 @@ export class BaseDatePickerCore {
|
|
|
536
575
|
this._showMaskFormat = value;
|
|
537
576
|
}
|
|
538
577
|
}
|
|
578
|
+
get dateFormat() {
|
|
579
|
+
return this._dateFormat;
|
|
580
|
+
}
|
|
581
|
+
set dateFormat(value) {
|
|
582
|
+
if (typeof value !== 'string' || !BASE_DATE_PICKER_CONSTANTS.supportedDateFormats.includes(value)) {
|
|
583
|
+
this._dateFormat = BASE_DATE_PICKER_CONSTANTS.defaults.DATE_FORMAT;
|
|
584
|
+
}
|
|
585
|
+
if (this._dateFormat !== value) {
|
|
586
|
+
this._dateFormat = value;
|
|
587
|
+
// Automatically set the mask format based on the date format
|
|
588
|
+
this._maskFormat = value === BASE_DATE_PICKER_CONSTANTS.defaults.DATE_FORMAT ? DEFAULT_DATE_MASK : value;
|
|
589
|
+
if (this._isInitialized) {
|
|
590
|
+
this._applyMask();
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
539
594
|
get notifyInputValueChanges() {
|
|
540
595
|
return this._notifyInputValueChanges;
|
|
541
596
|
}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { DayOfWeek } from '../../calendar/calendar-constants';
|
|
7
7
|
import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
|
|
8
|
-
import { DatePickerFormatCallback, DatePickerParseCallback, DatePickerPrepareMaskCallback, DatePickerValueMode, IDatePickerCalendarDropdownText } from './base-date-picker-constants';
|
|
9
|
-
import { BaseDatePickerCore } from './base-date-picker-core';
|
|
10
8
|
import { IBaseDatePickerAdapter } from './base-date-picker-adapter';
|
|
9
|
+
import { DatePickerDateFormat, DatePickerFormatCallback, DatePickerParseCallback, DatePickerPrepareMaskCallback, DatePickerShortcuts, DatePickerValueMode, IDatePickerCalendarDropdownText } from './base-date-picker-constants';
|
|
10
|
+
import { BaseDatePickerCore } from './base-date-picker-core';
|
|
11
11
|
export interface IBaseDatePickerComponent<TValue> extends IBaseComponent {
|
|
12
12
|
value: TValue | null | undefined;
|
|
13
13
|
min: Date | string | null | undefined;
|
|
@@ -23,7 +23,9 @@ export interface IBaseDatePickerComponent<TValue> extends IBaseComponent {
|
|
|
23
23
|
masked: boolean;
|
|
24
24
|
maskFormat: string;
|
|
25
25
|
showMaskFormat: boolean;
|
|
26
|
+
dateFormat: DatePickerDateFormat;
|
|
26
27
|
valueMode: DatePickerValueMode;
|
|
28
|
+
shortcuts: DatePickerShortcuts;
|
|
27
29
|
notifyInputValueChanges: boolean;
|
|
28
30
|
allowInvalidDate: boolean;
|
|
29
31
|
showToday: boolean;
|
|
@@ -53,9 +55,11 @@ export interface IBaseDatePickerComponent<TValue> extends IBaseComponent {
|
|
|
53
55
|
* @property {DatePickerPrepareMaskCallback} prepareMaskCallback - The callback to use when altering default mask entry.
|
|
54
56
|
* @property {boolean} [showClear=false] - Whether the clear button is visible in the popup.
|
|
55
57
|
* @property {boolean} [showMaskFormat=false] - Whether the mask format is displayed in the input or not. Only applies if `masked` is `true`.
|
|
58
|
+
* @property {DatePickerDateFormat} [dateFormat='MM/DD/YYYY'] - The date format to use for the date picker.
|
|
56
59
|
* @property {boolean} [showToday=false] - Whether the today button is visible in the popup.
|
|
57
60
|
* @property {TValue} value - The value of the date picker.
|
|
58
61
|
* @property {DatePickerValueMode} valueMode - The type for the `value` property and `forge-date-picker-change` event.
|
|
62
|
+
* @property {DatePickerShortcuts} shortcuts - The shortcuts to use for the date picker. Can be an object with key-value pairs where the key is the shortcut name and the value is a function that returns a `Date` object.
|
|
59
63
|
* @property {string} yearRange - The year range.
|
|
60
64
|
*
|
|
61
65
|
* @attribute {boolean} [allow-invalid-date=false] - Whether to allow an invalid date to be input. When true, the date picker will not clear out the value of the input if the date was invalid (i.e. could not be parsed).
|
|
@@ -71,8 +75,10 @@ export interface IBaseDatePickerComponent<TValue> extends IBaseComponent {
|
|
|
71
75
|
* @attribute {string} [popup-classes] - The CSS classes that are applied to the popup element.
|
|
72
76
|
* @attribute {boolean} [show-clear=false] - Whether the clear button is visible in the popup.
|
|
73
77
|
* @attribute {boolean} [show-mask-format=false] - Whether the mask format is displayed in the input or not. Only applies if `masked` is `true`.
|
|
78
|
+
* @attribute {DatePickerDateFormat} [date-format=MM/DD/YYYY] - The date format to use for the date picker.
|
|
74
79
|
* @attribute {boolean} [show-today=false] - Whether the today button is visible in the popup.
|
|
75
80
|
* @attribute {DatePickerValueMode} [value-mode=string] - The type for the `value` property and `forge-date-picker-change` event.
|
|
81
|
+
* @attribute {DatePickerShortcuts} shortcuts - When specifies as an attribute you can only use the `off` value to disable shortcuts. Otherwise, you can use the `shortcuts` property to set your own shortcuts.
|
|
76
82
|
* @attribute {string} [year-range] - The year range.
|
|
77
83
|
*/
|
|
78
84
|
export declare abstract class BaseDatePickerComponent<TPublicValue, TPrivateValue, TCore extends BaseDatePickerCore<IBaseDatePickerAdapter, TPublicValue, TPrivateValue>> extends BaseComponent implements IBaseDatePickerComponent<TPublicValue> {
|
|
@@ -91,7 +97,9 @@ export declare abstract class BaseDatePickerComponent<TPublicValue, TPrivateValu
|
|
|
91
97
|
masked: boolean;
|
|
92
98
|
maskFormat: string;
|
|
93
99
|
showMaskFormat: boolean;
|
|
100
|
+
dateFormat: DatePickerDateFormat;
|
|
94
101
|
valueMode: DatePickerValueMode;
|
|
102
|
+
shortcuts: DatePickerShortcuts;
|
|
95
103
|
notifyInputValueChanges: boolean;
|
|
96
104
|
allowInvalidDate: boolean;
|
|
97
105
|
showToday: boolean;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* License: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { __decorate } from "tslib";
|
|
7
|
-
import { coerceBoolean,
|
|
7
|
+
import { coerceBoolean, coerceNumberArray, coreProperty, ensureChild } from '@tylertech/forge-core';
|
|
8
8
|
import { BaseComponent } from '../../core/base/base-component';
|
|
9
9
|
import { BASE_DATE_PICKER_CONSTANTS } from './base-date-picker-constants';
|
|
10
10
|
/**
|
|
@@ -27,9 +27,11 @@ import { BASE_DATE_PICKER_CONSTANTS } from './base-date-picker-constants';
|
|
|
27
27
|
* @property {DatePickerPrepareMaskCallback} prepareMaskCallback - The callback to use when altering default mask entry.
|
|
28
28
|
* @property {boolean} [showClear=false] - Whether the clear button is visible in the popup.
|
|
29
29
|
* @property {boolean} [showMaskFormat=false] - Whether the mask format is displayed in the input or not. Only applies if `masked` is `true`.
|
|
30
|
+
* @property {DatePickerDateFormat} [dateFormat='MM/DD/YYYY'] - The date format to use for the date picker.
|
|
30
31
|
* @property {boolean} [showToday=false] - Whether the today button is visible in the popup.
|
|
31
32
|
* @property {TValue} value - The value of the date picker.
|
|
32
33
|
* @property {DatePickerValueMode} valueMode - The type for the `value` property and `forge-date-picker-change` event.
|
|
34
|
+
* @property {DatePickerShortcuts} shortcuts - The shortcuts to use for the date picker. Can be an object with key-value pairs where the key is the shortcut name and the value is a function that returns a `Date` object.
|
|
33
35
|
* @property {string} yearRange - The year range.
|
|
34
36
|
*
|
|
35
37
|
* @attribute {boolean} [allow-invalid-date=false] - Whether to allow an invalid date to be input. When true, the date picker will not clear out the value of the input if the date was invalid (i.e. could not be parsed).
|
|
@@ -45,8 +47,10 @@ import { BASE_DATE_PICKER_CONSTANTS } from './base-date-picker-constants';
|
|
|
45
47
|
* @attribute {string} [popup-classes] - The CSS classes that are applied to the popup element.
|
|
46
48
|
* @attribute {boolean} [show-clear=false] - Whether the clear button is visible in the popup.
|
|
47
49
|
* @attribute {boolean} [show-mask-format=false] - Whether the mask format is displayed in the input or not. Only applies if `masked` is `true`.
|
|
50
|
+
* @attribute {DatePickerDateFormat} [date-format=MM/DD/YYYY] - The date format to use for the date picker.
|
|
48
51
|
* @attribute {boolean} [show-today=false] - Whether the today button is visible in the popup.
|
|
49
52
|
* @attribute {DatePickerValueMode} [value-mode=string] - The type for the `value` property and `forge-date-picker-change` event.
|
|
53
|
+
* @attribute {DatePickerShortcuts} shortcuts - When specifies as an attribute you can only use the `off` value to disable shortcuts. Otherwise, you can use the `shortcuts` property to set your own shortcuts.
|
|
50
54
|
* @attribute {string} [year-range] - The year range.
|
|
51
55
|
*/
|
|
52
56
|
export class BaseDatePickerComponent extends BaseComponent {
|
|
@@ -89,12 +93,18 @@ export class BaseDatePickerComponent extends BaseComponent {
|
|
|
89
93
|
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.SHOW_MASK_FORMAT:
|
|
90
94
|
this.showMaskFormat = coerceBoolean(newValue);
|
|
91
95
|
break;
|
|
96
|
+
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.DATE_FORMAT:
|
|
97
|
+
this.dateFormat = newValue;
|
|
98
|
+
break;
|
|
92
99
|
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.MASK_FORMAT:
|
|
93
100
|
this.maskFormat = newValue;
|
|
94
101
|
break;
|
|
95
102
|
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.VALUE_MODE:
|
|
96
103
|
this.valueMode = newValue;
|
|
97
104
|
break;
|
|
105
|
+
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.SHORTCUTS:
|
|
106
|
+
this.shortcuts = newValue === 'off' ? {} : undefined;
|
|
107
|
+
break;
|
|
98
108
|
case BASE_DATE_PICKER_CONSTANTS.observedAttributes.ALLOW_INVALID_DATE:
|
|
99
109
|
this.allowInvalidDate = coerceBoolean(newValue);
|
|
100
110
|
break;
|
|
@@ -149,9 +159,15 @@ __decorate([
|
|
|
149
159
|
__decorate([
|
|
150
160
|
coreProperty()
|
|
151
161
|
], BaseDatePickerComponent.prototype, "showMaskFormat", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
coreProperty()
|
|
164
|
+
], BaseDatePickerComponent.prototype, "dateFormat", void 0);
|
|
152
165
|
__decorate([
|
|
153
166
|
coreProperty()
|
|
154
167
|
], BaseDatePickerComponent.prototype, "valueMode", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
coreProperty()
|
|
170
|
+
], BaseDatePickerComponent.prototype, "shortcuts", void 0);
|
|
155
171
|
__decorate([
|
|
156
172
|
coreProperty()
|
|
157
173
|
], BaseDatePickerComponent.prototype, "notifyInputValueChanges", void 0);
|
|
@@ -70,7 +70,7 @@ export class DatePickerCore extends BaseDatePickerCore {
|
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
const formattedValue = this._formatDate(value);
|
|
73
|
-
this._adapter.setInputValue(formattedValue, this._notifyInputValueChanges);
|
|
73
|
+
this._adapter.setInputValue(formattedValue ?? '', this._notifyInputValueChanges);
|
|
74
74
|
this._formatInputValue();
|
|
75
75
|
if (!Platform.isMobile) {
|
|
76
76
|
this._adapter.selectInputText();
|
|
@@ -44,6 +44,7 @@ export declare class DateRangePickerCore extends BaseDatePickerCore<IDateRangePi
|
|
|
44
44
|
protected _onDateSelected(event: ICalendarDateSelectEventData): void;
|
|
45
45
|
protected _applyMin(): void;
|
|
46
46
|
protected _applyMax(): void;
|
|
47
|
+
protected _applyMask(): void;
|
|
47
48
|
protected _initializeToMask(): void;
|
|
48
49
|
protected _applyDisabledDates(): void;
|
|
49
50
|
protected _applyDisabledDaysOfWeek(): void;
|
|
@@ -126,14 +126,14 @@ export class DateRangePickerCore extends BaseDatePickerCore {
|
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
128
|
_setFormattedInputValue(suppressValueChanges) {
|
|
129
|
-
let formattedDate = this._formatDate(this._from);
|
|
129
|
+
let formattedDate = this._formatDate(this._from) ?? '';
|
|
130
130
|
if (!formattedDate && !this._allowInvalidDate) {
|
|
131
131
|
formattedDate = '';
|
|
132
132
|
}
|
|
133
133
|
this._adapter.setInputValue(formattedDate, suppressValueChanges ? false : this._notifyInputValueChanges);
|
|
134
134
|
}
|
|
135
135
|
_setFormattedToInputValue(suppressValueChanges) {
|
|
136
|
-
let formattedDate = this._formatDate(this._to);
|
|
136
|
+
let formattedDate = this._formatDate(this._to) ?? '';
|
|
137
137
|
if (!formattedDate && !this._allowInvalidDate) {
|
|
138
138
|
formattedDate = '';
|
|
139
139
|
}
|
|
@@ -181,8 +181,8 @@ export class DateRangePickerCore extends BaseDatePickerCore {
|
|
|
181
181
|
}
|
|
182
182
|
const formattedFromValue = this._formatDate((value && value.from) || null);
|
|
183
183
|
const formattedToValue = this._formatDate((value && value.to) || null);
|
|
184
|
-
this._adapter.setInputValue(formattedFromValue, this._notifyInputValueChanges);
|
|
185
|
-
this._adapter.setToInputValue(formattedToValue, this._notifyInputValueChanges);
|
|
184
|
+
this._adapter.setInputValue(formattedFromValue ?? '', this._notifyInputValueChanges);
|
|
185
|
+
this._adapter.setToInputValue(formattedToValue ?? '', this._notifyInputValueChanges);
|
|
186
186
|
this._formatInputValue();
|
|
187
187
|
this._formatToInputValue();
|
|
188
188
|
this._from = (value && value.from) || null;
|
|
@@ -218,6 +218,16 @@ export class DateRangePickerCore extends BaseDatePickerCore {
|
|
|
218
218
|
}
|
|
219
219
|
super._applyMax();
|
|
220
220
|
}
|
|
221
|
+
_applyMask() {
|
|
222
|
+
super._applyMask();
|
|
223
|
+
if (this._masked) {
|
|
224
|
+
this._initializeToMask();
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
this._adapter.destroyToMask();
|
|
228
|
+
this._formatToInputValue();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
221
231
|
_initializeToMask() {
|
|
222
232
|
if (!this._masked) {
|
|
223
233
|
return;
|
|
@@ -6,15 +6,11 @@
|
|
|
6
6
|
import { BaseButtonAdapter, IBaseButtonAdapter } from '../button/base/base-button-adapter';
|
|
7
7
|
import { IFloatingActionButtonComponent } from './floating-action-button';
|
|
8
8
|
export interface IFloatingActionButtonAdapter extends IBaseButtonAdapter<IFloatingActionButtonComponent> {
|
|
9
|
-
destroy(): void;
|
|
10
9
|
}
|
|
11
10
|
export declare class FloatingActionButtonAdapter extends BaseButtonAdapter<IFloatingActionButtonComponent> implements IFloatingActionButtonAdapter {
|
|
12
11
|
private _labelSlotElement;
|
|
13
|
-
private _extendedObserver;
|
|
14
12
|
constructor(component: IFloatingActionButtonComponent);
|
|
15
13
|
initialize(): void;
|
|
16
|
-
destroy(): void;
|
|
17
14
|
toggleDefaultPopoverIcon(value: boolean): void;
|
|
18
|
-
private _startExtendedWatcher;
|
|
19
15
|
private _detectExtendedState;
|
|
20
16
|
}
|
|
@@ -13,36 +13,15 @@ export class FloatingActionButtonAdapter extends BaseButtonAdapter {
|
|
|
13
13
|
}
|
|
14
14
|
initialize() {
|
|
15
15
|
super.initialize();
|
|
16
|
-
|
|
17
|
-
this._startExtendedWatcher();
|
|
18
|
-
}
|
|
16
|
+
this._labelSlotElement.addEventListener('slotchange', () => this._detectExtendedState());
|
|
19
17
|
this._detectExtendedState();
|
|
20
18
|
}
|
|
21
|
-
destroy() {
|
|
22
|
-
this._extendedObserver?.disconnect();
|
|
23
|
-
this._extendedObserver = undefined;
|
|
24
|
-
}
|
|
25
19
|
toggleDefaultPopoverIcon(value) {
|
|
26
20
|
super.toggleDefaultPopoverIcon(value);
|
|
27
21
|
this._detectExtendedState();
|
|
28
22
|
}
|
|
29
|
-
_startExtendedWatcher() {
|
|
30
|
-
this._extendedObserver = new MutationObserver(() => this._detectExtendedState());
|
|
31
|
-
this._extendedObserver.observe(this._component, { childList: true, subtree: true, characterData: true });
|
|
32
|
-
}
|
|
33
23
|
_detectExtendedState() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (hasLabel) {
|
|
37
|
-
this._rootElement.classList.add(FLOATING_ACTION_BUTTON_CONSTANTS.classes.EXTENDED);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
// Remove the extended class first so we can compare the width without it affecting the styles
|
|
41
|
-
this._rootElement.classList.remove(FLOATING_ACTION_BUTTON_CONSTANTS.classes.EXTENDED);
|
|
42
|
-
// When the width is greater than the height, we assume the button is in the extended state
|
|
43
|
-
const isExtended = this._component.clientWidth > this._component.clientHeight;
|
|
44
|
-
if (isExtended) {
|
|
45
|
-
this._rootElement.classList.add(FLOATING_ACTION_BUTTON_CONSTANTS.classes.EXTENDED);
|
|
46
|
-
}
|
|
24
|
+
const isExtended = this._labelSlotElement.assignedNodes().length > 0 || this._component.popoverIcon;
|
|
25
|
+
this._rootElement.classList.toggle(FLOATING_ACTION_BUTTON_CONSTANTS.classes.EXTENDED, isExtended);
|
|
47
26
|
}
|
|
48
27
|
}
|
|
@@ -17,7 +17,6 @@ export declare class FloatingActionButtonCore extends BaseButtonCore<IFloatingAc
|
|
|
17
17
|
private _density;
|
|
18
18
|
private _elevation;
|
|
19
19
|
constructor(adapter: IFloatingActionButtonAdapter);
|
|
20
|
-
destroy(): void;
|
|
21
20
|
get theme(): ButtonTheme;
|
|
22
21
|
set theme(value: ButtonTheme);
|
|
23
22
|
get density(): FloatingActionButtonDensity;
|
|
@@ -12,9 +12,6 @@ export class FloatingActionButtonCore extends BaseButtonCore {
|
|
|
12
12
|
this._density = FLOATING_ACTION_BUTTON_CONSTANTS.defaults.DEFAULT_DENSITY;
|
|
13
13
|
this._elevation = FLOATING_ACTION_BUTTON_CONSTANTS.defaults.DEFAULT_ELEVATION;
|
|
14
14
|
}
|
|
15
|
-
destroy() {
|
|
16
|
-
this._adapter.destroy();
|
|
17
|
-
}
|
|
18
15
|
get theme() {
|
|
19
16
|
return this._theme;
|
|
20
17
|
}
|
|
@@ -84,7 +84,6 @@ export declare class FloatingActionButtonComponent extends BaseButton<FloatingAc
|
|
|
84
84
|
static get observedAttributes(): string[];
|
|
85
85
|
protected readonly _core: FloatingActionButtonCore;
|
|
86
86
|
constructor();
|
|
87
|
-
disconnectedCallback(): void;
|
|
88
87
|
attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
|
|
89
88
|
theme: ButtonTheme;
|
|
90
89
|
density: FloatingActionButtonDensity;
|
|
@@ -87,9 +87,6 @@ let FloatingActionButtonComponent = class FloatingActionButtonComponent extends
|
|
|
87
87
|
attachShadowTemplate(this, template, styles);
|
|
88
88
|
this._core = new FloatingActionButtonCore(new FloatingActionButtonAdapter(this));
|
|
89
89
|
}
|
|
90
|
-
disconnectedCallback() {
|
|
91
|
-
this._core.destroy();
|
|
92
|
-
}
|
|
93
90
|
attributeChangedCallback(name, oldValue, newValue) {
|
|
94
91
|
switch (name) {
|
|
95
92
|
case FLOATING_ACTION_BUTTON_CONSTANTS.attributes.THEME:
|
package/esm/list/list/list.js
CHANGED
|
@@ -14,7 +14,7 @@ import { setDefaultAria } from '../../constants';
|
|
|
14
14
|
import { WithElementInternals } from '../../core/mixins/internals/with-element-internals';
|
|
15
15
|
import { WithDefaultAria } from '../../core/mixins/internals/with-default-aria';
|
|
16
16
|
const template = '<template><div class=\"forge-list\" part=\"root\"><div class=\"inner\"><slot></slot></div></div></template>';
|
|
17
|
-
const styles = ':host{--_list-navlist-spacing:var(--forge-list-navlist-spacing, var(--forge-spacing-xxsmall, 4px));--_list-navlist-margin:var(--forge-list-navlist-margin, var(--forge-spacing-xxsmall, 4px) var(--forge-spacing-xsmall, 8px));--_list-navlist-height:var(--forge-list-navlist-height, 40px);--_list-navlist-padding:var(--forge-list-navlist-padding, 0 var(--forge-spacing-xsmall, 8px));--_list-navlist-shape:var(--forge-list-navlist-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_list-navlist-font-size:var(--forge-list-navlist-font-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_list-navlist-font-weight:var(--forge-list-navlist-font-weight, 500)}:host{display:block}:host([hidden]){display:none}:host([navlist]){
|
|
17
|
+
const styles = ':host{--_list-navlist-spacing:var(--forge-list-navlist-spacing, var(--forge-spacing-xxsmall, 4px));--_list-navlist-margin:var(--forge-list-navlist-margin, var(--forge-spacing-xxsmall, 4px) var(--forge-spacing-xsmall, 8px));--_list-navlist-height:var(--forge-list-navlist-height, 40px);--_list-navlist-padding:var(--forge-list-navlist-padding, 0 var(--forge-spacing-xsmall, 8px));--_list-navlist-shape:var(--forge-list-navlist-shape, calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1)));--_list-navlist-font-size:var(--forge-list-navlist-font-size, calc(var(--forge-typography-font-size, 1rem) * 0.875));--_list-navlist-font-weight:var(--forge-list-navlist-font-weight, 500)}:host{display:block}:host([hidden]){display:none}:host([navlist]){--forge-list-item-height:var(--_list-navlist-height);--forge-list-item-margin:var(--_list-navlist-margin);--forge-list-item-padding:var(--_list-navlist-padding);--forge-list-item-shape:var(--_list-navlist-shape);--forge-list-item-text-font-size:var(--_list-navlist-font-size);--forge-list-item-text-font-weight:var(--_list-navlist-font-weight)}:host([navlist]) .forge-list{margin-block:var(--_list-navlist-spacing)}.forge-list{--_list-spacing:var(--forge-list-spacing, 0);--_list-container-color:var(--forge-list-container-color, transparent)}.forge-list{outline:0;background-color:var(--_list-container-color);margin:0;border-radius:inherit;min-width:inherit}.inner{display:grid;gap:var(--_list-spacing);min-width:0}.inner ::slotted(*){min-width:0}';
|
|
18
18
|
/**
|
|
19
19
|
* @tag forge-list
|
|
20
20
|
*
|
|
@@ -14,7 +14,7 @@ import { WithElementInternals } from '../../core/mixins/internals/with-element-i
|
|
|
14
14
|
import { WithDefaultAria } from '../../core/mixins/internals/with-default-aria';
|
|
15
15
|
import { BaseComponent } from '../../core/base/base-component';
|
|
16
16
|
const template = '<template><div class=\"forge-list-item\" part=\"root\"><slot name=\"start\"><slot name=\"leading\"></slot></slot><div class=\"text-container\" part=\"text-container\"><slot></slot><slot name=\"secondary-text\"></slot><slot name=\"tertiary-text\"></slot></div><slot name=\"end\"><slot name=\"trailing\"></slot></slot></div></template>';
|
|
17
|
-
const styles = ':host{--_list-item-indent:var(--forge-list-item-indent, var(--forge-spacing-xxlarge, 48px));--_list-item-dense-indent:var(--forge-list-item-dense-indent, var(--forge-spacing-xxlarge, 48px));--_list-item-disabled-cursor:var(--forge-list-item-disabled-cursor, not-allowed)}:host{display:block;outline:0}:host([hidden]){display:none}.forge-list-item{--_list-item-background:var(--forge-list-item-background, transparent);--_list-item-shape:var(--forge-list-item-shape, 0);--_list-item-padding:var(--forge-list-item-padding, 0 var(--forge-spacing-medium, 16px));--_list-item-margin:var(--forge-list-item-margin, 0);--_list-item-height:var(--forge-list-item-height, 48px);--_list-item-dense-height:var(--forge-list-item-dense-height, 32px);--_list-item-cursor:var(--forge-list-item-cursor, pointer);--_list-item-gap:var(--forge-list-item-gap, var(--forge-spacing-large, 24px));--_list-item-text-color:var(--forge-list-item-text-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_list-item-text-font-size:var(--forge-list-item-text-font-size, var(--forge-typography-body2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 1))));--_list-item-text-font-weight:var(--forge-list-item-text-font-weight, var(--forge-typography-body2-font-weight, 400));--_list-item-text-line-height:var(--forge-list-item-text-line-height, 1.5rem);--_list-item-selected-color:var(--forge-list-item-selected-color, var(--forge-theme-primary, #3f51b5));--_list-item-selected-background:var(--forge-list-item-selected-background, var(--_list-item-selected-color));--_list-item-selected-opacity:var(--forge-list-item-selected-opacity, 0.08);--_list-item-selected-start-color:var(--forge-list-item-selected-start-color, var(--_list-item-selected-color));--_list-item-selected-end-color:var(--forge-list-item-selected-end-color, var(--_list-item-selected-color));--_list-item-selected-text-color:var(--forge-list-item-selected-text-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_list-item-disabled-opacity:var(--forge-list-item-disabled-opacity, 0.38);--_list-item-one-line-height:var(--forge-list-item-one-line-height, var(--_list-item-height));--_list-item-two-line-height:var(--forge-list-item-two-line-height, var(--forge-list-item-height, 72px));--_list-item-three-line-height:var(--forge-list-item-three-line-height, var(--forge-list-item-height, 88px));--_list-item-dense-one-line-height:var(--forge-list-item-dense-one-line-height, var(--_list-item-dense-height));--_list-item-dense-two-line-height:var(--forge-list-item-dense-two-line-height, var(--forge-list-item-dense-height, 56px));--_list-item-dense-three-line-height:var(--forge-list-item-dense-three-line-height, var(--forge-list-item-dense-height, 72px));--_list-item-dense-font-size:var(--forge-list-item-dense-font-size, 0.875rem);--_list-item-dense-gap:var(--forge-list-item-dense-gap, var(--forge-spacing-xsmall, 8px));--_list-item-start-selected-color:var(--forge-list-item-start-selected-color, var(--_list-item-selected-color));--_list-item-end-selected-color:var(--forge-list-item-end-selected-color, var(--_list-item-selected-color));--_list-item-wrap-padding:var(--forge-list-item-wrap-padding, var(--forge-spacing-xsmall, 8px) var(--forge-spacing-medium, 16px))}.forge-list-item{position:relative;display:flex;gap:var(--_list-item-gap);align-items:center;box-sizing:border-box;outline:0;text-decoration:none;border-radius:var(--_list-item-shape);-webkit-tap-highlight-color:transparent;background-color:var(--_list-item-background);height:var(--_list-item-height);min-height:var(--_list-item-height);padding:var(--_list-item-padding);margin:var(--_list-item-margin)}.forge-list-item.interactive{cursor:var(--_list-item-cursor)}.forge-list-item.disabled{cursor:var(--_list-item-disabled-cursor);opacity:var(--_list-item-disabled-opacity)}.forge-list-item.disabled ::slotted(button){cursor:var(--_list-item-disabled-cursor)}.anchor{position:absolute;inset:0}:host([two-line]) .forge-list-item{height:var(--_list-item-two-line-height);min-height:var(--_list-item-two-line-height)}:host([three-line]) .forge-list-item{height:var(--_list-item-three-line-height);min-height:var(--_list-item-three-line-height)}:host([dense]) .forge-list-item{--_list-item-gap:var(--_list-item-dense-gap);height:var(--_list-item-dense-one-line-height);min-height:var(--_list-item-dense-one-line-height)}:host([dense]) .text-container{font-size:var(--_list-item-dense-font-size)}:host([dense][indented]){margin-inline-start:var(--_list-item-dense-indent)}:host([dense][two-line]) .forge-list-item{height:var(--_list-item-dense-two-line-height);min-height:var(--_list-item-dense-two-line-height)}:host([dense][three-line]) .forge-list-item{height:var(--_list-item-dense-three-line-height);min-height:var(--_list-item-dense-three-line-height)}:host([selected]) .forge-list-item{color:var(--_list-item-selected-color)}:host([selected]) .forge-list-item::before{content:\"\";position:absolute;inset:0;border-radius:inherit;opacity:var(--_list-item-selected-opacity);background-color:var(--_list-item-selected-background);pointer-events:none}:host([selected]) .forge-list-item ::slotted([slot=end]),:host([selected]) .forge-list-item ::slotted([slot=leading]),:host([selected]) .forge-list-item ::slotted([slot=start]),:host([selected]) .forge-list-item ::slotted([slot=trailing]){color:var(--_list-item-selected-color);isolation:isolate}:host([selected]) .forge-list-item ::slotted([slot=leading]),:host([selected]) .forge-list-item ::slotted([slot=start]){color:var(--_list-item-start-selected-color)}:host([selected]) .forge-list-item ::slotted([slot=end]),:host([selected]) .forge-list-item ::slotted([slot=trailing]){color:var(--_list-item-end-selected-color)}:host([selected]) .text-container{color:var(--_list-item-selected-color)}:host([selected]) forge-state-layer{--forge-state-layer-color:var(--_list-item-selected-color)}:host([indented]){margin-inline-start:var(--_list-item-indent)}.text-container{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body2-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));letter-spacing:var(--forge-typography-body2-letter-spacing, .015625em);text-transform:var(--forge-typography-body2-text-transform,inherit);text-decoration:var(--forge-typography-body2-text-decoration,inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;isolation:isolate;font-size:var(--_list-item-text-font-size);font-weight:var(--_list-item-text-font-weight);line-height:var(--_list-item-text-line-height);flex:1;contain:layout}slot[name=secondary-text]::slotted(*),slot[name=tertiary-text]::slotted(*){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--_list-item-text-color);display:block}:host([selected]) slot[name=secondary-text]::slotted(*),:host([selected]) slot[name=tertiary-text]::slotted(*){color:var(--_list-item-selected-text-color)}::slotted(:is(button:not([slot]),[forge-list-item-button])){appearance:none;cursor:var(--_list-item-cursor);border:none;padding-block:0;padding-inline:0;margin:0;box-sizing:border-box;width:100%;background:0 0;color:inherit;outline:0;font:inherit;user-select:auto;text-align:inherit;letter-spacing:inherit;word-spacing:inherit;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block}::slotted(a){outline:0;color:inherit!important;text-decoration:none!important}::slotted([slot=end]),::slotted([slot=leading]),::slotted([slot=start]),::slotted([slot=trailing]){color:var(--_list-item-text-color);display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;fill:currentColor}:host(:not([noninteractive])) ::slotted(:is(forge-checkbox,forge-radio,forge-switch):is([slot=start],[slot=end],[slot=leading],[slot=trailing]):not([forge-ignore])){--forge-focus-indicator-display:none;--forge-state-layer-display:none}:host([selected]) ::slotted([slot=leading]),:host([selected]) ::slotted([slot=start]){color:var(--_list-item-start-selected-color)}:host([selected]) ::slotted([slot=end]),:host([selected]) ::slotted([slot=trailing]){color:var(--_list-item-end-selected-color)}:host([wrap]) .forge-list-item{--_list-item-padding:var(--_list-item-wrap-padding);height:auto}:host([wrap]) .text-container{white-space:normal;overflow:visible;text-overflow:clip;line-height:normal}:host([wrap]) ::slotted(:is(button,[role=button][tabindex],[forge-list-item-button])){white-space:normal}:host([wrap]) slot[name=secondary-text]::slotted(*),:host([wrap]) slot[name=tertiary-text]::slotted(*){white-space:normal;overflow:visible;text-overflow:clip;line-height:normal}forge-focus-indicator{z-index:1;--forge-focus-indicator-shape:calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1))}forge-state-layer{border-radius:inherit}';
|
|
17
|
+
const styles = ':host{--_list-item-indent:var(--forge-list-item-indent, var(--forge-spacing-xxlarge, 48px));--_list-item-dense-indent:var(--forge-list-item-dense-indent, var(--forge-spacing-xxlarge, 48px));--_list-item-disabled-cursor:var(--forge-list-item-disabled-cursor, not-allowed)}:host{display:block;outline:0}:host([hidden]){display:none}.forge-list-item{--_list-item-background:var(--forge-list-item-background, transparent);--_list-item-shape:var(--forge-list-item-shape, 0);--_list-item-padding:var(--forge-list-item-padding, 0 var(--forge-spacing-medium, 16px));--_list-item-margin:var(--forge-list-item-margin, 0);--_list-item-height:var(--forge-list-item-height, 48px);--_list-item-dense-height:var(--forge-list-item-dense-height, 32px);--_list-item-cursor:var(--forge-list-item-cursor, pointer);--_list-item-gap:var(--forge-list-item-gap, var(--forge-spacing-large, 24px));--_list-item-text-color:var(--forge-list-item-text-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_list-item-text-font-size:var(--forge-list-item-text-font-size, var(--forge-typography-body2-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, 1))));--_list-item-text-font-weight:var(--forge-list-item-text-font-weight, var(--forge-typography-body2-font-weight, 400));--_list-item-text-line-height:var(--forge-list-item-text-line-height, 1.5rem);--_list-item-selected-color:var(--forge-list-item-selected-color, var(--forge-theme-primary, #3f51b5));--_list-item-selected-background:var(--forge-list-item-selected-background, var(--_list-item-selected-color));--_list-item-selected-opacity:var(--forge-list-item-selected-opacity, 0.08);--_list-item-selected-start-color:var(--forge-list-item-selected-start-color, var(--_list-item-selected-color));--_list-item-selected-end-color:var(--forge-list-item-selected-end-color, var(--_list-item-selected-color));--_list-item-selected-text-color:var(--forge-list-item-selected-text-color, var(--forge-theme-text-medium, rgba(0, 0, 0, 0.6)));--_list-item-disabled-opacity:var(--forge-list-item-disabled-opacity, 0.38);--_list-item-one-line-height:var(--forge-list-item-one-line-height, var(--_list-item-height));--_list-item-two-line-height:var(--forge-list-item-two-line-height, var(--forge-list-item-height, 72px));--_list-item-three-line-height:var(--forge-list-item-three-line-height, var(--forge-list-item-height, 88px));--_list-item-dense-one-line-height:var(--forge-list-item-dense-one-line-height, var(--_list-item-dense-height));--_list-item-dense-two-line-height:var(--forge-list-item-dense-two-line-height, var(--forge-list-item-dense-height, 56px));--_list-item-dense-three-line-height:var(--forge-list-item-dense-three-line-height, var(--forge-list-item-dense-height, 72px));--_list-item-dense-font-size:var(--forge-list-item-dense-font-size, 0.875rem);--_list-item-dense-gap:var(--forge-list-item-dense-gap, var(--forge-spacing-xsmall, 8px));--_list-item-start-selected-color:var(--forge-list-item-start-selected-color, var(--_list-item-selected-color));--_list-item-end-selected-color:var(--forge-list-item-end-selected-color, var(--_list-item-selected-color));--_list-item-wrap-padding:var(--forge-list-item-wrap-padding, var(--forge-spacing-xsmall, 8px) var(--forge-spacing-medium, 16px))}.forge-list-item{position:relative;display:flex;gap:var(--_list-item-gap);align-items:center;box-sizing:border-box;outline:0;text-decoration:none;border-radius:var(--_list-item-shape);-webkit-tap-highlight-color:transparent;background-color:var(--_list-item-background);height:var(--_list-item-height);min-height:var(--_list-item-height);padding:var(--_list-item-padding);margin:var(--_list-item-margin)}.forge-list-item.interactive{cursor:var(--_list-item-cursor)}.forge-list-item.disabled{cursor:var(--_list-item-disabled-cursor);opacity:var(--_list-item-disabled-opacity)}.forge-list-item.disabled ::slotted(button){cursor:var(--_list-item-disabled-cursor)}.anchor{position:absolute;inset:0}:host([two-line]) .forge-list-item{height:var(--_list-item-two-line-height);min-height:var(--_list-item-two-line-height)}:host([three-line]) .forge-list-item{height:var(--_list-item-three-line-height);min-height:var(--_list-item-three-line-height)}:host([dense]) .forge-list-item{--_list-item-gap:var(--_list-item-dense-gap);height:var(--_list-item-dense-one-line-height);min-height:var(--_list-item-dense-one-line-height)}:host([dense]) .text-container{font-size:var(--_list-item-dense-font-size)}:host([dense][indented]){margin-inline-start:var(--_list-item-dense-indent)}:host([dense][two-line]) .forge-list-item{height:var(--_list-item-dense-two-line-height);min-height:var(--_list-item-dense-two-line-height)}:host([dense][three-line]) .forge-list-item{height:var(--_list-item-dense-three-line-height);min-height:var(--_list-item-dense-three-line-height)}:host([selected]) .forge-list-item{color:var(--_list-item-selected-color)}:host([selected]) .forge-list-item::before{content:\"\";position:absolute;inset:0;border-radius:inherit;opacity:var(--_list-item-selected-opacity);background-color:var(--_list-item-selected-background);pointer-events:none}:host([selected]) .forge-list-item ::slotted([slot=end]),:host([selected]) .forge-list-item ::slotted([slot=leading]),:host([selected]) .forge-list-item ::slotted([slot=start]),:host([selected]) .forge-list-item ::slotted([slot=trailing]){color:var(--_list-item-selected-color);isolation:isolate}:host([selected]) .forge-list-item ::slotted([slot=leading]),:host([selected]) .forge-list-item ::slotted([slot=start]){color:var(--_list-item-start-selected-color)}:host([selected]) .forge-list-item ::slotted([slot=end]),:host([selected]) .forge-list-item ::slotted([slot=trailing]){color:var(--_list-item-end-selected-color)}:host([selected]) .text-container{color:var(--_list-item-selected-color)}:host([selected]) forge-state-layer{--forge-state-layer-color:var(--_list-item-selected-color)}:host([indented]) .forge-list-item{margin-inline-start:var(--_list-item-indent)}.text-container{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body2-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));letter-spacing:var(--forge-typography-body2-letter-spacing, .015625em);text-transform:var(--forge-typography-body2-text-transform,inherit);text-decoration:var(--forge-typography-body2-text-decoration,inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;isolation:isolate;font-size:var(--_list-item-text-font-size);font-weight:var(--_list-item-text-font-weight);line-height:var(--_list-item-text-line-height);flex:1;contain:layout}slot[name=secondary-text]::slotted(*),slot[name=tertiary-text]::slotted(*){-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--forge-typography-body1-font-family, var(--forge-typography-font-family, \"Roboto\", sans-serif));font-size:var(--forge-typography-body1-font-size, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-font-size-scale, .875)));font-weight:var(--forge-typography-body1-font-weight,400);line-height:var(--forge-typography-body1-line-height, calc(var(--forge-typography-font-size, 1rem) * var(--forge-typography-body-line-height-scale, 1.125)));letter-spacing:var(--forge-typography-body1-letter-spacing, .0357142857em);text-transform:var(--forge-typography-body1-text-transform,inherit);text-decoration:var(--forge-typography-body1-text-decoration,inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--_list-item-text-color);display:block}:host([selected]) slot[name=secondary-text]::slotted(*),:host([selected]) slot[name=tertiary-text]::slotted(*){color:var(--_list-item-selected-text-color)}::slotted(:is(button:not([slot]),[forge-list-item-button])){appearance:none;cursor:var(--_list-item-cursor);border:none;padding-block:0;padding-inline:0;margin:0;box-sizing:border-box;width:100%;background:0 0;color:inherit;outline:0;font:inherit;user-select:auto;text-align:inherit;letter-spacing:inherit;word-spacing:inherit;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:block}::slotted(a){outline:0;color:inherit!important;text-decoration:none!important}::slotted([slot=end]),::slotted([slot=leading]),::slotted([slot=start]),::slotted([slot=trailing]){color:var(--_list-item-text-color);display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;fill:currentColor}:host(:not([noninteractive])) ::slotted(:is(forge-checkbox,forge-radio,forge-switch):is([slot=start],[slot=end],[slot=leading],[slot=trailing]):not([forge-ignore])){--forge-focus-indicator-display:none;--forge-state-layer-display:none}:host([selected]) ::slotted([slot=leading]),:host([selected]) ::slotted([slot=start]){color:var(--_list-item-start-selected-color)}:host([selected]) ::slotted([slot=end]),:host([selected]) ::slotted([slot=trailing]){color:var(--_list-item-end-selected-color)}:host([wrap]) .forge-list-item{--_list-item-padding:var(--_list-item-wrap-padding);height:auto}:host([wrap]) .text-container{white-space:normal;overflow:visible;text-overflow:clip;line-height:normal}:host([wrap]) ::slotted(:is(button,[role=button][tabindex],[forge-list-item-button])){white-space:normal}:host([wrap]) slot[name=secondary-text]::slotted(*),:host([wrap]) slot[name=tertiary-text]::slotted(*){white-space:normal;overflow:visible;text-overflow:clip;line-height:normal}forge-focus-indicator{z-index:1;--forge-focus-indicator-shape:calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1))}forge-state-layer{border-radius:inherit}';
|
|
18
18
|
/**
|
|
19
19
|
* @tag forge-list-item
|
|
20
20
|
*
|
|
@@ -14,7 +14,7 @@ import { IconComponent, IconRegistry } from '../../icon';
|
|
|
14
14
|
import { StateLayerComponent } from '../../state-layer';
|
|
15
15
|
import { FocusIndicatorComponent } from '../../focus-indicator';
|
|
16
16
|
const template = '<template><div class=\"forge-split-view-panel\" id=\"root\" part=\"root\"><div class=\"forge-split-view-panel__handle\" id=\"handle\" part=\"handle\" role=\"separator\" aria-controls=\"content\" aria-grabbed=\"false\" tabindex=\"0\"><forge-icon class=\"forge-split-view-panel__icon\" id=\"icon\" part=\"icon\"></forge-icon><forge-state-layer target=\"handle\" id=\"state-layer\" exportparts=\"surface:state-layer\"></forge-state-layer><forge-focus-indicator inward target=\"handle\" part=\"focus-indicator\"></forge-focus-indicator></div><div class=\"forge-split-view-panel__content\" id=\"content\" part=\"content\" role=\"group\"><slot></slot></div></div></template>';
|
|
17
|
-
const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:
|
|
17
|
+
const styles = '.forge-split-view-panel{display:flex;width:100%;height:100%;overflow:hidden}.forge-split-view-panel__handle{color:var(--forge-theme-text-medium,rgba(0,0,0,.6));background-color:var(--forge-theme-outline,#e0e0e0);position:relative;display:flex;flex-shrink:0;justify-content:center;align-items:center;outline:0}.forge-split-view-panel__content{flex:1;overflow:hidden}.forge-split-view-panel--closed{display:none}.forge-split-view-panel--disabled #handle{pointer-events:none}.forge-split-view-panel--disabled .forge-split-view-panel__icon{display:none}.forge-split-view-panel[orientation=horizontal]{min-width:var(--forge-split-view-handle-width,8px);width:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:row}.forge-split-view-panel[orientation=horizontal] .forge-split-view-panel__handle{width:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u79y01n;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u79y01n{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--closing[resizable=start]{position:absolute;top:0;right:0;animation-name:u79y02l;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u79y02l{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u79y02v;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u79y02v{from{transform:none}to{transform:translateX(-100%)}}.forge-split-view-panel[orientation=horizontal].forge-split-view-panel--opening[resizable=start]{position:absolute;top:0;right:0;animation-name:u79y03q;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u79y03q{from{transform:none}to{transform:translateX(100%)}}.forge-split-view-panel[orientation=vertical]{min-height:var(--forge-split-view-handle-width,8px);height:calc(var(--forge-split-view-panel-size,unset) + var(--forge-split-view-handle-width,8px));flex-direction:column}.forge-split-view-panel[orientation=vertical] .forge-split-view-panel__handle{height:var(--forge-split-view-handle-width,8px);cursor:var(--forge-split-view-panel-cursor)}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=end]{position:absolute;top:0;left:0;animation-name:u79y04i;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u79y04i{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--closing[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u79y04t;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1))}@keyframes u79y04t{from{transform:none}to{transform:translateY(100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=end]{position:absolute;top:0;left:0;animation-name:u79y05l;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u79y05l{from{transform:none}to{transform:translateY(-100%)}}.forge-split-view-panel[orientation=vertical].forge-split-view-panel--opening[resizable=start]{position:absolute;bottom:0;left:0;animation-name:u79y06f;animation-duration:var(--forge-animation-duration-medium2, 300ms);animation-timing-function:var(--forge-animation-easing-standard,cubic-bezier(0.2,0,0,1));animation-direction:reverse}@keyframes u79y06f{from{transform:none}to{transform:translateY(100%)}}:host{z-index:var(--forge-split-view-animating-layer)!important;display:block;position:relative;height:100%;width:100%;flex:0}:host([hidden]){display:none}:host(:not([resizable=start],[resizable=end])){flex:1}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel{width:100%;height:100%;min-width:0;min-height:0}:host(:not([resizable=start],[resizable=end])) .forge-split-view-panel__handle{display:none}forge-focus-indicator{--forge-focus-indicator-active-width:2px}';
|
|
18
18
|
/**
|
|
19
19
|
* @tag forge-split-view-panel
|
|
20
20
|
*
|