@libs-ui/pipes-format-date 0.2.48 → 0.2.50

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.
@@ -1,10 +1,86 @@
1
- import { Pipe, inject } from '@angular/core';
2
- import { FormatDateService } from '@libs-ui/services-format-date';
1
+ import { Pipe } from '@angular/core';
2
+ import { UtilsCache, formatDate } from '@libs-ui/utils';
3
+ import * as dayjs from 'dayjs';
4
+ import * as en from 'dayjs/locale/en';
5
+ import * as vi from 'dayjs/locale/vi';
6
+ import * as updateLocale from 'dayjs/plugin/updateLocale';
3
7
  import * as i0 from "@angular/core";
8
+ dayjs.extend(updateLocale);
4
9
  export class LibsUiPipesFormatDatePipe {
5
- formatDate = inject(FormatDateService);
6
- transform(time, format = 'YYYY/MM/DD HH:mm', lang) {
7
- return this.formatDate.transform(time, format, lang);
10
+ transform(time, format = 'YYYY/MM/DD HH:mm', lang, functionCustomFormat) {
11
+ if (!time) {
12
+ return '';
13
+ }
14
+ lang = lang || UtilsCache.getLang();
15
+ if (functionCustomFormat) {
16
+ return functionCustomFormat(time, format, lang);
17
+ }
18
+ if (formatDate()) {
19
+ return formatDate()?.(time, format, lang) || '';
20
+ }
21
+ time = typeof time === 'number' ? dayjs.unix(time).locale(lang) : dayjs(time).locale(lang);
22
+ this.updateLocale(lang);
23
+ if (typeof time === 'number') {
24
+ return dayjs.unix(time).format(this.getFormatData(this.getTypeByFormat(format), lang));
25
+ }
26
+ return dayjs(time).format(this.getFormatData(this.getTypeByFormat(format), lang));
27
+ }
28
+ updateLocale(lang) {
29
+ if (lang === 'vi') {
30
+ dayjs.locale(vi);
31
+ dayjs.updateLocale('vi', {
32
+ monthsShort: 'Thg 1_Thg 2_Thg 3_Thg 4_Thg 5_Thg 6_Thg 7_Thg 8_Thg 9_Thg 10_Thg 11_Thg 12'.split('_')
33
+ });
34
+ return;
35
+ }
36
+ dayjs.locale(en);
37
+ }
38
+ getTypeByFormat(format) {
39
+ if (format === 'dm' || format === 'dmy' || format === 'dmy hm' || format === 'my') {
40
+ return format;
41
+ }
42
+ if (format === 'DD/MM/YYYY' || format === 'YYYY-MM-DD' || format === 'dd/MM/yyyy' || format === 'dd-MM-yyyy' || format === 'dd/mm/yyyy') {
43
+ return 'dmy';
44
+ }
45
+ if (format === 'MM-DD' || format === 'dd/MM' || format === 'dd/mm') {
46
+ return 'dm';
47
+ }
48
+ if (format === 'M/YYYY' || format === 'YYYY-MM' || format === 'MM/yyyy') {
49
+ return 'my';
50
+ }
51
+ if (format === 'YYYY/MM/DD hh:mm:ss' || format === 'dmy hms' || format === 'dd/mm/yyyy hh:mm:ss') {
52
+ return 'dmy hms';
53
+ }
54
+ return 'dmy hm';
55
+ }
56
+ getFormatData(type, lang) {
57
+ switch (type) {
58
+ case 'dm':
59
+ if (lang === 'vi') {
60
+ return 'D MMM';
61
+ }
62
+ return 'MMM D';
63
+ case 'dmy':
64
+ if (lang === 'vi') {
65
+ return 'D MMM, YYYY';
66
+ }
67
+ return 'MMM D, YYYY';
68
+ case 'dmy hm':
69
+ if (lang === 'vi') {
70
+ return 'D MMM, YYYY HH:mm';
71
+ }
72
+ return 'MMM D, YYYY HH:mm';
73
+ case 'my':
74
+ if (lang === 'vi') {
75
+ return 'MMM, YYYY';
76
+ }
77
+ return 'MMM YYYY ';
78
+ case 'dmy hms':
79
+ if (lang === 'vi') {
80
+ return 'D MMM, YYYY HH:mm:ss';
81
+ }
82
+ return 'MMM D, YYYY HH:mm:ss';
83
+ }
8
84
  }
9
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesFormatDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
86
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesFormatDatePipe, isStandalone: true, name: "LibsUiPipesFormatDatePipe" });
@@ -16,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
16
92
  standalone: true
17
93
  }]
18
94
  }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWRhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvcGlwZXMvZm9ybWF0LWRhdGUvc3JjL2Zvcm1hdC1kYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQU1sRSxNQUFNLE9BQU8seUJBQXlCO0lBQzVCLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUUvQyxTQUFTLENBQUMsSUFBc0QsRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEVBQUUsSUFBYTtRQUMxRyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQzt3R0FMVSx5QkFBeUI7c0dBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFKckMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB7IEZvcm1hdERhdGVTZXJ2aWNlIH0gZnJvbSAnQGxpYnMtdWkvc2VydmljZXMtZm9ybWF0LWRhdGUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdMaWJzVWlQaXBlc0Zvcm1hdERhdGVQaXBlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlQaXBlc0Zvcm1hdERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByaXZhdGUgZm9ybWF0RGF0ZSA9IGluamVjdChGb3JtYXREYXRlU2VydmljZSk7XG5cbiAgdHJhbnNmb3JtKHRpbWU6IHN0cmluZyB8IG51bWJlciB8IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkIHwgbnVsbCwgZm9ybWF0ID0gJ1lZWVkvTU0vREQgSEg6bW0nLCBsYW5nPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlLnRyYW5zZm9ybSh0aW1lLCBmb3JtYXQsIGxhbmcpO1xuICB9XG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWRhdGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvcGlwZXMvZm9ybWF0LWRhdGUvc3JjL2Zvcm1hdC1kYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUE2QixVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7O0FBQzFELEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFRM0IsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxTQUFTLENBQUMsSUFBc0QsRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEVBQUUsSUFBYSxFQUFFLG9CQUFnRDtRQUM1SixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLEdBQUcsSUFBSSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQyxJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDekIsT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDakIsT0FBTyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFD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Z0JBQ1AsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sV0FBVyxDQUFDO2dCQUNyQixDQUFDO2dCQUVELE9BQU8sV0FBVyxDQUFDO1lBRXJCLEtBQUssU0FBUztnQkFDWixJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDbEIsT0FBTyxzQkFBc0IsQ0FBQztnQkFDaEMsQ0FBQztnQkFFRCxPQUFPLHNCQUFzQixDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO3dHQTlGVSx5QkFBeUI7c0dBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFMckMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVFlQRV9GVU5DVElPTl9GT1JNQVRfREFURSwgVXRpbHNDYWNoZSwgZm9ybWF0RGF0ZSB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCAqIGFzIGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCAqIGFzIGVuIGZyb20gJ2RheWpzL2xvY2FsZS9lbic7XG5pbXBvcnQgKiBhcyB2aSBmcm9tICdkYXlqcy9sb2NhbGUvdmknO1xuaW1wb3J0ICogYXMgdXBkYXRlTG9jYWxlIGZyb20gJ2RheWpzL3BsdWdpbi91cGRhdGVMb2NhbGUnO1xuZGF5anMuZXh0ZW5kKHVwZGF0ZUxvY2FsZSk7XG5cblxuQFBpcGUoe1xuICBuYW1lOiAnTGlic1VpUGlwZXNGb3JtYXREYXRlUGlwZScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5cbmV4cG9ydCBjbGFzcyBMaWJzVWlQaXBlc0Zvcm1hdERhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh0aW1lOiBzdHJpbmcgfCBudW1iZXIgfCBkYXlqcy5EYXlqcyB8IHVuZGVmaW5lZCB8IG51bGwsIGZvcm1hdCA9ICdZWVlZL01NL0REIEhIOm1tJywgbGFuZz86IHN0cmluZywgZnVuY3Rpb25DdXN0b21Gb3JtYXQ/OiBUWVBFX0ZVTkNUSU9OX0ZPUk1BVF9EQVRFKTogc3RyaW5nIHtcbiAgICBpZiAoIXRpbWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgbGFuZyA9IGxhbmcgfHwgVXRpbHNDYWNoZS5nZXRMYW5nKCk7XG4gICAgaWYgKGZ1bmN0aW9uQ3VzdG9tRm9ybWF0KSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb25DdXN0b21Gb3JtYXQodGltZSwgZm9ybWF0LCBsYW5nKTtcbiAgICB9XG4gICAgaWYgKGZvcm1hdERhdGUoKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdERhdGUoKT8uKHRpbWUsIGZvcm1hdCwgbGFuZykgfHwgJyc7XG4gICAgfVxuICAgIHRpbWUgPSB0eXBlb2YgdGltZSA9PT0gJ251bWJlcicgPyBkYXlqcy51bml4KHRpbWUpLmxvY2FsZShsYW5nKSA6IGRheWpzKHRpbWUpLmxvY2FsZShsYW5nKTtcbiAgICB0aGlzLnVwZGF0ZUxvY2FsZShsYW5nKTtcbiAgICBpZiAodHlwZW9mIHRpbWUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZGF5anMudW5peCh0aW1lKS5mb3JtYXQodGhpcy5nZXRGb3JtYXREYXRhKHRoaXMuZ2V0VHlwZUJ5Rm9ybWF0KGZvcm1hdCksIGxhbmcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5anModGltZSkuZm9ybWF0KHRoaXMuZ2V0Rm9ybWF0RGF0YSh0aGlzLmdldFR5cGVCeUZvcm1hdChmb3JtYXQpLCBsYW5nKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUxvY2FsZShsYW5nOiBzdHJpbmcpIHtcbiAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgZGF5anMubG9jYWxlKHZpKTtcbiAgICAgIGRheWpzLnVwZGF0ZUxvY2FsZSgndmknLCB7XG4gICAgICAgIG1vbnRoc1Nob3J0OiAnVGhnIDFfVGhnIDJfVGhnIDNfVGhnIDRfVGhnIDVfVGhnIDZfVGhnIDdfVGhnIDhfVGhnIDlfVGhnIDEwX1RoZyAxMV9UaGcgMTInLnNwbGl0KCdfJylcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRheWpzLmxvY2FsZShlbik7XG4gIH1cblxuICBwcml2YXRlIGdldFR5cGVCeUZvcm1hdChmb3JtYXQ6IHN0cmluZyk6ICdkbScgfCAnZG15JyB8ICdkbXkgaG0nIHwgJ215JyB8ICdkbXkgaG1zJyB7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ2RtJyB8fCBmb3JtYXQgPT09ICdkbXknIHx8IGZvcm1hdCA9PT0gJ2RteSBobScgfHwgZm9ybWF0ID09PSAnbXknKSB7XG4gICAgICByZXR1cm4gZm9ybWF0O1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09ICdERC9NTS9ZWVlZJyB8fCBmb3JtYXQgPT09ICdZWVlZLU1NLUREJyB8fCBmb3JtYXQgPT09ICdkZC9NTS95eXl5JyB8fCBmb3JtYXQgPT09ICdkZC1NTS15eXl5JyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5Jykge1xuICAgICAgcmV0dXJuICdkbXknO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09ICdNTS1ERCcgfHwgZm9ybWF0ID09PSAnZGQvTU0nIHx8IGZvcm1hdCA9PT0gJ2RkL21tJykge1xuICAgICAgcmV0dXJuICdkbSc7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gJ00vWVlZWScgfHwgZm9ybWF0ID09PSAnWVlZWS1NTScgfHwgZm9ybWF0ID09PSAnTU0veXl5eScpIHtcbiAgICAgIHJldHVybiAnbXknO1xuICAgIH1cblxuICAgIGlmIChmb3JtYXQgPT09ICdZWVlZL01NL0REIGhoOm1tOnNzJyB8fCBmb3JtYXQgPT09ICdkbXkgaG1zJyB8fCBmb3JtYXQgPT09ICdkZC9tbS95eXl5IGhoOm1tOnNzJykge1xuICAgICAgcmV0dXJuICdkbXkgaG1zJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2RteSBobSc7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdERhdGEodHlwZTogJ2RtJyB8ICdkbXknIHwgJ2RteSBobScgfCAnbXknIHwgJ2RteSBobXMnLCBsYW5nOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2RtJzpcbiAgICAgICAgaWYgKGxhbmcgPT09ICd2aScpIHtcbiAgICAgICAgICByZXR1cm4gJ0QgTU1NJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnTU1NIEQnO1xuXG4gICAgICBjYXNlICdkbXknOlxuICAgICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICAgIHJldHVybiAnRCBNTU0sIFlZWVknO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICdNTU0gRCwgWVlZWSc7XG5cbiAgICAgIGNhc2UgJ2RteSBobSc6XG4gICAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgICAgcmV0dXJuICdEIE1NTSwgWVlZWSBISDptbSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ01NTSBELCBZWVlZIEhIOm1tJztcblxuICAgICAgY2FzZSAnbXknOlxuICAgICAgICBpZiAobGFuZyA9PT0gJ3ZpJykge1xuICAgICAgICAgIHJldHVybiAnTU1NLCBZWVlZJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnTU1NIFlZWVkgJztcblxuICAgICAgY2FzZSAnZG15IGhtcyc6XG4gICAgICAgIGlmIChsYW5nID09PSAndmknKSB7XG4gICAgICAgICAgcmV0dXJuICdEIE1NTSwgWVlZWSBISDptbTpzcyc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ01NTSBELCBZWVlZIEhIOm1tOnNzJztcbiAgICB9XG4gIH1cblxufVxuIl19
@@ -1,11 +1,87 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Pipe } from '@angular/core';
3
- import { FormatDateService } from '@libs-ui/services-format-date';
2
+ import { Pipe } from '@angular/core';
3
+ import { UtilsCache, formatDate } from '@libs-ui/utils';
4
+ import * as dayjs from 'dayjs';
5
+ import * as en from 'dayjs/locale/en';
6
+ import * as vi from 'dayjs/locale/vi';
7
+ import * as updateLocale from 'dayjs/plugin/updateLocale';
4
8
 
9
+ dayjs.extend(updateLocale);
5
10
  class LibsUiPipesFormatDatePipe {
6
- formatDate = inject(FormatDateService);
7
- transform(time, format = 'YYYY/MM/DD HH:mm', lang) {
8
- return this.formatDate.transform(time, format, lang);
11
+ transform(time, format = 'YYYY/MM/DD HH:mm', lang, functionCustomFormat) {
12
+ if (!time) {
13
+ return '';
14
+ }
15
+ lang = lang || UtilsCache.getLang();
16
+ if (functionCustomFormat) {
17
+ return functionCustomFormat(time, format, lang);
18
+ }
19
+ if (formatDate()) {
20
+ return formatDate()?.(time, format, lang) || '';
21
+ }
22
+ time = typeof time === 'number' ? dayjs.unix(time).locale(lang) : dayjs(time).locale(lang);
23
+ this.updateLocale(lang);
24
+ if (typeof time === 'number') {
25
+ return dayjs.unix(time).format(this.getFormatData(this.getTypeByFormat(format), lang));
26
+ }
27
+ return dayjs(time).format(this.getFormatData(this.getTypeByFormat(format), lang));
28
+ }
29
+ updateLocale(lang) {
30
+ if (lang === 'vi') {
31
+ dayjs.locale(vi);
32
+ dayjs.updateLocale('vi', {
33
+ monthsShort: 'Thg 1_Thg 2_Thg 3_Thg 4_Thg 5_Thg 6_Thg 7_Thg 8_Thg 9_Thg 10_Thg 11_Thg 12'.split('_')
34
+ });
35
+ return;
36
+ }
37
+ dayjs.locale(en);
38
+ }
39
+ getTypeByFormat(format) {
40
+ if (format === 'dm' || format === 'dmy' || format === 'dmy hm' || format === 'my') {
41
+ return format;
42
+ }
43
+ if (format === 'DD/MM/YYYY' || format === 'YYYY-MM-DD' || format === 'dd/MM/yyyy' || format === 'dd-MM-yyyy' || format === 'dd/mm/yyyy') {
44
+ return 'dmy';
45
+ }
46
+ if (format === 'MM-DD' || format === 'dd/MM' || format === 'dd/mm') {
47
+ return 'dm';
48
+ }
49
+ if (format === 'M/YYYY' || format === 'YYYY-MM' || format === 'MM/yyyy') {
50
+ return 'my';
51
+ }
52
+ if (format === 'YYYY/MM/DD hh:mm:ss' || format === 'dmy hms' || format === 'dd/mm/yyyy hh:mm:ss') {
53
+ return 'dmy hms';
54
+ }
55
+ return 'dmy hm';
56
+ }
57
+ getFormatData(type, lang) {
58
+ switch (type) {
59
+ case 'dm':
60
+ if (lang === 'vi') {
61
+ return 'D MMM';
62
+ }
63
+ return 'MMM D';
64
+ case 'dmy':
65
+ if (lang === 'vi') {
66
+ return 'D MMM, YYYY';
67
+ }
68
+ return 'MMM D, YYYY';
69
+ case 'dmy hm':
70
+ if (lang === 'vi') {
71
+ return 'D MMM, YYYY HH:mm';
72
+ }
73
+ return 'MMM D, YYYY HH:mm';
74
+ case 'my':
75
+ if (lang === 'vi') {
76
+ return 'MMM, YYYY';
77
+ }
78
+ return 'MMM YYYY ';
79
+ case 'dmy hms':
80
+ if (lang === 'vi') {
81
+ return 'D MMM, YYYY HH:mm:ss';
82
+ }
83
+ return 'MMM D, YYYY HH:mm:ss';
84
+ }
9
85
  }
10
86
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesFormatDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
11
87
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LibsUiPipesFormatDatePipe, isStandalone: true, name: "LibsUiPipesFormatDatePipe" });
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-pipes-format-date.mjs","sources":["../../../../../libs-ui/pipes/format-date/src/format-date.pipe.ts","../../../../../libs-ui/pipes/format-date/src/libs-ui-pipes-format-date.ts"],"sourcesContent":["import { Pipe, PipeTransform, inject } from '@angular/core';\nimport * as dayjs from 'dayjs';\nimport { FormatDateService } from '@libs-ui/services-format-date';\n\n@Pipe({\n name: 'LibsUiPipesFormatDatePipe',\n standalone: true\n})\nexport class LibsUiPipesFormatDatePipe implements PipeTransform {\n private formatDate = inject(FormatDateService);\n\n transform(time: string | number | dayjs.Dayjs | undefined | null, format = 'YYYY/MM/DD HH:mm', lang?: string): string {\n return this.formatDate.transform(time, format, lang);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAQa,yBAAyB,CAAA;AAC5B,IAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9C,IAAA,SAAS,CAAC,IAAsD,EAAE,MAAM,GAAG,kBAAkB,EAAE,IAAa,EAAA;AAC1G,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;;wGAJ3C,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,2BAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,2BAA2B;AACjC,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-pipes-format-date.mjs","sources":["../../../../../libs-ui/pipes/format-date/src/format-date.pipe.ts","../../../../../libs-ui/pipes/format-date/src/libs-ui-pipes-format-date.ts"],"sourcesContent":["\n\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { TYPE_FUNCTION_FORMAT_DATE, UtilsCache, formatDate } from '@libs-ui/utils';\nimport * as dayjs from 'dayjs';\nimport * as en from 'dayjs/locale/en';\nimport * as vi from 'dayjs/locale/vi';\nimport * as updateLocale from 'dayjs/plugin/updateLocale';\ndayjs.extend(updateLocale);\n\n\n@Pipe({\n name: 'LibsUiPipesFormatDatePipe',\n standalone: true\n})\n\nexport class LibsUiPipesFormatDatePipe implements PipeTransform {\n transform(time: string | number | dayjs.Dayjs | undefined | null, format = 'YYYY/MM/DD HH:mm', lang?: string, functionCustomFormat?: TYPE_FUNCTION_FORMAT_DATE): string {\n if (!time) {\n return '';\n }\n lang = lang || UtilsCache.getLang();\n if (functionCustomFormat) {\n return functionCustomFormat(time, format, lang);\n }\n if (formatDate()) {\n return formatDate()?.(time, format, lang) || '';\n }\n time = typeof time === 'number' ? dayjs.unix(time).locale(lang) : dayjs(time).locale(lang);\n this.updateLocale(lang);\n if (typeof time === 'number') {\n return dayjs.unix(time).format(this.getFormatData(this.getTypeByFormat(format), lang));\n }\n\n return dayjs(time).format(this.getFormatData(this.getTypeByFormat(format), lang));\n }\n\n private updateLocale(lang: string) {\n if (lang === 'vi') {\n dayjs.locale(vi);\n dayjs.updateLocale('vi', {\n monthsShort: 'Thg 1_Thg 2_Thg 3_Thg 4_Thg 5_Thg 6_Thg 7_Thg 8_Thg 9_Thg 10_Thg 11_Thg 12'.split('_')\n });\n\n return;\n }\n dayjs.locale(en);\n }\n\n private getTypeByFormat(format: string): 'dm' | 'dmy' | 'dmy hm' | 'my' | 'dmy hms' {\n if (format === 'dm' || format === 'dmy' || format === 'dmy hm' || format === 'my') {\n return format;\n }\n\n if (format === 'DD/MM/YYYY' || format === 'YYYY-MM-DD' || format === 'dd/MM/yyyy' || format === 'dd-MM-yyyy' || format === 'dd/mm/yyyy') {\n return 'dmy';\n }\n\n if (format === 'MM-DD' || format === 'dd/MM' || format === 'dd/mm') {\n return 'dm';\n }\n\n if (format === 'M/YYYY' || format === 'YYYY-MM' || format === 'MM/yyyy') {\n return 'my';\n }\n\n if (format === 'YYYY/MM/DD hh:mm:ss' || format === 'dmy hms' || format === 'dd/mm/yyyy hh:mm:ss') {\n return 'dmy hms';\n }\n\n return 'dmy hm';\n }\n\n private getFormatData(type: 'dm' | 'dmy' | 'dmy hm' | 'my' | 'dmy hms', lang: string) {\n switch (type) {\n case 'dm':\n if (lang === 'vi') {\n return 'D MMM';\n }\n\n return 'MMM D';\n\n case 'dmy':\n if (lang === 'vi') {\n return 'D MMM, YYYY';\n }\n\n return 'MMM D, YYYY';\n\n case 'dmy hm':\n if (lang === 'vi') {\n return 'D MMM, YYYY HH:mm';\n }\n\n return 'MMM D, YYYY HH:mm';\n\n case 'my':\n if (lang === 'vi') {\n return 'MMM, YYYY';\n }\n\n return 'MMM YYYY ';\n\n case 'dmy hms':\n if (lang === 'vi') {\n return 'D MMM, YYYY HH:mm:ss';\n }\n\n return 'MMM D, YYYY HH:mm:ss';\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import { PipeTransform } from '@angular/core';
2
+ import { TYPE_FUNCTION_FORMAT_DATE } from '@libs-ui/utils';
2
3
  import * as dayjs from 'dayjs';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class LibsUiPipesFormatDatePipe implements PipeTransform {
5
- private formatDate;
6
- transform(time: string | number | dayjs.Dayjs | undefined | null, format?: string, lang?: string): string;
6
+ transform(time: string | number | dayjs.Dayjs | undefined | null, format?: string, lang?: string, functionCustomFormat?: TYPE_FUNCTION_FORMAT_DATE): string;
7
+ private updateLocale;
8
+ private getTypeByFormat;
9
+ private getFormatData;
7
10
  static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiPipesFormatDatePipe, never>;
8
11
  static ɵpipe: i0.ɵɵPipeDeclaration<LibsUiPipesFormatDatePipe, "LibsUiPipesFormatDatePipe", true>;
9
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/pipes-format-date",
3
- "version": "0.2.48",
3
+ "version": "0.2.50",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"