ng-prime-tools
Version:
An advanced PrimeNG table for Angular
69 lines • 9.78 kB
JavaScript
// date.util.ts
export function getDefaultDateFormat(dateInputType) {
switch (dateInputType) {
case 'time':
return 'HH:mm';
case 'datetime':
return 'dd/mm/yy';
case 'date':
default:
return 'dd/mm/yy';
}
}
export function getDefaultPlaceholder(dateInputType) {
switch (dateInputType) {
case 'time':
return 'Select time';
case 'datetime':
return 'Select date and time';
case 'date':
default:
return 'Select date';
}
}
export function parseDate(dateString, format) {
const parts = dateString.match(/\d+/g);
if (!parts || parts.length < 2)
throw new Error(`Invalid date string: ${dateString}`);
let day, month, year, hour, minute, second;
switch (format) {
case 'dd/mm/yy':
case 'dd-mm-yy':
case 'dd.mm.yy':
[day, month, year] = parts;
break;
case 'mm/dd/yy':
[month, day, year] = parts;
break;
case 'yy/mm/dd':
[year, month, day] = parts;
break;
case 'HH:mm':
[hour, minute] = parts;
return new Date(0, 0, 0, Number(hour), Number(minute));
case 'HH:mm:ss':
[hour, minute, second] = parts;
return new Date(0, 0, 0, Number(hour), Number(minute), Number(second));
default:
throw new Error(`Unsupported date format: ${format}`);
}
year = year.length === 2 ? `20${year}` : year;
return new Date(Number(year), Number(month) - 1, Number(day), Number(hour || 0), Number(minute || 0), Number(second || 0));
}
export function validateTimeValue(value, dateFormat, valueType, hourFormat) {
const timeFormat = dateFormat.includes('ss') ? 'HH:mm:ss' : 'HH:mm';
const timeParts = value.match(/\d+/g);
if (!timeParts || timeParts.length !== (timeFormat === 'HH:mm:ss' ? 3 : 2)) {
throw new Error(`Invalid ${valueType} "${value}" for time format "${timeFormat}".`);
}
const [hour, minute, second] = timeParts.map(Number);
const maxHour = hourFormat === '12' ? 12 : 23;
if (hour < 0 ||
hour > maxHour ||
minute < 0 ||
minute > 59 ||
(second !== undefined && (second < 0 || second > 59))) {
throw new Error(`Invalid ${valueType} "${value}". Time must be between 00:00 and ${maxHour}:59.`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcHJpbWUtdG9vbHMvc3JjL2xpYi91dGlscy9kYXRlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZTtBQUtmLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsYUFBNEI7SUFFNUIsUUFBUSxhQUFhLEVBQUUsQ0FBQztRQUN0QixLQUFLLE1BQU07WUFDVCxPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLFVBQVU7WUFDYixPQUFPLFVBQVUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQztRQUNaO1lBQ0UsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsYUFBNEI7SUFDaEUsUUFBUSxhQUFhLEVBQUUsQ0FBQztRQUN0QixLQUFLLE1BQU07WUFDVCxPQUFPLGFBQWEsQ0FBQztRQUN2QixLQUFLLFVBQVU7WUFDYixPQUFPLHNCQUFzQixDQUFDO1FBQ2hDLEtBQUssTUFBTSxDQUFDO1FBQ1o7WUFDRSxPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsVUFBa0IsRUFBRSxNQUFzQjtJQUNsRSxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFeEQsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxVQUFVLENBQUM7UUFDaEIsS0FBSyxVQUFVLENB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TSxJQUFJLEtBQUssQ0FDYixXQUFXLFNBQVMsS0FBSyxLQUFLLHFDQUFxQyxPQUFPLE1BQU0sQ0FDakYsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZGF0ZS51dGlsLnRzXG5cbmltcG9ydCB7IERhdGVGb3JtYXRUeXBlIH0gZnJvbSAnLi4vdHlwZXMvZGF0ZS1mb3JtYXQudHlwZSc7XG5pbXBvcnQgeyBEYXRlSW5wdXRUeXBlIH0gZnJvbSAnLi4vdHlwZXMvZGF0ZS1pbnB1dC50eXBlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHREYXRlRm9ybWF0KFxuICBkYXRlSW5wdXRUeXBlOiBEYXRlSW5wdXRUeXBlXG4pOiBEYXRlRm9ybWF0VHlwZSB7XG4gIHN3aXRjaCAoZGF0ZUlucHV0VHlwZSkge1xuICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgcmV0dXJuICdISDptbSc7XG4gICAgY2FzZSAnZGF0ZXRpbWUnOlxuICAgICAgcmV0dXJuICdkZC9tbS95eSc7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnZGQvbW0veXknO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0UGxhY2Vob2xkZXIoZGF0ZUlucHV0VHlwZTogRGF0ZUlucHV0VHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAoZGF0ZUlucHV0VHlwZSkge1xuICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgcmV0dXJuICdTZWxlY3QgdGltZSc7XG4gICAgY2FzZSAnZGF0ZXRpbWUnOlxuICAgICAgcmV0dXJuICdTZWxlY3QgZGF0ZSBhbmQgdGltZSc7XG4gICAgY2FzZSAnZGF0ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnU2VsZWN0IGRhdGUnO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nLCBmb3JtYXQ6IERhdGVGb3JtYXRUeXBlKTogRGF0ZSB7XG4gIGNvbnN0IHBhcnRzID0gZGF0ZVN0cmluZy5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFwYXJ0cyB8fCBwYXJ0cy5sZW5ndGggPCAyKVxuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRlIHN0cmluZzogJHtkYXRlU3RyaW5nfWApO1xuXG4gIGxldCBkYXksIG1vbnRoLCB5ZWFyLCBob3VyLCBtaW51dGUsIHNlY29uZDtcbiAgc3dpdGNoIChmb3JtYXQpIHtcbiAgICBjYXNlICdkZC9tbS95eSc6XG4gICAgY2FzZSAnZGQtbW0teXknOlxuICAgIGNhc2UgJ2RkLm1tLnl5JzpcbiAgICAgIFtkYXksIG1vbnRoLCB5ZWFyXSA9IHBhcnRzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbW0vZGQveXknOlxuICAgICAgW21vbnRoLCBkYXksIHllYXJdID0gcGFydHM7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd5eS9tbS9kZCc6XG4gICAgICBbeWVhciwgbW9udGgsIGRheV0gPSBwYXJ0cztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ0hIOm1tJzpcbiAgICAgIFtob3VyLCBtaW51dGVdID0gcGFydHM7XG4gICAgICByZXR1cm4gbmV3IERhdGUoMCwgMCwgMCwgTnVtYmVyKGhvdXIpLCBOdW1iZXIobWludXRlKSk7XG4gICAgY2FzZSAnSEg6bW06c3MnOlxuICAgICAgW2hvdXIsIG1pbnV0ZSwgc2Vjb25kXSA9IHBhcnRzO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKDAsIDAsIDAsIE51bWJlcihob3VyKSwgTnVtYmVyKG1pbnV0ZSksIE51bWJlcihzZWNvbmQpKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBkYXRlIGZvcm1hdDogJHtmb3JtYXR9YCk7XG4gIH1cblxuICB5ZWFyID0geWVhci5sZW5ndGggPT09IDIgPyBgMjAke3llYXJ9YCA6IHllYXI7XG4gIHJldHVybiBuZXcgRGF0ZShcbiAgICBOdW1iZXIoeWVhciksXG4gICAgTnVtYmVyKG1vbnRoKSAtIDEsXG4gICAgTnVtYmVyKGRheSksXG4gICAgTnVtYmVyKGhvdXIgfHwgMCksXG4gICAgTnVtYmVyKG1pbnV0ZSB8fCAwKSxcbiAgICBOdW1iZXIoc2Vjb25kIHx8IDApXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRpbWVWYWx1ZShcbiAgdmFsdWU6IHN0cmluZyxcbiAgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdFR5cGUsXG4gIHZhbHVlVHlwZTogJ21pblZhbHVlJyB8ICdtYXhWYWx1ZScsXG4gIGhvdXJGb3JtYXQ6ICcxMicgfCAnMjQnXG4pOiB2b2lkIHtcbiAgY29uc3QgdGltZUZvcm1hdCA9IGRhdGVGb3JtYXQuaW5jbHVkZXMoJ3NzJykgPyAnSEg6bW06c3MnIDogJ0hIOm1tJztcbiAgY29uc3QgdGltZVBhcnRzID0gdmFsdWUubWF0Y2goL1xcZCsvZyk7XG5cbiAgaWYgKCF0aW1lUGFydHMgfHwgdGltZVBhcnRzLmxlbmd0aCAhPT0gKHRpbWVGb3JtYXQgPT09ICdISDptbTpzcycgPyAzIDogMikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCAke3ZhbHVlVHlwZX0gXCIke3ZhbHVlfVwiIGZvciB0aW1lIGZvcm1hdCBcIiR7dGltZUZvcm1hdH1cIi5gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IFtob3VyLCBtaW51dGUsIHNlY29uZF0gPSB0aW1lUGFydHMubWFwKE51bWJlcik7XG4gIGNvbnN0IG1heEhvdXIgPSBob3VyRm9ybWF0ID09PSAnMTInID8gMTIgOiAyMztcbiAgaWYgKFxuICAgIGhvdXIgPCAwIHx8XG4gICAgaG91ciA+IG1heEhvdXIgfHxcbiAgICBtaW51dGUgPCAwIHx8XG4gICAgbWludXRlID4gNTkgfHxcbiAgICAoc2Vjb25kICE9PSB1bmRlZmluZWQgJiYgKHNlY29uZCA8IDAgfHwgc2Vjb25kID4gNTkpKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgSW52YWxpZCAke3ZhbHVlVHlwZX0gXCIke3ZhbHVlfVwiLiBUaW1lIG11c3QgYmUgYmV0d2VlbiAwMDowMCBhbmQgJHttYXhIb3VyfTo1OS5gXG4gICAgKTtcbiAgfVxufVxuIl19