@servicetitan/design-system 14.5.3 → 14.5.12
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/dist/components/ButtonToggle/ButtonToggle.js +39 -3
- package/dist/components/ButtonToggle/ButtonToggle.js.map +1 -1
- package/dist/components/ButtonToggle/ButtonToggle.test.js +77 -1
- package/dist/components/ButtonToggle/ButtonToggle.test.js.map +1 -1
- package/dist/components/ButtonToggle/ButtonToggleItem.d.ts +2 -0
- package/dist/components/ButtonToggle/ButtonToggleItem.js +2 -2
- package/dist/components/ButtonToggle/ButtonToggleItem.js.map +1 -1
- package/dist/components/DatePicker/utils/utils.d.ts +1 -1
- package/dist/components/DatePicker/utils/utils.js +10 -7
- package/dist/components/DatePicker/utils/utils.js.map +1 -1
- package/dist/components/DatePicker/utils/utils.missingTimeZone.test.d.ts +1 -0
- package/dist/components/DatePicker/utils/utils.missingTimeZone.test.js +35 -0
- package/dist/components/DatePicker/utils/utils.missingTimeZone.test.js.map +1 -0
- package/dist/components/TimePicker/utils/TimePickerUtils.test.js +73 -0
- package/dist/components/TimePicker/utils/TimePickerUtils.test.js.map +1 -1
- package/dist/components/TimePicker/utils/timezoneUtils.d.ts +1 -0
- package/dist/components/TimePicker/utils/timezoneUtils.js +25 -15
- package/dist/components/TimePicker/utils/timezoneUtils.js.map +1 -1
- package/dist/global/index.css +1 -1
- package/dist/global/version.css +1 -1
- package/dist/system-light.css +1 -1
- package/dist/system-light.min.css +1 -1
- package/dist/system.css +1 -1
- package/dist/system.css.map +1 -1
- package/dist/system.min.css +1 -1
- package/dist/utilities/TimezoneProvider/TimezoneProvider.js +9 -6
- package/dist/utilities/TimezoneProvider/TimezoneProvider.js.map +1 -1
- package/dist/utilities/TimezoneProvider/TimezoneProvider.test.js +41 -0
- package/dist/utilities/TimezoneProvider/TimezoneProvider.test.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePickerUtils.test.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/TimePickerUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tconsumeMinMax,\n\tcheckMinMax,\n\tfillDateRange,\n\ttoTimeFormat,\n\tparseUserInput,\n\tgetClosestIndexes,\n\tstringToDate,\n\tdateToTime,\n\ttimeToDate,\n\tgetReturnDate,\n\t/*\n\t * getClosestOption,\n\t * filteredOptions,\n\t */\n} from './';\n\n// Timezones\nconst tz = {\n\tutc: 'UTC',\n\takl: 'Pacific/Auckland', // UTC+13\n\tseoul: 'Asia/Seoul', // UTC+9\n\tyrv: 'Asia/Yerevan', // UTC+4\n\tla: 'America/Los_Angeles', // UTC-8\n};\n\ndescribe('TimePickerUtils', () => {\n\tconst [f1, f2] = ['hh:mm xm', 'hh:mm'];\n\n\tdescribe('consumeMinMax', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT;\n\n\t\t\t[minT, maxT] = ['01:00', '23:55'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('01:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:55');\n\n\t\t\t[minT, maxT] = ['01:01 PM', '11:56 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('13:01');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:56');\n\n\t\t\t[minT, maxT] = ['12:00 AM', '12:00 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('12:00');\n\n\t\t\tminT = new Date('2023-01-01T00:00:00Z');\n\t\t\tmaxT = new Date('2023-01-01T23:59:59Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:59');\n\n\t\t\t// min > max\n\t\t\tminT = '13:00';\n\t\t\tmaxT = new Date('2023-01-01T12:00:00Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('12:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('13:00');\n\n\t\t\t// min > max\n\t\t\tminT = new Date('2023-01-01T12:00:00Z');\n\t\t\tmaxT = '11:00';\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('11:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('12:00');\n\n\t\t\t// not same day\n\t\t\tminT = new Date('2023-02-01T08:00:00Z');\n\t\t\tmaxT = new Date('2023-01-01T07:00:00Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:59');\n\n\t\t\t// no timezone set\n\t\t\tminT = new Date('2023-01-01T00:00:00');\n\t\t\tmaxT = new Date('2023-01-01T23:59:59');\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\n\t\t\t[minT, maxT] = ['12:00 AM', '12:00 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('12:00');\n\n\t\t\t// undefined, null, wrong entry\n\t\t\t[minT, maxT] = [undefined, undefined];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\t[minT, maxT] = ['08:00', undefined];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\t[minT, maxT] = [undefined, '08:00'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('08:00');\n\t\t\tminT = new Date('2023-01-01T17:00:00');\n\t\t\tmaxT = null;\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('17:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\tminT = null;\n\t\t\tmaxT = new Date('2023-01-01T17:00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('17:00');\n\t\t\t[minT, maxT] = ['test', '08:00'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('08:00');\n\t\t\t[minT, maxT] = ['08:00', ''];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t});\n\t});\n\n\tdescribe('checkMinMax', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT;\n\n\t\t\t[minT, maxT] = ['01:00', '23:55'];\n\t\t\texpect(checkMinMax(minT, maxT, '23:54')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '23:55')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '23:56')).toEqual(false);\n\n\t\t\texpect(checkMinMax(maxT, minT, '23:54')).toEqual(true); // Reversed min-max test\n\n\t\t\t[minT, maxT] = ['01:00 am', '1:59 am'];\n\t\t\texpect(checkMinMax(minT, maxT, '23:58')).toEqual(false);\n\n\t\t\t[minT, maxT] = ['01:00 am', '1:59 am'];\n\t\t\texpect(checkMinMax(minT, maxT, '01:00')).toEqual(true);\n\n\t\t\t[minT, maxT] = ['22:22', '22:23'];\n\t\t\texpect(checkMinMax(minT, maxT, '10:21 pm')).toEqual(false);\n\t\t\texpect(checkMinMax(minT, maxT, '10:22 pm')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '10:23 pm')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '10:24 pm')).toEqual(false);\n\t\t});\n\t});\n\n\tdescribe('fillDateRange, toTimeFormat', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT, increment, range;\n\n\t\t\t[minT, maxT, increment] = ['00:00', '23:59', 1];\n\t\t\trange = fillDateRange(minT, maxT, increment);\n\t\t\texpect(range.length).toEqual(1440);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('12:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[1439])).toEqual('11:59 PM');\n\t\t\texpect(toTimeFormat(range[0], f1)).toEqual('12:00 AM');\n\t\t\texpect(toTimeFormat(range[1439], f1)).toEqual('11:59 PM');\n\t\t\t// Test 24-hour values\n\t\t\texpect(toTimeFormat.hhmm(range[0])).toEqual('00:00');\n\t\t\texpect(toTimeFormat.hhmm(range[1439])).toEqual('23:59');\n\t\t\texpect(toTimeFormat(range[0], f2)).toEqual('00:00');\n\t\t\texpect(toTimeFormat(range[1439], f2)).toEqual('23:59');\n\n\t\t\t[minT, maxT, increment] = ['08:00 AM', '10:00 AM', 5];\n\t\t\trange = fillDateRange(minT, maxT, increment);\n\t\t\texpect(range.length).toEqual(25);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('08:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[24])).toEqual('10:00 AM');\n\n\t\t\trange = fillDateRange(minT, maxT, increment); // Reversed min-max\n\t\t\texpect(range.length).toEqual(25);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('08:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[24])).toEqual('10:00 AM');\n\n\t\t\t// Test string conversion to time\n\t\t\texpect(toTimeFormat.hhmmxm('1:23')).toEqual('01:23 AM');\n\t\t\texpect(toTimeFormat.hhmmxm('23:45')).toEqual('11:45 PM');\n\t\t\texpect(toTimeFormat.hhmmxm('8:088')).toEqual('08:08 AM');\n\t\t\texpect(toTimeFormat.hhmmxm('88:88')).toBeNull(); // Reject\n\t\t\t// Test 24-hour values\n\t\t\texpect(toTimeFormat.hhmm('1:23')).toEqual('01:23');\n\t\t\texpect(toTimeFormat.hhmm('23:45')).toEqual('23:45');\n\t\t\texpect(toTimeFormat.hhmm('8:088')).toEqual('08:08');\n\t\t\texpect(toTimeFormat.hhmm('88:88')).toBeNull(); // Reject\n\t\t});\n\t});\n\n\tdescribe('parseUserInput', () => {\n\t\tit('empty string', () => {\n\t\t\texpect(parseUserInput('')).toBeNull();\n\t\t});\n\n\t\tit('core logic 1 (no colon)', () => {\n\t\t\texpect(parseUserInput('2').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('23').join()).toEqual('11,00,PM');\n\t\t\texpect(parseUserInput('24').join()).toEqual('12,00,AM');\n\t\t\texpect(parseUserInput('25')).toBeNull(); // Reject hour value from range 25-99\n\t\t\texpect(parseUserInput('99')).toBeNull();\n\t\t\texpect(parseUserInput('234').join()).toEqual('02,34,');\n\t\t\texpect(parseUserInput('2341').join()).toEqual('11,41,PM');\n\n\t\t\texpect(parseUserInput('2341a').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123p').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341am').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123pm').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341aa').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123pp').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('2341ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('core logic 2 (with leading zero)', () => {\n\t\t\texpect(parseUserInput('0').join()).toEqual('12,00,');\n\t\t\texpect(parseUserInput('02').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('023').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('0234').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('0234a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('0234p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('0234am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('0234pm').join()).toEqual('02,34,PM');\n\t\t});\n\n\t\tit('core logic 3 (with colon)', () => {\n\t\t\texpect(parseUserInput('2').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('2:3').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('2:34').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('2:34a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('2:34p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('2:34am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('2:34pm').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('2:4am').join()).toEqual('02,40,AM');\n\t\t\texpect(parseUserInput('2:4pm').join()).toEqual('02,40,PM');\n\n\t\t\texpect(parseUserInput('2:4aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('2:4ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('core logic 4 (with colon and zero)', () => {\n\t\t\texpect(parseUserInput('02:').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('02:3').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('02:34').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('02:34a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('02:34p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('02:34am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('02:34pm').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('02:34aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('02:34ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases, 122 vs 1220', () => {\n\t\t\texpect(parseUserInput('122').join()).toEqual('01,22,');\n\t\t\texpect(parseUserInput('122a').join()).toEqual('01,22,AM');\n\t\t\texpect(parseUserInput('122aaa')).toBeNull(); // Reject\n\n\t\t\texpect(parseUserInput('1220').join()).toEqual('12,20,');\n\t\t\texpect(parseUserInput('1220aaa')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases, 028 vs 0280', () => {\n\t\t\texpect(parseUserInput('028').join()).toEqual('00,28,');\n\t\t\texpect(parseUserInput('028a').join()).toEqual('00,28,AM');\n\t\t\texpect(parseUserInput('028aaa')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases', () => {\n\t\t\texpect(parseUserInput('2341T').join()).toEqual('11,41,PM');\n\t\t\texpect(parseUserInput('2341A').join()).toEqual('11,41,PM');\n\t\t\texpect(parseUserInput('99')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('A')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('$')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('0823AB').join()).toEqual('08,23,AM');\n\t\t\texpect(parseUserInput('0823QQQ')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('input rejection', () => {\n\t\t\texpect(parseUserInput('0823abcd')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('12345').join()).toEqual('12,34,');\n\t\t\texpect(parseUserInput('123456')).toBeNull(); // Reject\n\t\t});\n\t});\n});\n\ndescribe('toTimeFormat, stringToDate', () => {\n\tit('should return correct values', () => {\n\t\tlet time, date;\n\n\t\ttime = '00:00';\n\t\tdate = stringToDate(time);\n\t\texpect(toTimeFormat.hhmmxm(date)).toEqual('12:00 AM');\n\t\texpect(toTimeFormat.hhmm(date)).toEqual('00:00');\n\n\t\ttime = '11:11 PM';\n\t\tdate = stringToDate(time);\n\t\texpect(toTimeFormat.hhmmxm(date)).toEqual('11:11 PM');\n\t\texpect(toTimeFormat.hhmm(date)).toEqual('23:11');\n\t});\n});\n\ndescribe('getClosest', () => {\n\tit('should return correct values', () => {\n\t\tconst [maxTime, minTime, increment] = ['01:00', '02:00', 30];\n\t\tconst opts = fillDateRange(maxTime, minTime, increment).map((date) => ({\n\t\t\tvalue: date,\n\t\t\ttext: toTimeFormat.hhmmxm(date),\n\t\t}));\n\t\tlet time;\n\n\t\ttime = stringToDate('00:55');\n\t\texpect(getClosestIndexes(opts, time)).toBeNull();\n\n\t\ttime = stringToDate('01:00');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0]);\n\n\t\ttime = stringToDate('01:01');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0, 1]);\n\n\t\ttime = stringToDate('01:15');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0, 1]);\n\n\t\ttime = stringToDate('01:16');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([1, 0]);\n\n\t\ttime = stringToDate('02:01');\n\t\texpect(getClosestIndexes(opts, time)).toBeNull();\n\t});\n});\n\ndescribe('timezone utils', () => {\n\tit('dateToTime should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z'); // 00:00 UTC, XX:00 local\n\n\t\texpect(dateToTime(utc0, tz.utc, 'hh:mm')).toBe('00:00');\n\t\texpect(dateToTime(utc0, tz.akl, 'hh:mm')).toBe('13:00');\n\t\texpect(dateToTime(utc0, tz.seoul, 'hh:mm')).toBe('09:00');\n\t\texpect(dateToTime(utc0, tz.yrv, 'hh:mm')).toBe('04:00');\n\t\texpect(dateToTime(utc0, tz.la, 'hh:mm')).toBe('16:00');\n\t});\n\n\tit('timeToDate should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z');\n\n\t\tlet date;\n\n\t\tdate = timeToDate('10:30'); // Today, timezone is local\n\t\texpect(dateToTime(date)).toBe('10:30 AM');\n\n\t\tdate = timeToDate('10:30', tz.utc); // Today, timezone is UTC\n\t\texpect(dateToTime(date, tz.utc)).toBe('10:30 AM');\n\n\t\tdate = timeToDate('10:30 PM', tz.yrv); // Today, timezone is yrv\n\t\texpect(dateToTime(date, tz.yrv, 'hh:mm')).toBe('22:30');\n\n\t\tdate = timeToDate('10:30', tz.utc, utc0); // Date is 01/01/2023, timezone is UTC\n\t\texpect(dateToTime(date, tz.utc)).toBe('10:30 AM');\n\t\texpect(date.toISOString()).toBe('2023-01-01T10:30:00.000Z');\n\n\t\tdate = timeToDate('01:23 AM', tz.la, utc0); // Date is 01/01/2023 00:00 UTC, timezone is la (12/31/2022 16:00)\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('01:23');\n\t\texpect(date.toISOString()).toBe('2022-12-31T09:23:00.000Z'); // 09:23 UTC = 01:23 in la, e.g. prev day is correctly used\n\t});\n\n\tit('getReturnDate should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z'); // 00:00 UTC, XX:00 local\n\t\tconst d1 = timeToDate('10:30', tz.utc);\n\t\tconst d2 = timeToDate('22:30', tz.utc);\n\n\t\tlet date;\n\n\t\t// Test default values\n\t\tdate = getReturnDate('12:00 AM', '23:59 PM', undefined, tz.utc);\n\t\texpect(dateToTime(date, tz.utc)).toBe('12:00 AM');\n\n\t\t// Test min\n\t\tdate = getReturnDate(utc0, '05:30', undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la)).toBe('12:00 AM');\n\t\texpect(date.toISOString()).toBe('2022-12-31T08:00:00.000Z'); // 08:00 UTC = 00:00 la\n\n\t\t// Test max\n\t\tdate = getReturnDate('12:00 AM', d1, undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('00:00');\n\n\t\t// Test min > max\n\t\tdate = getReturnDate(d2, d1, undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('00:00');\n\n\t\t// Test value\n\t\tdate = getReturnDate('12:00 AM', '23:59 PM', utc0, tz.seoul);\n\t\texpect(dateToTime(date, tz.seoul, 'hh:mm')).toBe('00:00');\n\t\texpect(date.toISOString()).toBe('2022-12-31T15:00:00.000Z'); // 15:00 UTC = 00:00 seoul\n\t});\n});\n"]}
|
|
1
|
+
{"version":3,"file":"TimePickerUtils.test.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/TimePickerUtils.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tconsumeMinMax,\n\tcheckMinMax,\n\tfillDateRange,\n\ttoTimeFormat,\n\tparseUserInput,\n\tgetClosestIndexes,\n\tstringToDate,\n\tdateToTime,\n\ttimeToDate,\n\tgetReturnDate,\n\t/*\n\t * getClosestOption,\n\t * filteredOptions,\n\t */\n} from './';\n\n// Timezones\nconst tz = {\n\tutc: 'UTC',\n\takl: 'Pacific/Auckland', // UTC+13\n\tseoul: 'Asia/Seoul', // UTC+9\n\tyrv: 'Asia/Yerevan', // UTC+4\n\tla: 'America/Los_Angeles', // UTC-8\n};\n\ndescribe('TimePickerUtils', () => {\n\tconst [f1, f2] = ['hh:mm xm', 'hh:mm'];\n\n\tdescribe('consumeMinMax', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT;\n\n\t\t\t[minT, maxT] = ['01:00', '23:55'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('01:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:55');\n\n\t\t\t[minT, maxT] = ['01:01 PM', '11:56 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('13:01');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:56');\n\n\t\t\t[minT, maxT] = ['12:00 AM', '12:00 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('12:00');\n\n\t\t\tminT = new Date('2023-01-01T00:00:00Z');\n\t\t\tmaxT = new Date('2023-01-01T23:59:59Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:59');\n\n\t\t\t// min > max\n\t\t\tminT = '13:00';\n\t\t\tmaxT = new Date('2023-01-01T12:00:00Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('12:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('13:00');\n\n\t\t\t// min > max\n\t\t\tminT = new Date('2023-01-01T12:00:00Z');\n\t\t\tmaxT = '11:00';\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('11:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('12:00');\n\n\t\t\t// not same day\n\t\t\tminT = new Date('2023-02-01T08:00:00Z');\n\t\t\tmaxT = new Date('2023-01-01T07:00:00Z');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT, tz.utc).max).toEqual('23:59');\n\n\t\t\t// no timezone set\n\t\t\tminT = new Date('2023-01-01T00:00:00');\n\t\t\tmaxT = new Date('2023-01-01T23:59:59');\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\n\t\t\t[minT, maxT] = ['12:00 AM', '12:00 PM'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('12:00');\n\n\t\t\t/*\n\t\t\t * String bounds are clock times. A tenant zone does not shift them.\n\t\t\t */\n\t\t\texpect(consumeMinMax('01:00', '02:00', 'Asia/Tokyo')).toEqual({\n\t\t\t\tmin: '01:00',\n\t\t\t\tmax: '02:00',\n\t\t\t});\n\n\t\t\t// Empty timezone stays on the system zone, so same-day Date bounds keep their clock times.\n\t\t\texpect(\n\t\t\t\tconsumeMinMax(\n\t\t\t\t\tnew Date(2023, 0, 1, 9, 0),\n\t\t\t\t\tnew Date(2023, 0, 1, 17, 0),\n\t\t\t\t\t''\n\t\t\t\t)\n\t\t\t).toEqual({ min: '09:00', max: '17:00' });\n\n\t\t\t// undefined, null, wrong entry\n\t\t\t[minT, maxT] = [undefined, undefined];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\t[minT, maxT] = ['08:00', undefined];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\t[minT, maxT] = [undefined, '08:00'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('08:00');\n\t\t\tminT = new Date('2023-01-01T17:00:00');\n\t\t\tmaxT = null;\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('17:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t\tminT = null;\n\t\t\tmaxT = new Date('2023-01-01T17:00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('17:00');\n\t\t\t[minT, maxT] = ['test', '08:00'];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('00:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('08:00');\n\t\t\t[minT, maxT] = ['08:00', ''];\n\t\t\texpect(consumeMinMax(minT, maxT).min).toEqual('08:00');\n\t\t\texpect(consumeMinMax(minT, maxT).max).toEqual('23:59');\n\t\t});\n\t});\n\n\tdescribe('checkMinMax', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT;\n\n\t\t\t[minT, maxT] = ['01:00', '23:55'];\n\t\t\texpect(checkMinMax(minT, maxT, '23:54')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '23:55')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '23:56')).toEqual(false);\n\n\t\t\texpect(checkMinMax(maxT, minT, '23:54')).toEqual(true); // Reversed min-max test\n\n\t\t\t[minT, maxT] = ['01:00 am', '1:59 am'];\n\t\t\texpect(checkMinMax(minT, maxT, '23:58')).toEqual(false);\n\n\t\t\t[minT, maxT] = ['01:00 am', '1:59 am'];\n\t\t\texpect(checkMinMax(minT, maxT, '01:00')).toEqual(true);\n\n\t\t\t[minT, maxT] = ['22:22', '22:23'];\n\t\t\texpect(checkMinMax(minT, maxT, '10:21 pm')).toEqual(false);\n\t\t\texpect(checkMinMax(minT, maxT, '10:22 pm')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '10:23 pm')).toEqual(true);\n\t\t\texpect(checkMinMax(minT, maxT, '10:24 pm')).toEqual(false);\n\t\t});\n\t});\n\n\tdescribe('fillDateRange, toTimeFormat', () => {\n\t\tit('should return correct values', () => {\n\t\t\tlet minT, maxT, increment, range;\n\n\t\t\t[minT, maxT, increment] = ['00:00', '23:59', 1];\n\t\t\trange = fillDateRange(minT, maxT, increment);\n\t\t\texpect(range.length).toEqual(1440);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('12:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[1439])).toEqual('11:59 PM');\n\t\t\texpect(toTimeFormat(range[0], f1)).toEqual('12:00 AM');\n\t\t\texpect(toTimeFormat(range[1439], f1)).toEqual('11:59 PM');\n\t\t\t// Test 24-hour values\n\t\t\texpect(toTimeFormat.hhmm(range[0])).toEqual('00:00');\n\t\t\texpect(toTimeFormat.hhmm(range[1439])).toEqual('23:59');\n\t\t\texpect(toTimeFormat(range[0], f2)).toEqual('00:00');\n\t\t\texpect(toTimeFormat(range[1439], f2)).toEqual('23:59');\n\n\t\t\t[minT, maxT, increment] = ['08:00 AM', '10:00 AM', 5];\n\t\t\trange = fillDateRange(minT, maxT, increment);\n\t\t\texpect(range.length).toEqual(25);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('08:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[24])).toEqual('10:00 AM');\n\n\t\t\trange = fillDateRange(minT, maxT, increment); // Reversed min-max\n\t\t\texpect(range.length).toEqual(25);\n\t\t\texpect(toTimeFormat.hhmmxm(range[0])).toEqual('08:00 AM');\n\t\t\texpect(toTimeFormat.hhmmxm(range[24])).toEqual('10:00 AM');\n\n\t\t\t// Test string conversion to time\n\t\t\texpect(toTimeFormat.hhmmxm('1:23')).toEqual('01:23 AM');\n\t\t\texpect(toTimeFormat.hhmmxm('23:45')).toEqual('11:45 PM');\n\t\t\texpect(toTimeFormat.hhmmxm('8:088')).toEqual('08:08 AM');\n\t\t\texpect(toTimeFormat.hhmmxm('88:88')).toBeNull(); // Reject\n\t\t\t// Test 24-hour values\n\t\t\texpect(toTimeFormat.hhmm('1:23')).toEqual('01:23');\n\t\t\texpect(toTimeFormat.hhmm('23:45')).toEqual('23:45');\n\t\t\texpect(toTimeFormat.hhmm('8:088')).toEqual('08:08');\n\t\t\texpect(toTimeFormat.hhmm('88:88')).toBeNull(); // Reject\n\t\t});\n\t});\n\n\tdescribe('parseUserInput', () => {\n\t\tit('empty string', () => {\n\t\t\texpect(parseUserInput('')).toBeNull();\n\t\t});\n\n\t\tit('core logic 1 (no colon)', () => {\n\t\t\texpect(parseUserInput('2').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('23').join()).toEqual('11,00,PM');\n\t\t\texpect(parseUserInput('24').join()).toEqual('12,00,AM');\n\t\t\texpect(parseUserInput('25')).toBeNull(); // Reject hour value from range 25-99\n\t\t\texpect(parseUserInput('99')).toBeNull();\n\t\t\texpect(parseUserInput('234').join()).toEqual('02,34,');\n\t\t\texpect(parseUserInput('2341').join()).toEqual('11,41,PM');\n\n\t\t\texpect(parseUserInput('2341a').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123p').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341am').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123pm').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341aa').join()).toEqual('11,41,PM'); // Hours are stronger\n\t\t\texpect(parseUserInput('0123pp').join()).toEqual('01,23,PM');\n\n\t\t\texpect(parseUserInput('2341aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('2341ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('core logic 2 (with leading zero)', () => {\n\t\t\texpect(parseUserInput('0').join()).toEqual('12,00,');\n\t\t\texpect(parseUserInput('02').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('023').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('0234').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('0234a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('0234p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('0234am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('0234pm').join()).toEqual('02,34,PM');\n\t\t});\n\n\t\tit('core logic 3 (with colon)', () => {\n\t\t\texpect(parseUserInput('2').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('2:3').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('2:34').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('2:34a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('2:34p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('2:34am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('2:34pm').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('2:4am').join()).toEqual('02,40,AM');\n\t\t\texpect(parseUserInput('2:4pm').join()).toEqual('02,40,PM');\n\n\t\t\texpect(parseUserInput('2:4aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('2:4ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('core logic 4 (with colon and zero)', () => {\n\t\t\texpect(parseUserInput('02:').join()).toEqual('02,00,');\n\t\t\texpect(parseUserInput('02:3').join()).toEqual('02,30,');\n\t\t\texpect(parseUserInput('02:34').join()).toEqual('02,34,');\n\n\t\t\texpect(parseUserInput('02:34a').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('02:34p').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('02:34am').join()).toEqual('02,34,AM');\n\t\t\texpect(parseUserInput('02:34pm').join()).toEqual('02,34,PM');\n\n\t\t\texpect(parseUserInput('02:34aaa')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('02:34ppp')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases, 122 vs 1220', () => {\n\t\t\texpect(parseUserInput('122').join()).toEqual('01,22,');\n\t\t\texpect(parseUserInput('122a').join()).toEqual('01,22,AM');\n\t\t\texpect(parseUserInput('122aaa')).toBeNull(); // Reject\n\n\t\t\texpect(parseUserInput('1220').join()).toEqual('12,20,');\n\t\t\texpect(parseUserInput('1220aaa')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases, 028 vs 0280', () => {\n\t\t\texpect(parseUserInput('028').join()).toEqual('00,28,');\n\t\t\texpect(parseUserInput('028a').join()).toEqual('00,28,AM');\n\t\t\texpect(parseUserInput('028aaa')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('edge cases', () => {\n\t\t\texpect(parseUserInput('2341T').join()).toEqual('11,41,PM');\n\t\t\texpect(parseUserInput('2341A').join()).toEqual('11,41,PM');\n\t\t\texpect(parseUserInput('99')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('A')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('$')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('0823AB').join()).toEqual('08,23,AM');\n\t\t\texpect(parseUserInput('0823QQQ')).toBeNull(); // Reject\n\t\t});\n\n\t\tit('input rejection', () => {\n\t\t\texpect(parseUserInput('0823abcd')).toBeNull(); // Reject\n\t\t\texpect(parseUserInput('12345').join()).toEqual('12,34,');\n\t\t\texpect(parseUserInput('123456')).toBeNull(); // Reject\n\t\t});\n\t});\n});\n\ndescribe('toTimeFormat, stringToDate', () => {\n\tit('should return correct values', () => {\n\t\tlet time, date;\n\n\t\ttime = '00:00';\n\t\tdate = stringToDate(time);\n\t\texpect(toTimeFormat.hhmmxm(date)).toEqual('12:00 AM');\n\t\texpect(toTimeFormat.hhmm(date)).toEqual('00:00');\n\n\t\ttime = '11:11 PM';\n\t\tdate = stringToDate(time);\n\t\texpect(toTimeFormat.hhmmxm(date)).toEqual('11:11 PM');\n\t\texpect(toTimeFormat.hhmm(date)).toEqual('23:11');\n\t});\n});\n\ndescribe('getClosest', () => {\n\tit('should return correct values', () => {\n\t\tconst [maxTime, minTime, increment] = ['01:00', '02:00', 30];\n\t\tconst opts = fillDateRange(maxTime, minTime, increment).map((date) => ({\n\t\t\tvalue: date,\n\t\t\ttext: toTimeFormat.hhmmxm(date),\n\t\t}));\n\t\tlet time;\n\n\t\ttime = stringToDate('00:55');\n\t\texpect(getClosestIndexes(opts, time)).toBeNull();\n\n\t\ttime = stringToDate('01:00');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0]);\n\n\t\ttime = stringToDate('01:01');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0, 1]);\n\n\t\ttime = stringToDate('01:15');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([0, 1]);\n\n\t\ttime = stringToDate('01:16');\n\t\texpect(getClosestIndexes(opts, time)).toEqual([1, 0]);\n\n\t\ttime = stringToDate('02:01');\n\t\texpect(getClosestIndexes(opts, time)).toBeNull();\n\t});\n});\n\ndescribe('timezone utils', () => {\n\tit('dateToTime should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z'); // 00:00 UTC, XX:00 local\n\n\t\texpect(dateToTime(utc0, tz.utc, 'hh:mm')).toBe('00:00');\n\t\texpect(dateToTime(utc0, tz.akl, 'hh:mm')).toBe('13:00');\n\t\texpect(dateToTime(utc0, tz.seoul, 'hh:mm')).toBe('09:00');\n\t\texpect(dateToTime(utc0, tz.yrv, 'hh:mm')).toBe('04:00');\n\t\texpect(dateToTime(utc0, tz.la, 'hh:mm')).toBe('16:00');\n\t});\n\n\tit('timeToDate should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z');\n\n\t\tlet date;\n\n\t\tdate = timeToDate('10:30'); // Today, timezone is local\n\t\texpect(dateToTime(date)).toBe('10:30 AM');\n\n\t\tdate = timeToDate('10:30', tz.utc); // Today, timezone is UTC\n\t\texpect(dateToTime(date, tz.utc)).toBe('10:30 AM');\n\n\t\tdate = timeToDate('10:30 PM', tz.yrv); // Today, timezone is yrv\n\t\texpect(dateToTime(date, tz.yrv, 'hh:mm')).toBe('22:30');\n\n\t\tdate = timeToDate('10:30', tz.utc, utc0); // Date is 01/01/2023, timezone is UTC\n\t\texpect(dateToTime(date, tz.utc)).toBe('10:30 AM');\n\t\texpect(date.toISOString()).toBe('2023-01-01T10:30:00.000Z');\n\n\t\tdate = timeToDate('01:23 AM', tz.la, utc0); // Date is 01/01/2023 00:00 UTC, timezone is la (12/31/2022 16:00)\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('01:23');\n\t\texpect(date.toISOString()).toBe('2022-12-31T09:23:00.000Z'); // 09:23 UTC = 01:23 in la, e.g. prev day is correctly used\n\t});\n\n\tit('getReturnDate should return correct values', () => {\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z'); // 00:00 UTC, XX:00 local\n\t\tconst d1 = timeToDate('10:30', tz.utc);\n\t\tconst d2 = timeToDate('22:30', tz.utc);\n\n\t\tlet date;\n\n\t\t// Test default values\n\t\tdate = getReturnDate('12:00 AM', '23:59 PM', undefined, tz.utc);\n\t\texpect(dateToTime(date, tz.utc)).toBe('12:00 AM');\n\n\t\t// Test min\n\t\tdate = getReturnDate(utc0, '05:30', undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la)).toBe('12:00 AM');\n\t\texpect(date.toISOString()).toBe('2022-12-31T08:00:00.000Z'); // 08:00 UTC = 00:00 la\n\n\t\t// Test max\n\t\tdate = getReturnDate('12:00 AM', d1, undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('00:00');\n\n\t\t// Test min > max\n\t\tdate = getReturnDate(d2, d1, undefined, tz.la);\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('00:00');\n\n\t\t// Test value\n\t\tdate = getReturnDate('12:00 AM', '23:59 PM', utc0, tz.seoul);\n\t\texpect(dateToTime(date, tz.seoul, 'hh:mm')).toBe('00:00');\n\t\texpect(date.toISOString()).toBe('2022-12-31T15:00:00.000Z'); // 15:00 UTC = 00:00 seoul\n\t});\n});\n\nconst OriginalDateTimeFormat = Intl.DateTimeFormat;\n\nconst mockMissingBrowserTimeZone = () => {\n\tjest.spyOn(Intl, 'DateTimeFormat').mockImplementation(((\n\t\tlocales?: string | string[],\n\t\toptions?: Intl.DateTimeFormatOptions\n\t) => {\n\t\tconst formatter = new OriginalDateTimeFormat(locales, options);\n\t\tif (!options?.timeZone) {\n\t\t\tconst resolved = formatter.resolvedOptions.bind(formatter);\n\t\t\t(formatter as { resolvedOptions: () => unknown }).resolvedOptions =\n\t\t\t\t() => ({\n\t\t\t\t\t...resolved(),\n\t\t\t\t\ttimeZone: undefined,\n\t\t\t\t});\n\t\t}\n\t\treturn formatter;\n\t}) as typeof Intl.DateTimeFormat);\n};\n\ndescribe('when resolvedOptions().timeZone is undefined', () => {\n\tbeforeEach(() => {\n\t\tmockMissingBrowserTimeZone();\n\t\tjest.spyOn(console, 'warn').mockImplementation(() => undefined);\n\t});\n\n\tafterEach(() => {\n\t\tjest.restoreAllMocks();\n\t});\n\n\tconst loadTimezoneUtils = () => {\n\t\tlet utils: typeof import('./timezoneUtils');\n\t\tjest.isolateModules(() => {\n\t\t\tutils = require('./timezoneUtils');\n\t\t});\n\t\treturn utils;\n\t};\n\n\tit('normalizes the browser zone to undefined and formats in the system zone', () => {\n\t\tconst { dateToTime, localTimezone, timeToDate } = loadTimezoneUtils();\n\t\tconst localMidnight = new Date(2023, 0, 1, 0, 0);\n\n\t\texpect(localTimezone).toBeUndefined();\n\t\texpect(() => dateToTime(localMidnight)).not.toThrow();\n\t\texpect(dateToTime(localMidnight, undefined, 'hh:mm')).toBe('00:00');\n\n\t\tconst date = timeToDate('10:30', undefined);\n\t\texpect(date.getHours()).toBe(10);\n\t\texpect(date.getMinutes()).toBe(30);\n\t\texpect(dateToTime(date, undefined)).toBe('10:30 AM');\n\t});\n\n\tit('still converts a valid tenant timezone', () => {\n\t\tconst { dateToTime, timeToDate } = loadTimezoneUtils();\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z');\n\n\t\texpect(dateToTime(utc0, tz.la, 'hh:mm')).toBe('16:00');\n\n\t\tconst date = timeToDate('01:23 AM', tz.la, utc0);\n\t\texpect(dateToTime(date, tz.la, 'hh:mm')).toBe('01:23');\n\t\texpect(date.toISOString()).toBe('2022-12-31T09:23:00.000Z');\n\t});\n\n\tit('keeps string min and max as clock times', () => {\n\t\tconst { consumeMinMax } = loadTimezoneUtils();\n\n\t\texpect(consumeMinMax('01:00', '02:00', 'Asia/Tokyo')).toEqual({\n\t\t\tmin: '01:00',\n\t\t\tmax: '02:00',\n\t\t});\n\t\texpect(consumeMinMax('08:00', undefined, undefined)).toEqual({\n\t\t\tmin: '08:00',\n\t\t\tmax: '23:59',\n\t\t});\n\t});\n\n\tit('does not throw when the timezone name is invalid', () => {\n\t\tconst { dateToTime, timeToDate } = loadTimezoneUtils();\n\t\tconst utc0 = new Date('2023-01-01T00:00:00Z');\n\n\t\texpect(dateToTime(utc0, 'Not/AZone')).toBeUndefined();\n\t\texpect(timeToDate('10:30', 'Not/AZone')).toBeUndefined();\n\t});\n});\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Browser IANA zone, or undefined when the environment does not report one. */
|
|
1
2
|
export declare const localTimezone: string;
|
|
2
3
|
export declare const timeToDate: (time: string, tz?: string, baseDate?: Date) => Date;
|
|
3
4
|
export declare const dateToTime: (d: Date, tz?: string, format?: string) => string;
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { DateTime } from 'luxon';
|
|
2
2
|
import moment from 'moment';
|
|
3
3
|
import { isValidDate } from './utils';
|
|
4
|
-
|
|
4
|
+
/** Browser IANA zone, or undefined when the environment does not report one. */
|
|
5
|
+
export const localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone || undefined;
|
|
5
6
|
const isValidTimeZone = (tz) => {
|
|
6
|
-
if (!
|
|
7
|
-
|
|
8
|
-
}
|
|
7
|
+
if (!tz)
|
|
8
|
+
return false;
|
|
9
9
|
try {
|
|
10
|
-
Intl.DateTimeFormat(undefined, { timeZone: tz });
|
|
11
|
-
return
|
|
10
|
+
const formatter = new Intl.DateTimeFormat(undefined, { timeZone: tz });
|
|
11
|
+
return Boolean(formatter);
|
|
12
12
|
}
|
|
13
13
|
catch (ex) {
|
|
14
14
|
return false;
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Interpret a JS Date in the system zone, then move it only when `tz` is a
|
|
19
|
+
* real IANA zone. A missing browser zone stays on the system offset.
|
|
20
|
+
*/
|
|
21
|
+
const dateTimeFromJSDate = (date, tz) => {
|
|
22
|
+
const dateTime = DateTime.fromJSDate(date);
|
|
23
|
+
return tz && isValidTimeZone(tz) ? dateTime.setZone(tz) : dateTime;
|
|
24
|
+
};
|
|
17
25
|
const parseTimeString = (str) => {
|
|
18
26
|
if (typeof str === 'string') {
|
|
19
27
|
const date = moment(str, ['h:m a', 'H:m']).toDate();
|
|
@@ -28,10 +36,9 @@ export const timeToDate = (time, tz = localTimezone, baseDate) => {
|
|
|
28
36
|
console.warn(`@servicetitan/design-system: Invalid timezone "${tz}"`);
|
|
29
37
|
return undefined;
|
|
30
38
|
}
|
|
31
|
-
//
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
: DateTime.fromJSDate(baseDate).setZone(tz);
|
|
39
|
+
// Instant in the system zone, moved only when `tz` is a valid IANA zone.
|
|
40
|
+
const base = DateTime.fromJSDate(baseDate !== null && baseDate !== void 0 ? baseDate : new Date());
|
|
41
|
+
const d = tz && isValidTimeZone(tz) ? base.setZone(tz) : base;
|
|
35
42
|
const t = parseTimeString(time); // '11:22 AM' → Date
|
|
36
43
|
if (!t)
|
|
37
44
|
return undefined;
|
|
@@ -48,9 +55,7 @@ export const dateToTime = (d, tz = localTimezone, format = 'hh:mm xm') => {
|
|
|
48
55
|
}
|
|
49
56
|
if (format !== 'hh:mm xm' && format !== 'hh:mm')
|
|
50
57
|
console.warn(`@servicetitan/design-system: dateToTime() invalid format "${format}", usind "hh:mm"`);
|
|
51
|
-
|
|
52
|
-
if (tz && isValidTimeZone(tz))
|
|
53
|
-
dateTime = DateTime.fromJSDate(d).setZone(tz);
|
|
58
|
+
const dateTime = dateTimeFromJSDate(d, tz);
|
|
54
59
|
return dateTime.setLocale('en-US').toLocaleString({
|
|
55
60
|
hour: '2-digit',
|
|
56
61
|
minute: '2-digit',
|
|
@@ -108,8 +113,13 @@ export const consumeMinMax = (min, max, tz = localTimezone) => {
|
|
|
108
113
|
};
|
|
109
114
|
const sameDay = (d1, d2, tz) => {
|
|
110
115
|
var _a, _b;
|
|
111
|
-
|
|
112
|
-
|
|
116
|
+
/*
|
|
117
|
+
* "" is not a zone. Treat it like a missing name so both dates stay
|
|
118
|
+
* in the system zone. An invalid name still produces an invalid DateTime.
|
|
119
|
+
*/
|
|
120
|
+
const zone = tz || undefined;
|
|
121
|
+
const date1 = (_a = DateTime.fromJSDate(d1)) === null || _a === void 0 ? void 0 : _a.setZone(zone);
|
|
122
|
+
const date2 = (_b = DateTime.fromJSDate(d2)) === null || _b === void 0 ? void 0 : _b.setZone(zone);
|
|
113
123
|
return date1 && date2 && date1.hasSame(date2, 'day');
|
|
114
124
|
};
|
|
115
125
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timezoneUtils.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/timezoneUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;AAE9E,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE;IACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE;QAC/D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;KACpE;IAED,IAAI;QACH,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;KACZ;IAAC,OAAO,EAAE,EAAE;QACZ,OAAO,KAAK,CAAC;KACb;AACF,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,GAAW,EAAQ,EAAE;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACpD,IAAI,WAAW,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,IAAI,CACX,gEAAgE,EAChE,GAAG,CACH,CAAC;IACF,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,IAAY,EACZ,EAAE,GAAG,aAAa,EAClB,QAAe,EACR,EAAE;IACT,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;KACjB;IAED,8DAA8D;IAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ;QAClB,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB;IACrD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;IAEpF,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACzB,CAAO,EACP,EAAE,GAAG,aAAa,EAClB,MAAM,GAAG,UAAU,EACV,EAAE;IACX,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;QAC/B,OAAO,CAAC,IAAI,CACX,mEAAmE,EAAE,EAAE,CACvE,CAAC;QACF,OAAO,SAAS,CAAC;KACjB;IAED,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,OAAO;QAC9C,OAAO,CAAC,IAAI,CACX,6DAA6D,MAAM,kBAAkB,CACrF,CAAC;IAEH,IAAI,QAAQ,CAAC;IAEb,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,CAAC;QAC5B,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE/C,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;QACjD,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;KAChD,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,GAAkB,EAClB,GAAkB,EAClB,EAAE,GAAG,aAAa,EACa,EAAE;IACjC,IAAI,MAAM,EAAE,MAAM,CAAC;IAEnB,uCAAuC;IACvC,IAAI,WAAW,CAAC,GAAW,CAAC,IAAI,WAAW,CAAC,GAAW,CAAC,EAAE;QACzD,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE;YAC1B,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;SAC9C;aAAM;YACN,mDAAmD;YACnD,OAAO,CAAC,IAAI,CACX,kDAAkD,GAAG,YAAY,GAAG,4CAA4C,CAChH,CAAC;YACF,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,GAAG,OAAO,CAAC;SACjB;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;KACpC;IAED,6BAA6B;IAC7B,IAAI,WAAW,CAAC,GAAW,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE;QACvD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,OAAO,CAAC;QAEjB,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,GAAW,CAAC,EAAE;YAC/C,sBAAsB;YACtB,MAAM,GAAG,OAAO,CAAC;YACjB,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;SAC9C;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;KACpC;IAED,6BAA6B;IAC7B,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,IAAI,WAAW,CAAC,GAAW,CAAC,EAAE;QACvD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAI,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,GAAW,CAAC,EAAE;YAC/C,sBAAsB;YACtB,MAAM,GAAG,UAAU,CAAC,GAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,GAAG,OAAO,CAAC;SACjB;QACD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;KACpC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAa,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,eAAe,CAAC,GAAa,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;SAC9B,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpD,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAAO,EAAE,EAAO,EAAE,EAAU,EAAW,EAAE;;IACzD,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,0CAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnD,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC5B,GAAkB,EAClB,GAAkB,EAClB,KAAY,EACZ,EAAE,GAAG,aAAa,EACX,EAAE;IACT,IAAI,UAAU,CAAC;IAEf,IAAI,WAAW,CAAC,GAAW,CAAC,EAAE;QAC7B,UAAU,GAAG,GAAG,CAAC;QACjB,IAAI,WAAW,CAAC,GAAW,CAAC,EAAE;YAC7B,IAAI,GAAG,GAAG,GAAG;gBAAE,UAAU,GAAG,GAAG,CAAC;SAChC;KACD;SAAM,IAAI,WAAW,CAAC,GAAW,CAAC,EAAE;QACpC,UAAU,GAAG,GAAG,CAAC;KACjB;SAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;QAC9B,UAAU,GAAG,KAAK,CAAC;KACnB;SAAM;QACN,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;KACxB;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,UAAkB,CAAC,CAAC;IAExD,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC","sourcesContent":["import { DateTime } from 'luxon';\nimport moment from 'moment';\nimport { isValidDate } from './utils';\n\nexport const localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\nconst isValidTimeZone = (tz: string) => {\n\tif (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {\n\t\tthrow new Error('Time zones are not available in this environment');\n\t}\n\n\ttry {\n\t\tIntl.DateTimeFormat(undefined, { timeZone: tz });\n\t\treturn true;\n\t} catch (ex) {\n\t\treturn false;\n\t}\n};\n\nconst parseTimeString = (str: string): Date => {\n\tif (typeof str === 'string') {\n\t\tconst date = moment(str, ['h:m a', 'H:m']).toDate();\n\t\tif (isValidDate(date)) return new Date(date);\n\t}\n\tconsole.warn(\n\t\t`@servicetitan/design-system: parseTimeString(val) invalid val:`,\n\t\tstr\n\t);\n\treturn null;\n};\n\nexport const timeToDate = (\n\ttime: string,\n\ttz = localTimezone,\n\tbaseDate?: Date\n): Date => {\n\tif (tz && !isValidTimeZone(tz)) {\n\t\tconsole.warn(`@servicetitan/design-system: Invalid timezone \"${tz}\"`);\n\t\treturn undefined;\n\t}\n\n\t// Date to return time within, now or based on `date` provided\n\tconst d = !baseDate\n\t\t? DateTime.now().setZone(tz)\n\t\t: DateTime.fromJSDate(baseDate).setZone(tz);\n\n\tconst t = parseTimeString(time); // '11:22 AM' → Date\n\tif (!t) return undefined;\n\n\tconst [h, m] = [t.getHours(), t.getMinutes()];\n\tconst result = d.set({ hour: h, minute: m, second: 0, millisecond: 0 }); // Rounding\n\n\treturn result.toJSDate();\n};\n\nexport const dateToTime = (\n\td: Date,\n\ttz = localTimezone,\n\tformat = 'hh:mm xm'\n): string => {\n\tif (!d || !isValidDate(d)) return undefined;\n\n\tif (tz && !isValidTimeZone(tz)) {\n\t\tconsole.warn(\n\t\t\t`@servicetitan/design-system: dateToTime() has invalid timezone: ${tz}`\n\t\t);\n\t\treturn undefined;\n\t}\n\n\tif (format !== 'hh:mm xm' && format !== 'hh:mm')\n\t\tconsole.warn(\n\t\t\t`@servicetitan/design-system: dateToTime() invalid format \"${format}\", usind \"hh:mm\"`\n\t\t);\n\n\tlet dateTime;\n\n\tif (tz && isValidTimeZone(tz))\n\t\tdateTime = DateTime.fromJSDate(d).setZone(tz);\n\n\treturn dateTime.setLocale('en-US').toLocaleString({\n\t\thour: '2-digit',\n\t\tminute: '2-digit',\n\t\thourCycle: format !== 'hh:mm xm' ? 'h23' : 'h12',\n\t});\n};\n\n// Returns {min, max} as 24-hour strings within timezone provided\nexport const consumeMinMax = (\n\tmin: Date | string,\n\tmax: Date | string,\n\ttz = localTimezone\n): { min: string; max: string } => {\n\tlet minStr, maxStr;\n\n\t// both min & max are instances of Date\n\tif (isValidDate(min as Date) && isValidDate(max as Date)) {\n\t\tif (sameDay(min, max, tz)) {\n\t\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t\tmaxStr = dateToTime(max as Date, tz, 'hh:mm');\n\t\t} else {\n\t\t\t// min and max are valid and not same day → use min\n\t\t\tconsole.warn(\n\t\t\t\t`@servicetitan/design-system: TimePicker's min (${min}) & max (${max}) are not in the same day, using max=23:59`\n\t\t\t);\n\t\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t\tmaxStr = '23:59';\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// min is Date, max is string\n\tif (isValidDate(min as Date) && !(max instanceof Date)) {\n\t\tconst realMax = parseTimeString(max) ? max : '23:59';\n\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\tmaxStr = realMax;\n\n\t\tif (min > timeToDate(realMax, tz, min as Date)) {\n\t\t\t// Reversing min & max\n\t\t\tminStr = realMax;\n\t\t\tmaxStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// min is string, max is Date\n\tif (!(min instanceof Date) && isValidDate(max as Date)) {\n\t\tconst realMin = parseTimeString(min) ? min : '00:00';\n\t\tminStr = realMin;\n\t\tmaxStr = dateToTime(max as Date, tz, 'hh:mm');\n\n\t\tif (max < timeToDate(realMin, tz, max as Date)) {\n\t\t\t// Reversing min & max\n\t\t\tminStr = dateToTime(max as Date, tz, 'hh:mm');\n\t\t\tmaxStr = realMin;\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// both min & max are strings\n\tconst minDate = parseTimeString(min as string) || parseTimeString('00:00');\n\tconst maxDate = parseTimeString(max as string) || parseTimeString('23:59');\n\tconst dates = [minDate, maxDate]\n\t\t.sort()\n\t\t.map((d) => dateToTime(d, localTimezone, 'hh:mm'));\n\n\treturn { min: dates[0], max: dates[1] };\n};\n\nconst sameDay = (d1: any, d2: any, tz: string): boolean => {\n\tconst date1 = DateTime.fromJSDate(d1)?.setZone(tz);\n\tconst date2 = DateTime.fromJSDate(d2)?.setZone(tz);\n\n\treturn date1 && date2 && date1.hasSame(date2, 'day');\n};\n\n/**\n * Prioity:\n * 1. min, if min is Date, if not...\n * 2. max, if max is Date, if not...\n * 3. value, if defined, if not...\n * 4. today @ timezone\n */\nexport const getReturnDate = (\n\tmin: Date | string,\n\tmax: Date | string,\n\tvalue?: Date,\n\ttz = localTimezone\n): Date => {\n\tlet returnDate;\n\n\tif (isValidDate(min as Date)) {\n\t\treturnDate = min;\n\t\tif (isValidDate(max as Date)) {\n\t\t\tif (min > max) returnDate = max;\n\t\t}\n\t} else if (isValidDate(max as Date)) {\n\t\treturnDate = max;\n\t} else if (isValidDate(value)) {\n\t\treturnDate = value;\n\t} else {\n\t\treturnDate = new Date();\n\t}\n\n\tconst res = timeToDate('00:00', tz, returnDate as Date);\n\n\treturn res;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"timezoneUtils.js","sourceRoot":"","sources":["../../../../src/components/TimePicker/utils/timezoneUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import { DateTime } from 'luxon';\nimport moment from 'moment';\nimport { isValidDate } from './utils';\n\n/** Browser IANA zone, or undefined when the environment does not report one. */\nexport const localTimezone =\n\tIntl.DateTimeFormat().resolvedOptions().timeZone || undefined;\n\nconst isValidTimeZone = (tz?: string): boolean => {\n\tif (!tz) return false;\n\n\ttry {\n\t\tconst formatter = new Intl.DateTimeFormat(undefined, { timeZone: tz });\n\t\treturn Boolean(formatter);\n\t} catch (ex) {\n\t\treturn false;\n\t}\n};\n\n/**\n * Interpret a JS Date in the system zone, then move it only when `tz` is a\n * real IANA zone. A missing browser zone stays on the system offset.\n */\nconst dateTimeFromJSDate = (date: Date, tz?: string): DateTime => {\n\tconst dateTime = DateTime.fromJSDate(date);\n\treturn tz && isValidTimeZone(tz) ? dateTime.setZone(tz) : dateTime;\n};\n\nconst parseTimeString = (str: string): Date => {\n\tif (typeof str === 'string') {\n\t\tconst date = moment(str, ['h:m a', 'H:m']).toDate();\n\t\tif (isValidDate(date)) return new Date(date);\n\t}\n\tconsole.warn(\n\t\t`@servicetitan/design-system: parseTimeString(val) invalid val:`,\n\t\tstr\n\t);\n\treturn null;\n};\n\nexport const timeToDate = (\n\ttime: string,\n\ttz = localTimezone,\n\tbaseDate?: Date\n): Date => {\n\tif (tz && !isValidTimeZone(tz)) {\n\t\tconsole.warn(`@servicetitan/design-system: Invalid timezone \"${tz}\"`);\n\t\treturn undefined;\n\t}\n\n\t// Instant in the system zone, moved only when `tz` is a valid IANA zone.\n\tconst base = DateTime.fromJSDate(baseDate ?? new Date());\n\tconst d = tz && isValidTimeZone(tz) ? base.setZone(tz) : base;\n\n\tconst t = parseTimeString(time); // '11:22 AM' → Date\n\tif (!t) return undefined;\n\n\tconst [h, m] = [t.getHours(), t.getMinutes()];\n\tconst result = d.set({ hour: h, minute: m, second: 0, millisecond: 0 }); // Rounding\n\n\treturn result.toJSDate();\n};\n\nexport const dateToTime = (\n\td: Date,\n\ttz = localTimezone,\n\tformat = 'hh:mm xm'\n): string => {\n\tif (!d || !isValidDate(d)) return undefined;\n\n\tif (tz && !isValidTimeZone(tz)) {\n\t\tconsole.warn(\n\t\t\t`@servicetitan/design-system: dateToTime() has invalid timezone: ${tz}`\n\t\t);\n\t\treturn undefined;\n\t}\n\n\tif (format !== 'hh:mm xm' && format !== 'hh:mm')\n\t\tconsole.warn(\n\t\t\t`@servicetitan/design-system: dateToTime() invalid format \"${format}\", usind \"hh:mm\"`\n\t\t);\n\n\tconst dateTime = dateTimeFromJSDate(d, tz);\n\n\treturn dateTime.setLocale('en-US').toLocaleString({\n\t\thour: '2-digit',\n\t\tminute: '2-digit',\n\t\thourCycle: format !== 'hh:mm xm' ? 'h23' : 'h12',\n\t});\n};\n\n// Returns {min, max} as 24-hour strings within timezone provided\nexport const consumeMinMax = (\n\tmin: Date | string,\n\tmax: Date | string,\n\ttz = localTimezone\n): { min: string; max: string } => {\n\tlet minStr, maxStr;\n\n\t// both min & max are instances of Date\n\tif (isValidDate(min as Date) && isValidDate(max as Date)) {\n\t\tif (sameDay(min, max, tz)) {\n\t\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t\tmaxStr = dateToTime(max as Date, tz, 'hh:mm');\n\t\t} else {\n\t\t\t// min and max are valid and not same day → use min\n\t\t\tconsole.warn(\n\t\t\t\t`@servicetitan/design-system: TimePicker's min (${min}) & max (${max}) are not in the same day, using max=23:59`\n\t\t\t);\n\t\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t\tmaxStr = '23:59';\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// min is Date, max is string\n\tif (isValidDate(min as Date) && !(max instanceof Date)) {\n\t\tconst realMax = parseTimeString(max) ? max : '23:59';\n\t\tminStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\tmaxStr = realMax;\n\n\t\tif (min > timeToDate(realMax, tz, min as Date)) {\n\t\t\t// Reversing min & max\n\t\t\tminStr = realMax;\n\t\t\tmaxStr = dateToTime(min as Date, tz, 'hh:mm');\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// min is string, max is Date\n\tif (!(min instanceof Date) && isValidDate(max as Date)) {\n\t\tconst realMin = parseTimeString(min) ? min : '00:00';\n\t\tminStr = realMin;\n\t\tmaxStr = dateToTime(max as Date, tz, 'hh:mm');\n\n\t\tif (max < timeToDate(realMin, tz, max as Date)) {\n\t\t\t// Reversing min & max\n\t\t\tminStr = dateToTime(max as Date, tz, 'hh:mm');\n\t\t\tmaxStr = realMin;\n\t\t}\n\t\treturn { min: minStr, max: maxStr };\n\t}\n\n\t// both min & max are strings\n\tconst minDate = parseTimeString(min as string) || parseTimeString('00:00');\n\tconst maxDate = parseTimeString(max as string) || parseTimeString('23:59');\n\tconst dates = [minDate, maxDate]\n\t\t.sort()\n\t\t.map((d) => dateToTime(d, localTimezone, 'hh:mm'));\n\n\treturn { min: dates[0], max: dates[1] };\n};\n\nconst sameDay = (d1: any, d2: any, tz: string): boolean => {\n\t/*\n\t * \"\" is not a zone. Treat it like a missing name so both dates stay\n\t * in the system zone. An invalid name still produces an invalid DateTime.\n\t */\n\tconst zone = tz || undefined;\n\tconst date1 = DateTime.fromJSDate(d1)?.setZone(zone);\n\tconst date2 = DateTime.fromJSDate(d2)?.setZone(zone);\n\n\treturn date1 && date2 && date1.hasSame(date2, 'day');\n};\n\n/**\n * Prioity:\n * 1. min, if min is Date, if not...\n * 2. max, if max is Date, if not...\n * 3. value, if defined, if not...\n * 4. today @ timezone\n */\nexport const getReturnDate = (\n\tmin: Date | string,\n\tmax: Date | string,\n\tvalue?: Date,\n\ttz = localTimezone\n): Date => {\n\tlet returnDate;\n\n\tif (isValidDate(min as Date)) {\n\t\treturnDate = min;\n\t\tif (isValidDate(max as Date)) {\n\t\t\tif (min > max) returnDate = max;\n\t\t}\n\t} else if (isValidDate(max as Date)) {\n\t\treturnDate = max;\n\t} else if (isValidDate(value)) {\n\t\treturnDate = value;\n\t} else {\n\t\treturnDate = new Date();\n\t}\n\n\tconst res = timeToDate('00:00', tz, returnDate as Date);\n\n\treturn res;\n};\n"]}
|
package/dist/global/index.css
CHANGED
package/dist/global/version.css
CHANGED