legion-phoenix-dates
Version:
Legion UI date component
169 lines (168 loc) • 6.16 kB
JavaScript
;
exports.__esModule = true;
var tslib_1 = require("tslib");
var dayjs_1 = tslib_1.__importDefault(require("dayjs"));
var warning_1 = require("rc-util/lib/warning");
var weekday_1 = tslib_1.__importDefault(require("dayjs/plugin/weekday"));
var localeData_1 = tslib_1.__importDefault(require("dayjs/plugin/localeData"));
var weekOfYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekOfYear"));
var weekYear_1 = tslib_1.__importDefault(require("dayjs/plugin/weekYear"));
var advancedFormat_1 = tslib_1.__importDefault(require("dayjs/plugin/advancedFormat"));
var customParseFormat_1 = tslib_1.__importDefault(require("dayjs/plugin/customParseFormat"));
dayjs_1["default"].extend(customParseFormat_1["default"]);
dayjs_1["default"].extend(advancedFormat_1["default"]);
dayjs_1["default"].extend(weekday_1["default"]);
dayjs_1["default"].extend(localeData_1["default"]);
dayjs_1["default"].extend(weekOfYear_1["default"]);
dayjs_1["default"].extend(weekYear_1["default"]);
dayjs_1["default"].extend(function (_, c) {
// todo support Wo (ISO week)
var proto = c.prototype;
var oldFormat = proto.format;
proto.format = function f(formatStr) {
var str = (formatStr || '').replace('Wo', 'wo');
return oldFormat.bind(this)(str);
};
});
var localeMap = {
// ar_EG:
// az_AZ:
// bg_BG:
bn_BD: 'bn-bd',
by_BY: 'be',
// ca_ES:
// cs_CZ:
// da_DK:
// de_DE:
// el_GR:
en_GB: 'en-gb',
en_US: 'en',
// es_ES:
// et_EE:
// fa_IR:
// fi_FI:
fr_BE: 'fr',
fr_CA: 'fr-ca',
// fr_FR:
// ga_IE:
// gl_ES:
// he_IL:
// hi_IN:
// hr_HR:
// hu_HU:
hy_AM: 'hy-am',
id_ID: 'id',
// is_IS:
// it_IT:
// ja_JP:
// ka_GE:
// kk_KZ:
// km_KH:
kmr_IQ: 'ku',
// kn_IN:
// ko_KR:
// ku_IQ: // previous ku in antd
// lt_LT:
// lv_LV:
// mk_MK:
// ml_IN:
// mn_MN:
// ms_MY:
// nb_NO:
// ne_NP:
nl_BE: 'nl-be',
// nl_NL:
// pl_PL:
pt_BR: 'pt-br',
// pt_PT:
// ro_RO:
// ru_RU:
// sk_SK:
// sl_SI:
// sr_RS:
// sv_SE:
// ta_IN:
// th_TH:
// tr_TR:
// uk_UA:
// ur_PK:
// vi_VN:
zh_CN: 'zh-cn',
zh_HK: 'zh-hk',
zh_TW: 'zh-tw'
};
var parseLocale = function (locale) {
var mapLocale = localeMap[locale];
return mapLocale || locale.split('_')[0];
};
var parseNoMatchNotice = function () {
/* istanbul ignore next */
(0, warning_1.noteOnce)(false, 'Not match any format. Please help to fire a issue about this.');
};
var generateConfig = {
// get
getNow: function () { return (0, dayjs_1["default"])(); },
getFixedDate: function (string) { return (0, dayjs_1["default"])(string, ['YYYY-M-DD', 'YYYY-MM-DD']); },
getEndDate: function (date) { return date.endOf('month'); },
getWeekDay: function (date) {
var clone = date.locale('id');
return clone.weekday() + clone.localeData().firstDayOfWeek();
},
getYear: function (date) { return date.year(); },
getMonth: function (date) { return date.month(); },
getDate: function (date) { return date.date(); },
getHour: function (date) { return date.hour(); },
getMinute: function (date) { return date.minute(); },
getSecond: function (date) { return date.second(); },
// set
addYear: function (date, diff) { return date.add(diff, 'year'); },
addMonth: function (date, diff) { return date.add(diff, 'month'); },
addDate: function (date, diff) { return date.add(diff, 'day'); },
setYear: function (date, year) { return date.year(year); },
setMonth: function (date, month) { return date.month(month); },
setDate: function (date, num) { return date.date(num); },
setHour: function (date, hour) { return date.hour(hour); },
setMinute: function (date, minute) { return date.minute(minute); },
setSecond: function (date, second) { return date.second(second); },
// Compare
isAfter: function (date1, date2) { return date1.isAfter(date2); },
isValidate: function (date) { return date.isValid(); },
locale: {
getWeekFirstDay: function (locale) { return (0, dayjs_1["default"])().locale(parseLocale(locale)).localeData().firstDayOfWeek(); },
getWeekFirstDate: function (locale, date) { return date.locale(parseLocale(locale)).weekday(0); },
getWeek: function (locale, date) { return date.locale(parseLocale(locale)).week(); },
getShortWeekDays: function (locale) { return (0, dayjs_1["default"])().locale(parseLocale(locale)).localeData().weekdaysMin(); },
getShortMonths: function (locale) { return (0, dayjs_1["default"])().locale(parseLocale(locale)).localeData().monthsShort(); },
format: function (locale, date, format) { return date.locale(parseLocale(locale)).format(format); },
parse: function (locale, text, formats) {
var localeStr = parseLocale(locale);
for (var i = 0; i < formats.length; i += 1) {
var format = formats[i];
var formatText = text;
if (format.includes('wo') || format.includes('Wo')) {
// parse Wo
var year = formatText.split('-')[0];
var weekStr = formatText.split('-')[1];
var firstWeek = (0, dayjs_1["default"])(year, 'YYYY').startOf('year').locale(localeStr);
for (var j = 0; j <= 52; j += 1) {
var nextWeek = firstWeek.add(j, 'week');
if (nextWeek.format('Wo') === weekStr) {
return nextWeek;
}
}
parseNoMatchNotice();
return null;
}
var date = (0, dayjs_1["default"])(formatText, format).locale(localeStr);
if (date.isValid()) {
return date;
}
}
if (text) {
parseNoMatchNotice();
}
return null;
}
}
};
exports["default"] = generateConfig;