@dereekb/dbx-form 10.1.12 → 10.1.14
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/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +55 -26
- package/esm2022/lib/formly/field/value/date/datetime.field.mjs +4 -3
- package/fesm2022/dereekb-dbx-form.mjs +57 -27
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/formly/field/value/date/_date.scss +4 -0
- package/lib/formly/field/value/date/datetime.field.component.d.ts +16 -3
- package/lib/formly/field/value/date/datetime.field.d.ts +1 -1
- package/mapbox/package.json +1 -1
- package/package.json +1 -1
|
@@ -17,13 +17,14 @@ export function timeOnlyField(config = {}) {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
export function dateTimeField(config = {}) {
|
|
20
|
-
const { key = 'date', dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
|
|
20
|
+
const { key = 'date', showClearButton, dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
|
|
21
21
|
const classGetter = 'dbx-mat-form-field-disable-underline dbx-mat-form-date-time-field-wrapper';
|
|
22
22
|
const fieldConfig = formlyField({
|
|
23
23
|
key,
|
|
24
24
|
type: 'datetime',
|
|
25
25
|
...propsAndConfigForFieldConfig(config, {
|
|
26
26
|
...materialFormField,
|
|
27
|
+
showClearButton,
|
|
27
28
|
classGetter,
|
|
28
29
|
dateLabel,
|
|
29
30
|
timeLabel,
|
|
@@ -83,7 +84,7 @@ export function dateRangeField(config = {}) {
|
|
|
83
84
|
};
|
|
84
85
|
}
|
|
85
86
|
export function dateTimeRangeField(inputConfig = {}) {
|
|
86
|
-
const { required = false, start: inputStart, end: inputEnd, timezone, timeDate, showTimezone, presets } = inputConfig;
|
|
87
|
+
const { required = false, start: inputStart, end: inputEnd, timezone, timeDate, showTimezone, presets, valueMode } = inputConfig;
|
|
87
88
|
function dateTimeRangeFieldConfig(config) {
|
|
88
89
|
return {
|
|
89
90
|
...config,
|
|
@@ -138,4 +139,4 @@ export function fixedDateRangeField(config = {}) {
|
|
|
138
139
|
});
|
|
139
140
|
return fieldConfig;
|
|
140
141
|
}
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxZQUFZ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O1FBQ0gsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixXQUFXO1lBQ1gsY0FBYztZQUNkLFlBQVk7WUFDWixTQUFTO1lBQ1QsT0FBTztZQUNQLFFBQVE7WUFDUixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IGZsZXhMYXlvdXRXcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgfSBmcm9tICcuL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7fVxuZXhwb3J0IHR5cGUgVGltZUZpZWxkQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnc2hvd0RhdGUnIHwgJ3RpbWVPbmx5Jz47XG5cbmV4cG9ydCBjb25zdCBUQUtFX05FWFRfVVBDT01JTkdfVElNRV9DT05GSUdfT0JTOiAoKSA9PiBPYnNlcnZhYmxlPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSAoKSA9PlxuICBvZih7XG4gICAgdGFrZU5leHRVcGNvbWluZ1RpbWU6IHRydWUsXG4gICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgfSk7XG5cbi8qKlxuICogU2FtZSBhcyBEYXRlVGltZSBmaWVsZCBidXQgd2l0aCB0aGUgRGF0ZSBpbnB1dCBoaWRkZW4gYnkgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPbmx5RmllbGQoY29uZmlnOiBQYXJ0aWFsPFRpbWVGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIGRhdGVUaW1lRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgIHRpbWVPbmx5OiB0cnVlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVGaWVsZChjb25maWc6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7fSkge1xuICBjb25zdCB7IGtleSA9ICdkYXRlJywgZGF0ZUxhYmVsLCB0aW1lTGFiZWwsIGFsbERheUxhYmVsLCBhdFRpbWVMYWJlbCwgdGltZURhdGUsIHRpbWV6b25lLCBzaG93VGltZXpvbmUsIHRpbWVNb2RlID0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELCB2YWx1ZU1vZGUsIGZ1bGxEYXlJblVUQywgZnVsbERheUZpZWxkTmFtZSwgcGlja2VyQ29uZmlnLCBnZXRTeW5jRmllbGRzT2JzLCBoaWRlRGF0ZVBpY2tlciwgaGlkZURhdGVIaW50LCB0aW1lT25seSA9IGZhbHNlLCBwcmVzZXRzLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNsYXNzR2V0dGVyID0gJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtbWF0LWZvcm0tZGF0ZS10aW1lLWZpZWxkLXdyYXBwZXInO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2RhdGV0aW1lJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBjbGFzc0dldHRlcixcbiAgICAgIGRhdGVMYWJlbCxcbiAgICAgIHRpbWVMYWJlbCxcbiAgICAgIGFsbERheUxhYmVsLFxuICAgICAgYXRUaW1lTGFiZWwsXG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICB0aW1lT25seSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lTW9kZTogdGltZU9ubHkgPyBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQgOiB0aW1lTW9kZSxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgdGltZURhdGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5RmllbGROYW1lLFxuICAgICAgZnVsbERheUluVVRDLFxuICAgICAgaGlkZURhdGVQaWNrZXIsXG4gICAgICBoaWRlRGF0ZUhpbnQsXG4gICAgICBwaWNrZXJDb25maWcsXG4gICAgICBnZXRTeW5jRmllbGRzT2JzXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnZGF0ZUxhYmVsJyB8ICd0aW1lT25seScgfCAndGltZU1vZGUnIHwgJ2dldFN5bmNGaWVsZHNPYnMnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRGF0ZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cyc+IHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VGaWVsZChjb25maWc6IERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IHJlcXVpcmVkOiBpbnB1dFJlcXVpcmVkLCBzdGFydCwgZW5kLCB0aW1lRGF0ZSwgdGltZXpvbmUsIHNob3dUaW1lem9uZSwgcHJlc2V0cyB9ID0gY29uZmlnO1xuICBjb25zdCByZXF1aXJlZCA9IGlucHV0UmVxdWlyZWQgPz8gc3RhcnQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGRLZXkgPSBzdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEZpZWxkS2V5ID0gZW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ1N0YXJ0JyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IGVuZEZpZWxkS2V5LCBzeW5jVHlwZTogJ2FmdGVyJyB9XSksXG4gICAgcHJlc2V0cyxcbiAgICBhbGxEYXlMYWJlbDogJycsXG4gICAgdGltZURhdGUsXG4gICAgdGltZXpvbmUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIC4uLnN0YXJ0LFxuICAgIHJlcXVpcmVkLFxuICAgIGtleTogc3RhcnRGaWVsZEtleVxuICB9KTtcblxuICBjb25zdCBlbmRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ0VuZCcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FLFxuICAgIGdldFN5bmNGaWVsZHNPYnM6ICgpID0+IG9mKFt7IHN5bmNXaXRoOiBzdGFydEZpZWxkS2V5LCBzeW5jVHlwZTogJ2JlZm9yZScgfV0pLFxuICAgIHByZXNldHMsXG4gICAgYWxsRGF5TGFiZWw6ICcnLFxuICAgIHRpbWVEYXRlLFxuICAgIHRpbWV6b25lLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICAuLi5lbmQsXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBlbmRGaWVsZEtleVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGtleTogdW5kZWZpbmVkLFxuICAgIGZpZWxkR3JvdXA6IFtmbGV4TGF5b3V0V3JhcHBlcihbc3RhcnRGaWVsZCwgZW5kRmllbGRdLCB7IHJlbGF0aXZlOiB0cnVlLCBicmVha1RvQ29sdW1uOiB0cnVlLCBicmVha3BvaW50OiAnbGFyZ2UnIH0pXVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnID0gT21pdDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnLCAnYWxsRGF5TGFiZWwnIHwgJ2Z1bGxEYXlGaWVsZE5hbWUnIHwgJ2Z1bGxEYXlJblVUQyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cyc+IHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVJhbmdlRmllbGQoaW5wdXRDb25maWc6IERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZCA9IGZhbHNlLCBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCwgdGltZXpvbmUsIHRpbWVEYXRlLCBzaG93VGltZXpvbmUsIHByZXNldHMgfSA9IGlucHV0Q29uZmlnO1xuXG4gIGZ1bmN0aW9uIGRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhjb25maWc6IE1heWJlPFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz4+KTogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnM6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVPbmx5OiB0cnVlLFxuICAgICAgaGlkZURhdGVIaW50OiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0S2V5ID0gaW5wdXRTdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEtleSA9IGlucHV0RW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnQ6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7XG4gICAgbGFiZWw6ICdTdGFydCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRTdGFydCksXG4gICAga2V5OiBzdGFydEtleVxuICB9O1xuXG4gIGNvbnN0IGVuZDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ0VuZCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRFbmQpLFxuICAgIGtleTogZW5kS2V5XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHRpbWV6b25lLFxuICAgIHRpbWVEYXRlLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICBwcmVzZXRzLFxuICAgIHN0YXJ0LFxuICAgIGVuZFxuICB9O1xuXG4gIHJldHVybiBkYXRlUmFuZ2VGaWVsZChjb25maWcpO1xufVxuXG4vLyBNQVJLOiBGaXhlZERhdGVSYW5nZVxuZXhwb3J0IGludGVyZmFjZSBGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhlZERhdGVSYW5nZUZpZWxkKGNvbmZpZzogUGFydGlhbDxGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGVSYW5nZScsIGRhdGVSYW5nZUlucHV0LCBwaWNrZXJDb25maWcsIHRpbWV6b25lLCBzZWxlY3Rpb25Nb2RlLCBzaG93VGltZXpvbmUsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBwcmVzZXRzLCBzaG93UmFuZ2VJbnB1dCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBjbGFzc0dldHRlciA9ICdkYngtbWF0LWZvcm0tZmllbGQtZGlzYWJsZS11bmRlcmxpbmUgZGJ4LWZvcm0tZml4ZWQtZGF0ZS1yYW5nZS1maWVsZC13cmFwcGVyJztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdmaXhlZGRhdGVyYW5nZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgY2xhc3NHZXR0ZXIsXG4gICAgICBkYXRlUmFuZ2VJbnB1dCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lem9uZSxcbiAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBzaG93UmFuZ2VJbnB1dFxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFj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QUFXLEdBQTZDLFdBQVcsQ0FBQztRQUN4RSxHQUFHO1FBQ0gsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixXQUFXO1lBQ1gsY0FBYztZQUNkLFlBQVk7WUFDWixTQUFTO1lBQ1QsT0FBTztZQUNQLFFBQVE7WUFDUixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixjQUFjO1NBQ2YsQ0FBQztLQUNILENBQUMsQ0FBQztJQUVILE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vZmllbGQnO1xuaW1wb3J0IHsgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUsIERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZGF0ZXRpbWUuZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IGZsZXhMYXlvdXRXcmFwcGVyIH0gZnJvbSAnLi4vLi4vd3JhcHBlci93cmFwcGVyJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMgfSBmcm9tICcuL2ZpeGVkZGF0ZXJhbmdlLmZpZWxkLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVRpbWVGaWVsZENvbmZpZyBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRGJ4RGF0ZVRpbWVGaWVsZFByb3BzLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB7fVxuZXhwb3J0IHR5cGUgVGltZUZpZWxkQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnc2hvd0RhdGUnIHwgJ3RpbWVPbmx5Jz47XG5cbmV4cG9ydCBjb25zdCBUQUtFX05FWFRfVVBDT01JTkdfVElNRV9DT05GSUdfT0JTOiAoKSA9PiBPYnNlcnZhYmxlPERieERhdGVUaW1lUGlja2VyQ29uZmlndXJhdGlvbj4gPSAoKSA9PlxuICBvZih7XG4gICAgdGFrZU5leHRVcGNvbWluZ1RpbWU6IHRydWUsXG4gICAgcm91bmREb3duVG9NaW51dGU6IHRydWVcbiAgfSk7XG5cbi8qKlxuICogU2FtZSBhcyBEYXRlVGltZSBmaWVsZCBidXQgd2l0aCB0aGUgRGF0ZSBpbnB1dCBoaWRkZW4gYnkgZGVmYXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRpbWVPbmx5RmllbGQoY29uZmlnOiBQYXJ0aWFsPFRpbWVGaWVsZENvbmZpZz4gPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgcmV0dXJuIGRhdGVUaW1lRmllbGQoe1xuICAgIC4uLmNvbmZpZyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgIHRpbWVPbmx5OiB0cnVlXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVGaWVsZChjb25maWc6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7fSkge1xuICBjb25zdCB7IGtleSA9ICdkYXRlJywgc2hvd0NsZWFyQnV0dG9uLCBkYXRlTGFiZWwsIHRpbWVMYWJlbCwgYWxsRGF5TGFiZWwsIGF0VGltZUxhYmVsLCB0aW1lRGF0ZSwgdGltZXpvbmUsIHNob3dUaW1lem9uZSwgdGltZU1vZGUgPSBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBmdWxsRGF5RmllbGROYW1lLCBwaWNrZXJDb25maWcsIGdldFN5bmNGaWVsZHNPYnMsIGhpZGVEYXRlUGlja2VyLCBoaWRlRGF0ZUhpbnQsIHRpbWVPbmx5ID0gZmFsc2UsIHByZXNldHMsIG1hdGVyaWFsRm9ybUZpZWxkIH0gPSBjb25maWc7XG5cbiAgY29uc3QgY2xhc3NHZXR0ZXIgPSAnZGJ4LW1hdC1mb3JtLWZpZWxkLWRpc2FibGUtdW5kZXJsaW5lIGRieC1tYXQtZm9ybS1kYXRlLXRpbWUtZmllbGQtd3JhcHBlcic7XG4gIGNvbnN0IGZpZWxkQ29uZmlnOiBGb3JtbHlGaWVsZENvbmZpZzxEYnhEYXRlVGltZUZpZWxkUHJvcHM+ID0gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnZGF0ZXRpbWUnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIHNob3dDbGVhckJ1dHRvbixcbiAgICAgIGNsYXNzR2V0dGVyLFxuICAgICAgZGF0ZUxhYmVsLFxuICAgICAgdGltZUxhYmVsLFxuICAgICAgYWxsRGF5TGFiZWwsXG4gICAgICBhdFRpbWVMYWJlbCxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHRpbWVPbmx5LFxuICAgICAgcHJlc2V0cyxcbiAgICAgIHRpbWVNb2RlOiB0aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRpbWVNb2RlLFxuICAgICAgdGltZXpvbmUsXG4gICAgICB0aW1lRGF0ZSxcbiAgICAgIHNob3dUaW1lem9uZSxcbiAgICAgIGZ1bGxEYXlGaWVsZE5hbWUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBoaWRlRGF0ZVBpY2tlcixcbiAgICAgIGhpZGVEYXRlSGludCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnNcbiAgICB9KVxuICB9KTtcblxuICByZXR1cm4gZmllbGRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdkYXRlTGFiZWwnIHwgJ3RpbWVPbmx5JyB8ICd0aW1lTW9kZScgfCAnZ2V0U3luY0ZpZWxkc09icyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIFBpY2s8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3RpbWVEYXRlJyB8ICd0aW1lem9uZScgfCAnc2hvd1RpbWV6b25lJyB8ICdwcmVzZXRzJz4ge1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZUZpZWxkKGNvbmZpZzogRGF0ZURhdGVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgcmVxdWlyZWQ6IGlucHV0UmVxdWlyZWQsIHN0YXJ0LCBlbmQsIHRpbWVEYXRlLCB0aW1lem9uZSwgc2hvd1RpbWV6b25lLCBwcmVzZXRzIH0gPSBjb25maWc7XG4gIGNvbnN0IHJlcXVpcmVkID0gaW5wdXRSZXF1aXJlZCA/PyBzdGFydD8ucmVxdWlyZWQgPz8gZmFsc2U7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZEtleSA9IHN0YXJ0Py5rZXkgPz8gJ3N0YXJ0JztcbiAgY29uc3QgZW5kRmllbGRLZXkgPSBlbmQ/LmtleSA/PyAnZW5kJztcblxuICBjb25zdCBzdGFydEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnU3RhcnQnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSxcbiAgICBnZXRTeW5jRmllbGRzT2JzOiAoKSA9PiBvZihbeyBzeW5jV2l0aDogZW5kRmllbGRLZXksIHN5bmNUeXBlOiAnYWZ0ZXInIH1dKSxcbiAgICBwcmVzZXRzLFxuICAgIGFsbERheUxhYmVsOiAnJyxcbiAgICB0aW1lRGF0ZSxcbiAgICB0aW1lem9uZSxcbiAgICBzaG93VGltZXpvbmUsXG4gICAgLi4uc3RhcnQsXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBzdGFydEZpZWxkS2V5XG4gIH0pO1xuXG4gIGNvbnN0IGVuZEZpZWxkID0gZGF0ZVRpbWVGaWVsZCh7XG4gICAgZGF0ZUxhYmVsOiAnRW5kJyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IHN0YXJ0RmllbGRLZXksIHN5bmNUeXBlOiAnYmVmb3JlJyB9XSksXG4gICAgcHJlc2V0cyxcbiAgICBhbGxEYXlMYWJlbDogJycsXG4gICAgdGltZURhdGUsXG4gICAgdGltZXpvbmUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIC4uLmVuZCxcbiAgICByZXF1aXJlZCxcbiAgICBrZXk6IGVuZEZpZWxkS2V5XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAga2V5OiB1bmRlZmluZWQsXG4gICAgZmllbGRHcm91cDogW2ZsZXhMYXlvdXRXcmFwcGVyKFtzdGFydEZpZWxkLCBlbmRGaWVsZF0sIHsgcmVsYXRpdmU6IHRydWUsIGJyZWFrVG9Db2x1bW46IHRydWUsIGJyZWFrcG9pbnQ6ICdsYXJnZScgfSldXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdGVUaW1lUmFuZ2VGaWVsZFRpbWVDb25maWcgPSBPbWl0PERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcsICdhbGxEYXlMYWJlbCcgfCAnZnVsbERheUZpZWxkTmFtZScgfCAnZnVsbERheUluVVRDJz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZURhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIFBpY2s8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3RpbWVEYXRlJyB8ICd0aW1lem9uZScgfCAnc2hvd1RpbWV6b25lJyB8ICdwcmVzZXRzJyB8ICd2YWx1ZU1vZGUnPiB7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc3RhcnQ/OiBQYXJ0aWFsPERhdGVUaW1lUmFuZ2VGaWVsZFRpbWVDb25maWc+O1xuICBlbmQ/OiBQYXJ0aWFsPERhdGVUaW1lUmFuZ2VGaWVsZFRpbWVDb25maWc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVRpbWVSYW5nZUZpZWxkKGlucHV0Q29uZmlnOiBEYXRlRGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgcmVxdWlyZWQgPSBmYWxzZSwgc3RhcnQ6IGlucHV0U3RhcnQsIGVuZDogaW5wdXRFbmQsIHRpbWV6b25lLCB0aW1lRGF0ZSwgc2hvd1RpbWV6b25lLCBwcmVzZXRzLCB2YWx1ZU1vZGUgfSA9IGlucHV0Q29uZmlnO1xuXG4gIGZ1bmN0aW9uIGRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhjb25maWc6IE1heWJlPFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz4+KTogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnM6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVPbmx5OiB0cnVlLFxuICAgICAgaGlkZURhdGVIaW50OiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0S2V5ID0gaW5wdXRTdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEtleSA9IGlucHV0RW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnQ6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7XG4gICAgbGFiZWw6ICdTdGFydCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRTdGFydCksXG4gICAga2V5OiBzdGFydEtleVxuICB9O1xuXG4gIGNvbnN0IGVuZDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ0VuZCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRFbmQpLFxuICAgIGtleTogZW5kS2V5XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHRpbWV6b25lLFxuICAgIHRpbWVEYXRlLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICBwcmVzZXRzLFxuICAgIHN0YXJ0LFxuICAgIGVuZFxuICB9O1xuXG4gIHJldHVybiBkYXRlUmFuZ2VGaWVsZChjb25maWcpO1xufVxuXG4vLyBNQVJLOiBGaXhlZERhdGVSYW5nZVxuZXhwb3J0IGludGVyZmFjZSBGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhlZERhdGVSYW5nZUZpZWxkKGNvbmZpZzogUGFydGlhbDxGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGVSYW5nZScsIGRhdGVSYW5nZUlucHV0LCBwaWNrZXJDb25maWcsIHRpbWV6b25lLCBzZWxlY3Rpb25Nb2RlLCBzaG93VGltZXpvbmUsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBwcmVzZXRzLCBzaG93UmFuZ2VJbnB1dCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBjbGFzc0dldHRlciA9ICdkYngtbWF0LWZvcm0tZmllbGQtZGlzYWJsZS11bmRlcmxpbmUgZGJ4LWZvcm0tZml4ZWQtZGF0ZS1yYW5nZS1maWVsZC13cmFwcGVyJztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdmaXhlZGRhdGVyYW5nZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgY2xhc3NHZXR0ZXIsXG4gICAgICBkYXRlUmFuZ2VJbnB1dCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lem9uZSxcbiAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBzaG93UmFuZ2VJbnB1dFxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
|
|
@@ -3869,6 +3869,12 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
3869
3869
|
return this.timeOnly ? DbxDateTimeFieldTimeMode.REQUIRED : this.dateTimeField.timeMode ?? DbxDateTimeFieldTimeMode.REQUIRED;
|
|
3870
3870
|
}
|
|
3871
3871
|
}
|
|
3872
|
+
get isDateRequired() {
|
|
3873
|
+
return this.props.required ?? false;
|
|
3874
|
+
}
|
|
3875
|
+
get isTimeRequired() {
|
|
3876
|
+
return this.isDateRequired && this.timeMode === DbxDateTimeFieldTimeMode.REQUIRED;
|
|
3877
|
+
}
|
|
3872
3878
|
get description() {
|
|
3873
3879
|
return this.field.props.description;
|
|
3874
3880
|
}
|
|
@@ -3890,6 +3896,9 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
3890
3896
|
get presets() {
|
|
3891
3897
|
return this.field.props.presets;
|
|
3892
3898
|
}
|
|
3899
|
+
get showClearButton() {
|
|
3900
|
+
return this.field.props.showClearButton;
|
|
3901
|
+
}
|
|
3893
3902
|
constructor(cdRef, dbxDateTimeFieldConfigService) {
|
|
3894
3903
|
super();
|
|
3895
3904
|
this.cdRef = cdRef;
|
|
@@ -3906,6 +3915,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
3906
3915
|
this._offset = new BehaviorSubject(0);
|
|
3907
3916
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
3908
3917
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
3918
|
+
this._cleared = new Subject();
|
|
3909
3919
|
this._updateTime = new Subject();
|
|
3910
3920
|
this.timezone$ = this._defaultTimezone.pipe(switchMapMaybeDefault(), distinctUntilChanged()).pipe(map((defaultTimezone) => {
|
|
3911
3921
|
return defaultTimezone ?? guessCurrentTimezone();
|
|
@@ -3941,16 +3951,17 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
3941
3951
|
// every 10 seconds, refresh w/interval
|
|
3942
3952
|
startWith(0), map(() => new Date().getMinutes()), distinctUntilChanged(), tap(() => this.cdRef.markForCheck()), switchMap(() => this.valueInSystemTimezone$), shareReplay(1));
|
|
3943
3953
|
this.timeString$ = this.valueInSystemTimezone$.pipe(map((x) => (x ? toLocalReadableTimeString(x) : '')), distinctUntilChanged(), shareReplay(1));
|
|
3944
|
-
this.dateInputCtrl = new FormControl(
|
|
3954
|
+
this.dateInputCtrl = new FormControl(null, {
|
|
3945
3955
|
validators: []
|
|
3946
3956
|
});
|
|
3947
|
-
this.timeInputCtrl = new FormControl(
|
|
3957
|
+
this.timeInputCtrl = new FormControl(null, {
|
|
3948
3958
|
validators: [Validators.pattern(/^(now)$|^([0-9]|(0[0-9])|(1[0-9])|(2[0-3]))(:)?([0-5][0-9])?(\s)?([apAP][Mm])?(\\s)*$/)]
|
|
3949
3959
|
});
|
|
3950
3960
|
this.fullDay$ = this.fullDayControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), distinctUntilChanged(), shareReplay(1));
|
|
3951
3961
|
this.showTimeInput$ = this.fullDay$.pipe(map((x) => !x && this.timeMode !== DbxDateTimeFieldTimeMode.NONE));
|
|
3952
3962
|
this.showAddTime$ = this.showTimeInput$.pipe(map((x) => !x && this.timeMode === DbxDateTimeFieldTimeMode.OPTIONAL), shareReplay(1));
|
|
3953
|
-
this.
|
|
3963
|
+
this.currentDate$ = this.dateInputCtrl.valueChanges.pipe(startWith(this.dateInputCtrl.value), shareReplay(1));
|
|
3964
|
+
this.date$ = this.currentDate$.pipe(filterMaybe(), shareReplay(1));
|
|
3954
3965
|
this.timezoneAbbreviation$ = combineLatest([this.date$, this.timezone$, this.timeDate$]).pipe(map(([date, timezone, timeDate]) => getTimezoneAbbreviation(timezone, timeDate ?? date)), distinctUntilChanged(), shareReplay(1));
|
|
3955
3966
|
this.dateValue$ = merge(this.date$, this.valueInSystemTimezone$.pipe(skipFirstMaybe())).pipe(map((x) => (x ? startOfDay(x) : null)), distinctUntilChanged(isSameDateDay), shareReplay(1));
|
|
3956
3967
|
this.timeInput$ = this._updateTime.pipe(debounceTime(5), map(() => this.timeInputCtrl.value || ''), distinctUntilChanged());
|
|
@@ -3978,29 +3989,41 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
3978
3989
|
}), shareReplay(1));
|
|
3979
3990
|
this.syncConfigBeforeValue$ = syncConfigValueObs(this.parsedSyncConfigs$, 'before');
|
|
3980
3991
|
this.syncConfigAfterValue$ = syncConfigValueObs(this.parsedSyncConfigs$, 'after');
|
|
3981
|
-
this.
|
|
3992
|
+
this.isTimeCleared$ = combineLatest([this.currentDate$, this._timeDate.pipe(startWith(null))]).pipe(switchMap(([date, time]) => {
|
|
3993
|
+
const isTimeCleared = Boolean(!date && !time);
|
|
3994
|
+
return this._cleared.pipe(map(() => true), startWith(isTimeCleared));
|
|
3995
|
+
}), distinctUntilChanged(), shareReplay(1));
|
|
3996
|
+
this.rawDateTime$ = combineLatest([
|
|
3997
|
+
this._config.pipe(first(), switchMap(() => (this.timeOnly ? of(null) : this.dateValue$))),
|
|
3998
|
+
this.timeInput$.pipe(startWith(null)),
|
|
3999
|
+
this.fullDay$,
|
|
4000
|
+
this.timeDate$,
|
|
4001
|
+
this.isTimeCleared$
|
|
4002
|
+
]).pipe(map(([date, timeString, fullDay, timeDate, isTimeCleared]) => {
|
|
3982
4003
|
let result;
|
|
3983
|
-
if (!
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
if (
|
|
3988
|
-
if (
|
|
3989
|
-
|
|
4004
|
+
if (!isTimeCleared) {
|
|
4005
|
+
if (!date || this.timeOnly) {
|
|
4006
|
+
date = timeDate ?? new Date(); // use the time date, or default to the current day
|
|
4007
|
+
}
|
|
4008
|
+
if (date) {
|
|
4009
|
+
if (fullDay) {
|
|
4010
|
+
if (this.dateTimeField.fullDayInUTC) {
|
|
4011
|
+
result = utcDayForDate(date);
|
|
4012
|
+
}
|
|
4013
|
+
else {
|
|
4014
|
+
result = startOfDay(date);
|
|
4015
|
+
}
|
|
3990
4016
|
}
|
|
3991
|
-
else {
|
|
3992
|
-
result =
|
|
4017
|
+
else if (timeString) {
|
|
4018
|
+
result =
|
|
4019
|
+
readableTimeStringToDate(timeString, {
|
|
4020
|
+
date,
|
|
4021
|
+
useSystemTimezone: true
|
|
4022
|
+
}) ?? date;
|
|
4023
|
+
}
|
|
4024
|
+
else if (!this.timeOnly) {
|
|
4025
|
+
result = date;
|
|
3993
4026
|
}
|
|
3994
|
-
}
|
|
3995
|
-
else if (timeString) {
|
|
3996
|
-
result =
|
|
3997
|
-
readableTimeStringToDate(timeString, {
|
|
3998
|
-
date,
|
|
3999
|
-
useSystemTimezone: true
|
|
4000
|
-
}) ?? date;
|
|
4001
|
-
}
|
|
4002
|
-
else if (!this.timeOnly) {
|
|
4003
|
-
result = date;
|
|
4004
4027
|
}
|
|
4005
4028
|
}
|
|
4006
4029
|
return result;
|
|
@@ -4050,7 +4073,9 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
4050
4073
|
}
|
|
4051
4074
|
return date;
|
|
4052
4075
|
}), distinctUntilChanged(isSameDateHoursAndMinutes), shareReplay(1));
|
|
4076
|
+
this.hasEmptyDisplayValue$ = this.displayValue$.pipe(map((x) => !x), distinctUntilChanged(), shareReplay(1));
|
|
4053
4077
|
this.presets$ = this._presets.pipe(switchMapMaybeObs(), map((x) => x.map(dateTimePreset)), shareReplay(1));
|
|
4078
|
+
this.showClearButton$ = this.hasEmptyDisplayValue$.pipe(map((x) => Boolean(this.showClearButton && !x)), distinctUntilChanged(), shareReplay(1));
|
|
4054
4079
|
}
|
|
4055
4080
|
ngOnInit() {
|
|
4056
4081
|
this._formControlObs.next(this.formControl);
|
|
@@ -4150,6 +4175,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
4150
4175
|
this._offset.complete();
|
|
4151
4176
|
this._formControlObs.complete();
|
|
4152
4177
|
this._updateTime.complete();
|
|
4178
|
+
this._cleared.complete();
|
|
4153
4179
|
this._syncConfigObs.complete();
|
|
4154
4180
|
}
|
|
4155
4181
|
selectPreset(preset) {
|
|
@@ -4266,12 +4292,15 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
|
|
|
4266
4292
|
x.setValue(fullDay);
|
|
4267
4293
|
});
|
|
4268
4294
|
}
|
|
4295
|
+
clearValue() {
|
|
4296
|
+
this._cleared.next();
|
|
4297
|
+
}
|
|
4269
4298
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDateTimeFieldComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DbxDateTimeFieldMenuPresetsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4270
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxDateTimeFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\" [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">{{ allDayLabel }}</b>\n {{ displayValue$ | async | date: 'fullDate' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input #dateInput matInput [min]=\"dateInputMin$ | async\" [max]=\"dateInputMax$ | async\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"(pickerFilter$ | async) || defaultPickerFilter\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" (keydown)=\"keydownOnDateInput($event)\" />\n <mat-datepicker #picker></mat-datepicker>\n <button matPrefix class=\"dbx-datetime-row-button\" *ngIf=\"!hideDatePicker\" mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <span matTextSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input #timeInput matInput [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnTimeInput($event)\" />\n <button matPrefix class=\"dbx-datetime-row-button\" mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$1.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3$2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i2.DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: i2.TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: i2.GetValuePipe, name: "getValue" }] }); }
|
|
4299
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DbxDateTimeFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\">\n <ng-container [ngSwitch]=\"hasEmptyDisplayValue$ | async\">\n <ng-container *ngSwitchCase=\"true\">\n <span class=\"dbx-small\">No date/time set</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"false\">\n <ng-container [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">{{ allDayLabel }}</b>\n {{ displayValue$ | async | date: 'fullDate' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input #dateInput matInput [required]=\"isDateRequired\" [min]=\"dateInputMin$ | async\" [max]=\"dateInputMax$ | async\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"(pickerFilter$ | async) || defaultPickerFilter\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" (keydown)=\"keydownOnDateInput($event)\" />\n <mat-datepicker #picker></mat-datepicker>\n <button matPrefix class=\"dbx-datetime-row-button\" *ngIf=\"!hideDatePicker\" mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <button matSuffix *ngIf=\"showClearButton$ | async\" class=\"dbx-datetime-clear-button\" mat-icon-button aria-label=\"clears the date and time menu\" [disabled]=\"disabled\" (click)=\"clearValue()\">\n <mat-icon>clear</mat-icon>\n </button>\n <span matTextSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input #timeInput matInput [required]=\"isTimeRequired\" [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnTimeInput($event)\" />\n <button matPrefix class=\"dbx-datetime-row-button\" mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4$3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i2$1.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3$2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3$2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i2$3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i2.DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: i2.TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: i2.GetValuePipe, name: "getValue" }] }); }
|
|
4271
4300
|
}
|
|
4272
4301
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDateTimeFieldComponent, decorators: [{
|
|
4273
4302
|
type: Component,
|
|
4274
|
-
args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\" [ngSwitch]=\"fullDay$ | async\">\n
|
|
4303
|
+
args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n <!-- Additional spacing -->\n <dbx-button-spacer *ngIf=\"!dateOnly\"></dbx-button-spacer>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"showDateInput ? '50' : '100'\">\n <ng-container *ngIf=\"showTimeInput$ | async\">\n <ng-container *ngTemplateOutlet=\"timeMenuAndInputTemplate\"></ng-container>\n </ng-container>\n <div *ngIf=\"showAddTime$ | async\" class=\"add-time-button-wrapper\">\n <button mat-button class=\"mat-datepicker-button-highlight dbx-button-spacer add-time-button\" ngClass.lt-sm=\"add-time-button-full\" (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n </div>\n <div *ngIf=\"!hideDateHint\" class=\"dbx-datetime-row dbx-datetime-hint-row\" fxFlex=\"100\">\n <div class=\"dbx-hint\">\n <ng-container [ngSwitch]=\"hasEmptyDisplayValue$ | async\">\n <ng-container *ngSwitchCase=\"true\">\n <span class=\"dbx-small\">No date/time set</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"false\">\n <ng-container [ngSwitch]=\"fullDay$ | async\">\n <small *ngSwitchCase=\"true\">\n <b class=\"dbx-ok\">{{ allDayLabel }}</b>\n {{ displayValue$ | async | date: 'fullDate' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | dateDistance }})\n </small>\n <small *ngSwitchCase=\"false\">\n <ng-container *ngIf=\"displayValue$ | async\">\n <b class=\"dbx-ok\">{{ atTimeLabel }}</b>\n {{ displayValue$ | async | date: 'medium' }} {{ timezoneAbbreviation$ | async }} ({{ displayValue$ | async | timeDistance }})\n </ng-container>\n </small>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n\n<!-- Date Input Template -->\n<ng-template #dateInputTemplate>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ dateLabel }}</mat-label>\n <input #dateInput matInput [required]=\"isDateRequired\" [min]=\"dateInputMin$ | async\" [max]=\"dateInputMax$ | async\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"(pickerFilter$ | async) || defaultPickerFilter\" (dateChange)=\"datePicked($event)\" [value]=\"dateValue$ | async\" (keydown)=\"keydownOnDateInput($event)\" />\n <mat-datepicker #picker></mat-datepicker>\n <button matPrefix class=\"dbx-datetime-row-button\" *ngIf=\"!hideDatePicker\" mat-icon-button (click)=\"picker.open()\" [disabled]=\"disabled\">\n <mat-icon>calendar_today</mat-icon>\n </button>\n <button matSuffix *ngIf=\"showClearButton$ | async\" class=\"dbx-datetime-clear-button\" mat-icon-button aria-label=\"clears the date and time menu\" [disabled]=\"disabled\" (click)=\"clearValue()\">\n <mat-icon>clear</mat-icon>\n </button>\n <span matTextSuffix *ngIf=\"!(showTimeInput$ | async)\">\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Time Menu/Input Template -->\n<ng-template #timeMenuAndInputTemplate>\n <mat-menu #timemenu=\"matMenu\">\n <ng-container *ngIf=\"timeMode === 'optional'\">\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n </ng-container>\n <ng-container *ngFor=\"let preset of presets$ | async\">\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n </ng-container>\n </mat-menu>\n <mat-form-field class=\"dbx-datetime-row-field\">\n <mat-label>{{ timeLabel }}</mat-label>\n <input #timeInput matInput [required]=\"isTimeRequired\" [formControl]=\"timeInputCtrl\" (focus)=\"focusTime()\" (focusout)=\"focusOutTime()\" (keydown)=\"keydownOnTimeInput($event)\" />\n <button matPrefix class=\"dbx-datetime-row-button\" mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"opens the time menu\" [disabled]=\"disabled\">\n <mat-icon>timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container *ngTemplateOutlet=\"timezoneSuffixTemplate\"></ng-container>\n </span>\n </mat-form-field>\n</ng-template>\n\n<!-- Timezone Suffix -->\n<ng-template #timezoneSuffixTemplate>\n <span *ngIf=\"showTimezone\" class=\"dbx-datetime-timezone dbx-faint\">{{ timezoneAbbreviation$ | async }}</span>\n</ng-template>\n" }]
|
|
4275
4304
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: DbxDateTimeFieldMenuPresetsService }]; } });
|
|
4276
4305
|
|
|
4277
4306
|
function dbxFixedDateRangeInputValueFactory(mode, timezoneInstance) {
|
|
@@ -4915,13 +4944,14 @@ function timeOnlyField(config = {}) {
|
|
|
4915
4944
|
});
|
|
4916
4945
|
}
|
|
4917
4946
|
function dateTimeField(config = {}) {
|
|
4918
|
-
const { key = 'date', dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
|
|
4947
|
+
const { key = 'date', showClearButton, dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
|
|
4919
4948
|
const classGetter = 'dbx-mat-form-field-disable-underline dbx-mat-form-date-time-field-wrapper';
|
|
4920
4949
|
const fieldConfig = formlyField({
|
|
4921
4950
|
key,
|
|
4922
4951
|
type: 'datetime',
|
|
4923
4952
|
...propsAndConfigForFieldConfig(config, {
|
|
4924
4953
|
...materialFormField,
|
|
4954
|
+
showClearButton,
|
|
4925
4955
|
classGetter,
|
|
4926
4956
|
dateLabel,
|
|
4927
4957
|
timeLabel,
|
|
@@ -4981,7 +5011,7 @@ function dateRangeField(config = {}) {
|
|
|
4981
5011
|
};
|
|
4982
5012
|
}
|
|
4983
5013
|
function dateTimeRangeField(inputConfig = {}) {
|
|
4984
|
-
const { required = false, start: inputStart, end: inputEnd, timezone, timeDate, showTimezone, presets } = inputConfig;
|
|
5014
|
+
const { required = false, start: inputStart, end: inputEnd, timezone, timeDate, showTimezone, presets, valueMode } = inputConfig;
|
|
4985
5015
|
function dateTimeRangeFieldConfig(config) {
|
|
4986
5016
|
return {
|
|
4987
5017
|
...config,
|