@dereekb/dbx-form 10.1.19 → 10.1.20

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.
@@ -17,7 +17,7 @@ export function timeOnlyField(config = {}) {
17
17
  });
18
18
  }
19
19
  export function dateTimeField(config = {}) {
20
- const { key = 'date', showClearButton, dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, minuteStep, 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, minuteStep, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, alwaysShowDateInput, autofillDateWhenTimeIsPicked, 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,
@@ -35,6 +35,8 @@ export function dateTimeField(config = {}) {
35
35
  presets,
36
36
  minuteStep,
37
37
  timeMode: timeOnly ? DbxDateTimeFieldTimeMode.REQUIRED : timeMode,
38
+ alwaysShowDateInput,
39
+ autofillDateWhenTimeIsPicked,
38
40
  timezone,
39
41
  timeDate,
40
42
  showTimezone,
@@ -146,4 +148,4 @@ export function fixedDateRangeField(config = {}) {
146
148
  });
147
149
  return fieldConfig;
148
150
  }
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdC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QVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUvSyxNQUFNLFdBQVcsR0FBRyw4RUFBOEUsQ0FBQztJQUNuRyxNQUFNLFdBQVcsR0FBNkMsV0FBVyxDQUFDO1FBQ3hFLEdBQUc7UUFDSCxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO1lBQ3RDLEdBQUcsaUJBQWlCO1lBQ3BCLFdBQVc7WUFDWCxjQUFjO1lBQ2QsWUFBWTtZQUNaLFNBQVM7WUFDVCxPQUFPO1lBQ1AsUUFBUTtZQUNSLGFBQWE7WUFDYixZQUFZO1lBQ1osWUFBWTtZQUNaLGNBQWM7U0FDZixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBRUgsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgTGFiZWxlZEZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgcHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9maWVsZCc7XG5pbXBvcnQgeyBEYnhEYXRlVGltZUZpZWxkUHJvcHMsIERieERhdGVUaW1lRmllbGRUaW1lTW9kZSwgRGJ4RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9kYXRldGltZS5maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZmxleExheW91dFdyYXBwZXIgfSBmcm9tICcuLi8uLi93cmFwcGVyL3dyYXBwZXInO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IERieEZpeGVkRGF0ZVJhbmdlRmllbGRQcm9wcyB9IGZyb20gJy4vZml4ZWRkYXRlcmFuZ2UuZmllbGQuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBEYnhEYXRlVGltZUZpZWxkUHJvcHMsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5leHBvcnQgdHlwZSBUaW1lRmllbGRDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdzaG93RGF0ZScgfCAndGltZU9ubHknPjtcblxuZXhwb3J0IGNvbnN0IFRBS0VfTkVYVF9VUENPTUlOR19USU1FX0NPTkZJR19PQlM6ICgpID0+IE9ic2VydmFibGU8RGJ4RGF0ZVRpbWVQaWNrZXJDb25maWd1cmF0aW9uPiA9ICgpID0+XG4gIG9mKHtcbiAgICB0YWtlTmV4dFVwY29taW5nVGltZTogdHJ1ZSxcbiAgICByb3VuZERvd25Ub01pbnV0ZTogdHJ1ZVxuICB9KTtcblxuLyoqXG4gKiBTYW1lIGFzIERhdGVUaW1lIGZpZWxkIGJ1dCB3aXRoIHRoZSBEYXRlIGlucHV0IGhpZGRlbiBieSBkZWZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZU9ubHlGaWVsZChjb25maWc6IFBhcnRpYWw8VGltZUZpZWxkQ29uZmlnPiA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICByZXR1cm4gZGF0ZVRpbWVGaWVsZCh7XG4gICAgLi4uY29uZmlnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuUkVRVUlSRUQsXG4gICAgdGltZU9ubHk6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZUZpZWxkKGNvbmZpZzogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGUnLCBzaG93Q2xlYXJCdXR0b24sIGRhdGVMYWJlbCwgdGltZUxhYmVsLCBhbGxEYXlMYWJlbCwgYXRUaW1lTGFiZWwsIHRpbWVEYXRlLCB0aW1lem9uZSwgbWludXRlU3RlcCwgc2hvd1RpbWV6b25lLCB0aW1lTW9kZSA9IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCwgdmFsdWVNb2RlLCBmdWxsRGF5SW5VVEMsIGZ1bGxEYXlGaWVsZE5hbWUsIHBpY2tlckNvbmZpZywgZ2V0U3luY0ZpZWxkc09icywgaGlkZURhdGVQaWNrZXIsIGhpZGVEYXRlSGludCwgdGltZU9ubHkgPSBmYWxzZSwgcHJlc2V0cywgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBjbGFzc0dldHRlciA9ICdkYngtbWF0LWZvcm0tZmllbGQtZGlzYWJsZS11bmRlcmxpbmUgZGJ4LW1hdC1mb3JtLWRhdGUtdGltZS1maWVsZC13cmFwcGVyJztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdkYXRldGltZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgc2hvd0NsZWFyQnV0dG9uLFxuICAgICAgY2xhc3NHZXR0ZXIsXG4gICAgICBkYXRlTGFiZWwsXG4gICAgICB0aW1lTGFiZWwsXG4gICAgICBhbGxEYXlMYWJlbCxcbiAgICAgIGF0VGltZUxhYmVsLFxuICAgICAgdmFsdWVNb2RlLFxuICAgICAgdGltZU9ubHksXG4gICAgICBwcmVzZXRzLFxuICAgICAgbWludXRlU3RlcCxcbiAgICAgIHRpbWVNb2RlOiB0aW1lT25seSA/IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCA6IHRpbWVNb2RlLFxuICAgICAgdGltZXpvbmUsXG4gICAgICB0aW1lRGF0ZSxcbiAgICAgIHNob3dUaW1lem9uZSxcbiAgICAgIGZ1bGxEYXlGaWVsZE5hbWUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBoaWRlRGF0ZVBpY2tlcixcbiAgICAgIGhpZGVEYXRlSGludCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnNcbiAgICB9KVxuICB9KTtcblxuICByZXR1cm4gZmllbGRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWcgPSBPbWl0PERhdGVUaW1lRmllbGRDb25maWcsICdkYXRlTGFiZWwnIHwgJ3RpbWVPbmx5JyB8ICd0aW1lTW9kZScgfCAnZ2V0U3luY0ZpZWxkc09icyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlUmFuZ2VGaWVsZENvbmZpZyBleHRlbmRzIFBpY2s8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3RpbWVEYXRlJyB8ICd0aW1lem9uZScgfCAnc2hvd1RpbWV6b25lJyB8ICdwcmVzZXRzJyB8ICd2YWx1ZU1vZGUnIHwgJ21pbnV0ZVN0ZXAnPiB7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc3RhcnQ/OiBQYXJ0aWFsPERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWc+O1xuICBlbmQ/OiBQYXJ0aWFsPERhdGVEYXRlUmFuZ2VGaWVsZERhdGVDb25maWc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVJhbmdlRmllbGQoY29uZmlnOiBEYXRlRGF0ZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZDogaW5wdXRSZXF1aXJlZCwgc3RhcnQsIGVuZCwgdGltZURhdGUsIHRpbWV6b25lLCBzaG93VGltZXpvbmUsIHByZXNldHMsIHZhbHVlTW9kZSwgbWludXRlU3RlcCB9ID0gY29uZmlnO1xuICBjb25zdCByZXF1aXJlZCA9IGlucHV0UmVxdWlyZWQgPz8gc3RhcnQ/LnJlcXVpcmVkID8/IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGRLZXkgPSBzdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEZpZWxkS2V5ID0gZW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ1N0YXJ0JyxcbiAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLk5PTkUsXG4gICAgZ2V0U3luY0ZpZWxkc09iczogKCkgPT4gb2YoW3sgc3luY1dpdGg6IGVuZEZpZWxkS2V5LCBzeW5jVHlwZTogJ2FmdGVyJyB9XSksXG4gICAgcHJlc2V0cyxcbiAgICBhbGxEYXlMYWJlbDogJycsXG4gICAgdGltZURhdGUsXG4gICAgdGltZXpvbmUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIHZhbHVlTW9kZSxcbiAgICBtaW51dGVTdGVwLFxuICAgIC4uLnN0YXJ0LFxuICAgIHJlcXVpcmVkLFxuICAgIGtleTogc3RhcnRGaWVsZEtleVxuICB9KTtcblxuICBjb25zdCBlbmRGaWVsZCA9IGRhdGVUaW1lRmllbGQoe1xuICAgIGRhdGVMYWJlbDogJ0VuZCcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FLFxuICAgIGdldFN5bmNGaWVsZHNPYnM6ICgpID0+IG9mKFt7IHN5bmNXaXRoOiBzdGFydEZpZWxkS2V5LCBzeW5jVHlwZTogJ2JlZm9yZScgfV0pLFxuICAgIHByZXNldHMsXG4gICAgYWxsRGF5TGFiZWw6ICcnLFxuICAgIHRpbWVEYXRlLFxuICAgIHRpbWV6b25lLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICB2YWx1ZU1vZGUsXG4gICAgbWludXRlU3RlcCxcbiAgICAuLi5lbmQsXG4gICAgcmVxdWlyZWQsXG4gICAga2V5OiBlbmRGaWVsZEtleVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIGtleTogdW5kZWZpbmVkLFxuICAgIGZpZWxkR3JvdXA6IFtmbGV4TGF5b3V0V3JhcHBlcihbc3RhcnRGaWVsZCwgZW5kRmllbGRdLCB7IHJlbGF0aXZlOiB0cnVlLCBicmVha1RvQ29sdW1uOiB0cnVlLCBicmVha3BvaW50OiAnbGFyZ2UnIH0pXVxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnID0gT21pdDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnLCAnYWxsRGF5TGFiZWwnIHwgJ2Z1bGxEYXlGaWVsZE5hbWUnIHwgJ2Z1bGxEYXlJblVUQyc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cycgfCAndmFsdWVNb2RlJyB8ICdtaW51dGVTdGVwJz4ge1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lUmFuZ2VGaWVsZChpbnB1dENvbmZpZzogRGF0ZURhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyA9IHt9KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IHJlcXVpcmVkID0gZmFsc2UsIHN0YXJ0OiBpbnB1dFN0YXJ0LCBlbmQ6IGlucHV0RW5kLCB0aW1lem9uZSwgdGltZURhdGUsIHNob3dUaW1lem9uZSwgcHJlc2V0cywgdmFsdWVNb2RlLCBtaW51dGVTdGVwIH0gPSBpbnB1dENvbmZpZztcblxuICBmdW5jdGlvbiBkYXRlVGltZVJhbmdlRmllbGRDb25maWcoY29uZmlnOiBNYXliZTxQYXJ0aWFsPERhdGVUaW1lUmFuZ2VGaWVsZFRpbWVDb25maWc+Pik6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4ge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICBtaW51dGVTdGVwLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB0aW1lTW9kZTogRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELFxuICAgICAgZ2V0U3luY0ZpZWxkc09iczogdW5kZWZpbmVkLFxuICAgICAgdGltZU9ubHk6IHRydWUsXG4gICAgICBoaWRlRGF0ZUhpbnQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgc3RhcnRLZXkgPSBpbnB1dFN0YXJ0Py5rZXkgPz8gJ3N0YXJ0JztcbiAgY29uc3QgZW5kS2V5ID0gaW5wdXRFbmQ/LmtleSA/PyAnZW5kJztcblxuICBjb25zdCBzdGFydDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ1N0YXJ0IFRpbWUnLFxuICAgIC4uLmRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhpbnB1dFN0YXJ0KSxcbiAgICBrZXk6IHN0YXJ0S2V5XG4gIH07XG5cbiAgY29uc3QgZW5kOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+ID0ge1xuICAgIGxhYmVsOiAnRW5kIFRpbWUnLFxuICAgIC4uLmRhdGVUaW1lUmFuZ2VGaWVsZENvbmZpZyhpbnB1dEVuZCksXG4gICAga2V5OiBlbmRLZXlcbiAgfTtcblxuICBjb25zdCBjb25maWcgPSB7XG4gICAgdGltZXpvbmUsXG4gICAgdGltZURhdGUsXG4gICAgc2hvd1RpbWV6b25lLFxuICAgIHByZXNldHMsXG4gICAgc3RhcnQsXG4gICAgZW5kXG4gIH07XG5cbiAgcmV0dXJuIGRhdGVSYW5nZUZpZWxkKGNvbmZpZyk7XG59XG5cbi8vIE1BUks6IEZpeGVkRGF0ZVJhbmdlXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkRGF0ZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIERieEZpeGVkRGF0ZVJhbmdlRmllbGRQcm9wcywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeGVkRGF0ZVJhbmdlRmllbGQoY29uZmlnOiBQYXJ0aWFsPEZpeGVkRGF0ZVJhbmdlRmllbGRDb25maWc+ID0ge30pIHtcbiAgY29uc3QgeyBrZXkgPSAnZGF0ZVJhbmdlJywgZGF0ZVJhbmdlSW5wdXQsIHBpY2tlckNvbmZpZywgdGltZXpvbmUsIHNlbGVjdGlvbk1vZGUsIHNob3dUaW1lem9uZSwgdmFsdWVNb2RlLCBmdWxsRGF5SW5VVEMsIHByZXNldHMsIHNob3dSYW5nZUlucHV0LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNsYXNzR2V0dGVyID0gJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtZm9ybS1maXhlZC1kYXRlLXJhbmdlLWZpZWxkLXdyYXBwZXInO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2ZpeGVkZGF0ZXJhbmdlJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBjbGFzc0dldHRlcixcbiAgICAgIGRhdGVSYW5nZUlucHV0LFxuICAgICAgcGlja2VyQ29uZmlnLFxuICAgICAgdmFsdWVNb2RlLFxuICAgICAgcHJlc2V0cyxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgc2VsZWN0aW9uTW9kZSxcbiAgICAgIHNob3dUaW1lem9uZSxcbiAgICAgIGZ1bGxEYXlJblVUQyxcbiAgICAgIHNob3dSYW5nZUlucHV0XG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC92YWx1ZS9kYXRlL2RhdGV0aW1lLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFzQixXQUFXLEVBQUUsNEJBQTRCLEVBQW1ELE1BQU0sYUFBYSxDQUFDO0FBQzdJLE9BQU8sRUFBeUIsd0JBQXdCLEVBQWtDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQXFELEdBQUcsRUFBRSxDQUN2RyxFQUFFLENBQUM7SUFDRCxvQkFBb0IsRUFBRSxJQUFJO0lBQzFCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQyxDQUFDO0FBRUw7O0dBRUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFNBQW1DLEVBQUU7SUFDakUsT0FBTyxhQUFhLENBQUM7UUFDbkIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFLHdCQUF3QixDQUFDLFFBQVE7UUFDM0MsUUFBUSxFQUFFLElBQUk7S0FDZixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxTQUF1QyxFQUFFO0lBQ3JFLE1BQU0sRUFBRSxHQUFHLEdBQUcsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLDRCQUE0QixFQUFFLFlBQVksRUFBRSxnQkFB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QWMsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRS9LLE1BQU0sV0FBVyxHQUFHLDhFQUE4RSxDQUFDO0lBQ25HLE1BQU0sV0FBVyxHQUE2QyxXQUFXLENBQUM7UUFDeEUsR0FBRztRQUNILElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsV0FBVztZQUNYLGNBQWM7WUFDZCxZQUFZO1lBQ1osU0FBUztZQUNULE9BQU87WUFDUCxRQUFRO1lBQ1IsYUFBYTtZQUNiLFlBQVk7WUFDWixZQUFZO1lBQ1osY0FBYztTQUNmLENBQUM7S0FDSCxDQUFDLENBQUM7SUFFSCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMYWJlbGVkRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBwcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IERieERhdGVUaW1lRmllbGRQcm9wcywgRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLCBEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2RhdGV0aW1lLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmbGV4TGF5b3V0V3JhcHBlciB9IGZyb20gJy4uLy4uL3dyYXBwZXIvd3JhcHBlcic7XG5pbXBvcnQgeyBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRGJ4Rml4ZWREYXRlUmFuZ2VGaWVsZFByb3BzIH0gZnJvbSAnLi9maXhlZGRhdGVyYW5nZS5maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lRmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIERlc2NyaXB0aW9uRmllbGRDb25maWcsIERieERhdGVUaW1lRmllbGRQcm9wcywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge31cbmV4cG9ydCB0eXBlIFRpbWVGaWVsZENvbmZpZyA9IE9taXQ8RGF0ZVRpbWVGaWVsZENvbmZpZywgJ3Nob3dEYXRlJyB8ICd0aW1lT25seSc+O1xuXG5leHBvcnQgY29uc3QgVEFLRV9ORVhUX1VQQ09NSU5HX1RJTUVfQ09ORklHX09CUzogKCkgPT4gT2JzZXJ2YWJsZTxEYnhEYXRlVGltZVBpY2tlckNvbmZpZ3VyYXRpb24+ID0gKCkgPT5cbiAgb2Yoe1xuICAgIHRha2VOZXh0VXBjb21pbmdUaW1lOiB0cnVlLFxuICAgIHJvdW5kRG93blRvTWludXRlOiB0cnVlXG4gIH0pO1xuXG4vKipcbiAqIFNhbWUgYXMgRGF0ZVRpbWUgZmllbGQgYnV0IHdpdGggdGhlIERhdGUgaW5wdXQgaGlkZGVuIGJ5IGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aW1lT25seUZpZWxkKGNvbmZpZzogUGFydGlhbDxUaW1lRmllbGRDb25maWc+ID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIHJldHVybiBkYXRlVGltZUZpZWxkKHtcbiAgICAuLi5jb25maWcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICB0aW1lT25seTogdHJ1ZVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVUaW1lRmllbGQoY29uZmlnOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+ID0ge30pIHtcbiAgY29uc3QgeyBrZXkgPSAnZGF0ZScsIHNob3dDbGVhckJ1dHRvbiwgZGF0ZUxhYmVsLCB0aW1lTGFiZWwsIGFsbERheUxhYmVsLCBhdFRpbWVMYWJlbCwgdGltZURhdGUsIHRpbWV6b25lLCBtaW51dGVTdGVwLCBzaG93VGltZXpvbmUsIHRpbWVNb2RlID0gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVELCB2YWx1ZU1vZGUsIGFsd2F5c1Nob3dEYXRlSW5wdXQsIGF1dG9maWxsRGF0ZVdoZW5UaW1lSXNQaWNrZWQsIGZ1bGxEYXlJblVUQywgZnVsbERheUZpZWxkTmFtZSwgcGlja2VyQ29uZmlnLCBnZXRTeW5jRmllbGRzT2JzLCBoaWRlRGF0ZVBpY2tlciwgaGlkZURhdGVIaW50LCB0aW1lT25seSA9IGZhbHNlLCBwcmVzZXRzLCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNsYXNzR2V0dGVyID0gJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSBkYngtbWF0LWZvcm0tZGF0ZS10aW1lLWZpZWxkLXdyYXBwZXInO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWc8RGJ4RGF0ZVRpbWVGaWVsZFByb3BzPiA9IGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogJ2RhdGV0aW1lJyxcbiAgICAuLi5wcm9wc0FuZENvbmZpZ0ZvckZpZWxkQ29uZmlnKGNvbmZpZywge1xuICAgICAgLi4ubWF0ZXJpYWxGb3JtRmllbGQsXG4gICAgICBzaG93Q2xlYXJCdXR0b24sXG4gICAgICBjbGFzc0dldHRlcixcbiAgICAgIGRhdGVMYWJlbCxcbiAgICAgIHRpbWVMYWJlbCxcbiAgICAgIGFsbERheUxhYmVsLFxuICAgICAgYXRUaW1lTGFiZWwsXG4gICAgICB2YWx1ZU1vZGUsXG4gICAgICB0aW1lT25seSxcbiAgICAgIHByZXNldHMsXG4gICAgICBtaW51dGVTdGVwLFxuICAgICAgdGltZU1vZGU6IHRpbWVPbmx5ID8gRGJ4RGF0ZVRpbWVGaWVsZFRpbWVNb2RlLlJFUVVJUkVEIDogdGltZU1vZGUsXG4gICAgICBhbHdheXNTaG93RGF0ZUlucHV0LFxuICAgICAgYXV0b2ZpbGxEYXRlV2hlblRpbWVJc1BpY2tlZCxcbiAgICAgIHRpbWV6b25lLFxuICAgICAgdGltZURhdGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5RmllbGROYW1lLFxuICAgICAgZnVsbERheUluVVRDLFxuICAgICAgaGlkZURhdGVQaWNrZXIsXG4gICAgICBoaWRlRGF0ZUhpbnQsXG4gICAgICBwaWNrZXJDb25maWcsXG4gICAgICBnZXRTeW5jRmllbGRzT2JzXG4gICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnID0gT21pdDxEYXRlVGltZUZpZWxkQ29uZmlnLCAnZGF0ZUxhYmVsJyB8ICd0aW1lT25seScgfCAndGltZU1vZGUnIHwgJ2dldFN5bmNGaWVsZHNPYnMnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRGF0ZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBQaWNrPERhdGVUaW1lRmllbGRDb25maWcsICd0aW1lRGF0ZScgfCAndGltZXpvbmUnIHwgJ3Nob3dUaW1lem9uZScgfCAncHJlc2V0cycgfCAndmFsdWVNb2RlJyB8ICdtaW51dGVTdGVwJz4ge1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHN0YXJ0PzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbiAgZW5kPzogUGFydGlhbDxEYXRlRGF0ZVJhbmdlRmllbGREYXRlQ29uZmlnPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVSYW5nZUZpZWxkKGNvbmZpZzogRGF0ZURhdGVSYW5nZUZpZWxkQ29uZmlnID0ge30pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsgcmVxdWlyZWQ6IGlucHV0UmVxdWlyZWQsIHN0YXJ0LCBlbmQsIHRpbWVEYXRlLCB0aW1lem9uZSwgc2hvd1RpbWV6b25lLCBwcmVzZXRzLCB2YWx1ZU1vZGUsIG1pbnV0ZVN0ZXAgfSA9IGNvbmZpZztcbiAgY29uc3QgcmVxdWlyZWQgPSBpbnB1dFJlcXVpcmVkID8/IHN0YXJ0Py5yZXF1aXJlZCA/PyBmYWxzZTtcblxuICBjb25zdCBzdGFydEZpZWxkS2V5ID0gc3RhcnQ/LmtleSA/PyAnc3RhcnQnO1xuICBjb25zdCBlbmRGaWVsZEtleSA9IGVuZD8ua2V5ID8/ICdlbmQnO1xuXG4gIGNvbnN0IHN0YXJ0RmllbGQgPSBkYXRlVGltZUZpZWxkKHtcbiAgICBkYXRlTGFiZWw6ICdTdGFydCcsXG4gICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5OT05FLFxuICAgIGdldFN5bmNGaWVsZHNPYnM6ICgpID0+IG9mKFt7IHN5bmNXaXRoOiBlbmRGaWVsZEtleSwgc3luY1R5cGU6ICdhZnRlcicgfV0pLFxuICAgIHByZXNldHMsXG4gICAgYWxsRGF5TGFiZWw6ICcnLFxuICAgIHRpbWVEYXRlLFxuICAgIHRpbWV6b25lLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICB2YWx1ZU1vZGUsXG4gICAgbWludXRlU3RlcCxcbiAgICAuLi5zdGFydCxcbiAgICByZXF1aXJlZCxcbiAgICBrZXk6IHN0YXJ0RmllbGRLZXlcbiAgfSk7XG5cbiAgY29uc3QgZW5kRmllbGQgPSBkYXRlVGltZUZpZWxkKHtcbiAgICBkYXRlTGFiZWw6ICdFbmQnLFxuICAgIHRpbWVNb2RlOiBEYnhEYXRlVGltZUZpZWxkVGltZU1vZGUuTk9ORSxcbiAgICBnZXRTeW5jRmllbGRzT2JzOiAoKSA9PiBvZihbeyBzeW5jV2l0aDogc3RhcnRGaWVsZEtleSwgc3luY1R5cGU6ICdiZWZvcmUnIH1dKSxcbiAgICBwcmVzZXRzLFxuICAgIGFsbERheUxhYmVsOiAnJyxcbiAgICB0aW1lRGF0ZSxcbiAgICB0aW1lem9uZSxcbiAgICBzaG93VGltZXpvbmUsXG4gICAgdmFsdWVNb2RlLFxuICAgIG1pbnV0ZVN0ZXAsXG4gICAgLi4uZW5kLFxuICAgIHJlcXVpcmVkLFxuICAgIGtleTogZW5kRmllbGRLZXlcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXk6IHVuZGVmaW5lZCxcbiAgICBmaWVsZEdyb3VwOiBbZmxleExheW91dFdyYXBwZXIoW3N0YXJ0RmllbGQsIGVuZEZpZWxkXSwgeyByZWxhdGl2ZTogdHJ1ZSwgYnJlYWtUb0NvbHVtbjogdHJ1ZSwgYnJlYWtwb2ludDogJ2xhcmdlJyB9KV1cbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgRGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZyA9IE9taXQ8RGF0ZURhdGVSYW5nZUZpZWxkRGF0ZUNvbmZpZywgJ2FsbERheUxhYmVsJyB8ICdmdWxsRGF5RmllbGROYW1lJyB8ICdmdWxsRGF5SW5VVEMnPjtcblxuZXhwb3J0IGludGVyZmFjZSBEYXRlRGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgUGljazxEYXRlVGltZUZpZWxkQ29uZmlnLCAndGltZURhdGUnIHwgJ3RpbWV6b25lJyB8ICdzaG93VGltZXpvbmUnIHwgJ3ByZXNldHMnIHwgJ3ZhbHVlTW9kZScgfCAnbWludXRlU3RlcCc+IHtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBzdGFydD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG4gIGVuZD86IFBhcnRpYWw8RGF0ZVRpbWVSYW5nZUZpZWxkVGltZUNvbmZpZz47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlVGltZVJhbmdlRmllbGQoaW5wdXRDb25maWc6IERhdGVEYXRlVGltZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyByZXF1aXJlZCA9IGZhbHNlLCBzdGFydDogaW5wdXRTdGFydCwgZW5kOiBpbnB1dEVuZCwgdGltZXpvbmUsIHRpbWVEYXRlLCBzaG93VGltZXpvbmUsIHByZXNldHMsIHZhbHVlTW9kZSwgbWludXRlU3RlcCB9ID0gaW5wdXRDb25maWc7XG5cbiAgZnVuY3Rpb24gZGF0ZVRpbWVSYW5nZUZpZWxkQ29uZmlnKGNvbmZpZzogTWF5YmU8UGFydGlhbDxEYXRlVGltZVJhbmdlRmllbGRUaW1lQ29uZmlnPj4pOiBQYXJ0aWFsPERhdGVUaW1lRmllbGRDb25maWc+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWVNb2RlLFxuICAgICAgbWludXRlU3RlcCxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdGltZU1vZGU6IERieERhdGVUaW1lRmllbGRUaW1lTW9kZS5SRVFVSVJFRCxcbiAgICAgIGdldFN5bmNGaWVsZHNPYnM6IHVuZGVmaW5lZCxcbiAgICAgIHRpbWVPbmx5OiB0cnVlLFxuICAgICAgaGlkZURhdGVIaW50OiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHN0YXJ0S2V5ID0gaW5wdXRTdGFydD8ua2V5ID8/ICdzdGFydCc7XG4gIGNvbnN0IGVuZEtleSA9IGlucHV0RW5kPy5rZXkgPz8gJ2VuZCc7XG5cbiAgY29uc3Qgc3RhcnQ6IFBhcnRpYWw8RGF0ZVRpbWVGaWVsZENvbmZpZz4gPSB7XG4gICAgbGFiZWw6ICdTdGFydCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRTdGFydCksXG4gICAga2V5OiBzdGFydEtleVxuICB9O1xuXG4gIGNvbnN0IGVuZDogUGFydGlhbDxEYXRlVGltZUZpZWxkQ29uZmlnPiA9IHtcbiAgICBsYWJlbDogJ0VuZCBUaW1lJyxcbiAgICAuLi5kYXRlVGltZVJhbmdlRmllbGRDb25maWcoaW5wdXRFbmQpLFxuICAgIGtleTogZW5kS2V5XG4gIH07XG5cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHRpbWV6b25lLFxuICAgIHRpbWVEYXRlLFxuICAgIHNob3dUaW1lem9uZSxcbiAgICBwcmVzZXRzLFxuICAgIHN0YXJ0LFxuICAgIGVuZFxuICB9O1xuXG4gIHJldHVybiBkYXRlUmFuZ2VGaWVsZChjb25maWcpO1xufVxuXG4vLyBNQVJLOiBGaXhlZERhdGVSYW5nZVxuZXhwb3J0IGludGVyZmFjZSBGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnIGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBEYnhGaXhlZERhdGVSYW5nZUZpZWxkUHJvcHMsIE1hdGVyaWFsRm9ybUZpZWxkQ29uZmlnIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhlZERhdGVSYW5nZUZpZWxkKGNvbmZpZzogUGFydGlhbDxGaXhlZERhdGVSYW5nZUZpZWxkQ29uZmlnPiA9IHt9KSB7XG4gIGNvbnN0IHsga2V5ID0gJ2RhdGVSYW5nZScsIGRhdGVSYW5nZUlucHV0LCBwaWNrZXJDb25maWcsIHRpbWV6b25lLCBzZWxlY3Rpb25Nb2RlLCBzaG93VGltZXpvbmUsIHZhbHVlTW9kZSwgZnVsbERheUluVVRDLCBwcmVzZXRzLCBzaG93UmFuZ2VJbnB1dCwgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcblxuICBjb25zdCBjbGFzc0dldHRlciA9ICdkYngtbWF0LWZvcm0tZmllbGQtZGlzYWJsZS11bmRlcmxpbmUgZGJ4LWZvcm0tZml4ZWQtZGF0ZS1yYW5nZS1maWVsZC13cmFwcGVyJztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnPERieERhdGVUaW1lRmllbGRQcm9wcz4gPSBmb3JtbHlGaWVsZCh7XG4gICAga2V5LFxuICAgIHR5cGU6ICdmaXhlZGRhdGVyYW5nZScsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgY2xhc3NHZXR0ZXIsXG4gICAgICBkYXRlUmFuZ2VJbnB1dCxcbiAgICAgIHBpY2tlckNvbmZpZyxcbiAgICAgIHZhbHVlTW9kZSxcbiAgICAgIHByZXNldHMsXG4gICAgICB0aW1lem9uZSxcbiAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICBzaG93VGltZXpvbmUsXG4gICAgICBmdWxsRGF5SW5VVEMsXG4gICAgICBzaG93UmFuZ2VJbnB1dFxuICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
@@ -3874,6 +3874,12 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
3874
3874
  return this.dateTimeField.timeOnly;
3875
3875
  }
3876
3876
  }
3877
+ get alwaysShowDateInput() {
3878
+ return this.props.alwaysShowDateInput ?? true;
3879
+ }
3880
+ get autofillDateWhenTimeIsPicked() {
3881
+ return this.props.autofillDateWhenTimeIsPicked ?? this.alwaysShowDateInput === false;
3882
+ }
3877
3883
  get showDateInput() {
3878
3884
  return !this.timeOnly;
3879
3885
  }
@@ -3928,6 +3934,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
3928
3934
  this.dbxDateTimeFieldConfigService = dbxDateTimeFieldConfigService;
3929
3935
  this._sub = new SubscriptionObject();
3930
3936
  this._valueSub = new SubscriptionObject();
3937
+ this._autoFillDateSync = new SubscriptionObject();
3931
3938
  this._config = new BehaviorSubject(undefined);
3932
3939
  this.latestConfig$ = this._config.pipe(switchMapMaybeDefault(), distinctUntilChanged(), shareReplay(1));
3933
3940
  this._syncConfigObs = new BehaviorSubject(undefined);
@@ -3941,6 +3948,9 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
3941
3948
  this.formControl$ = this._formControlObs.pipe(filterMaybe());
3942
3949
  this._cleared = new Subject();
3943
3950
  this._updateTime = new Subject();
3951
+ this._resyncTimeInputSub = new SubscriptionObject();
3952
+ this._resyncTimeInput = new Subject();
3953
+ this.resyncTimeInput$ = this._resyncTimeInput.pipe(debounceTime(200), shareReplay(1));
3944
3954
  this._configUpdateTimeSync = new SubscriptionObject(this.latestConfig$.pipe(skip(1)).subscribe((x) => {
3945
3955
  this._updateTime.next();
3946
3956
  }));
@@ -4077,6 +4087,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4077
4087
  }), distinctUntilChanged(), shareReplay(1));
4078
4088
  this.dateInputMin$ = this.dateTimePickerConfig$.pipe(map((x) => (x?.limits?.min ?? null)), distinctUntilChanged(isSameDate), shareReplay(1));
4079
4089
  this.dateInputMax$ = this.dateTimePickerConfig$.pipe(map((x) => (x?.limits?.max ?? null)), distinctUntilChanged(isSameDate), shareReplay(1));
4090
+ this.dateMinAndMaxIsSameDay$ = combineLatest([this.dateInputMin$, this.dateInputMax$]).pipe(map(([a, b]) => Boolean(a && b) && isSameDateDay(a, b)), distinctUntilChanged(), shareReplay(1));
4080
4091
  this.pickerFilter$ = this.dateTimePickerConfig$.pipe(distinctUntilChanged(), map((x) => {
4081
4092
  if (x) {
4082
4093
  const filter = dateTimeMinuteWholeDayDecisionFunction(x, false);
@@ -4106,6 +4117,10 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4106
4117
  this.hasEmptyDisplayValue$ = this.displayValue$.pipe(map((x) => !x), distinctUntilChanged(), shareReplay(1));
4107
4118
  this.presets$ = this._presets.pipe(switchMapMaybeObs(), map((x) => x.map(dateTimePreset)), shareReplay(1));
4108
4119
  this.showClearButton$ = this.hasEmptyDisplayValue$.pipe(map((x) => Boolean(this.showClearButton && !x)), distinctUntilChanged(), shareReplay(1));
4120
+ this.canAutofillDateWithOnlyAvailableDate$ = this.dateMinAndMaxIsSameDay$;
4121
+ this.showDateInput$ = this.dateMinAndMaxIsSameDay$.pipe(map((dateMinAndMaxIsSameDay) => {
4122
+ return this.showDateInput && (this.alwaysShowDateInput || !dateMinAndMaxIsSameDay);
4123
+ }), distinctUntilChanged(), shareReplay(1));
4109
4124
  }
4110
4125
  ngOnInit() {
4111
4126
  this._formControlObs.next(this.formControl);
@@ -4127,6 +4142,23 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4127
4142
  this.setTime(x);
4128
4143
  });
4129
4144
  */
4145
+ if (this.autofillDateWhenTimeIsPicked) {
4146
+ this._autoFillDateSync.subscription = this.canAutofillDateWithOnlyAvailableDate$
4147
+ .pipe(switchMap((canAutofill) => {
4148
+ if (canAutofill) {
4149
+ // when the time updates the first time, set the current min date
4150
+ return this._updateTime.pipe(debounceTime(200), switchMap((x) => this.dateInputMin$), filterMaybe());
4151
+ }
4152
+ else {
4153
+ return of(null); // don't show anything
4154
+ }
4155
+ }))
4156
+ .subscribe((autoDate) => {
4157
+ if (autoDate != null) {
4158
+ this.dateInputCtrl.setValue(autoDate);
4159
+ }
4160
+ });
4161
+ }
4130
4162
  this._valueSub.subscription = this.valueInSystemTimezone$
4131
4163
  .pipe(map((x) => (x ? isSameDate(x, startOfDay(x)) : false)), distinctUntilChanged(), switchMap((isInputValueAtMidnight) => {
4132
4164
  hasSetMidnightFromInput = false;
@@ -4186,6 +4218,9 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4186
4218
  else {
4187
4219
  this._presets.next(this.dbxDateTimeFieldConfigService.configurations$);
4188
4220
  }
4221
+ this._resyncTimeInputSub.subscription = this.resyncTimeInput$.pipe(switchMap((x) => this.timeString$.pipe(first()))).subscribe((x) => {
4222
+ this.timeInputCtrl.setValue(x, { emitEvent: false });
4223
+ });
4189
4224
  }
4190
4225
  ngOnDestroy() {
4191
4226
  super.ngOnDestroy();
@@ -4194,6 +4229,8 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4194
4229
  this._config.complete();
4195
4230
  this._configUpdateTimeSync.destroy();
4196
4231
  this._defaultTimezone.complete();
4232
+ this._resyncTimeInputSub.destroy();
4233
+ this._autoFillDateSync.destroy();
4197
4234
  this._timeDate.complete();
4198
4235
  this._presets.complete();
4199
4236
  this._fullDayControlObs.complete();
@@ -4201,6 +4238,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4201
4238
  this._formControlObs.complete();
4202
4239
  this._updateTime.complete();
4203
4240
  this._cleared.complete();
4241
+ this._resyncTimeInput.complete();
4204
4242
  this._syncConfigObs.complete();
4205
4243
  }
4206
4244
  selectPreset(preset) {
@@ -4305,6 +4343,7 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4305
4343
  }
4306
4344
  focusOutTime() {
4307
4345
  this._updateTime.next();
4346
+ this._resyncTimeInput.next();
4308
4347
  }
4309
4348
  addTime() {
4310
4349
  this.setFullDay(false);
@@ -4321,11 +4360,11 @@ class DbxDateTimeFieldComponent extends FieldType$1 {
4321
4360
  this._cleared.next();
4322
4361
  }
4323
4362
  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 }); }
4324
- 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\" fxLayoutGap=\"6px grid\" 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 </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 [disabled]=\"disabled\" [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: "component", type: i7$1.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: i7$1.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: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.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: i11.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: i11.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i11.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: i11.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" }] }); }
4363
+ 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\" fxLayoutGap=\"6px grid\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput$ | async\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"(showDateInput$ | async) ? '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 [disabled]=\"disabled\" [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: "component", type: i7$1.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: i7$1.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: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.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: i11.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: i11.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i11.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: i11.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" }] }); }
4325
4364
  }
4326
4365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbxDateTimeFieldComponent, decorators: [{
4327
4366
  type: Component,
4328
- args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutGap=\"6px grid\" 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 </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 [disabled]=\"disabled\" [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" }]
4367
+ args: [{ template: "<div class=\"dbx-datetime-field\" fxLayout=\"row wrap\" fxLayout.xs=\"column wrap\" fxLayoutGap=\"6px grid\" fxLayoutAlign=\"space-evenly stretch\">\n <!-- Date -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"dateOnly ? '100' : '50'\" *ngIf=\"showDateInput$ | async\">\n <ng-container *ngTemplateOutlet=\"dateInputTemplate\"></ng-container>\n </div>\n <!-- Time -->\n <div class=\"dbx-datetime-row\" fxFlex.lt-sm=\"100\" [fxFlex]=\"(showDateInput$ | async) ? '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 [disabled]=\"disabled\" [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" }]
4329
4368
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: DbxDateTimeFieldMenuPresetsService }]; } });
4330
4369
 
4331
4370
  function dbxFixedDateRangeInputValueFactory(mode, timezoneInstance) {
@@ -4969,7 +5008,7 @@ function timeOnlyField(config = {}) {
4969
5008
  });
4970
5009
  }
4971
5010
  function dateTimeField(config = {}) {
4972
- const { key = 'date', showClearButton, dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, minuteStep, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
5011
+ const { key = 'date', showClearButton, dateLabel, timeLabel, allDayLabel, atTimeLabel, timeDate, timezone, minuteStep, showTimezone, timeMode = DbxDateTimeFieldTimeMode.REQUIRED, valueMode, alwaysShowDateInput, autofillDateWhenTimeIsPicked, fullDayInUTC, fullDayFieldName, pickerConfig, getSyncFieldsObs, hideDatePicker, hideDateHint, timeOnly = false, presets, materialFormField } = config;
4973
5012
  const classGetter = 'dbx-mat-form-field-disable-underline dbx-mat-form-date-time-field-wrapper';
4974
5013
  const fieldConfig = formlyField({
4975
5014
  key,
@@ -4987,6 +5026,8 @@ function dateTimeField(config = {}) {
4987
5026
  presets,
4988
5027
  minuteStep,
4989
5028
  timeMode: timeOnly ? DbxDateTimeFieldTimeMode.REQUIRED : timeMode,
5029
+ alwaysShowDateInput,
5030
+ autofillDateWhenTimeIsPicked,
4990
5031
  timezone,
4991
5032
  timeDate,
4992
5033
  showTimezone,