ng-prime-tools
Version:
An advanced PrimeNG table for Angular
62 lines • 8.36 kB
JavaScript
// pt-date.service.ts
import { Injectable } from '@angular/core';
import { getDefaultDateFormat, validateTimeValue } from '../utils/date.util';
import * as i0 from "@angular/core";
export class PTDateService {
constructor() { }
// Assign default date format based on input type
assignDefaultDateFormat(dateInputType, currentFormat) {
return currentFormat || getDefaultDateFormat(dateInputType);
}
// Validate date format and input type compatibility
validateDateFormatAndType(dateFormat, dateInputType, minValue, maxValue, hourFormat = '24') {
const dateOnlyFormats = [
'dd/mm/yy',
'dd-mm-yy',
'dd.mm.yy',
'mm/dd/yy',
'yy/mm/dd',
];
const timeOnlyFormats = ['HH:mm', 'HH:mm:ss'];
const dateTimeFormats = dateOnlyFormats;
switch (dateInputType) {
case 'date':
if (!dateOnlyFormats.includes(dateFormat)) {
throw new Error(`Invalid dateFormat "${dateFormat}" for dateInputType "date".`);
}
break;
case 'time':
if (!timeOnlyFormats.includes(dateFormat)) {
throw new Error(`Invalid dateFormat "${dateFormat}" for dateInputType "time".`);
}
if (minValue) {
validateTimeValue(minValue, dateFormat, 'minValue', hourFormat);
}
if (maxValue) {
validateTimeValue(maxValue, dateFormat, 'maxValue', hourFormat);
}
break;
case 'datetime':
if (!dateTimeFormats.includes(dateFormat)) {
throw new Error(`Invalid dateFormat "${dateFormat}" for dateInputType "datetime".`);
}
break;
case 'range':
if (!dateOnlyFormats.includes(dateFormat)) {
throw new Error(`Invalid dateFormat "${dateFormat}" for dateInputType "range".`);
}
break;
default:
throw new Error(`Unsupported dateInputType: ${dateInputType}`);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTDateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTDateService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTDateService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi9wdC1kYXRlLWlucHV0L3B0LWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFLN0UsTUFBTSxPQUFPLGFBQWE7SUFDeEIsZ0JBQWUsQ0FBQztJQUVoQixpREFBaUQ7SUFDakQsdUJBQXVCLENBQ3JCLGFBQTRCLEVBQzVCLGFBQThCO1FBRTlCLE9BQU8sYUFBYSxJQUFJLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxvREFBb0Q7SUFDcEQseUJBQXlCLENBQ3ZCLFVBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLFFBQWlCLEVBQ2pCLFFBQWlCLEVBQ2pCLGFBQTBCLElBQUk7UUFFOUIsTUFBTSxlQUFlLEdBQXFCO1lBQ3hDLFVBQVU7WUFDVixVQUFVO1lBQ1YsVUFBVTtZQUNWLFVBQVU7WUFDVixVQUFVO1NBQ1gsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFxQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVoRSxNQUFNLGVBQWUsR0FBcUIsZUFBZSxDQUFDO1FBRTFELFFBQVEsYUFBYSxFQUFFLENBQUM7WUFDdEIsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLFVBQVUsNkJBQTZCLENBQy9ELENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLFVBQVUsNkJBQTZCLENBQy9ELENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO2dCQUNELElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2IsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixVQUFVLGlDQUFpQyxDQUNuRSxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO29CQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixVQUFVLDhCQUE4QixDQUNoRSxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7K0dBckVVLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcHQtZGF0ZS5zZXJ2aWNlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlRm9ybWF0VHlwZSB9IGZyb20gJy4uL3R5cGVzL2RhdGUtZm9ybWF0LnR5cGUnO1xuaW1wb3J0IHsgRGF0ZUlucHV0VHlwZSB9IGZyb20gJy4uL3R5cGVzL2RhdGUtaW5wdXQudHlwZSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0RGF0ZUZvcm1hdCwgdmFsaWRhdGVUaW1lVmFsdWUgfSBmcm9tICcuLi91dGlscy9kYXRlLnV0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUFREYXRlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvLyBBc3NpZ24gZGVmYXVsdCBkYXRlIGZvcm1hdCBiYXNlZCBvbiBpbnB1dCB0eXBlXG4gIGFzc2lnbkRlZmF1bHREYXRlRm9ybWF0KFxuICAgIGRhdGVJbnB1dFR5cGU6IERhdGVJbnB1dFR5cGUsXG4gICAgY3VycmVudEZvcm1hdD86IERhdGVGb3JtYXRUeXBlXG4gICk6IERhdGVGb3JtYXRUeXBlIHtcbiAgICByZXR1cm4gY3VycmVudEZvcm1hdCB8fCBnZXREZWZhdWx0RGF0ZUZvcm1hdChkYXRlSW5wdXRUeXBlKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIGRhdGUgZm9ybWF0IGFuZCBpbnB1dCB0eXBlIGNvbXBhdGliaWxpdHlcbiAgdmFsaWRhdGVEYXRlRm9ybWF0QW5kVHlwZShcbiAgICBkYXRlRm9ybWF0OiBEYXRlRm9ybWF0VHlwZSxcbiAgICBkYXRlSW5wdXRUeXBlOiBEYXRlSW5wdXRUeXBlLFxuICAgIG1pblZhbHVlPzogc3RyaW5nLFxuICAgIG1heFZhbHVlPzogc3RyaW5nLFxuICAgIGhvdXJGb3JtYXQ6ICcxMicgfCAnMjQnID0gJzI0J1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlT25seUZvcm1hdHM6IERhdGVGb3JtYXRUeXBlW10gPSBbXG4gICAgICAnZGQvbW0veXknLFxuICAgICAgJ2RkLW1tLXl5JyxcbiAgICAgICdkZC5tbS55eScsXG4gICAgICAnbW0vZGQveXknLFxuICAgICAgJ3l5L21tL2RkJyxcbiAgICBdO1xuXG4gICAgY29uc3QgdGltZU9ubHlGb3JtYXRzOiBEYXRlRm9ybWF0VHlwZVtdID0gWydISDptbScsICdISDptbTpzcyddO1xuXG4gICAgY29uc3QgZGF0ZVRpbWVGb3JtYXRzOiBEYXRlRm9ybWF0VHlwZVtdID0gZGF0ZU9ubHlGb3JtYXRzO1xuXG4gICAgc3dpdGNoIChkYXRlSW5wdXRUeXBlKSB7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgaWYgKCFkYXRlT25seUZvcm1hdHMuaW5jbHVkZXMoZGF0ZUZvcm1hdCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW52YWxpZCBkYXRlRm9ybWF0IFwiJHtkYXRlRm9ybWF0fVwiIGZvciBkYXRlSW5wdXRUeXBlIFwiZGF0ZVwiLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIGlmICghdGltZU9ubHlGb3JtYXRzLmluY2x1ZGVzKGRhdGVGb3JtYXQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYEludmFsaWQgZGF0ZUZvcm1hdCBcIiR7ZGF0ZUZvcm1hdH1cIiBmb3IgZGF0ZUlucHV0VHlwZSBcInRpbWVcIi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWluVmFsdWUpIHtcbiAgICAgICAgICB2YWxpZGF0ZVRpbWVWYWx1ZShtaW5WYWx1ZSwgZGF0ZUZvcm1hdCwgJ21pblZhbHVlJywgaG91ckZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heFZhbHVlKSB7XG4gICAgICAgICAgdmFsaWRhdGVUaW1lVmFsdWUobWF4VmFsdWUsIGRhdGVGb3JtYXQsICdtYXhWYWx1ZScsIGhvdXJGb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF0ZXRpbWUnOlxuICAgICAgICBpZiAoIWRhdGVUaW1lRm9ybWF0cy5pbmNsdWRlcyhkYXRlRm9ybWF0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGRhdGVGb3JtYXQgXCIke2RhdGVGb3JtYXR9XCIgZm9yIGRhdGVJbnB1dFR5cGUgXCJkYXRldGltZVwiLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICBpZiAoIWRhdGVPbmx5Rm9ybWF0cy5pbmNsdWRlcyhkYXRlRm9ybWF0KSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGRhdGVGb3JtYXQgXCIke2RhdGVGb3JtYXR9XCIgZm9yIGRhdGVJbnB1dFR5cGUgXCJyYW5nZVwiLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkYXRlSW5wdXRUeXBlOiAke2RhdGVJbnB1dFR5cGV9YCk7XG4gICAgfVxuICB9XG59XG4iXX0=