UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

174 lines (172 loc) • 6.41 kB
/** * DevExtreme (cjs/__internal/core/localization/date.js) * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _first_day_of_week_data = _interopRequireDefault(require("../../core/localization/cldr-data/first_day_of_week_data")); var _core = _interopRequireDefault(require("../../core/localization/core")); var _default_date_names = _interopRequireDefault(require("../../core/localization/default_date_names")); var _date = _interopRequireDefault(require("../../core/localization/intl/date")); var _date2 = require("../../core/localization/ldml/date.format"); var _date3 = require("../../core/localization/ldml/date.formatter"); var _date4 = require("../../core/localization/ldml/date.parser"); var _number = _interopRequireDefault(require("../../core/localization/number")); var _m_errors = _interopRequireDefault(require("../../core/m_errors")); var _m_dependency_injector = require("../../core/utils/m_dependency_injector"); var _m_iterator = require("../../core/utils/m_iterator"); var _m_type = require("../../core/utils/m_type"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_DAY_OF_WEEK_INDEX = 0; const hasIntl = "undefined" !== typeof Intl; const FORMATS_TO_PATTERN_MAP = { shortdate: "M/d/y", shorttime: "h:mm a", longdate: "EEEE, MMMM d, y", longtime: "h:mm:ss a", monthandday: "MMMM d", monthandyear: "MMMM y", quarterandyear: "QQQ y", day: "d", year: "y", shortdateshorttime: "M/d/y, h:mm a", longdatelongtime: "EEEE, MMMM d, y, h:mm:ss a", month: "LLLL", shortyear: "yy", dayofweek: "EEEE", quarter: "QQQ", hour: "HH", minute: "mm", second: "ss", millisecond: "SSS", "datetime-local": "yyyy-MM-ddTHH':'mm':'ss" }; const possiblePartPatterns = { year: ["y", "yy", "yyyy"], day: ["d", "dd"], month: ["M", "MM", "MMM", "MMMM"], hours: ["H", "HH", "h", "hh", "ah"], minutes: ["m", "mm"], seconds: ["s", "ss"], milliseconds: ["S", "SS", "SSS"] }; const dateLocalization = (0, _m_dependency_injector.injector)({ engine: () => "base", _getPatternByFormat: format => FORMATS_TO_PATTERN_MAP[format.toLowerCase()], _expandPattern(pattern) { return this._getPatternByFormat(pattern) || pattern }, formatUsesMonthName(format) { return -1 !== this._expandPattern(format).indexOf("MMMM") }, formatUsesDayName(format) { return -1 !== this._expandPattern(format).indexOf("EEEE") }, getFormatParts(format) { const pattern = this._getPatternByFormat(format) || format; const result = []; (0, _m_iterator.each)(pattern.split(/\W+/), ((_, formatPart) => { (0, _m_iterator.each)(possiblePartPatterns, ((partName, possiblePatterns) => { if (possiblePatterns.includes(formatPart)) { result.push(partName) } })) })); return result }, getMonthNames: format => _default_date_names.default.getMonthNames(format), getDayNames: format => _default_date_names.default.getDayNames(format), getQuarterNames: format => _default_date_names.default.getQuarterNames(format), getPeriodNames: format => _default_date_names.default.getPeriodNames(format), getTimeSeparator: () => ":", is24HourFormat(format) { const amTime = new Date(2017, 0, 20, 11, 0, 0, 0); const pmTime = new Date(2017, 0, 20, 23, 0, 0, 0); const amTimeFormatted = this.format(amTime, format); const pmTimeFormatted = this.format(pmTime, format); for (let i = 0; i < amTimeFormatted.length; i += 1) { if (amTimeFormatted[i] !== pmTimeFormatted[i]) { return !isNaN(parseInt(amTimeFormatted[i], 10)) } } return }, format(date, format) { if (!date) { return } if (!format) { return date } let formatter; if ("function" === typeof format) { formatter = format } else if (format.formatter) { formatter = format.formatter } else { format = format.type ?? format; if ((0, _m_type.isString)(format)) { format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format; return _number.default.convertDigits((0, _date3.getFormatter)(format, this)(date)) } } if (!formatter) { return } return formatter(date) }, parse(text, format) { const that = this; let ldmlFormat; let formatter; if (!text) { return } if (!format) { return this.parse(text, "shortdate") } if ("object" === typeof format && format.parser) { return format.parser(text) } if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) { ldmlFormat = format } else { formatter = value => { const text = that.format(value, format); return _number.default.convertDigits(text, true) }; try { ldmlFormat = (0, _date2.getFormat)(formatter) } catch (e) {} } if (ldmlFormat) { text = _number.default.convertDigits(text, true); return (0, _date4.getParser)(ldmlFormat, this)(text) } _m_errors.default.log("W0012"); const result = new Date(text); if (!result || isNaN(result.getTime())) { return } return result }, firstDayOfWeekIndex() { const index = _core.default.getValueByClosestLocale((locale => _first_day_of_week_data.default[locale])); return index ?? 0 } }); if (hasIntl) { dateLocalization.inject(_date.default) } var _default = exports.default = dateLocalization;