@chayns-components/date 5.0.0-beta.1058 → 5.0.0-beta.1059
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.
- package/lib/cjs/index.js +6 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/utils/dateInfo.js +20 -1
- package/lib/cjs/utils/dateInfo.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/utils/dateInfo.js +21 -2
- package/lib/esm/utils/dateInfo.js.map +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/utils/dateInfo.d.ts +5 -0
- package/package.json +3 -3
package/lib/cjs/index.js
CHANGED
|
@@ -69,6 +69,12 @@ Object.defineProperty(exports, "getDateInfo", {
|
|
|
69
69
|
return _dateInfo.getDateInfo;
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
|
+
Object.defineProperty(exports, "getFormattedTime", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
get: function () {
|
|
75
|
+
return _dateInfo.getFormattedTime;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
72
78
|
Object.defineProperty(exports, "getIsDateNearToday", {
|
|
73
79
|
enumerable: true,
|
|
74
80
|
get: function () {
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_Calendar","_interopRequireDefault","require","_calendar","_OpeningInputs","_OpeningTimes","_DateInfo","_useDateInfo","_dateInfo","_date","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["// Calendar\nexport { default as Calendar } from './components/calendar/Calendar';\nexport type {\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n DateInterval,\n CustomThumbColors,\n} from './types/calendar';\nexport { CalendarType } from './types/calendar';\n\n// OpeningTimes\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n\n// DateInfo\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport { getDateInfo, getTimeTillNow } from './utils/dateInfo';\n\n// Utils\nexport {\n isToday,\n getIsDateNearToday,\n isTomorrow,\n isYesterday,\n isMorning,\n isCurrentYear,\n addYears,\n addDays,\n isSameDay,\n eachDayOfInterval,\n isWithinInterval,\n subYears,\n endOfWeek,\n startOfWeek,\n isSameMonth,\n differenceInCalendarMonths,\n startOfMonth,\n isAfter,\n isBefore,\n} from './utils/date';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Calendar","_interopRequireDefault","require","_calendar","_OpeningInputs","_OpeningTimes","_DateInfo","_useDateInfo","_dateInfo","_date","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["// Calendar\nexport { default as Calendar } from './components/calendar/Calendar';\nexport type {\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n DateInterval,\n CustomThumbColors,\n} from './types/calendar';\nexport { CalendarType } from './types/calendar';\n\n// OpeningTimes\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n\n// DateInfo\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport { getDateInfo, getTimeTillNow, getFormattedTime } from './utils/dateInfo';\n\n// Utils\nexport {\n isToday,\n getIsDateNearToday,\n isTomorrow,\n isYesterday,\n isMorning,\n isCurrentYear,\n addYears,\n addDays,\n isSameDay,\n eachDayOfInterval,\n isWithinInterval,\n subYears,\n endOfWeek,\n startOfWeek,\n isSameMonth,\n differenceInCalendarMonths,\n startOfMonth,\n isAfter,\n isBefore,\n} from './utils/date';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAQA,IAAAC,SAAA,GAAAD,OAAA;AAGA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAIA,IAAAI,SAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,YAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAGA,IAAAO,KAAA,GAAAP,OAAA;AAoBsB,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getTimeTillNow = exports.getTimeString = exports.getDateInfo = void 0;
|
|
6
|
+
exports.getTimeTillNow = exports.getTimeString = exports.getFormattedTime = exports.getDateInfo = void 0;
|
|
7
7
|
var _chaynsApi = require("chayns-api");
|
|
8
8
|
var _date = require("./date");
|
|
9
9
|
const getDateInfo = ({
|
|
@@ -105,6 +105,25 @@ const getTimeTillNow = ({
|
|
|
105
105
|
return formatter.format(isPast ? -count : count, label);
|
|
106
106
|
};
|
|
107
107
|
exports.getTimeTillNow = getTimeTillNow;
|
|
108
|
+
const getFormattedTime = ({
|
|
109
|
+
date,
|
|
110
|
+
shouldShowSeconds = false
|
|
111
|
+
}) => {
|
|
112
|
+
const {
|
|
113
|
+
active: language
|
|
114
|
+
} = (0, _chaynsApi.getLanguage)();
|
|
115
|
+
const timeOptions = {
|
|
116
|
+
hour: '2-digit',
|
|
117
|
+
minute: '2-digit',
|
|
118
|
+
second: shouldShowSeconds ? '2-digit' : undefined
|
|
119
|
+
};
|
|
120
|
+
const formattedTime = date.toLocaleTimeString(language, timeOptions).replace(/^0/, '');
|
|
121
|
+
const hourWord = getTimeString({
|
|
122
|
+
language
|
|
123
|
+
});
|
|
124
|
+
return `${formattedTime} ${hourWord}`.trim();
|
|
125
|
+
};
|
|
126
|
+
exports.getFormattedTime = getFormattedTime;
|
|
108
127
|
const getTimeString = ({
|
|
109
128
|
language
|
|
110
129
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateInfo.js","names":["_chaynsApi","require","_date","getDateInfo","date","shouldShowYear","shouldShowTime","shouldShowDayOfWeek","shouldShowRelativeDayOfWeek","shouldUseShortText","active","language","getLanguage","dayPart","rtf","Intl","RelativeTimeFormat","numeric","isToday","capitalizeFirstLetter","format","isTomorrow","isYesterday","toLocaleDateString","weekday","dateParts","day","month","isCurrentYear","year","timeParts","hour","minute","formattedTime","Object","keys","length","toLocaleTimeString","hourWord","getTimeString","formattedDate","exports","text","charAt","toUpperCase","slice","getTimeTillNow","currentDate","Language","English","diffInSeconds","Math","floor","getTime","isPast","units","label","seconds","absDiff","abs","find","u","count","formatter","map","nl","fr","de","es","it","pt","pl","tr","uk","en"],"sources":["../../../src/utils/dateInfo.ts"],"sourcesContent":["import { getLanguage, Language } from 'chayns-api';\nimport { UseDateInfoOptions } from '../types/dateinfo';\nimport { isCurrentYear, isToday, isTomorrow, isYesterday } from './date';\n\nexport const getDateInfo = ({\n date,\n shouldShowYear,\n shouldShowTime,\n shouldShowDayOfWeek,\n shouldShowRelativeDayOfWeek,\n shouldUseShortText,\n}: Omit<UseDateInfoOptions, 'shouldShowDateToNowDifference' & 'preText'>) => {\n const { active: language } = getLanguage();\n\n let dayPart = '';\n\n if (shouldShowRelativeDayOfWeek) {\n const rtf = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n if (isToday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(0, 'day'));\n }\n\n if (isTomorrow(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(1, 'day'));\n }\n\n if (isYesterday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(-1, 'day'));\n }\n }\n\n if (!dayPart && shouldShowDayOfWeek) {\n dayPart = date.toLocaleDateString(language, {\n weekday: shouldUseShortText ? 'short' : 'long',\n });\n }\n\n const dateParts: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: shouldUseShortText ? 'short' : 'long',\n };\n\n if (shouldShowYear && !isCurrentYear(date)) {\n dateParts.year = 'numeric';\n }\n\n const timeParts: Intl.DateTimeFormatOptions = {};\n\n if (shouldShowTime) {\n timeParts.hour = '2-digit';\n timeParts.minute = '2-digit';\n }\n\n let formattedTime = '';\n if (Object.keys(timeParts).length > 0) {\n formattedTime = `, ${date.toLocaleTimeString(language, { ...timeParts })}`;\n }\n\n const hourWord = getTimeString({ language });\n\n formattedTime += shouldShowTime ? ` ${hourWord}` : '';\n\n const formattedDate = `${date.toLocaleDateString(language, dateParts)}${formattedTime}`;\n\n return `${dayPart}${dayPart ? ', ' : ''}${formattedDate}`;\n};\n\nconst capitalizeFirstLetter = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n}: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 },\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const { label, seconds } = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n return formatter.format(isPast ? -count : count, label);\n};\n\ninterface GetTimeStringProps {\n language?: Language;\n}\n\nexport const getTimeString = ({ language }: GetTimeStringProps) => {\n const map: { [key: string]: string } = {\n nl: 'uur',\n fr: 'heures',\n de: 'Uhr',\n es: 'horas',\n it: 'ore',\n pt: 'horas',\n pl: 'godzina',\n tr: 'saat',\n uk: 'година',\n en: '',\n };\n\n return map[language ?? ''] ?? '';\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dateInfo.js","names":["_chaynsApi","require","_date","getDateInfo","date","shouldShowYear","shouldShowTime","shouldShowDayOfWeek","shouldShowRelativeDayOfWeek","shouldUseShortText","active","language","getLanguage","dayPart","rtf","Intl","RelativeTimeFormat","numeric","isToday","capitalizeFirstLetter","format","isTomorrow","isYesterday","toLocaleDateString","weekday","dateParts","day","month","isCurrentYear","year","timeParts","hour","minute","formattedTime","Object","keys","length","toLocaleTimeString","hourWord","getTimeString","formattedDate","exports","text","charAt","toUpperCase","slice","getTimeTillNow","currentDate","Language","English","diffInSeconds","Math","floor","getTime","isPast","units","label","seconds","absDiff","abs","find","u","count","formatter","getFormattedTime","shouldShowSeconds","timeOptions","second","undefined","replace","trim","map","nl","fr","de","es","it","pt","pl","tr","uk","en"],"sources":["../../../src/utils/dateInfo.ts"],"sourcesContent":["import { getLanguage, Language } from 'chayns-api';\nimport { UseDateInfoOptions } from '../types/dateinfo';\nimport { isCurrentYear, isToday, isTomorrow, isYesterday } from './date';\n\nexport const getDateInfo = ({\n date,\n shouldShowYear,\n shouldShowTime,\n shouldShowDayOfWeek,\n shouldShowRelativeDayOfWeek,\n shouldUseShortText,\n}: Omit<UseDateInfoOptions, 'shouldShowDateToNowDifference' & 'preText'>) => {\n const { active: language } = getLanguage();\n\n let dayPart = '';\n\n if (shouldShowRelativeDayOfWeek) {\n const rtf = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n if (isToday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(0, 'day'));\n }\n\n if (isTomorrow(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(1, 'day'));\n }\n\n if (isYesterday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(-1, 'day'));\n }\n }\n\n if (!dayPart && shouldShowDayOfWeek) {\n dayPart = date.toLocaleDateString(language, {\n weekday: shouldUseShortText ? 'short' : 'long',\n });\n }\n\n const dateParts: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: shouldUseShortText ? 'short' : 'long',\n };\n\n if (shouldShowYear && !isCurrentYear(date)) {\n dateParts.year = 'numeric';\n }\n\n const timeParts: Intl.DateTimeFormatOptions = {};\n\n if (shouldShowTime) {\n timeParts.hour = '2-digit';\n timeParts.minute = '2-digit';\n }\n\n let formattedTime = '';\n if (Object.keys(timeParts).length > 0) {\n formattedTime = `, ${date.toLocaleTimeString(language, { ...timeParts })}`;\n }\n\n const hourWord = getTimeString({ language });\n\n formattedTime += shouldShowTime ? ` ${hourWord}` : '';\n\n const formattedDate = `${date.toLocaleDateString(language, dateParts)}${formattedTime}`;\n\n return `${dayPart}${dayPart ? ', ' : ''}${formattedDate}`;\n};\n\nconst capitalizeFirstLetter = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n}: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 },\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const { label, seconds } = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n return formatter.format(isPast ? -count : count, label);\n};\n\ninterface GetFormattedTimeOptions {\n date: Date;\n shouldShowSeconds?: boolean;\n}\n\nexport const getFormattedTime = ({\n date,\n shouldShowSeconds = false,\n}: GetFormattedTimeOptions): string => {\n const { active: language } = getLanguage();\n\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit',\n second: shouldShowSeconds ? '2-digit' : undefined,\n };\n\n const formattedTime = date.toLocaleTimeString(language, timeOptions).replace(/^0/, '');\n\n const hourWord = getTimeString({ language });\n\n return `${formattedTime} ${hourWord}`.trim();\n};\n\ninterface GetTimeStringProps {\n language?: Language;\n}\n\nexport const getTimeString = ({ language }: GetTimeStringProps) => {\n const map: { [key: string]: string } = {\n nl: 'uur',\n fr: 'heures',\n de: 'Uhr',\n es: 'horas',\n it: 'ore',\n pt: 'horas',\n pl: 'godzina',\n tr: 'saat',\n uk: 'година',\n en: '',\n };\n\n return map[language ?? ''] ?? '';\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { default as OpeningTimes } from './components/opening-times/OpeningTimes
|
|
|
8
8
|
// DateInfo
|
|
9
9
|
export { default as DateInfo } from './components/date-info/DateInfo';
|
|
10
10
|
export { useDateInfo } from './hooks/useDateInfo';
|
|
11
|
-
export { getDateInfo, getTimeTillNow } from './utils/dateInfo';
|
|
11
|
+
export { getDateInfo, getTimeTillNow, getFormattedTime } from './utils/dateInfo';
|
|
12
12
|
|
|
13
13
|
// Utils
|
|
14
14
|
export { isToday, getIsDateNearToday, isTomorrow, isYesterday, isMorning, isCurrentYear, addYears, addDays, isSameDay, eachDayOfInterval, isWithinInterval, subYears, endOfWeek, startOfWeek, isSameMonth, differenceInCalendarMonths, startOfMonth, isAfter, isBefore } from './utils/date';
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","Calendar","CalendarType","OpeningInputs","OpeningTimes","DateInfo","useDateInfo","getDateInfo","getTimeTillNow","isToday","getIsDateNearToday","isTomorrow","isYesterday","isMorning","isCurrentYear","addYears","addDays","isSameDay","eachDayOfInterval","isWithinInterval","subYears","endOfWeek","startOfWeek","isSameMonth","differenceInCalendarMonths","startOfMonth","isAfter","isBefore"],"sources":["../../src/index.ts"],"sourcesContent":["// Calendar\nexport { default as Calendar } from './components/calendar/Calendar';\nexport type {\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n DateInterval,\n CustomThumbColors,\n} from './types/calendar';\nexport { CalendarType } from './types/calendar';\n\n// OpeningTimes\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n\n// DateInfo\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport { getDateInfo, getTimeTillNow } from './utils/dateInfo';\n\n// Utils\nexport {\n isToday,\n getIsDateNearToday,\n isTomorrow,\n isYesterday,\n isMorning,\n isCurrentYear,\n addYears,\n addDays,\n isSameDay,\n eachDayOfInterval,\n isWithinInterval,\n subYears,\n endOfWeek,\n startOfWeek,\n isSameMonth,\n differenceInCalendarMonths,\n startOfMonth,\n isAfter,\n isBefore,\n} from './utils/date';\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,gCAAgC;AAQpE,SAASC,YAAY,QAAQ,kBAAkB;;AAE/C;AACA,SAASF,OAAO,IAAIG,aAAa,QAAQ,yDAAyD;AAClG,SAASH,OAAO,IAAII,YAAY,QAAQ,yCAAyC;AAGjF;AACA,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,iCAAiC;AACrE,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,WAAW,EAAEC,cAAc,QAAQ,kBAAkB;;
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","Calendar","CalendarType","OpeningInputs","OpeningTimes","DateInfo","useDateInfo","getDateInfo","getTimeTillNow","getFormattedTime","isToday","getIsDateNearToday","isTomorrow","isYesterday","isMorning","isCurrentYear","addYears","addDays","isSameDay","eachDayOfInterval","isWithinInterval","subYears","endOfWeek","startOfWeek","isSameMonth","differenceInCalendarMonths","startOfMonth","isAfter","isBefore"],"sources":["../../src/index.ts"],"sourcesContent":["// Calendar\nexport { default as Calendar } from './components/calendar/Calendar';\nexport type {\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n DateInterval,\n CustomThumbColors,\n} from './types/calendar';\nexport { CalendarType } from './types/calendar';\n\n// OpeningTimes\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n\n// DateInfo\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport { getDateInfo, getTimeTillNow, getFormattedTime } from './utils/dateInfo';\n\n// Utils\nexport {\n isToday,\n getIsDateNearToday,\n isTomorrow,\n isYesterday,\n isMorning,\n isCurrentYear,\n addYears,\n addDays,\n isSameDay,\n eachDayOfInterval,\n isWithinInterval,\n subYears,\n endOfWeek,\n startOfWeek,\n isSameMonth,\n differenceInCalendarMonths,\n startOfMonth,\n isAfter,\n isBefore,\n} from './utils/date';\n"],"mappings":"AAAA;AACA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,gCAAgC;AAQpE,SAASC,YAAY,QAAQ,kBAAkB;;AAE/C;AACA,SAASF,OAAO,IAAIG,aAAa,QAAQ,yDAAyD;AAClG,SAASH,OAAO,IAAII,YAAY,QAAQ,yCAAyC;AAGjF;AACA,SAASJ,OAAO,IAAIK,QAAQ,QAAQ,iCAAiC;AACrE,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,WAAW,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,kBAAkB;;AAEhF;AACA,SACIC,OAAO,EACPC,kBAAkB,EAClBC,UAAU,EACVC,WAAW,EACXC,SAAS,EACTC,aAAa,EACbC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,iBAAiB,EACjBC,gBAAgB,EAChBC,QAAQ,EACRC,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,0BAA0B,EAC1BC,YAAY,EACZC,OAAO,EACPC,QAAQ,QACL,cAAc","ignoreList":[]}
|
|
@@ -99,10 +99,29 @@ export const getTimeTillNow = _ref2 => {
|
|
|
99
99
|
});
|
|
100
100
|
return formatter.format(isPast ? -count : count, label);
|
|
101
101
|
};
|
|
102
|
-
export const
|
|
102
|
+
export const getFormattedTime = _ref3 => {
|
|
103
103
|
let {
|
|
104
|
-
|
|
104
|
+
date,
|
|
105
|
+
shouldShowSeconds = false
|
|
105
106
|
} = _ref3;
|
|
107
|
+
const {
|
|
108
|
+
active: language
|
|
109
|
+
} = getLanguage();
|
|
110
|
+
const timeOptions = {
|
|
111
|
+
hour: '2-digit',
|
|
112
|
+
minute: '2-digit',
|
|
113
|
+
second: shouldShowSeconds ? '2-digit' : undefined
|
|
114
|
+
};
|
|
115
|
+
const formattedTime = date.toLocaleTimeString(language, timeOptions).replace(/^0/, '');
|
|
116
|
+
const hourWord = getTimeString({
|
|
117
|
+
language
|
|
118
|
+
});
|
|
119
|
+
return `${formattedTime} ${hourWord}`.trim();
|
|
120
|
+
};
|
|
121
|
+
export const getTimeString = _ref4 => {
|
|
122
|
+
let {
|
|
123
|
+
language
|
|
124
|
+
} = _ref4;
|
|
106
125
|
const map = {
|
|
107
126
|
nl: 'uur',
|
|
108
127
|
fr: 'heures',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateInfo.js","names":["getLanguage","Language","isCurrentYear","isToday","isTomorrow","isYesterday","getDateInfo","_ref","date","shouldShowYear","shouldShowTime","shouldShowDayOfWeek","shouldShowRelativeDayOfWeek","shouldUseShortText","active","language","dayPart","rtf","Intl","RelativeTimeFormat","numeric","capitalizeFirstLetter","format","toLocaleDateString","weekday","dateParts","day","month","year","timeParts","hour","minute","formattedTime","Object","keys","length","toLocaleTimeString","hourWord","getTimeString","formattedDate","text","charAt","toUpperCase","slice","getTimeTillNow","_ref2","currentDate","English","diffInSeconds","Math","floor","getTime","isPast","units","label","seconds","absDiff","abs","find","u","count","formatter","_ref3","map","nl","fr","de","es","it","pt","pl","tr","uk","en"],"sources":["../../../src/utils/dateInfo.ts"],"sourcesContent":["import { getLanguage, Language } from 'chayns-api';\nimport { UseDateInfoOptions } from '../types/dateinfo';\nimport { isCurrentYear, isToday, isTomorrow, isYesterday } from './date';\n\nexport const getDateInfo = ({\n date,\n shouldShowYear,\n shouldShowTime,\n shouldShowDayOfWeek,\n shouldShowRelativeDayOfWeek,\n shouldUseShortText,\n}: Omit<UseDateInfoOptions, 'shouldShowDateToNowDifference' & 'preText'>) => {\n const { active: language } = getLanguage();\n\n let dayPart = '';\n\n if (shouldShowRelativeDayOfWeek) {\n const rtf = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n if (isToday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(0, 'day'));\n }\n\n if (isTomorrow(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(1, 'day'));\n }\n\n if (isYesterday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(-1, 'day'));\n }\n }\n\n if (!dayPart && shouldShowDayOfWeek) {\n dayPart = date.toLocaleDateString(language, {\n weekday: shouldUseShortText ? 'short' : 'long',\n });\n }\n\n const dateParts: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: shouldUseShortText ? 'short' : 'long',\n };\n\n if (shouldShowYear && !isCurrentYear(date)) {\n dateParts.year = 'numeric';\n }\n\n const timeParts: Intl.DateTimeFormatOptions = {};\n\n if (shouldShowTime) {\n timeParts.hour = '2-digit';\n timeParts.minute = '2-digit';\n }\n\n let formattedTime = '';\n if (Object.keys(timeParts).length > 0) {\n formattedTime = `, ${date.toLocaleTimeString(language, { ...timeParts })}`;\n }\n\n const hourWord = getTimeString({ language });\n\n formattedTime += shouldShowTime ? ` ${hourWord}` : '';\n\n const formattedDate = `${date.toLocaleDateString(language, dateParts)}${formattedTime}`;\n\n return `${dayPart}${dayPart ? ', ' : ''}${formattedDate}`;\n};\n\nconst capitalizeFirstLetter = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n}: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 },\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const { label, seconds } = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n return formatter.format(isPast ? -count : count, label);\n};\n\ninterface GetTimeStringProps {\n language?: Language;\n}\n\nexport const getTimeString = ({ language }: GetTimeStringProps) => {\n const map: { [key: string]: string } = {\n nl: 'uur',\n fr: 'heures',\n de: 'Uhr',\n es: 'horas',\n it: 'ore',\n pt: 'horas',\n pl: 'godzina',\n tr: 'saat',\n uk: 'година',\n en: '',\n };\n\n return map[language ?? ''] ?? '';\n};\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dateInfo.js","names":["getLanguage","Language","isCurrentYear","isToday","isTomorrow","isYesterday","getDateInfo","_ref","date","shouldShowYear","shouldShowTime","shouldShowDayOfWeek","shouldShowRelativeDayOfWeek","shouldUseShortText","active","language","dayPart","rtf","Intl","RelativeTimeFormat","numeric","capitalizeFirstLetter","format","toLocaleDateString","weekday","dateParts","day","month","year","timeParts","hour","minute","formattedTime","Object","keys","length","toLocaleTimeString","hourWord","getTimeString","formattedDate","text","charAt","toUpperCase","slice","getTimeTillNow","_ref2","currentDate","English","diffInSeconds","Math","floor","getTime","isPast","units","label","seconds","absDiff","abs","find","u","count","formatter","getFormattedTime","_ref3","shouldShowSeconds","timeOptions","second","undefined","replace","trim","_ref4","map","nl","fr","de","es","it","pt","pl","tr","uk","en"],"sources":["../../../src/utils/dateInfo.ts"],"sourcesContent":["import { getLanguage, Language } from 'chayns-api';\nimport { UseDateInfoOptions } from '../types/dateinfo';\nimport { isCurrentYear, isToday, isTomorrow, isYesterday } from './date';\n\nexport const getDateInfo = ({\n date,\n shouldShowYear,\n shouldShowTime,\n shouldShowDayOfWeek,\n shouldShowRelativeDayOfWeek,\n shouldUseShortText,\n}: Omit<UseDateInfoOptions, 'shouldShowDateToNowDifference' & 'preText'>) => {\n const { active: language } = getLanguage();\n\n let dayPart = '';\n\n if (shouldShowRelativeDayOfWeek) {\n const rtf = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n if (isToday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(0, 'day'));\n }\n\n if (isTomorrow(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(1, 'day'));\n }\n\n if (isYesterday(date)) {\n dayPart = capitalizeFirstLetter(rtf.format(-1, 'day'));\n }\n }\n\n if (!dayPart && shouldShowDayOfWeek) {\n dayPart = date.toLocaleDateString(language, {\n weekday: shouldUseShortText ? 'short' : 'long',\n });\n }\n\n const dateParts: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: shouldUseShortText ? 'short' : 'long',\n };\n\n if (shouldShowYear && !isCurrentYear(date)) {\n dateParts.year = 'numeric';\n }\n\n const timeParts: Intl.DateTimeFormatOptions = {};\n\n if (shouldShowTime) {\n timeParts.hour = '2-digit';\n timeParts.minute = '2-digit';\n }\n\n let formattedTime = '';\n if (Object.keys(timeParts).length > 0) {\n formattedTime = `, ${date.toLocaleTimeString(language, { ...timeParts })}`;\n }\n\n const hourWord = getTimeString({ language });\n\n formattedTime += shouldShowTime ? ` ${hourWord}` : '';\n\n const formattedDate = `${date.toLocaleDateString(language, dateParts)}${formattedTime}`;\n\n return `${dayPart}${dayPart ? ', ' : ''}${formattedDate}`;\n};\n\nconst capitalizeFirstLetter = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\ntype RelativeTimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second';\n\ninterface GetTimeTillNow {\n date: Date;\n currentDate: Date;\n language: Language;\n}\n\nexport const getTimeTillNow = ({\n date,\n currentDate,\n language = Language.English,\n}: GetTimeTillNow): string => {\n const diffInSeconds = Math.floor((currentDate.getTime() - date.getTime()) / 1000);\n const isPast = diffInSeconds > 0;\n\n const units: { label: RelativeTimeUnit; seconds: number }[] = [\n { label: 'year', seconds: 31536000 },\n { label: 'month', seconds: 2592000 },\n { label: 'day', seconds: 86400 },\n { label: 'hour', seconds: 3600 },\n { label: 'minute', seconds: 60 },\n { label: 'second', seconds: 1 },\n ];\n\n const absDiff = Math.abs(diffInSeconds);\n const { label, seconds } = units.find((u) => absDiff >= u.seconds) || {\n label: 'second',\n seconds: 1,\n };\n const count = Math.floor(absDiff / seconds);\n\n const formatter = new Intl.RelativeTimeFormat(language, { numeric: 'auto' });\n\n return formatter.format(isPast ? -count : count, label);\n};\n\ninterface GetFormattedTimeOptions {\n date: Date;\n shouldShowSeconds?: boolean;\n}\n\nexport const getFormattedTime = ({\n date,\n shouldShowSeconds = false,\n}: GetFormattedTimeOptions): string => {\n const { active: language } = getLanguage();\n\n const timeOptions: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit',\n second: shouldShowSeconds ? '2-digit' : undefined,\n };\n\n const formattedTime = date.toLocaleTimeString(language, timeOptions).replace(/^0/, '');\n\n const hourWord = getTimeString({ language });\n\n return `${formattedTime} ${hourWord}`.trim();\n};\n\ninterface GetTimeStringProps {\n language?: Language;\n}\n\nexport const getTimeString = ({ language }: GetTimeStringProps) => {\n const map: { [key: string]: string } = {\n nl: 'uur',\n fr: 'heures',\n de: 'Uhr',\n es: 'horas',\n it: 'ore',\n pt: 'horas',\n pl: 'godzina',\n tr: 'saat',\n uk: 'година',\n en: '',\n };\n\n return map[language ?? ''] ?? '';\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export { default as OpeningTimes } from './components/opening-times/OpeningTimes
|
|
|
6
6
|
export type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';
|
|
7
7
|
export { default as DateInfo } from './components/date-info/DateInfo';
|
|
8
8
|
export { useDateInfo } from './hooks/useDateInfo';
|
|
9
|
-
export { getDateInfo, getTimeTillNow } from './utils/dateInfo';
|
|
9
|
+
export { getDateInfo, getTimeTillNow, getFormattedTime } from './utils/dateInfo';
|
|
10
10
|
export { isToday, getIsDateNearToday, isTomorrow, isYesterday, isMorning, isCurrentYear, addYears, addDays, isSameDay, eachDayOfInterval, isWithinInterval, subYears, endOfWeek, startOfWeek, isSameMonth, differenceInCalendarMonths, startOfMonth, isAfter, isBefore, } from './utils/date';
|
|
@@ -7,6 +7,11 @@ interface GetTimeTillNow {
|
|
|
7
7
|
language: Language;
|
|
8
8
|
}
|
|
9
9
|
export declare const getTimeTillNow: ({ date, currentDate, language, }: GetTimeTillNow) => string;
|
|
10
|
+
interface GetFormattedTimeOptions {
|
|
11
|
+
date: Date;
|
|
12
|
+
shouldShowSeconds?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const getFormattedTime: ({ date, shouldShowSeconds, }: GetFormattedTimeOptions) => string;
|
|
10
15
|
interface GetTimeStringProps {
|
|
11
16
|
language?: Language;
|
|
12
17
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/date",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.1059",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"typescript": "^5.8.2"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
72
|
+
"@chayns-components/core": "^5.0.0-beta.1059",
|
|
73
73
|
"uuid": "^10.0.0"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
@@ -82,5 +82,5 @@
|
|
|
82
82
|
"publishConfig": {
|
|
83
83
|
"access": "public"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "f93e8e73752d580f0523fb3d4bda182d3c3001e5"
|
|
86
86
|
}
|