Skip to content

Commit 8590988

Browse files
committed
feat: Use toLocaleDateString API for transform date using custom lang
1 parent 8979514 commit 8590988

File tree

22 files changed

+173
-630
lines changed

22 files changed

+173
-630
lines changed

.babelrc

Lines changed: 0 additions & 19 deletions
This file was deleted.

lib/cjs/components/year-content/index.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,23 @@ var __importStar = (this && this.__importStar) || function (mod) {
2525
Object.defineProperty(exports, "__esModule", { value: true });
2626
var react_1 = __importStar(require("react"));
2727
var config_context_1 = require("../../context/config.context");
28-
var transform_date_helper_1 = require("../../helpers/transform-date.helper");
2928
var config_1 = require("../../config");
3029
var main_1 = require("../../styles/main");
30+
var transform_date_helper_1 = require("../../helpers/transform-date.helper");
31+
var text_helper_1 = require("../../helpers/text.helper");
3132
var YearContent = function (_a) {
3233
var startDate = _a.startDate, endDate = _a.endDate, _b = _a.currentYear, currentYear = _b === void 0 ? false : _b;
3334
var _c = (0, react_1.useContext)(config_context_1.ConfigContext), lang = _c.lang, dateFormat = _c.dateFormat;
35+
var _lang = (0, text_helper_1.clearString)(lang).split(' ')[0];
3436
var d = new Date();
3537
var _year = d.getFullYear();
36-
var _currentYear = currentYear && (react_1.default.createElement(react_1.default.Fragment, null,
37-
react_1.default.createElement("time", { dateTime: _year.toString() }, _year)));
38+
var _currentYear = currentYear && (react_1.default.createElement("time", { dateTime: _year.toString() }, _year));
3839
var _endDate = endDate && (react_1.default.createElement(react_1.default.Fragment, null,
39-
react_1.default.createElement(main_1.YearSpan, null, config_1.mapText[lang].to),
40-
react_1.default.createElement("time", { dateTime: endDate }, transform_date_helper_1.mapDate[lang][dateFormat](endDate))));
40+
react_1.default.createElement(main_1.YearSpan, null, config_1.mapText[_lang].to),
41+
react_1.default.createElement("time", { dateTime: endDate }, (0, transform_date_helper_1.transformDate)({ date: endDate, lang: _lang, type: dateFormat }))));
4142
var _startDate = (react_1.default.createElement(react_1.default.Fragment, null,
42-
react_1.default.createElement(main_1.YearSpan, null, config_1.mapText[lang].from),
43-
react_1.default.createElement("time", { dateTime: startDate }, transform_date_helper_1.mapDate[lang][dateFormat](startDate))));
43+
react_1.default.createElement(main_1.YearSpan, null, config_1.mapText[_lang].from),
44+
react_1.default.createElement("time", { dateTime: startDate }, (0, transform_date_helper_1.transformDate)({ date: startDate, lang: _lang, type: dateFormat }))));
4445
return (react_1.default.createElement(main_1.YearWrapper, { format: dateFormat, lang: lang },
4546
_currentYear,
4647
_endDate,

lib/cjs/config/index.d.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,13 @@ export interface Theme {
77
subtitleColor: string;
88
textColor: string;
99
}
10-
export declare type DateFormat = 'L' | 'l' | 'll';
10+
export declare type DateFormat = 'only-number' | 'short' | 'with-weekday' | 'full';
1111
export interface DefaultValues {
1212
theme?: Theme;
1313
lang: string;
1414
dateFormat: DateFormat;
1515
}
1616
export declare const defaultValues: DefaultValues;
17-
export declare const monthArray: {
18-
es: string[];
19-
en: string[];
20-
de: string[];
21-
tr: string[];
22-
zh_CN: string[];
23-
};
2417
export declare const mapText: {
2518
en: {
2619
from: string;
@@ -38,7 +31,7 @@ export declare const mapText: {
3831
from: string;
3932
to: string;
4033
};
41-
zh_CN: {
34+
zh: {
4235
from: string;
4336
to: string;
4437
};

lib/cjs/config/index.js

Lines changed: 12 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,23 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.mapText = exports.monthArray = exports.defaultValues = void 0;
3+
exports.mapText = exports.defaultValues = void 0;
44
exports.defaultValues = {
55
theme: {
6-
yearColor: '#888888',
6+
yearColor: '#888',
77
lineColor: '#c5c5c5',
88
dotColor: '#c5c5c5',
9-
borderDotColor: '#ffffff',
10-
titleColor: '#cccccc',
11-
subtitleColor: '#888888',
12-
textColor: '#cccccc',
9+
borderDotColor: '#fff',
10+
titleColor: '#ccc',
11+
subtitleColor: '#888',
12+
textColor: '#ccc',
1313
},
1414
lang: 'en',
15-
dateFormat: 'L',
16-
};
17-
exports.monthArray = {
18-
es: [
19-
'Ene',
20-
'Feb',
21-
'Mar',
22-
'Abr',
23-
'May',
24-
'Jun',
25-
'Jul',
26-
'Ago',
27-
'Sep',
28-
'Oct',
29-
'Nov',
30-
'Dic',
31-
],
32-
en: [
33-
'Jan',
34-
'Feb',
35-
'Mar',
36-
'Apr',
37-
'May',
38-
'Jun',
39-
'Jul',
40-
'Aug',
41-
'Sep',
42-
'Oct',
43-
'Nov',
44-
'Dec',
45-
],
46-
de: [
47-
'Jan.',
48-
'Feb.',
49-
'März',
50-
'Apr.',
51-
'Mai.',
52-
'Juni',
53-
'Juli',
54-
'Aug.',
55-
'Sep.',
56-
'Okt.',
57-
'Nov.',
58-
'Dez.',
59-
],
60-
tr: [
61-
'Ocak',
62-
'Şubat',
63-
'Mart',
64-
'Nisan',
65-
'Mayıs',
66-
'Haziran',
67-
'Temmuz',
68-
'Ağustos',
69-
'Eylül',
70-
'Ekim',
71-
'Kasım',
72-
'Aralık',
73-
],
74-
zh_CN: [
75-
'一月',
76-
'二月',
77-
'三月',
78-
'四月',
79-
'五月',
80-
'六月',
81-
'七月',
82-
'八月',
83-
'九月',
84-
'十月',
85-
'十一月',
86-
'十二月',
87-
],
15+
dateFormat: 'only-number',
8816
};
8917
exports.mapText = {
90-
en: {
91-
from: 'From',
92-
to: 'To',
93-
},
94-
es: {
95-
from: 'Desde',
96-
to: 'Hasta',
97-
},
98-
de: {
99-
from: 'Von',
100-
to: 'Bis',
101-
},
102-
tr: {
103-
from: 'Başlangıç',
104-
to: 'Bitiş',
105-
},
106-
zh_CN: {
107-
from: '从',
108-
to: '到',
109-
},
18+
en: { from: 'From', to: 'To' },
19+
es: { from: 'Desde', to: 'Hasta' },
20+
de: { from: 'Von', to: 'Bis' },
21+
tr: { from: 'Başlangıç', to: 'Bitiş' },
22+
zh: { from: '从', to: '到' },
11023
};

lib/cjs/helpers/text.helper.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export declare const clearString: (str: string) => string;

lib/cjs/helpers/text.helper.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
exports.clearString = void 0;
4+
var clearString = function (str) {
5+
return str.replaceAll('-', ' ').replaceAll('_', ' ');
6+
};
7+
exports.clearString = clearString;
Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,8 @@
11
import { DateFormat } from '../config/index';
2-
export declare const completeWith0: (n: number) => string | number;
32
interface ITransformDate {
43
date: string;
54
lang: string;
65
type: DateFormat;
76
}
87
export declare const transformDate: ({ date, lang, type }: ITransformDate) => string;
9-
export declare const mapDate: {
10-
en: {
11-
L: (date: string) => string;
12-
l: (date: string) => string;
13-
ll: (date: string) => string;
14-
};
15-
es: {
16-
L: (date: string) => string;
17-
l: (date: string) => string;
18-
ll: (date: string) => string;
19-
};
20-
de: {
21-
L: (date: string) => string;
22-
l: (date: string) => string;
23-
ll: (date: string) => string;
24-
};
25-
zh_CN: {
26-
L: (date: string) => string;
27-
l: (date: string) => string;
28-
ll: (date: string) => string;
29-
};
30-
};
318
export {};
Lines changed: 24 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,32 @@
11
"use strict";
22
Object.defineProperty(exports, "__esModule", { value: true });
3-
exports.mapDate = exports.transformDate = exports.completeWith0 = void 0;
4-
/* eslint-disable default-case */
5-
/* eslint-disable consistent-return */
6-
var index_1 = require("../config/index");
7-
var completeWith0 = function (n) {
8-
return n.toLocaleString().length < 2 ? "0".concat(n) : n;
9-
};
10-
exports.completeWith0 = completeWith0;
3+
exports.transformDate = void 0;
114
var transformDate = function (_a) {
125
var date = _a.date, lang = _a.lang, type = _a.type;
13-
var year = parseInt(date.split('/')[0], 10);
14-
var month = parseInt(date.split('/')[1], 10);
15-
var day = parseInt(date.split('/')[2], 10);
6+
var _date = new Date(date);
167
switch (type) {
17-
case 'L':
18-
return lang === 'en'
19-
? "".concat(month ? "".concat((0, exports.completeWith0)(month), "/") : '').concat(day ? "".concat((0, exports.completeWith0)(day), "/") : '').concat(year)
20-
: lang === 'es'
21-
? "".concat(day ? "".concat((0, exports.completeWith0)(day), "/") : '').concat(month ? "".concat((0, exports.completeWith0)(month), "/") : '').concat(year)
22-
: lang === 'de'
23-
? "".concat(day && month
24-
? "".concat((0, exports.completeWith0)(day), ".").concat((0, exports.completeWith0)(month), ".").concat(year)
25-
: "".concat(month ? "".concat((0, exports.completeWith0)(month), "/") : '').concat(year))
26-
: /* lang === 'zh_CN' */
27-
"".concat(year, " \u5E74").concat(month ? " ".concat((0, exports.completeWith0)(month), " \u6708") : '').concat(day ? " ".concat((0, exports.completeWith0)(day), " \u65E5") : '');
28-
case 'l':
29-
return lang === 'en'
30-
? "".concat(month ? "".concat(month, "/") : '').concat(day ? "".concat(day, "/") : '').concat(year)
31-
: lang === 'es'
32-
? "".concat(day ? "".concat(day, "/") : '').concat(month ? "".concat(month, "/") : '').concat(year)
33-
: lang === 'de'
34-
? "".concat(day && month
35-
? "".concat(day, ".").concat(month, ".").concat(year)
36-
: "".concat(month ? "".concat(month, "/") : '').concat(year))
37-
: /* lang === 'zh_CN' */
38-
"".concat(year, " \u5E74").concat(month ? " ".concat(month, " \u6708") : '').concat(day ? " ".concat(day, " \u65E5") : '');
39-
case 'll':
40-
return lang === 'en'
41-
? "".concat(month ? "".concat(index_1.monthArray[lang][month - 1]) : '').concat(day ? " ".concat((0, exports.completeWith0)(day)) : '').concat(day || month ? ', ' : '').concat(year)
42-
: lang === 'es'
43-
? "".concat(day ? "".concat(day, " de ") : '').concat(month ? "".concat(index_1.monthArray[lang][month - 1], ", ") : '').concat(year)
44-
: lang === 'de'
45-
? "".concat(day ? "".concat(day, ". ") : '').concat(month ? "".concat(index_1.monthArray[lang][month - 1], " ") : '').concat(year)
46-
: /* lang === 'zh_CN' */
47-
"".concat(year, " \u5E74").concat(month ? "".concat(index_1.monthArray[lang][month - 1]) : '').concat(day ? " ".concat(day, " \u65E5") : '');
8+
case 'only-number':
9+
return _date.toLocaleDateString(lang);
10+
case 'short':
11+
return _date.toLocaleDateString(lang, {
12+
year: 'numeric',
13+
month: 'short',
14+
day: '2-digit',
15+
});
16+
case 'with-weekday':
17+
return _date.toLocaleDateString(lang, {
18+
weekday: 'short',
19+
year: 'numeric',
20+
month: 'short',
21+
day: '2-digit',
22+
});
23+
case 'full':
24+
return _date.toLocaleDateString(lang, {
25+
weekday: 'long',
26+
year: 'numeric',
27+
month: 'long',
28+
day: '2-digit',
29+
});
4830
}
4931
};
5032
exports.transformDate = transformDate;
51-
exports.mapDate = {
52-
en: {
53-
L: function (date) { return (0, exports.transformDate)({ date: date, lang: 'en', type: 'L' }); },
54-
l: function (date) { return (0, exports.transformDate)({ date: date, lang: 'en', type: 'l' }); },
55-
ll: function (date) { return (0, exports.transformDate)({ date: date, lang: 'en', type: 'll' }); },
56-
},
57-
es: {
58-
L: function (date) { return (0, exports.transformDate)({ date: date, lang: 'es', type: 'L' }); },
59-
l: function (date) { return (0, exports.transformDate)({ date: date, lang: 'es', type: 'l' }); },
60-
ll: function (date) { return (0, exports.transformDate)({ date: date, lang: 'es', type: 'll' }); },
61-
},
62-
de: {
63-
L: function (date) { return (0, exports.transformDate)({ date: date, lang: 'de', type: 'L' }); },
64-
l: function (date) { return (0, exports.transformDate)({ date: date, lang: 'de', type: 'l' }); },
65-
ll: function (date) { return (0, exports.transformDate)({ date: date, lang: 'de', type: 'll' }); },
66-
},
67-
zh_CN: {
68-
L: function (date) { return (0, exports.transformDate)({ date: date, lang: 'zh_CN', type: 'L' }); },
69-
l: function (date) { return (0, exports.transformDate)({ date: date, lang: 'zh_CN', type: 'l' }); },
70-
ll: function (date) { return (0, exports.transformDate)({ date: date, lang: 'zh_CN', type: 'll' }); },
71-
},
72-
};

lib/cjs/styles/main.js

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/esm/components/year-content/index.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import React, { useContext } from 'react';
22
import { ConfigContext } from '../../context/config.context';
3-
import { mapDate } from '../../helpers/transform-date.helper';
43
import { mapText } from '../../config';
54
import { YearWrapper, YearSpan } from '../../styles/main';
5+
import { transformDate } from '../../helpers/transform-date.helper';
6+
import { clearString } from '../../helpers/text.helper';
67
var YearContent = function (_a) {
78
var startDate = _a.startDate, endDate = _a.endDate, _b = _a.currentYear, currentYear = _b === void 0 ? false : _b;
89
var _c = useContext(ConfigContext), lang = _c.lang, dateFormat = _c.dateFormat;
10+
var _lang = clearString(lang).split(' ')[0];
911
var d = new Date();
1012
var _year = d.getFullYear();
11-
var _currentYear = currentYear && (React.createElement(React.Fragment, null,
12-
React.createElement("time", { dateTime: _year.toString() }, _year)));
13+
var _currentYear = currentYear && (React.createElement("time", { dateTime: _year.toString() }, _year));
1314
var _endDate = endDate && (React.createElement(React.Fragment, null,
14-
React.createElement(YearSpan, null, mapText[lang].to),
15-
React.createElement("time", { dateTime: endDate }, mapDate[lang][dateFormat](endDate))));
15+
React.createElement(YearSpan, null, mapText[_lang].to),
16+
React.createElement("time", { dateTime: endDate }, transformDate({ date: endDate, lang: _lang, type: dateFormat }))));
1617
var _startDate = (React.createElement(React.Fragment, null,
17-
React.createElement(YearSpan, null, mapText[lang].from),
18-
React.createElement("time", { dateTime: startDate }, mapDate[lang][dateFormat](startDate))));
18+
React.createElement(YearSpan, null, mapText[_lang].from),
19+
React.createElement("time", { dateTime: startDate }, transformDate({ date: startDate, lang: _lang, type: dateFormat }))));
1920
return (React.createElement(YearWrapper, { format: dateFormat, lang: lang },
2021
_currentYear,
2122
_endDate,

0 commit comments

Comments
 (0)