material-dynamic-forms
Version:
¡Crea formularios dinámicos, potentes y configurables en Angular usando Material Design! 🚀
51 lines • 7.65 kB
JavaScript
import { NativeDateAdapter } from '@angular/material/core';
const CONST_TYPE_STRING = 'string';
const CONST_TYPE_NUMBER = 'number';
const CONST_TYPE_NUMERIC = 'numeric';
const CONST_TYPE_LONG = 'long';
const CONST_DISPLAY_FORMAT_INPUT = 'input';
const CONST_DISPLAY_FORMAT_INPUTMONTH = 'inputMonth';
export class AppDateAdapter extends NativeDateAdapter {
parse(value) {
if (typeof value === CONST_TYPE_STRING && value.indexOf('/') > -1) {
const str = value.split('/');
const year = Number(str[2]);
const month = Number(str[1]) - 1;
const date = Number(str[0]);
return new Date(year, month, date);
}
const timestamp = typeof value === CONST_TYPE_NUMBER ? value : Date.parse(value);
return isNaN(timestamp) ? null : new Date(timestamp);
}
format(date, displayFormat) {
if (displayFormat === CONST_DISPLAY_FORMAT_INPUT) {
let day = date.getDate();
let month = date.getMonth() + 1;
let year = date.getFullYear();
return this._to2digit(day) + '/' + this._to2digit(month) + '/' + year;
}
else if (displayFormat === CONST_DISPLAY_FORMAT_INPUTMONTH) {
let month = date.getMonth() + 1;
let year = date.getFullYear();
return this._to2digit(month) + '/' + year;
}
else {
return date.toDateString();
}
}
_to2digit(n) {
return ('00' + n).slice(-2);
}
}
export const APP_DATE_FORMATS = {
parse: {
dateInput: { month: 'short', year: CONST_TYPE_NUMERIC, day: CONST_TYPE_NUMERIC },
},
display: {
dateInput: CONST_DISPLAY_FORMAT_INPUT,
monthYearLabel: CONST_DISPLAY_FORMAT_INPUTMONTH,
dateA11yLabel: { year: CONST_TYPE_NUMERIC, month: CONST_TYPE_LONG, day: CONST_TYPE_NUMERIC },
monthYearA11yLabel: { year: CONST_TYPE_NUMERIC, month: CONST_TYPE_LONG },
},
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1mb3JtL3NyYy9saWIvdXRpbHMvZGF0ZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDO0FBQ25DLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDO0FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLDBCQUEwQixHQUFHLE9BQU8sQ0FBQztBQUMzQyxNQUFNLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUVyRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQUMxQyxLQUFLLENBQUMsS0FBVTtRQUN2QixJQUFJLE9BQU8sS0FBSyxLQUFLLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDakUsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxLQUFLLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRixPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ1EsTUFBTSxDQUFDLElBQVUsRUFBRSxhQUFxQjtRQUMvQyxJQUFJLGFBQWEsS0FBSywwQkFBMEIsRUFBRTtZQUNoRCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDdkU7YUFBTSxJQUFJLGFBQWEsS0FBSywrQkFBK0IsRUFBRTtZQUM1RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztTQUMzQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLENBQVM7UUFDekIsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixLQUFLLEVBQUU7UUFDTCxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUU7S0FDakY7SUFDRCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUUsMEJBQTBCO1FBQ3JDLGNBQWMsRUFBRSwrQkFBK0I7UUFDL0MsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFO1FBQzVGLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7S0FDekU7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcclxuXHJcbmNvbnN0IENPTlNUX1RZUEVfU1RSSU5HID0gJ3N0cmluZyc7XHJcbmNvbnN0IENPTlNUX1RZUEVfTlVNQkVSID0gJ251bWJlcic7XHJcbmNvbnN0IENPTlNUX1RZUEVfTlVNRVJJQyA9ICdudW1lcmljJztcclxuY29uc3QgQ09OU1RfVFlQRV9MT05HID0gJ2xvbmcnO1xyXG5jb25zdCBDT05TVF9ESVNQTEFZX0ZPUk1BVF9JTlBVVCA9ICdpbnB1dCc7XHJcbmNvbnN0IENPTlNUX0RJU1BMQVlfRk9STUFUX0lOUFVUTU9OVEggPSAnaW5wdXRNb250aCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXBwRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBOYXRpdmVEYXRlQWRhcHRlciB7XHJcbiAgb3ZlcnJpZGUgcGFyc2UodmFsdWU6IGFueSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IENPTlNUX1RZUEVfU1RSSU5HICYmIHZhbHVlLmluZGV4T2YoJy8nKSA+IC0xKSB7XHJcbiAgICAgIGNvbnN0IHN0ciA9IHZhbHVlLnNwbGl0KCcvJyk7XHJcbiAgICAgIGNvbnN0IHllYXIgPSBOdW1iZXIoc3RyWzJdKTtcclxuICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIoc3RyWzFdKSAtIDE7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBOdW1iZXIoc3RyWzBdKTtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHR5cGVvZiB2YWx1ZSA9PT0gQ09OU1RfVFlQRV9OVU1CRVIgPyB2YWx1ZSA6IERhdGUucGFyc2UodmFsdWUpO1xyXG4gICAgcmV0dXJuIGlzTmFOKHRpbWVzdGFtcCkgPyBudWxsIDogbmV3IERhdGUodGltZXN0YW1wKTtcclxuICB9XHJcbiAgb3ZlcnJpZGUgZm9ybWF0KGRhdGU6IERhdGUsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoZGlzcGxheUZvcm1hdCA9PT0gQ09OU1RfRElTUExBWV9GT1JNQVRfSU5QVVQpIHtcclxuICAgICAgbGV0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICBsZXQgbW9udGggPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgICBsZXQgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgcmV0dXJuIHRoaXMuX3RvMmRpZ2l0KGRheSkgKyAnLycgKyB0aGlzLl90bzJkaWdpdChtb250aCkgKyAnLycgKyB5ZWFyO1xyXG4gICAgfSBlbHNlIGlmIChkaXNwbGF5Rm9ybWF0ID09PSBDT05TVF9ESVNQTEFZX0ZPUk1BVF9JTlBVVE1PTlRIKSB7XHJcbiAgICAgIGxldCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICByZXR1cm4gdGhpcy5fdG8yZGlnaXQobW9udGgpICsgJy8nICsgeWVhcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBkYXRlLnRvRGF0ZVN0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdG8yZGlnaXQobjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCcwMCcgKyBuKS5zbGljZSgtMik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgQVBQX0RBVEVfRk9STUFUUyA9IHtcclxuICBwYXJzZToge1xyXG4gICAgZGF0ZUlucHV0OiB7IG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiBDT05TVF9UWVBFX05VTUVSSUMsIGRheTogQ09OU1RfVFlQRV9OVU1FUklDIH0sXHJcbiAgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6IENPTlNUX0RJU1BMQVlfRk9STUFUX0lOUFVULFxyXG4gICAgbW9udGhZZWFyTGFiZWw6IENPTlNUX0RJU1BMQVlfRk9STUFUX0lOUFVUTU9OVEgsXHJcbiAgICBkYXRlQTExeUxhYmVsOiB7IHllYXI6IENPTlNUX1RZUEVfTlVNRVJJQywgbW9udGg6IENPTlNUX1RZUEVfTE9ORywgZGF5OiBDT05TVF9UWVBFX05VTUVSSUMgfSxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogeyB5ZWFyOiBDT05TVF9UWVBFX05VTUVSSUMsIG1vbnRoOiBDT05TVF9UWVBFX0xPTkcgfSxcclxuICB9LFxyXG59O1xyXG4iXX0=