@wavemaker/app-ng-runtime 11.12.1-rc.221 → 11.13.0-rc.222
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-task/bundles/index.umd.js +26 -24
- package/build-task/esm2022/containers/repeat-template.build.mjs +4 -2
- package/build-task/esm2022/data/form/form.build.mjs +4 -2
- package/build-task/esm2022/data/table/table-row/table-row.build.mjs +5 -3
- package/build-task/esm2022/page/page-content/page-content.build.mjs +6 -7
- package/build-task/esm2022/page/page.build.mjs +6 -7
- package/build-task/esm2022/partial/partial.build.mjs +6 -7
- package/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +6 -7
- package/build-task/fesm2022/index.mjs +26 -24
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/bundles/index.umd.js +4 -2
- package/components/data/live-table/esm2022/live-table.component.mjs +5 -3
- package/components/data/live-table/fesm2022/index.mjs +4 -2
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/bundles/index.umd.js +4 -4
- package/components/data/pagination/esm2022/pagination.component.mjs +5 -5
- package/components/data/pagination/fesm2022/index.mjs +4 -4
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +6 -12
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +7 -13
- package/components/dialogs/design-dialog/fesm2022/index.mjs +6 -12
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -16
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +8 -15
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +7 -14
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/base-date-time.component.d.ts +6 -0
- package/components/input/epoch/bundles/index.umd.js +54 -31
- package/components/input/epoch/esm2022/base-date-time.component.mjs +16 -5
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +22 -15
- package/components/input/epoch/esm2022/time/time.component.mjs +19 -14
- package/components/input/epoch/fesm2022/index.mjs +54 -31
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/bundles/index.umd.js +9 -9
- package/components/input/slider/esm2022/slider.component.mjs +10 -10
- package/components/input/slider/fesm2022/index.mjs +9 -9
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +3 -0
- package/core/esm2022/utils/wm-project-properties.mjs +4 -1
- package/core/fesm2022/index.mjs +3 -0
- package/core/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +1 -1
- package/runtime/base/esm2022/services/i18n.service.mjs +2 -2
- package/runtime/base/fesm2022/index.mjs +1 -1
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/security/bundles/index.umd.js +2 -2
- package/security/esm2022/security.service.mjs +3 -3
- package/security/fesm2022/index.mjs +2 -2
- package/security/fesm2022/index.mjs.map +1 -1
- package/transpiler/bundles/index.umd.js +0 -13
- package/transpiler/esm2022/build.mjs +1 -14
- package/transpiler/fesm2022/index.mjs +0 -13
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/variables/bundles/index.umd.js +1 -1
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +2 -2
- package/variables/fesm2022/index.mjs +1 -1
- package/variables/fesm2022/index.mjs.map +1 -1
- package/scripts/hammerjs/hammer.min.js +0 -7
|
@@ -676,11 +676,20 @@ const DATAENTRYMODE_DROPDOWN_OPTIONS = {
|
|
|
676
676
|
// Providing meridians to the timepicker baesd on selected locale
|
|
677
677
|
function getTimepickerConfig(i18nService) {
|
|
678
678
|
return Object.assign(new TimepickerConfig(), {
|
|
679
|
-
meridians:
|
|
679
|
+
meridians: [i18nService.getLocalizedMessage("LABEL_AM") || "AM", i18nService.getLocalizedMessage("LABEL_PM") || "PM"]
|
|
680
680
|
});
|
|
681
681
|
}
|
|
682
682
|
class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
683
683
|
get timeZone() { return this.inj.get(AbstractI18nService).getTimezone(this); }
|
|
684
|
+
/**
|
|
685
|
+
* Safely replace internal meridians with localized display meridians only for string values
|
|
686
|
+
*/
|
|
687
|
+
safeReplaceMeridians(value) {
|
|
688
|
+
if (typeof value === 'string') {
|
|
689
|
+
return value.replace(this.meridians[0], this.am).replace(this.meridians[1], this.pm);
|
|
690
|
+
}
|
|
691
|
+
return value;
|
|
692
|
+
}
|
|
684
693
|
constructor(inj, WIDGET_CONFIG, explicitContext) {
|
|
685
694
|
super(inj, WIDGET_CONFIG, explicitContext);
|
|
686
695
|
this.isReadOnly = false;
|
|
@@ -699,6 +708,8 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
699
708
|
this._dateOptions.clearPosition = 'right';
|
|
700
709
|
this.meridians = getLocaleDayPeriods(this.selectedLocale, FormStyle.Format, TranslationWidth.Abbreviated);
|
|
701
710
|
this.loadNativeDateInput = isMobile() && !this.showcustompicker;
|
|
711
|
+
this.am = this.i18nService.getLocalizedMessage("LABEL_AM") || "AM";
|
|
712
|
+
this.pm = this.i18nService.getLocalizedMessage("LABEL_PM") || "PM";
|
|
702
713
|
this.cancelLocaleChangeSubscription = this.getAppInstance().subscribe("locale-changed", (locale) => {
|
|
703
714
|
this.datePipe.datePipe.locale = locale.angular;
|
|
704
715
|
this._dateOptions.todayButtonLabel = this.i18nService.getLocalizedMessage('LABEL_TODAY_DATE');
|
|
@@ -783,7 +794,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
783
794
|
// format the date value only when inputVal is obtained from $event.target.value, as the format doesnt match.
|
|
784
795
|
inputVal = getFormattedDate(this.datePipe, inputVal, pattern, timeZone);
|
|
785
796
|
}
|
|
786
|
-
if (inputVal !== formattedDate) {
|
|
797
|
+
if (inputVal?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]) !== formattedDate) {
|
|
787
798
|
this.invalidDateTimeFormat = true;
|
|
788
799
|
this.validateType = 'incorrectformat';
|
|
789
800
|
this.invokeOnChange(this.datavalue, undefined, false);
|
|
@@ -1306,7 +1317,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1306
1317
|
* This function checks whether the given time is valid or not
|
|
1307
1318
|
*/
|
|
1308
1319
|
timeFormatValidation() {
|
|
1309
|
-
const enteredDate = $(this.nativeElement).find('input').val();
|
|
1320
|
+
const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);
|
|
1310
1321
|
const newVal = getNativeDateObject(enteredDate, { meridians: this.meridians, pattern: this.datepattern });
|
|
1311
1322
|
if (!this.formatValidation(newVal, enteredDate)) {
|
|
1312
1323
|
return;
|
|
@@ -1682,7 +1693,7 @@ class BaseDateTimeComponent extends BaseFormCustomComponent {
|
|
|
1682
1693
|
const value = this.datavalue;
|
|
1683
1694
|
this.datavalue = undefined;
|
|
1684
1695
|
setTimeout(() => {
|
|
1685
|
-
$(this.nativeElement).find('.display-input').val(formattedDisplay);
|
|
1696
|
+
$(this.nativeElement).find('.display-input').val(this.safeReplaceMeridians(formattedDisplay));
|
|
1686
1697
|
this.minDateMaxDateValidationOnInput(formattedDisplay);
|
|
1687
1698
|
this.invokeOnChange(value, {}, false);
|
|
1688
1699
|
});
|
|
@@ -2283,19 +2294,23 @@ function DatetimeComponent_div_10_Conditional_2_Template(rf, ctx) { if (rf & 1)
|
|
|
2283
2294
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
2284
2295
|
i0.ɵɵelementStart(0, "div", 13)(1, "button", 14);
|
|
2285
2296
|
i0.ɵɵlistener("click", function DatetimeComponent_div_10_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setPeriod("AM")); });
|
|
2286
|
-
i0.ɵɵtext(2
|
|
2297
|
+
i0.ɵɵtext(2);
|
|
2287
2298
|
i0.ɵɵelementEnd();
|
|
2288
2299
|
i0.ɵɵelement(3, "br");
|
|
2289
2300
|
i0.ɵɵelementStart(4, "button", 15);
|
|
2290
2301
|
i0.ɵɵlistener("click", function DatetimeComponent_div_10_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.setPeriod("PM")); });
|
|
2291
|
-
i0.ɵɵtext(5
|
|
2302
|
+
i0.ɵɵtext(5);
|
|
2292
2303
|
i0.ɵɵelementEnd()();
|
|
2293
2304
|
} if (rf & 2) {
|
|
2294
2305
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
2295
2306
|
i0.ɵɵadvance();
|
|
2296
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
|
2297
|
-
i0.ɵɵadvance(
|
|
2298
|
-
i0.ɵɵ
|
|
2307
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c3$1, ctx_r2.getPeriod() === "AM"));
|
|
2308
|
+
i0.ɵɵadvance();
|
|
2309
|
+
i0.ɵɵtextInterpolate(ctx_r2.appLocale.LABEL_AM || "AM");
|
|
2310
|
+
i0.ɵɵadvance(2);
|
|
2311
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c3$1, ctx_r2.getPeriod() === "PM"));
|
|
2312
|
+
i0.ɵɵadvance();
|
|
2313
|
+
i0.ɵɵtextInterpolate(ctx_r2.appLocale.LABEL_PM || "PM");
|
|
2299
2314
|
} }
|
|
2300
2315
|
function DatetimeComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
2301
2316
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
@@ -2305,7 +2320,7 @@ function DatetimeComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
|
2305
2320
|
i0.ɵɵtwoWayListener("ngModelChange", function DatetimeComponent_div_10_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.bsTimeValue, $event) || (ctx_r2.bsTimeValue = $event); return i0.ɵɵresetView($event); });
|
|
2306
2321
|
i0.ɵɵlistener("isValid", function DatetimeComponent_div_10_Template_timepicker_isValid_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.isValid($event)); })("ngModelChange", function DatetimeComponent_div_10_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onModelUpdate($event, "time")); });
|
|
2307
2322
|
i0.ɵɵelementEnd();
|
|
2308
|
-
i0.ɵɵtemplate(2, DatetimeComponent_div_10_Conditional_2_Template, 6,
|
|
2323
|
+
i0.ɵɵtemplate(2, DatetimeComponent_div_10_Conditional_2_Template, 6, 8, "div", 13);
|
|
2309
2324
|
i0.ɵɵelementEnd();
|
|
2310
2325
|
} if (rf & 2) {
|
|
2311
2326
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -2348,7 +2363,8 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2348
2363
|
* @returns {any|string}
|
|
2349
2364
|
*/
|
|
2350
2365
|
get displayValue() {
|
|
2351
|
-
|
|
2366
|
+
const display = getFormattedDate(this.datePipe, this.proxyModel, this.dateInputFormat, this.timeZone, this.key, this.isCurrentDate, this) || '';
|
|
2367
|
+
return this.safeReplaceMeridians(display);
|
|
2352
2368
|
}
|
|
2353
2369
|
get nativeDisplayValue() {
|
|
2354
2370
|
return getFormattedDate(this.datePipe, this.proxyModel, 'yyyy-MM-ddTHH:mm:ss', this.timeZone, this.key, this.isCurrentDate, this) || '';
|
|
@@ -2514,7 +2530,8 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2514
2530
|
onModelUpdate(newVal, type) {
|
|
2515
2531
|
if (type === 'date') {
|
|
2516
2532
|
this.invalidDateTimeFormat = false;
|
|
2517
|
-
|
|
2533
|
+
const formatted = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, this.key, this.isCurrentDate, this);
|
|
2534
|
+
if (this.safeReplaceMeridians(formatted) === this.displayValue) {
|
|
2518
2535
|
$(this.nativeElement).find('.display-input').val(this.displayValue);
|
|
2519
2536
|
}
|
|
2520
2537
|
}
|
|
@@ -2550,7 +2567,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2550
2567
|
}
|
|
2551
2568
|
if (this.datavalue === this.getPrevDataValue()) {
|
|
2552
2569
|
const time = getFormattedDate(this.datePipe, this.datavalue, this.datepattern, this.timeZone, null, null, this) || '';
|
|
2553
|
-
$(this.nativeElement).find('.display-input').val(time);
|
|
2570
|
+
$(this.nativeElement).find('.display-input').val(time?.replace(this.meridians[0], this.am)?.replace(this.meridians[1], this.pm));
|
|
2554
2571
|
}
|
|
2555
2572
|
}
|
|
2556
2573
|
else {
|
|
@@ -2562,7 +2579,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2562
2579
|
const timePickerFields = $('.bs-timepicker-field');
|
|
2563
2580
|
if (this.timeZone && this.key === 'datetimestamp' && timePickerFields.length) {
|
|
2564
2581
|
const formattedDate = getFormattedDate(this.datePipe, newVal, this.getTimePattern(), this.timeZone, this.key, null, this);
|
|
2565
|
-
this.updateTimepickerFields(formattedDate, timePickerFields);
|
|
2582
|
+
this.updateTimepickerFields(this.safeReplaceMeridians(formattedDate), timePickerFields);
|
|
2566
2583
|
}
|
|
2567
2584
|
}
|
|
2568
2585
|
// deduces the timepattern from datepattern set in the studio
|
|
@@ -2666,7 +2683,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2666
2683
|
return;
|
|
2667
2684
|
}
|
|
2668
2685
|
let newVal = $event.target.value.trim();
|
|
2669
|
-
newVal = newVal ? getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput }) : undefined;
|
|
2686
|
+
newVal = newVal ? getNativeDateObject(newVal?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]), { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput }) : undefined;
|
|
2670
2687
|
// datetime pattern validation
|
|
2671
2688
|
// if invalid pattern is entered, device is showing an error.
|
|
2672
2689
|
if (!this.formatValidation(newVal, $event.target.value, isNativePicker)) {
|
|
@@ -2691,6 +2708,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2691
2708
|
newVal = newVal ? getNativeDateObject(newVal, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians }) : undefined;
|
|
2692
2709
|
event.preventDefault();
|
|
2693
2710
|
const formattedDate = getFormattedDate(this.datePipe, newVal, this.dateInputFormat, this.timeZone, this.key, this.isCurrentDate, this);
|
|
2711
|
+
const formattedDateWithMeridians = this.safeReplaceMeridians(formattedDate);
|
|
2694
2712
|
const inputVal = event.target.value.trim();
|
|
2695
2713
|
if (inputVal && this.datepattern === 'timestamp') {
|
|
2696
2714
|
if (!isNaN$1(inputVal) && parseInt$1(inputVal) !== formattedDate) {
|
|
@@ -2698,7 +2716,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2698
2716
|
this.invokeOnChange(this.datavalue, event, false);
|
|
2699
2717
|
}
|
|
2700
2718
|
}
|
|
2701
|
-
else if (inputVal && inputVal !==
|
|
2719
|
+
else if (inputVal && inputVal !== formattedDateWithMeridians) {
|
|
2702
2720
|
this.invalidDateTimeFormat = true;
|
|
2703
2721
|
this.invokeOnChange(this.datavalue, event, false);
|
|
2704
2722
|
}
|
|
@@ -2721,7 +2739,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2721
2739
|
}
|
|
2722
2740
|
isValid(event) {
|
|
2723
2741
|
if (!event) {
|
|
2724
|
-
const enteredDate = $(this.nativeElement).find('input').val();
|
|
2742
|
+
const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);
|
|
2725
2743
|
const newVal = getNativeDateObject(enteredDate, { pattern: this.loadNativeDateInput ? this.outputformat : this.datepattern, meridians: this.meridians, isNativePicker: this.loadNativeDateInput });
|
|
2726
2744
|
if (!this.formatValidation(newVal, enteredDate)) {
|
|
2727
2745
|
return;
|
|
@@ -2797,7 +2815,7 @@ class DatetimeComponent extends BaseDateTimeComponent {
|
|
|
2797
2815
|
provideAs(DatetimeComponent, NG_VALIDATORS, true),
|
|
2798
2816
|
provideAsWidgetRef(DatetimeComponent),
|
|
2799
2817
|
{ provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }
|
|
2800
|
-
], template: "<div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"isDateOpen\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">AM</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">PM</button>\n </div>\n }\n </div>\n </div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
|
|
2818
|
+
], template: "<div dropdown\n [isOpen]=\"isTimeOpen\"\n autoClose=\"false\"\n [container]=\"'body'\"\n (onShown)=\"onTimepickerOpen()\"\n style=\"display: inherit;\">\n <input class=\"form-control app-textbox display-input\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [name]=\"name\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n type=\"text\"\n [value]=\"displayValue\"\n (click)=\"toggleDpDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDateChange($event)\"\n [autofocus]=\"autofocus\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n\n <span class=\"input-group-btn\">\n <button type=\"button\"\n class=\"btn btn-default btn-date\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : 'Choose date by pressing enter'\"\n aria-haspopup=\"true\"\n [attr.aria-expanded]=\"isDateOpen\"\n (click)=\"toggleDpDropdown($event, false)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-calendar\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-default btn-time\"\n [tabindex]=\"loadNativeDateInput ? '-1' : tabindex\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [disabled]=\"disabled || readonly || isCurrentDate\"\n aria-label=\"Select time\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n (click)=\"toggleTimePicker(!isTimeOpen, $event)\">\n <i aria-hidden=\"true\"\n class=\"app-icon wm-sl-l sl-time\"></i>\n </button>\n </span>\n <div style=\"width: 0;display: inline-block;\">\n <input class=\"model-holder\"\n aria-label=\"datepicker dropdownmenu\"\n aria-controls=\"date\"\n focus-target\n [tabindex]=\"-1\"\n [attr.aria-hidden]=\"!!loadNativeDateInput\"\n [container]=\"containerTarget || '.wm-app'\"\n [bsConfig]=\"_dateOptions\"\n [isOpen]=\"isDateOpen\"\n placement=\"bottom right\"\n (onShown)=\"onDatePickerOpen()\"\n (onHidden)=\"hideDatepickerDropdown()\"\n [daysDisabled]=\"excludedDaysToDisable\"\n [datesDisabled]=\"excludedDatesToDisable\"\n #datepicker=bsDatepicker\n bsDatepicker\n [isDisabled]=\"disabled || readonly || isCurrentDate\"\n [bsValue]=\"bsDateValue\"\n (bsValueChange)=\"onModelUpdate($event, 'date')\">\n </div>\n <div *dropdownMenu\n class=\"dropdown-menu\"\n aria-label=\"timepicker dropdown\"\n aria-controls=\"time\"\n (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"disabled || readonly || isCurrentDate\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\"\n (ngModelChange)=\"onModelUpdate($event, 'time')\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">{{appLocale.LABEL_AM ||\"AM\"}}</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">{{appLocale.LABEL_PM ||\"PM\"}}</button>\n </div>\n }\n </div>\n </div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n [config]=\"_dateOptions\"\n [placement]=\"modal\"\n [excludedDaysToDisable]=\"excludedDaysToDisable\"\n [excludedDatesToDisable]=\"excludedDatesToDisable\"\n [displayFormat]=\"dateInputFormat\"\n [value]=\"bsDateValue\"\n (change)=\"onModelUpdate($event, 'date')\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n [tabindex]=\"tabindex || 0\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsDateValue)\"\n [attr.aria-label]=\"displayValue ? 'Change Date ' + displayValue : arialabel || 'Choose Date'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event)\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
|
|
2801
2819
|
}], () => [{ type: i0.Injector }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1$1.AppDefaults }, { type: i1$1.App }, { type: undefined, decorators: [{
|
|
2802
2820
|
type: Inject,
|
|
2803
2821
|
args: ['EXPLICIT_CONTEXT']
|
|
@@ -2850,19 +2868,23 @@ function TimeComponent_div_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
2850
2868
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
2851
2869
|
i0.ɵɵelementStart(0, "div", 8)(1, "button", 9);
|
|
2852
2870
|
i0.ɵɵlistener("click", function TimeComponent_div_5_Conditional_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setPeriod("AM")); });
|
|
2853
|
-
i0.ɵɵtext(2
|
|
2871
|
+
i0.ɵɵtext(2);
|
|
2854
2872
|
i0.ɵɵelementEnd();
|
|
2855
2873
|
i0.ɵɵelement(3, "br");
|
|
2856
2874
|
i0.ɵɵelementStart(4, "button", 10);
|
|
2857
2875
|
i0.ɵɵlistener("click", function TimeComponent_div_5_Conditional_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setPeriod("PM")); });
|
|
2858
|
-
i0.ɵɵtext(5
|
|
2876
|
+
i0.ɵɵtext(5);
|
|
2859
2877
|
i0.ɵɵelementEnd()();
|
|
2860
2878
|
} if (rf & 2) {
|
|
2861
2879
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
2862
2880
|
i0.ɵɵadvance();
|
|
2863
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(
|
|
2864
|
-
i0.ɵɵadvance(
|
|
2865
|
-
i0.ɵɵ
|
|
2881
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c3, ctx_r1.getPeriod() === "AM"));
|
|
2882
|
+
i0.ɵɵadvance();
|
|
2883
|
+
i0.ɵɵtextInterpolate(ctx_r1.appLocale.LABEL_AM || "AM");
|
|
2884
|
+
i0.ɵɵadvance(2);
|
|
2885
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(6, _c3, ctx_r1.getPeriod() === "PM"));
|
|
2886
|
+
i0.ɵɵadvance();
|
|
2887
|
+
i0.ɵɵtextInterpolate(ctx_r1.appLocale.LABEL_PM || "PM");
|
|
2866
2888
|
} }
|
|
2867
2889
|
function TimeComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
2868
2890
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -2872,7 +2894,7 @@ function TimeComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
2872
2894
|
i0.ɵɵtwoWayListener("ngModelChange", function TimeComponent_div_5_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.bsTimeValue, $event) || (ctx_r1.bsTimeValue = $event); return i0.ɵɵresetView($event); });
|
|
2873
2895
|
i0.ɵɵlistener("isValid", function TimeComponent_div_5_Template_timepicker_isValid_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.isValid($event)); })("ngModelChange", function TimeComponent_div_5_Template_timepicker_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onTimeChange($event)); });
|
|
2874
2896
|
i0.ɵɵelementEnd();
|
|
2875
|
-
i0.ɵɵtemplate(2, TimeComponent_div_5_Conditional_2_Template, 6,
|
|
2897
|
+
i0.ɵɵtemplate(2, TimeComponent_div_5_Conditional_2_Template, 6, 8, "div", 8);
|
|
2876
2898
|
i0.ɵɵelementEnd();
|
|
2877
2899
|
} if (rf & 2) {
|
|
2878
2900
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -2939,7 +2961,8 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
2939
2961
|
$appDigest();
|
|
2940
2962
|
}
|
|
2941
2963
|
get displayValue() {
|
|
2942
|
-
|
|
2964
|
+
const display = getFormattedDate(this.datePipe, this.bsTimeValue, this.timepattern, this.timeZone, null, null, this) || '';
|
|
2965
|
+
return this.safeReplaceMeridians(display);
|
|
2943
2966
|
}
|
|
2944
2967
|
get nativeDisplayValue() {
|
|
2945
2968
|
return getFormattedDate(this.datePipe, this.bsTimeValue, 'HH:mm:ss', this.timeZone, null, null, this) || '';
|
|
@@ -3065,7 +3088,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3065
3088
|
* This is an internal method triggered when the time input changes
|
|
3066
3089
|
*/
|
|
3067
3090
|
onDisplayTimeChange($event) {
|
|
3068
|
-
const newVal = getNativeDateObject($event.target.value, { meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });
|
|
3091
|
+
const newVal = getNativeDateObject($event.target.value?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]), { meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });
|
|
3069
3092
|
// time pattern validation
|
|
3070
3093
|
// if invalid pattern is entered, device is showing an error.
|
|
3071
3094
|
if (!this.formatValidation(newVal, $event.target.value)) {
|
|
@@ -3102,13 +3125,13 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3102
3125
|
maxTimeMeridian = moment(new Date(this.bsTimePicker.max)).format('A');
|
|
3103
3126
|
timeValue = this.bsTimePicker.hours + ':' + (this.bsTimePicker.minutes || 0) + ':' + (this.bsTimePicker.seconds || 0) + (this.bsTimePicker.showMeridian ? (' ' + minTimeMeridian) : '');
|
|
3104
3127
|
timeInputValue = getNativeDateObject(timeValue, { pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });
|
|
3105
|
-
this.bsTimePicker.meridian = minTimeMeridian;
|
|
3128
|
+
this.bsTimePicker.meridian = minTimeMeridian?.replace(this.meridians[0], this.am)?.replace(this.meridians[1], this.pm);
|
|
3106
3129
|
this.timeNotInRange = this.bsTimePicker.min > timeInputValue || this.bsTimePicker.max < timeInputValue;
|
|
3107
3130
|
if (this.timeNotInRange || this.invalidDateTimeFormat) {
|
|
3108
3131
|
this.bsTimeValue = this.getPrevDataValue();
|
|
3109
3132
|
setTimeout(() => {
|
|
3110
3133
|
const timeStr = getFormattedDate(this.datePipe, timeValue, this.timepattern, this.timeZone, null, null, this) || '';
|
|
3111
|
-
$(this.nativeElement).find('.display-input').val(timeStr);
|
|
3134
|
+
$(this.nativeElement).find('.display-input').val(this.safeReplaceMeridians(timeStr));
|
|
3112
3135
|
});
|
|
3113
3136
|
}
|
|
3114
3137
|
this.setValidateType(this.bsTimePicker.min, this.bsTimePicker.max, timeInputValue);
|
|
@@ -3119,7 +3142,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3119
3142
|
// Update UI display if value hasn't changed
|
|
3120
3143
|
if (!this.timeNotInRange && this.datavalue === this.getPrevDataValue()) {
|
|
3121
3144
|
const displayTime = getFormattedDate(this.datePipe, this.datavalue, this.timepattern, this.timeZone, null, null, this) || '';
|
|
3122
|
-
$(this.nativeElement).find('.display-input').val(displayTime);
|
|
3145
|
+
$(this.nativeElement).find('.display-input').val(this.safeReplaceMeridians(displayTime));
|
|
3123
3146
|
}
|
|
3124
3147
|
this.invokeOnTouched();
|
|
3125
3148
|
this.invokeOnChange(this.datavalue, {}, true);
|
|
@@ -3175,7 +3198,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3175
3198
|
}
|
|
3176
3199
|
isValid(event) {
|
|
3177
3200
|
if (!event) {
|
|
3178
|
-
const enteredDate = $(this.nativeElement).find('input').val();
|
|
3201
|
+
const enteredDate = $(this.nativeElement).find('input').val()?.replace(this.am, this.meridians[0])?.replace(this.pm, this.meridians[1]);
|
|
3179
3202
|
const newVal = getNativeDateObject(enteredDate, { meridians: this.meridians, pattern: this.loadNativeDateInput ? this.outputformat : undefined, isNativePicker: this.loadNativeDateInput });
|
|
3180
3203
|
if (!this.formatValidation(newVal, enteredDate)) {
|
|
3181
3204
|
return;
|
|
@@ -3240,7 +3263,7 @@ class TimeComponent extends BaseDateTimeComponent {
|
|
|
3240
3263
|
provideAs(TimeComponent, NG_VALIDATORS, true),
|
|
3241
3264
|
provideAsWidgetRef(TimeComponent),
|
|
3242
3265
|
{ provide: TimepickerConfig, deps: [AbstractI18nService], useFactory: getTimepickerConfig }
|
|
3243
|
-
], template: "<div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input [attr.aria-label]=\"arialabel\" class=\"form-control app-textbox display-input\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">AM</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">PM</button>\n </div>\n }\n </div>\n</div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : arialabel || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
|
|
3266
|
+
], template: "<div dropdown [isOpen]=\"status.isopen\" (onShown)=\"onShown()\" (onHidden)=\"hideTimepickerDropdown()\" [container]=\"'body'\" style=\"display: inherit\">\n <input [attr.aria-label]=\"arialabel\" class=\"form-control app-textbox display-input\"\n focus-target\n [tabindex]=\"tabindex\"\n [name]=\"name\"\n type=\"text\"\n role=\"timer\"\n [value]=\"displayValue\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [autofocus]=\"autofocus\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-atomic]=\"isCurrentTime ? 'true' : 'false'\"\n [required]=\"required\"\n [readOnly]=\"isReadOnly\"\n (click)=\"toggleDropdown($event, true)\"\n (focus)=\"onDateTimeInputFocus(); invokeOnFocus($event);\"\n (blur)=\"onInputBlur($event)\"\n (change)=\"onDisplayTimeChange($event)\"\n (keydown)=\"this._triggeredByUser = true; onDisplayKeydown($event)\">\n <span class=\"input-group-btn dropdown-toggle\">\n <button type=\"button\" class=\"btn btn-default btn-date\" [tabindex]=\"tabindex\" [disabled]=\"disabled || readonly || isCurrentTime\" aria-label=\"Select time\" aria-haspopup=\"true\" aria-expanded=\"false\" (click)=\"toggleDropdown($event, false)\"><i aria-hidden=\"true\" class=\"app-icon wm-sl-l sl-time\"></i></button>\n </span>\n <div *dropdownMenu class=\"dropdown-menu\" (click)=\"preventTpClose($event)\">\n <timepicker class=\"model-holder\"\n [showMeridian]=\"ismeridian\"\n [readonlyInput]=\"isDisabled\"\n [(ngModel)]=\"bsTimeValue\"\n [ngModelOptions]=\"{standalone: true}\"\n [disabled]=\"disabled || readonly || isCurrentTime\"\n [min]=\"minTime\"\n [max]=\"maxTime\"\n [hourStep]=\"hourstep\"\n [minuteStep]=\"minutestep\"\n [secondsStep]=\"secondsstep\"\n [mousewheel]=\"true\"\n [arrowkeys]=\"true\"\n (isValid)=\"isValid($event)\"\n [showSeconds]=\"showseconds\" (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ 'showbuttons': showampmbuttons }\"></timepicker>\n @if (ismeridian && showampmbuttons) {\n <div class=\"ampm-toggle text-center\">\n <button class=\"meridian-btn mb-1\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'AM' }\" (click)=\"setPeriod('AM')\">{{appLocale.LABEL_AM ||\"AM\"}}</button><br>\n <button class=\"meridian-btn\" [ngClass]=\"{ 'active btn-secondary': getPeriod() === 'PM' }\" (click)=\"setPeriod('PM')\">{{appLocale.LABEL_PM ||\"PM\"}}</button>\n </div>\n }\n </div>\n</div>\n@if (loadNativeDateInput) {\n <wm-datetimepicker\n dateTimePicker\n mode=\"TIME\"\n [minTime]=\"minTime\"\n [maxTime]=\"maxTime\"\n [placement]=\"modal\"\n [displayFormat]=\"timepattern\"\n [value]=\"bsTimeValue\"\n (change)=\"onTimeChange($event)\">\n </wm-datetimepicker>\n <div class=\"mobile-input mobile-datepicker-container\"\n tabindex=\"1000000\"\n (click)=\"!(disabled || readonly) && showDatePickerModal(bsTimeValue)\"\n [attr.aria-label]=\"displayValue ? 'Change time ' + displayValue : arialabel || 'Select time'\"\n (focus)=\"onDateTimeInputFocus(true); invokeOnFocus($event); assignModel()\"\n (blur)=\"onDateTimeInputBlur(); invokeOnTouched($event)\"\n role=\"button\">\n </div>\n}\n" }]
|
|
3244
3267
|
}], () => [{ type: i0.Injector }, { type: i0.NgZone }, { type: i1$1.AppDefaults }, { type: i1$1.App }, { type: undefined, decorators: [{
|
|
3245
3268
|
type: Inject,
|
|
3246
3269
|
args: ['EXPLICIT_CONTEXT']
|