ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 27.1 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-core-time.mjs","sources":["../../components/core/time/candy-date.ts","../../components/core/time/time.ts","../../components/core/time/time-parser.ts","../../components/core/time/public-api.ts","../../components/core/time/ng-zorro-antd-core-time.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n addMonths,\n addYears,\n differenceInCalendarDays,\n differenceInCalendarMonths,\n differenceInCalendarYears,\n differenceInHours,\n differenceInMinutes,\n differenceInSeconds,\n isFirstDayOfMonth,\n isLastDayOfMonth,\n isSameDay,\n isSameHour,\n isSameMinute,\n isSameMonth,\n isSameSecond,\n isSameYear,\n isToday,\n isValid,\n setDay,\n setMonth,\n setYear,\n startOfMonth,\n startOfWeek\n} from 'date-fns';\n\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { IndexableObject, NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type CandyDateMode = 'decade' | 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\nexport type NormalizedMode = 'decade' | 'year' | 'month';\nexport type WeekDayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\nexport type CandyDateType = CandyDate | Date | null;\nexport type SingleValue = CandyDate | null;\nexport type CompatibleValue = SingleValue | SingleValue[];\n\nexport function wrongSortOrder(rangeValue: SingleValue[]): boolean {\n const [start, end] = rangeValue;\n return !!start && !!end && end.isBeforeDay(start);\n}\n\nexport function normalizeRangeValue(\n value: SingleValue[],\n hasTimePicker: boolean,\n type: NormalizedMode = 'month',\n activePart: 'left' | 'right' = 'left'\n): CandyDate[] {\n const [start, end] = value;\n let newStart: CandyDate = start || new CandyDate();\n let newEnd: CandyDate = end || (hasTimePicker ? newStart : newStart.add(1, type));\n\n if (start && !end) {\n newStart = start;\n newEnd = hasTimePicker ? start : start.add(1, type);\n } else if (!start && end) {\n newStart = hasTimePicker ? end : end.add(-1, type);\n newEnd = end;\n } else if (start && end && !hasTimePicker) {\n if (start.isSame(end, type)) {\n newEnd = newStart.add(1, type);\n } else {\n if (activePart === 'left') {\n newEnd = newStart.add(1, type);\n } else {\n newStart = newEnd.add(-1, type);\n }\n }\n }\n return [newStart, newEnd];\n}\n\nexport function cloneDate(value: CompatibleValue): CompatibleValue {\n if (Array.isArray(value)) {\n return value.map(v => (v instanceof CandyDate ? v.clone() : null));\n } else {\n return value instanceof CandyDate ? value.clone() : null;\n }\n}\n\n/**\n * Wrapping kind APIs for date operating and unify\n * NOTE: every new API return new CandyDate object without side effects to the former Date object\n * NOTE: most APIs are based on local time other than customized locale id (this needs tobe support in future)\n * TODO: support format() against to angular's core API\n */\nexport class CandyDate implements IndexableObject {\n nativeDate: Date;\n // locale: string; // Custom specified locale ID\n\n constructor(date?: Date | string | number) {\n if (date) {\n if (date instanceof Date) {\n this.nativeDate = date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n warn('The string type is not recommended for date-picker, use \"Date\" type');\n this.nativeDate = new Date(date);\n } else {\n throw new Error('The input date type is not supported (\"Date\" is now recommended)');\n }\n } else {\n this.nativeDate = new Date();\n }\n }\n\n calendarStart(options?: { weekStartsOn: WeekDayIndex | undefined }): CandyDate {\n return new CandyDate(startOfWeek(startOfMonth(this.nativeDate), options));\n }\n\n // ---------------------------------------------------------------------\n // | Native shortcuts\n // -----------------------------------------------------------------------------\\\n\n getYear(): number {\n return this.nativeDate.getFullYear();\n }\n\n getMonth(): number {\n return this.nativeDate.getMonth();\n }\n\n getDay(): number {\n return this.nativeDate.getDay();\n }\n\n getTime(): number {\n return this.nativeDate.getTime();\n }\n\n getDate(): number {\n return this.nativeDate.getDate();\n }\n\n getHours(): number {\n return this.nativeDate.getHours();\n }\n\n getMinutes(): number {\n return this.nativeDate.getMinutes();\n }\n\n getSeconds(): number {\n return this.nativeDate.getSeconds();\n }\n\n getMilliseconds(): number {\n return this.nativeDate.getMilliseconds();\n }\n\n // ---------------------------------------------------------------------\n // | New implementing APIs\n // ---------------------------------------------------------------------\n\n clone(): CandyDate {\n return new CandyDate(new Date(this.nativeDate));\n }\n\n setHms(hour: number, minute: number, second: number): CandyDate {\n const newDate = new Date(this.nativeDate.setHours(hour, minute, second));\n return new CandyDate(newDate);\n }\n\n setYear(year: number): CandyDate {\n return new CandyDate(setYear(this.nativeDate, year));\n }\n\n addYears(amount: number): CandyDate {\n return new CandyDate(addYears(this.nativeDate, amount));\n }\n\n // NOTE: month starts from 0\n // NOTE: Don't use the native API for month manipulation as it not restrict the date when it overflows, eg. (new Date('2018-7-31')).setMonth(1) will be date of 2018-3-03 instead of 2018-2-28\n setMonth(month: number): CandyDate {\n return new CandyDate(setMonth(this.nativeDate, month));\n }\n\n addMonths(amount: number): CandyDate {\n return new CandyDate(addMonths(this.nativeDate, amount));\n }\n\n setDay(day: number, options?: { weekStartsOn: WeekDayIndex }): CandyDate {\n return new CandyDate(setDay(this.nativeDate, day, options));\n }\n\n setDate(amount: number): CandyDate {\n const date = new Date(this.nativeDate);\n date.setDate(amount);\n return new CandyDate(date);\n }\n\n addDays(amount: number): CandyDate {\n return this.setDate(this.getDate() + amount);\n }\n\n add(amount: number, mode: NormalizedMode): CandyDate {\n switch (mode) {\n case 'decade':\n return this.addYears(amount * 10);\n case 'year':\n return this.addYears(amount);\n case 'month':\n return this.addMonths(amount);\n default:\n return this.addMonths(amount);\n }\n }\n\n isSame(date: CandyDateType, grain: CandyDateMode = 'day'): boolean {\n let fn;\n switch (grain) {\n case 'decade':\n fn = (pre: Date, next: Date) => Math.abs(pre.getFullYear() - next.getFullYear()) < 11;\n break;\n case 'year':\n fn = isSameYear;\n break;\n case 'month':\n fn = isSameMonth;\n break;\n case 'day':\n fn = isSameDay;\n break;\n case 'hour':\n fn = isSameHour;\n break;\n case 'minute':\n fn = isSameMinute;\n break;\n case 'second':\n fn = isSameSecond;\n break;\n default:\n fn = isSameDay;\n break;\n }\n return fn(this.nativeDate, this.toNativeDate(date));\n }\n\n isSameYear(date: CandyDateType): boolean {\n return this.isSame(date, 'year');\n }\n\n isSameMonth(date: CandyDateType): boolean {\n return this.isSame(date, 'month');\n }\n\n isSameDay(date: CandyDateType): boolean {\n return this.isSame(date, 'day');\n }\n\n isSameHour(date: CandyDateType): boolean {\n return this.isSame(date, 'hour');\n }\n\n isSameMinute(date: CandyDateType): boolean {\n return this.isSame(date, 'minute');\n }\n\n isSameSecond(date: CandyDateType): boolean {\n return this.isSame(date, 'second');\n }\n\n isBefore(date: CandyDateType, grain: CandyDateMode = 'day'): boolean {\n if (date === null) {\n return false;\n }\n let fn;\n switch (grain) {\n case 'year':\n fn = differenceInCalendarYears;\n break;\n case 'month':\n fn = differenceInCalendarMonths;\n break;\n case 'day':\n fn = differenceInCalendarDays;\n break;\n case 'hour':\n fn = differenceInHours;\n break;\n case 'minute':\n fn = differenceInMinutes;\n break;\n case 'second':\n fn = differenceInSeconds;\n break;\n default:\n fn = differenceInCalendarDays;\n break;\n }\n return fn(this.nativeDate, this.toNativeDate(date)) < 0;\n }\n\n isBeforeYear(date: CandyDateType): boolean {\n return this.isBefore(date, 'year');\n }\n\n isBeforeMonth(date: CandyDateType): boolean {\n return this.isBefore(date, 'month');\n }\n\n isBeforeDay(date: CandyDateType): boolean {\n return this.isBefore(date, 'day');\n }\n\n // Equal to today accurate to \"day\"\n isToday(): boolean {\n return isToday(this.nativeDate);\n }\n\n isValid(): boolean {\n return isValid(this.nativeDate);\n }\n\n isFirstDayOfMonth(): boolean {\n return isFirstDayOfMonth(this.nativeDate);\n }\n\n isLastDayOfMonth(): boolean {\n return isLastDayOfMonth(this.nativeDate);\n }\n\n private toNativeDate(date: NzSafeAny): Date {\n return date instanceof CandyDate ? date.nativeDate : date;\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport const timeUnits: Array<[string, number]> = [\n ['Y', 1000 * 60 * 60 * 24 * 365], // years\n ['M', 1000 * 60 * 60 * 24 * 30], // months\n ['D', 1000 * 60 * 60 * 24], // days\n ['H', 1000 * 60 * 60], // hours\n ['m', 1000 * 60], // minutes\n ['s', 1000], // seconds\n ['S', 1] // million seconds\n];\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n// from https://github.com/hsuanxyz/ng-time-parser\nimport { FormStyle, getLocaleDayPeriods, TranslationWidth } from '@angular/common';\n\nimport { isNotNil } from 'ng-zorro-antd/core/util';\n\nexport interface TimeResult {\n hour: number | null;\n minute: number | null;\n second: number | null;\n period: number | null;\n}\n\nexport class NgTimeParser {\n regex: RegExp = null!;\n matchMap: { [key: string]: null | number } = {\n hour: null,\n minute: null,\n second: null,\n periodNarrow: null,\n periodWide: null,\n periodAbbreviated: null\n };\n\n constructor(private format: string, private localeId: string) {\n this.genRegexp();\n }\n\n toDate(str: string): Date {\n const result = this.getTimeResult(str);\n const time = new Date();\n\n if (isNotNil(result?.hour)) {\n time.setHours(result!.hour);\n }\n\n if (isNotNil(result?.minute)) {\n time.setMinutes(result!.minute);\n }\n\n if (isNotNil(result?.second)) {\n time.setSeconds(result!.second);\n }\n\n if (result?.period === 1 && time.getHours() < 12) {\n time.setHours(time.getHours() + 12);\n }\n\n return time;\n }\n\n getTimeResult(str: string): TimeResult | null {\n const match = this.regex.exec(str);\n let period = null;\n if (match) {\n if (isNotNil(this.matchMap.periodNarrow)) {\n period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Narrow).indexOf(\n match[this.matchMap.periodNarrow + 1]\n );\n }\n if (isNotNil(this.matchMap.periodWide)) {\n period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Wide).indexOf(\n match[this.matchMap.periodWide + 1]\n );\n }\n if (isNotNil(this.matchMap.periodAbbreviated)) {\n period = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Abbreviated).indexOf(\n match[this.matchMap.periodAbbreviated + 1]\n );\n }\n return {\n hour: isNotNil(this.matchMap.hour) ? Number.parseInt(match[this.matchMap.hour + 1], 10) : null,\n minute: isNotNil(this.matchMap.minute) ? Number.parseInt(match[this.matchMap.minute + 1], 10) : null,\n second: isNotNil(this.matchMap.second) ? Number.parseInt(match[this.matchMap.second + 1], 10) : null,\n period\n };\n } else {\n return null;\n }\n }\n\n genRegexp(): void {\n let regexStr = this.format.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$&');\n const hourRegex = /h{1,2}/i;\n const minuteRegex = /m{1,2}/;\n const secondRegex = /s{1,2}/;\n const periodNarrow = /aaaaa/;\n const periodWide = /aaaa/;\n const periodAbbreviated = /a{1,3}/;\n\n const hourMatch = hourRegex.exec(this.format);\n const minuteMatch = minuteRegex.exec(this.format);\n const secondMatch = secondRegex.exec(this.format);\n const periodNarrowMatch = periodNarrow.exec(this.format);\n let periodWideMatch: null | RegExpExecArray = null;\n let periodAbbreviatedMatch: null | RegExpExecArray = null;\n if (!periodNarrowMatch) {\n periodWideMatch = periodWide.exec(this.format);\n }\n if (!periodWideMatch && !periodNarrowMatch) {\n periodAbbreviatedMatch = periodAbbreviated.exec(this.format);\n }\n\n const matchs = [hourMatch, minuteMatch, secondMatch, periodNarrowMatch, periodWideMatch, periodAbbreviatedMatch]\n .filter(m => !!m)\n .sort((a, b) => a!.index - b!.index);\n\n matchs.forEach((match, index) => {\n switch (match) {\n case hourMatch:\n this.matchMap.hour = index;\n regexStr = regexStr.replace(hourRegex, '(\\\\d{1,2})');\n break;\n case minuteMatch:\n this.matchMap.minute = index;\n regexStr = regexStr.replace(minuteRegex, '(\\\\d{1,2})');\n break;\n case secondMatch:\n this.matchMap.second = index;\n regexStr = regexStr.replace(secondRegex, '(\\\\d{1,2})');\n break;\n case periodNarrowMatch:\n this.matchMap.periodNarrow = index;\n const periodsNarrow = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Narrow).join('|');\n regexStr = regexStr.replace(periodNarrow, `(${periodsNarrow})`);\n break;\n case periodWideMatch:\n this.matchMap.periodWide = index;\n const periodsWide = getLocaleDayPeriods(this.localeId, FormStyle.Format, TranslationWidth.Wide).join('|');\n regexStr = regexStr.replace(periodWide, `(${periodsWide})`);\n break;\n case periodAbbreviatedMatch:\n this.matchMap.periodAbbreviated = index;\n const periodsAbbreviated = getLocaleDayPeriods(\n this.localeId,\n FormStyle.Format,\n TranslationWidth.Abbreviated\n ).join('|');\n regexStr = regexStr.replace(periodAbbreviated, `(${periodsAbbreviated})`);\n break;\n }\n });\n\n this.regex = new RegExp(regexStr);\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './candy-date';\nexport * from './time';\nexport { NgTimeParser as ɵNgTimeParser, TimeResult as ɵTimeResult } from './time-parser';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}