UNPKG

@candidosales/material-time-picker

Version:
119 lines 17.5 kB
import { Component, EventEmitter, Input, Output, ViewEncapsulation, } from "@angular/core"; import { Utils } from "../utils"; import { WTimeDialogComponent } from "../w-time-dialog/w-time-dialog.component"; import { MatIcon } from "@angular/material/icon"; import { MatInput } from "@angular/material/input"; import { MatFormField, MatLabel, MatSuffix } from "@angular/material/form-field"; import * as i0 from "@angular/core"; import * as i1 from "@angular/material/dialog"; export class MaterialTimePickerComponent { constructor(dialog) { this.dialog = dialog; this.label = "Hour"; this.appearance = "fill"; this.change = new EventEmitter(); } ngOnInit() { if (!this.userTime) { this.userTime = { hour: 0, minute: 0, meriden: "PM", format: 24, }; } } time() { if (!this.userTime) { return ""; } let meriden = `${this.userTime.meriden}`; if (this.userTime.format === 24) { meriden = ""; } let hour = `${this.userTime.hour}`; if (this.userTime.hour === 24) { hour = "00"; } if (this.userTime.minute === 0) { return `${hour}:00 ${meriden}`; } else if (this.userTime.minute < 10) { const tt = "0" + String(this.userTime.minute); return `${hour}:${tt} ${meriden}`; } else { return `${hour}:${this.userTime.minute} ${meriden}`; } } showPicker() { const dialogRef = this.dialog.open(WTimeDialogComponent, { data: { time: { hour: this.userTime.hour, minute: this.userTime.minute, meriden: this.userTime.meriden, format: this.userTime.format, }, color: this.color, revertLabel: this.revertLabel, submitLabel: this.submitLabel, }, }); dialogRef.afterClosed().subscribe((result) => { // result will be update userTime object or -1 or undefined (closed dialog w/o clicking cancel) if (result === undefined) { return; } else if (result !== -1) { this.userTime = result; const hour = result.hour; const minute = result.minute; const dataEvent = { hour: Utils.formatHour(result.format, hour), minute: Utils.formatMinute(minute), meriden: this.userTime.meriden, format: this.userTime.format, }; this.emitChange(dataEvent); } }); return false; } emitChange(data) { this.change.emit(data); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MaterialTimePickerComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MaterialTimePickerComponent, isStandalone: true, selector: "material-timepicker", inputs: { label: "label", appearance: "appearance", userTime: "userTime", color: "color", revertLabel: "revertLabel", submitLabel: "submitLabel", disabled: "disabled", readonly: "readonly", classFormField: "classFormField" }, outputs: { change: "change" }, ngImport: i0, template: "<div class=\"d-flex flex-row w-mat-timepicker\">\n <mat-form-field class=\"d-flex {{classFormField}}\" class=\"timeContainer\" appearance=\"{{appearance}}\">\n <mat-label>{{ label }}</mat-label>\n <input matInput class=\"timeInput\" placeholder=\"Select time\" id=\"time_Control\" name=\"time_Control\" [value]=\"time()\" [disabled]=\"disabled\" [readonly]=\"readonly\">\n <mat-icon matSuffix (click)=\"showPicker()\">access_time</mat-icon>\n </mat-form-field>\n</div>\n", styles: [".d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.align-items-end{align-items:end}@media (min-width: 768px){.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}}.time-picker-button{padding:0;margin:0;min-width:44px}.mat-mdc-form-field-flex{display:inline-flex;align-items:center;box-sizing:border-box;width:100%}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: 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: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MaterialTimePickerComponent, decorators: [{ type: Component, args: [{ selector: "material-timepicker", encapsulation: ViewEncapsulation.None, standalone: true, imports: [ MatFormField, MatLabel, MatInput, MatIcon, MatSuffix, ], template: "<div class=\"d-flex flex-row w-mat-timepicker\">\n <mat-form-field class=\"d-flex {{classFormField}}\" class=\"timeContainer\" appearance=\"{{appearance}}\">\n <mat-label>{{ label }}</mat-label>\n <input matInput class=\"timeInput\" placeholder=\"Select time\" id=\"time_Control\" name=\"time_Control\" [value]=\"time()\" [disabled]=\"disabled\" [readonly]=\"readonly\">\n <mat-icon matSuffix (click)=\"showPicker()\">access_time</mat-icon>\n </mat-form-field>\n</div>\n", styles: [".d-flex{display:flex}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.align-items-center{align-items:center}.align-items-end{align-items:end}@media (min-width: 768px){.flex-md-row{flex-direction:row}.flex-md-column{flex-direction:column}}.time-picker-button{padding:0;margin:0;min-width:44px}.mat-mdc-form-field-flex{display:inline-flex;align-items:center;box-sizing:border-box;width:100%}\n"] }] }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { label: [{ type: Input }], appearance: [{ type: Input }], userTime: [{ type: Input }], color: [{ type: Input }], revertLabel: [{ type: Input }], submitLabel: [{ type: Input }], disabled: [{ type: Input }], readonly: [{ type: Input }], classFormField: [{ type: Input }], change: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtdGltZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC10aW1lLXBpY2tlci9zcmMvbGliL21hdGVyaWFsLXRpbWVwaWNrZXIvbWF0ZXJpYWwtdGltZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC10aW1lLXBpY2tlci9zcmMvbGliL21hdGVyaWFsLXRpbWVwaWNrZXIvbWF0ZXJpYWwtdGltZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQWdCakYsTUFBTSxPQUFPLDJCQUEyQjtJQWdCdEMsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQWY1QixVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsZUFBVSxHQUFHLE1BQU0sQ0FBQztRQVluQixXQUFNLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7SUFFMUIsQ0FBQztJQUV6QyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHO2dCQUNkLElBQUks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QzdCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBSTtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTdGVSwyQkFBMkI7a0dBQTNCLDJCQUEyQixnVkM5QnhDLHllQU9BLHVqQkRnQlEsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFFBQVEsaVVBQ1IsT0FBTywySUFDUCxTQUFTOzsyRkFHSiwyQkFBMkI7a0JBZHZDLFNBQVM7K0JBQ0kscUJBQXFCLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFNBQVM7cUJBQ1o7OEVBR00sS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVRpbWUgfSBmcm9tIFwiLi4vdy1jbG9jay93LWNsb2NrLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFdUaW1lRGlhbG9nQ29tcG9uZW50IH0gZnJvbSBcIi4uL3ctdGltZS1kaWFsb2cvdy10aW1lLWRpYWxvZy5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdFN1ZmZpeCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm1hdGVyaWFsLXRpbWVwaWNrZXJcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vbWF0ZXJpYWwtdGltZXBpY2tlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL21hdGVyaWFsLXRpbWVwaWNrZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRGb3JtRmllbGQsXG4gICAgICAgIE1hdExhYmVsLFxuICAgICAgICBNYXRJbnB1dCxcbiAgICAgICAgTWF0SWNvbixcbiAgICAgICAgTWF0U3VmZml4LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdGVyaWFsVGltZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxhYmVsID0gXCJIb3VyXCI7XG4gIEBJbnB1dCgpIGFwcGVhcmFuY2UgPSBcImZpbGxcIjtcbiAgQElucHV0KCkgdXNlclRpbWU6IElUaW1lO1xuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSByZXZlcnRMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJtaXRMYWJlbDogc3RyaW5nO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBDbGFzcyB0byBwdXQgaW4gdGhlIGZvcm0tZmllbGRcbiAgICovXG4gIEBJbnB1dCgpIGNsYXNzRm9ybUZpZWxkOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPElUaW1lPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVRpbWU+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZykge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMudXNlclRpbWUpIHtcbiAgICAgIHRoaXMudXNlclRpbWUgPSB7XG4gICAgICAgIGhvdXI6IDAsXG4gICAgICAgIG1pbnV0ZTogMCxcbiAgICAgICAgbWVyaWRlbjogXCJQTVwiLFxuICAgICAgICBmb3JtYXQ6IDI0LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB0aW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnVzZXJUaW1lKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBsZXQgbWVyaWRlbiA9IGAke3RoaXMudXNlclRpbWUubWVyaWRlbn1gO1xuICAgIGlmICh0aGlzLnVzZXJUaW1lLmZvcm1hdCA9PT0gMjQpIHtcbiAgICAgIG1lcmlkZW4gPSBcIlwiO1xuICAgIH1cblxuICAgIGxldCBob3VyID0gYCR7dGhpcy51c2VyVGltZS5ob3VyfWA7XG4gICAgaWYgKHRoaXMudXNlclRpbWUuaG91ciA9PT0gMjQpIHtcbiAgICAgIGhvdXIgPSBcIjAwXCI7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlclRpbWUubWludXRlID09PSAwKSB7XG4gICAgICByZXR1cm4gYCR7aG91cn06MDAgJHttZXJpZGVufWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLnVzZXJUaW1lLm1pbnV0ZSA8IDEwKSB7XG4gICAgICBjb25zdCB0dCA9IFwiMFwiICsgU3RyaW5nKHRoaXMudXNlclRpbWUubWludXRlKTtcbiAgICAgIHJldHVybiBgJHtob3VyfToke3R0fSAke21lcmlkZW59YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke2hvdXJ9OiR7dGhpcy51c2VyVGltZS5taW51dGV9ICR7bWVyaWRlbn1gO1xuICAgIH1cbiAgfVxuXG4gIHNob3dQaWNrZXIoKSB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXVGltZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YToge1xuICAgICAgICB0aW1lOiB7XG4gICAgICAgICAgaG91cjogdGhpcy51c2VyVGltZS5ob3VyLFxuICAgICAgICAgIG1pbnV0ZTogdGhpcy51c2VyVGltZS5taW51dGUsXG4gICAgICAgICAgbWVyaWRlbjogdGhpcy51c2VyVGltZS5tZXJpZGVuLFxuICAgICAgICAgIGZvcm1hdDogdGhpcy51c2VyVGltZS5mb3JtYXQsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbG9yOiB0aGlzLmNvbG9yLFxuICAgICAgICByZXZlcnRMYWJlbDogdGhpcy5yZXZlcnRMYWJlbCxcbiAgICAgICAgc3VibWl0TGFiZWw6IHRoaXMuc3VibWl0TGFiZWwsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IElUaW1lIHwgLTEpID0+IHtcbiAgICAgIC8vIHJlc3VsdCB3aWxsIGJlIHVwZGF0ZSB1c2VyVGltZSBvYmplY3Qgb3IgLTEgb3IgdW5kZWZpbmVkIChjbG9zZWQgZGlhbG9nIHcvbyBjbGlja2luZyBjYW5jZWwpXG4gICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgIT09IC0xKSB7XG4gICAgICAgIHRoaXMudXNlclRpbWUgPSByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgaG91ciA9IHJlc3VsdC5ob3VyO1xuICAgICAgICBjb25zdCBtaW51dGUgPSByZXN1bHQubWludXRlO1xuXG4gICAgICAgIGNvbnN0IGRhdGFFdmVudCA9IHtcbiAgICAgICAgICBob3VyOiBVdGlscy5mb3JtYXRIb3VyKHJlc3VsdC5mb3JtYXQsIGhvdXIpLFxuICAgICAgICAgIG1pbnV0ZTogVXRpbHMuZm9ybWF0TWludXRlKG1pbnV0ZSksXG4gICAgICAgICAgbWVyaWRlbjogdGhpcy51c2VyVGltZS5tZXJpZGVuLFxuICAgICAgICAgIGZvcm1hdDogdGhpcy51c2VyVGltZS5mb3JtYXQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZW1pdENoYW5nZShkYXRhRXZlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZShkYXRhKSB7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdChkYXRhKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyB3LW1hdC10aW1lcGlja2VyXCI+XG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImQtZmxleCB7e2NsYXNzRm9ybUZpZWxkfX1cIiBjbGFzcz1cInRpbWVDb250YWluZXJcIiBhcHBlYXJhbmNlPVwie3thcHBlYXJhbmNlfX1cIj5cbiAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBjbGFzcz1cInRpbWVJbnB1dFwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHRpbWVcIiBpZD1cInRpbWVfQ29udHJvbFwiIG5hbWU9XCJ0aW1lX0NvbnRyb2xcIiBbdmFsdWVdPVwidGltZSgpXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCI+XG4gICAgICA8bWF0LWljb24gbWF0U3VmZml4IChjbGljayk9XCJzaG93UGlja2VyKClcIj5hY2Nlc3NfdGltZTwvbWF0LWljb24+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==