@popsure/dirty-swan 0.49.1 → 0.49.2
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/cjs/index.js +43 -43
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/components/comparisonTable/hooks/useComparisonTable.d.ts +0 -1
- package/dist/cjs/lib/components/dateSelector/index.d.ts +2 -0
- package/dist/esm/components/comparisonTable/components/TableArrows/index.js +6 -4
- package/dist/esm/components/comparisonTable/components/TableArrows/index.js.map +1 -1
- package/dist/esm/components/comparisonTable/index.js +14 -25
- package/dist/esm/components/comparisonTable/index.js.map +1 -1
- package/dist/esm/components/dateSelector/index.js +23 -15
- package/dist/esm/components/dateSelector/index.js.map +1 -1
- package/dist/esm/components/dateSelector/index.test.js +36 -2
- package/dist/esm/components/dateSelector/index.test.js.map +1 -1
- package/dist/esm/lib/components/comparisonTable/hooks/useComparisonTable.d.ts +0 -1
- package/dist/esm/lib/components/dateSelector/index.d.ts +2 -0
- package/package.json +3 -3
- package/src/lib/components/comparisonTable/components/TableArrows/index.tsx +2 -2
- package/src/lib/components/comparisonTable/components/TableArrows/style.module.scss +4 -6
- package/src/lib/components/comparisonTable/hooks/useComparisonTable.ts +0 -19
- package/src/lib/components/comparisonTable/index.tsx +3 -4
- package/src/lib/components/dateSelector/index.test.tsx +32 -2
- package/src/lib/components/dateSelector/index.tsx +40 -21
|
@@ -67,21 +67,22 @@ var defaultPlaceholders = {
|
|
|
67
67
|
yearFormat: "YYYY",
|
|
68
68
|
error: "Please enter a valid date"
|
|
69
69
|
};
|
|
70
|
-
var isDateValid = function (date, yearBoundaries) {
|
|
70
|
+
var isDateValid = function (date, yearBoundaries, dateObject) {
|
|
71
71
|
var _a = yearBoundaries.min, min = _a === void 0 ? 0 : _a, _b = yearBoundaries.max, max = _b === void 0 ? 0 : _b;
|
|
72
72
|
if (!date) {
|
|
73
|
-
return { isValid: false,
|
|
73
|
+
return { isValid: false, errorType: 'default' };
|
|
74
74
|
}
|
|
75
|
+
var isValidYear = (dateObject === null || dateObject === void 0 ? void 0 : dateObject.year) && String(dateObject === null || dateObject === void 0 ? void 0 : dateObject.year).length === 4;
|
|
75
76
|
if (max && dayjs(date).isAfter(max + "-01-01", 'year')) {
|
|
76
|
-
return { isValid: false,
|
|
77
|
+
return { isValid: false, errorType: isValidYear ? 'afterMax' : 'default' };
|
|
77
78
|
}
|
|
78
79
|
if (min && dayjs(date).isBefore(min + "-01-01", 'year')) {
|
|
79
|
-
return { isValid: false,
|
|
80
|
+
return { isValid: false, errorType: isValidYear ? 'beforeMin' : 'default' };
|
|
80
81
|
}
|
|
81
|
-
var
|
|
82
|
+
var isValidDate = dayjs(date, COLLECTABLE_DATE_FORMAT, true).isValid();
|
|
82
83
|
return {
|
|
83
|
-
isValid:
|
|
84
|
-
|
|
84
|
+
isValid: isValidDate,
|
|
85
|
+
errorType: 'default'
|
|
85
86
|
};
|
|
86
87
|
};
|
|
87
88
|
var DateSelector = function (_a) {
|
|
@@ -95,9 +96,9 @@ var DateSelector = function (_a) {
|
|
|
95
96
|
useEffect(function () {
|
|
96
97
|
var calendarDateValue = value ? isoStringtoCalendarDate(value) : undefined;
|
|
97
98
|
if (value !== calendarDateValue && (calendarDateValue === null || calendarDateValue === void 0 ? void 0 : calendarDateValue.day) && (calendarDateValue === null || calendarDateValue === void 0 ? void 0 : calendarDateValue.month) && (calendarDateValue === null || calendarDateValue === void 0 ? void 0 : calendarDateValue.year)) {
|
|
98
|
-
var _a = isDateValid(value, yearBoundaries), isValid = _a.isValid,
|
|
99
|
+
var _a = isDateValid(value, yearBoundaries, calendarDateValue), isValid = _a.isValid, errorType = _a.errorType;
|
|
99
100
|
setInternalValue(calendarDateValue);
|
|
100
|
-
setHasError(isValid ? undefined :
|
|
101
|
+
setHasError(isValid ? undefined : errorType);
|
|
101
102
|
setIsDirty(true);
|
|
102
103
|
}
|
|
103
104
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -111,13 +112,16 @@ var DateSelector = function (_a) {
|
|
|
111
112
|
month: tempValue.month || 0,
|
|
112
113
|
year: tempValue.year || 0,
|
|
113
114
|
});
|
|
114
|
-
var _b = isDateValid(formattedDate, yearBoundaries), isValid = _b.isValid,
|
|
115
|
-
|
|
115
|
+
var _b = isDateValid(formattedDate, yearBoundaries, tempValue), isValid = _b.isValid, errorType = _b.errorType;
|
|
116
|
+
var isDateInValidFormat = dayjs(formattedDate, COLLECTABLE_DATE_FORMAT, true).isValid();
|
|
117
|
+
if (isDateInValidFormat) {
|
|
116
118
|
setIsDirty(true);
|
|
117
119
|
}
|
|
118
|
-
setHasError(isValid ? undefined :
|
|
119
|
-
onChange(isValid ? formattedDate : "");
|
|
120
|
+
setHasError(isValid ? undefined : errorType);
|
|
120
121
|
setIsCalendarOpen(false);
|
|
122
|
+
if (isDateInValidFormat || isDirty) {
|
|
123
|
+
onChange(isValid ? formattedDate : "");
|
|
124
|
+
}
|
|
121
125
|
};
|
|
122
126
|
var handleOnKeyDown = function (event, index) {
|
|
123
127
|
var _a, _b, _c;
|
|
@@ -172,7 +176,7 @@ var DateSelector = function (_a) {
|
|
|
172
176
|
};
|
|
173
177
|
var getInputProps = function (key, index) {
|
|
174
178
|
var _a, _b;
|
|
175
|
-
return (__assign({ 'data-cy': "date-selector-" + key, 'data-testid': "date-selector-" + key, className: styles[key + "Input"], id: key, name: key, maxLength: key === 'year' ? 4 : 2, required: true, label: placeholders === null || placeholders === void 0 ? void 0 : placeholders[key], placeholder: (_a = placeholders === null || placeholders === void 0 ? void 0 : placeholders[key + "Format"]) !== null && _a !== void 0 ? _a : "", labelInsideInput: true, value: (_b = internalValue[key]) !== null && _b !== void 0 ? _b : '', error:
|
|
179
|
+
return (__assign({ 'data-cy': "date-selector-" + key, 'data-testid': "date-selector-" + key, className: styles[key + "Input"], id: key, name: key, maxLength: key === 'year' ? 4 : 2, required: true, label: placeholders === null || placeholders === void 0 ? void 0 : placeholders[key], placeholder: (_a = placeholders === null || placeholders === void 0 ? void 0 : placeholders[key + "Format"]) !== null && _a !== void 0 ? _a : "", labelInsideInput: true, value: (_b = internalValue[key]) !== null && _b !== void 0 ? _b : '', error: hasError && isDirty, type: "text", inputMode: "numeric", ref: function (el) { itemsRef.current[index] = el; }, onKeyUp: function (event) { return handleOnKeyUp(event, index); }, onKeyDown: function (event) { return handleOnKeyDown(event, index); }, onChange: function (_a) {
|
|
176
180
|
var target = _a.target;
|
|
177
181
|
return handleOnChange(key, target.value);
|
|
178
182
|
} }, (inputProps === null || inputProps === void 0 ? void 0 : inputProps(key)) || {}));
|
|
@@ -181,7 +185,11 @@ var DateSelector = function (_a) {
|
|
|
181
185
|
jsx(Input, __assign({}, getInputProps('month', 1)), void 0)] }), void 0),
|
|
182
186
|
jsx(Input, __assign({}, getInputProps('year', 2)), void 0)] }), void 0),
|
|
183
187
|
jsx(Calendar, { dateFormat: COLLECTABLE_DATE_FORMAT, yearBoundaries: yearBoundaries, displayCalendar: displayCalendar, dayjsLocale: dayjsLocale, firstDayOfWeek: firstDayOfWeek, isOpen: isCalendarOpen, setCalendarOpen: setIsCalendarOpen, value: value, onChange: onChange }, void 0)] }), void 0),
|
|
184
|
-
hasError && isDirty && (jsx("p", __assign({ className: "p-p--small tc-red-500 w100 mt8"
|
|
188
|
+
hasError && isDirty && (jsx("p", __assign({ className: classNames(hasError && isDirty ? 'd-block' : 'd-none', "p-p--small tc-red-500 w100 mt8"), "data-testid": "date-error-message" }, { children: {
|
|
189
|
+
default: placeholders.error,
|
|
190
|
+
afterMax: placeholders.errorAfterMaxYear || "Please choose a date before " + (yearBoundaries.max + 1),
|
|
191
|
+
beforeMin: placeholders.errorBeforeMinYear || "Please choose a date after " + (yearBoundaries.min - 1),
|
|
192
|
+
}[hasError || "default"] }), void 0))] }, void 0));
|
|
185
193
|
};
|
|
186
194
|
|
|
187
195
|
export { DateSelector };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../node_modules/dayjs/plugin/localeData.js","../../../../node_modules/dayjs/plugin/customParseFormat.js","../../../../../src/lib/util/zeroFill.ts","../../../../../src/lib/util/calendarDate/index.ts","../../../../../src/lib/components/dateSelector/index.tsx"],"sourcesContent":["!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.substr(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_customParseFormat=e()}(this,(function(){\"use strict\";var t={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},e=/(\\[[^[]*\\])|([-:/.()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^\\s\\d-_:/()]+/,o={},s=function(t){return(t=+t)+(t>68?1900:2e3)};var a=function(t){return function(e){this[t]=+e}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if(\"Z\"===t)return 0;var e=t.match(/([+-]|\\d\\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:\"+\"===e[0]?-n:n}(t)}],u=function(t){var e=o[t];return e&&(e.indexOf?e:e.s.concat(e.f))},h=function(t,e){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(t.indexOf(r(i,0,e))>-1){n=i>12;break}}else n=t===(e?\"pm\":\"PM\");return n},d={A:[i,function(t){this.afternoon=h(t,!1)}],a:[i,function(t){this.afternoon=h(t,!0)}],S:[/\\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\\d{3}/,function(t){this.milliseconds=+t}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(t){var e=o.ordinal,n=t.match(/\\d+/);if(this.day=n[0],e)for(var r=1;r<=31;r+=1)e(r).replace(/\\[|\\]/g,\"\")===t&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(t){var e=u(\"months\"),n=(u(\"monthsShort\")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(t){var e=u(\"months\").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(t){this.year=s(t)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var o=r&&r.toUpperCase();return n||i[r]||t[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),a=s.length,f=0;f<a;f+=1){var u=s[f],h=d[u],c=h&&h[0],l=h&&h[1];s[f]=l?{regex:c,parser:l}:u.replace(/^\\[|\\]$/g,\"\")}return function(t){for(var e={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,u=t.substr(r),h=o.exec(u)[0];f.call(e,h),t=t.replace(h,\"\")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(s=t.parseTwoDigitYear);var r=e.prototype,i=r.parse;r.parse=function(t){var e=t.date,r=t.utc,s=t.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],u=!0===s[3],h=f||u,d=s[2];u&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(t,e,n){try{if([\"x\",\"X\"].indexOf(e)>-1)return new Date((\"X\"===e?1e3:1)*t);var r=c(e)(t),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,u=r.seconds,h=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=u||0,g=h||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(t){return new Date(\"\")}}(e,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),h&&e!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,t)}}}));","export function zerofill(input: number, size: number = 2) {\n let toReturn = String(input);\n while (toReturn.length < size) {\n toReturn = '0' + toReturn;\n }\n return toReturn;\n}\n","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { CalendarDate } from '@popsure/public-models';\n\nimport { zerofill } from '../../util/zeroFill';\n\ndayjs.extend(customParseFormat);\n\nexport function calendarDateToISODate(calendarDate: CalendarDate) {\n return `${calendarDate.year}-${zerofill(calendarDate.month)}-${zerofill(\n calendarDate.day\n )}`;\n}\n\nexport function isoStringtoCalendarDate(\n input: string\n): CalendarDate | undefined {\n const date = dayjs(input, 'YYYY-MM-DD');\n const dateValidity = dayjs(input, 'YYYY-MM-DD', true).isValid();\n\n if (dateValidity === false) {\n return;\n }\n\n const year = date.year();\n const month = date.get('month');\n const day = date.date();\n\n return { year, month: month + 1, day };\n}\n","import { useState, useEffect, ChangeEvent, useRef, KeyboardEvent } from 'react';\nimport dayjs from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport { CalendarDate } from '@popsure/public-models';\n\nimport {\n calendarDateToISODate,\n isoStringtoCalendarDate,\n} from '../../util/calendarDate';\n\nimport styles from './style.module.scss';\nimport { Input, InputProps } from '../input';\nimport classNames from 'classnames';\nimport { Calendar } from './components/Calendar';\n\ndayjs.extend(localeData);\nconst COLLECTABLE_DATE_FORMAT = 'YYYY-MM-DD';\ntype FormatPlaceholder = 'dayFormat' | 'monthFormat' | 'yearFormat';\n\ninterface DateSelectorInputProps extends InputProps {\n 'data-cy': string;\n 'data-testid': string;\n ref: (el: HTMLInputElement) => void;\n}\n\nexport interface DateSelectorProps {\n value?: string;\n onChange: (date: string) => void;\n yearBoundaries: { min: number; max: number };\n displayCalendar?: boolean;\n dayjsLocale?: ILocale;\n placeholders?: {\n day?: string;\n dayFormat?: string;\n month?: string;\n monthFormat?: string;\n year?: string;\n yearFormat?: string;\n error?: string;\n };\n firstDayOfWeek?: number;\n inputProps?: (key: keyof CalendarDate) => Partial<DateSelectorInputProps>;\n}\n\nconst defaultPlaceholders: DateSelectorProps[\"placeholders\"] = {\n day: \"Day\",\n dayFormat: \"DD\",\n month: \"Month\",\n monthFormat: \"MM\",\n year: \"Year\",\n yearFormat: \"YYYY\",\n error: \"Please enter a valid date\"\n}\n\ntype ErrorField = 'all' | 'day' | 'month' | 'year' | undefined;\n\nconst isDateValid = (\n date: string | undefined,\n yearBoundaries: DateSelectorProps[\"yearBoundaries\"]\n): {\n isValid: boolean;\n field?: ErrorField;\n} => {\n const { min = 0, max = 0 } = yearBoundaries;\n\n if (!date) {\n return { isValid: false, field: 'all' };\n }\n\n if (max && dayjs(date).isAfter(`${max}-01-01`, 'year')) { \n return { isValid: false, field: 'year' };\n }\n \n if (min && dayjs(date).isBefore(`${min}-01-01`, 'year')) { \n return { isValid: false, field: 'year' };\n }\n \n const isDateValid = dayjs(date, COLLECTABLE_DATE_FORMAT, true).isValid();\n\n return {\n isValid: isDateValid,\n field: isDateValid ? undefined : 'all',\n };\n}\n\nexport const DateSelector = ({\n value,\n onChange,\n placeholders: placeholdersProps,\n yearBoundaries,\n displayCalendar,\n dayjsLocale,\n firstDayOfWeek = 0,\n inputProps,\n}: DateSelectorProps) => {\n const placeholders = {\n ...defaultPlaceholders,\n ...placeholdersProps\n }\n\n const itemsRef = useRef<HTMLInputElement[]>([]);\n const [isDirty, setIsDirty] = useState(false);\n const [hasError, setHasError] = useState<ErrorField>();\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<Partial<CalendarDate>>({});\n\n useEffect(() => {\n const calendarDateValue = value ? isoStringtoCalendarDate(value) : undefined;\n\n if(value !== calendarDateValue && calendarDateValue?.day && calendarDateValue?.month && calendarDateValue?.year) {\n const { isValid, field } = isDateValid(value, yearBoundaries)\n setInternalValue(calendarDateValue)\n setHasError(isValid ? undefined : field);\n setIsDirty(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]); \n\n\n const handleOnChange = (key: keyof CalendarDate, v?: string) => {\n const tempValue = { ...internalValue, [key]: v || undefined };\n setInternalValue(tempValue);\n\n const formattedDate = calendarDateToISODate({\n day: tempValue.day || 0,\n month: tempValue.month || 0,\n year: tempValue.year || 0,\n })\n \n const { isValid, field } = isDateValid(formattedDate, yearBoundaries);\n\n if (dayjs(formattedDate, COLLECTABLE_DATE_FORMAT, true).isValid()) {\n setIsDirty(true);\n }\n\n setHasError(isValid ? undefined : field);\n onChange(isValid ? formattedDate : \"\");\n setIsCalendarOpen(false);\n };\n\n const handleOnKeyDown = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n const currentInput = itemsRef.current?.[index];\n const inputSelectionStart = currentInput?.selectionStart;\n const inputSelectionEnd = currentInput?.selectionEnd;\n\n if (\n // is not day input\n index > 0 &&\n // has clicked backspace or arrow left\n ['Backspace', \"ArrowLeft\"].includes(event.key) && \n // is focused at the first character of the input\n inputSelectionStart === 0 && inputSelectionEnd === 0\n ) {\n const prevInput = itemsRef.current?.[index - 1];\n\n event.preventDefault();\n prevInput?.focus();\n prevInput?.setSelectionRange(0, 3);\n }\n\n if (\n // is not year input\n index < 2\n // has clicked arrow right\n && event.key === \"ArrowRight\"\n // is focused at the last character of the input value\n && inputSelectionStart === currentInput.value.length\n ) {\n const nextInput = itemsRef.current?.[index + 1];\n \n event.preventDefault();\n nextInput?.focus();\n nextInput?.setSelectionRange(0, index === 1 ? 4 : 3);\n }\n }\n\n const handleOnKeyUp = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n const currentInput = itemsRef.current?.[index];\n const inputSelectionStart = currentInput?.selectionStart;\n\n if (\n // is not year input\n index < 2\n // is a number key\n && /^\\d+$/.test(event.key)\n && (\n // is focused at the last character of the input value\n inputSelectionStart === currentInput.maxLength \n // or month value is over 1 or day value is over 3\n || Number(currentInput.value) > (index === 1 ? 1 : 3)\n )\n ) {\n const nextInput = itemsRef.current?.[index + 1];\n \n event.preventDefault();\n event.stopPropagation();\n \n nextInput?.focus();\n nextInput?.setSelectionRange(0, index === 1 ? 4 : 3);\n }\n }\n\n const getInputProps = (key: keyof CalendarDate, index: number): DateSelectorInputProps => ({\n 'data-cy': `date-selector-${key}`,\n 'data-testid': `date-selector-${key}`,\n className: styles[`${key}Input`],\n id: key,\n name: key,\n maxLength: key === 'year' ? 4 : 2,\n required: true,\n label: placeholders?.[key],\n placeholder: placeholders?.[`${key}Format` as FormatPlaceholder] ?? \"\",\n labelInsideInput: true,\n value: internalValue[key] ?? '',\n error: (hasError && [key, 'all'].includes(hasError)) && isDirty,\n type: \"text\", \n inputMode: \"numeric\",\n ref: (el: HTMLInputElement) => { itemsRef.current[index] = el }, \n onKeyUp: (event: KeyboardEvent<HTMLInputElement>) => handleOnKeyUp(event, index),\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => handleOnKeyDown(event, index),\n onChange: ({ target }: ChangeEvent<HTMLInputElement>) => handleOnChange(key, target.value),\n ...inputProps?.(key) || {},\n });\n\n return (\n <div>\n <div className=\"d-flex ai-center\">\n <div className={classNames(styles.container, \"d-flex gap8\")}>\n <div className={\"d-flex gap8 jc-between\"}>\n <Input {...getInputProps('day', 0)} />\n\n <Input {...getInputProps('month', 1)} />\n </div>\n\n <Input {...getInputProps('year', 2)} />\n </div>\n\n <Calendar\n dateFormat={COLLECTABLE_DATE_FORMAT}\n yearBoundaries={yearBoundaries}\n displayCalendar={displayCalendar}\n dayjsLocale={dayjsLocale}\n firstDayOfWeek={firstDayOfWeek}\n isOpen={isCalendarOpen}\n setCalendarOpen={setIsCalendarOpen}\n value={value}\n onChange={onChange}\n />\n </div>\n\n {hasError && isDirty && (\n <p className=\"p-p--small tc-red-500 w100 mt8\">\n {placeholders.error}\n </p>\n )}\n </div>\n );\n};\n"],"names":["this","_jsxs","_jsx"],"mappings":"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AC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CA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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../node_modules/dayjs/plugin/localeData.js","../../../../node_modules/dayjs/plugin/customParseFormat.js","../../../../../src/lib/util/zeroFill.ts","../../../../../src/lib/util/calendarDate/index.ts","../../../../../src/lib/components/dateSelector/index.tsx"],"sourcesContent":["!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.substr(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_customParseFormat=e()}(this,(function(){\"use strict\";var t={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},e=/(\\[[^[]*\\])|([-:/.()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^\\s\\d-_:/()]+/,o={},s=function(t){return(t=+t)+(t>68?1900:2e3)};var a=function(t){return function(e){this[t]=+e}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if(\"Z\"===t)return 0;var e=t.match(/([+-]|\\d\\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:\"+\"===e[0]?-n:n}(t)}],u=function(t){var e=o[t];return e&&(e.indexOf?e:e.s.concat(e.f))},h=function(t,e){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(t.indexOf(r(i,0,e))>-1){n=i>12;break}}else n=t===(e?\"pm\":\"PM\");return n},d={A:[i,function(t){this.afternoon=h(t,!1)}],a:[i,function(t){this.afternoon=h(t,!0)}],S:[/\\d/,function(t){this.milliseconds=100*+t}],SS:[n,function(t){this.milliseconds=10*+t}],SSS:[/\\d{3}/,function(t){this.milliseconds=+t}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(t){var e=o.ordinal,n=t.match(/\\d+/);if(this.day=n[0],e)for(var r=1;r<=31;r+=1)e(r).replace(/\\[|\\]/g,\"\")===t&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(t){var e=u(\"months\"),n=(u(\"monthsShort\")||e.map((function(t){return t.substr(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(t){var e=u(\"months\").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(t){this.year=s(t)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,r){var o=r&&r.toUpperCase();return n||i[r]||t[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),a=s.length,f=0;f<a;f+=1){var u=s[f],h=d[u],c=h&&h[0],l=h&&h[1];s[f]=l?{regex:c,parser:l}:u.replace(/^\\[|\\]$/g,\"\")}return function(t){for(var e={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,u=t.substr(r),h=o.exec(u)[0];f.call(e,h),t=t.replace(h,\"\")}}return function(t){var e=t.afternoon;if(void 0!==e){var n=t.hours;e?n<12&&(t.hours+=12):12===n&&(t.hours=0),delete t.afternoon}}(e),e}}return function(t,e,n){n.p.customParseFormat=!0,t&&t.parseTwoDigitYear&&(s=t.parseTwoDigitYear);var r=e.prototype,i=r.parse;r.parse=function(t){var e=t.date,r=t.utc,s=t.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],u=!0===s[3],h=f||u,d=s[2];u&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(t,e,n){try{if([\"x\",\"X\"].indexOf(e)>-1)return new Date((\"X\"===e?1e3:1)*t);var r=c(e)(t),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,u=r.seconds,h=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=u||0,g=h||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(t){return new Date(\"\")}}(e,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),h&&e!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,t)}}}));","export function zerofill(input: number, size: number = 2) {\n let toReturn = String(input);\n while (toReturn.length < size) {\n toReturn = '0' + toReturn;\n }\n return toReturn;\n}\n","import dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { CalendarDate } from '@popsure/public-models';\n\nimport { zerofill } from '../../util/zeroFill';\n\ndayjs.extend(customParseFormat);\n\nexport function calendarDateToISODate(calendarDate: CalendarDate) {\n return `${calendarDate.year}-${zerofill(calendarDate.month)}-${zerofill(\n calendarDate.day\n )}`;\n}\n\nexport function isoStringtoCalendarDate(\n input: string\n): CalendarDate | undefined {\n const date = dayjs(input, 'YYYY-MM-DD');\n const dateValidity = dayjs(input, 'YYYY-MM-DD', true).isValid();\n\n if (dateValidity === false) {\n return;\n }\n\n const year = date.year();\n const month = date.get('month');\n const day = date.date();\n\n return { year, month: month + 1, day };\n}\n","import { useState, useEffect, ChangeEvent, useRef, KeyboardEvent } from 'react';\nimport dayjs from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport { CalendarDate } from '@popsure/public-models';\n\nimport {\n calendarDateToISODate,\n isoStringtoCalendarDate,\n} from '../../util/calendarDate';\n\nimport styles from './style.module.scss';\nimport { Input, InputProps } from '../input';\nimport classNames from 'classnames';\nimport { Calendar } from './components/Calendar';\n\ndayjs.extend(localeData);\nconst COLLECTABLE_DATE_FORMAT = 'YYYY-MM-DD';\ntype FormatPlaceholder = 'dayFormat' | 'monthFormat' | 'yearFormat';\n\ninterface DateSelectorInputProps extends InputProps {\n 'data-cy': string;\n 'data-testid': string;\n ref: (el: HTMLInputElement) => void;\n}\n\nexport interface DateSelectorProps {\n value?: string;\n onChange: (date: string) => void;\n yearBoundaries: { min: number; max: number };\n displayCalendar?: boolean;\n dayjsLocale?: ILocale;\n placeholders?: {\n day?: string;\n dayFormat?: string;\n month?: string;\n monthFormat?: string;\n year?: string;\n yearFormat?: string;\n error?: string;\n errorBeforeMinYear?: string;\n errorAfterMaxYear?: string;\n };\n firstDayOfWeek?: number;\n inputProps?: (key: keyof CalendarDate) => Partial<DateSelectorInputProps>;\n}\n\nconst defaultPlaceholders: DateSelectorProps[\"placeholders\"] = {\n day: \"Day\",\n dayFormat: \"DD\",\n month: \"Month\",\n monthFormat: \"MM\",\n year: \"Year\",\n yearFormat: \"YYYY\",\n error: \"Please enter a valid date\"\n}\n\ntype ErrorType = 'afterMax' | 'beforeMin' | 'default';\n\nconst isDateValid = (\n date: string | undefined,\n yearBoundaries: DateSelectorProps[\"yearBoundaries\"],\n dateObject: Partial<CalendarDate>,\n): {\n isValid: boolean;\n errorType?: ErrorType;\n} => {\n const { min = 0, max = 0 } = yearBoundaries;\n \n if (!date) {\n return { isValid: false, errorType: 'default' };\n }\n\n const isValidYear = dateObject?.year && String(dateObject?.year).length === 4;\n\n if (max && dayjs(date).isAfter(`${max}-01-01`, 'year')) { \n return { isValid: false, errorType: isValidYear ? 'afterMax' : 'default' };\n }\n \n if (min && dayjs(date).isBefore(`${min}-01-01`, 'year')) { \n return { isValid: false, errorType: isValidYear ? 'beforeMin' : 'default' };\n }\n \n const isValidDate = dayjs(date, COLLECTABLE_DATE_FORMAT, true).isValid();\n\n return {\n isValid: isValidDate,\n errorType: 'default'\n };\n}\n\nexport const DateSelector = ({\n value,\n onChange,\n placeholders: placeholdersProps,\n yearBoundaries,\n displayCalendar,\n dayjsLocale,\n firstDayOfWeek = 0,\n inputProps,\n}: DateSelectorProps) => {\n const placeholders = {\n ...defaultPlaceholders,\n ...placeholdersProps\n }\n\n const itemsRef = useRef<HTMLInputElement[]>([]);\n const [isDirty, setIsDirty] = useState(false);\n const [hasError, setHasError] = useState<ErrorType>();\n const [isCalendarOpen, setIsCalendarOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<Partial<CalendarDate>>({});\n\n useEffect(() => {\n const calendarDateValue = value ? isoStringtoCalendarDate(value) : undefined;\n\n if(value !== calendarDateValue && calendarDateValue?.day && calendarDateValue?.month && calendarDateValue?.year) {\n const { isValid, errorType } = isDateValid(value, yearBoundaries, calendarDateValue)\n setInternalValue(calendarDateValue)\n setHasError(isValid ? undefined : errorType);\n setIsDirty(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]); \n\n\n const handleOnChange = (key: keyof CalendarDate, v?: string) => {\n const tempValue = { ...internalValue, [key]: v || undefined };\n setInternalValue(tempValue);\n\n const formattedDate = calendarDateToISODate({\n day: tempValue.day || 0,\n month: tempValue.month || 0,\n year: tempValue.year || 0,\n })\n \n const { isValid, errorType } = isDateValid(formattedDate, yearBoundaries, tempValue);\n const isDateInValidFormat = dayjs(formattedDate, COLLECTABLE_DATE_FORMAT, true).isValid();\n \n if (isDateInValidFormat) {\n setIsDirty(true);\n }\n\n setHasError(isValid ? undefined : errorType);\n setIsCalendarOpen(false);\n\n if (isDateInValidFormat || isDirty) {\n onChange(isValid ? formattedDate : \"\");\n }\n };\n\n const handleOnKeyDown = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n const currentInput = itemsRef.current?.[index];\n const inputSelectionStart = currentInput?.selectionStart;\n const inputSelectionEnd = currentInput?.selectionEnd;\n\n if (\n // is not day input\n index > 0 &&\n // has clicked backspace or arrow left\n ['Backspace', \"ArrowLeft\"].includes(event.key) && \n // is focused at the first character of the input\n inputSelectionStart === 0 && inputSelectionEnd === 0\n ) {\n const prevInput = itemsRef.current?.[index - 1];\n\n event.preventDefault();\n prevInput?.focus();\n prevInput?.setSelectionRange(0, 3);\n }\n\n if (\n // is not year input\n index < 2\n // has clicked arrow right\n && event.key === \"ArrowRight\"\n // is focused at the last character of the input value\n && inputSelectionStart === currentInput.value.length\n ) {\n const nextInput = itemsRef.current?.[index + 1];\n \n event.preventDefault();\n nextInput?.focus();\n nextInput?.setSelectionRange(0, index === 1 ? 4 : 3);\n }\n }\n\n const handleOnKeyUp = (event: KeyboardEvent<HTMLInputElement>, index: number) => {\n const currentInput = itemsRef.current?.[index];\n const inputSelectionStart = currentInput?.selectionStart;\n\n if (\n // is not year input\n index < 2\n // is a number key\n && /^\\d+$/.test(event.key)\n && (\n // is focused at the last character of the input value\n inputSelectionStart === currentInput.maxLength \n // or month value is over 1 or day value is over 3\n || Number(currentInput.value) > (index === 1 ? 1 : 3)\n )\n ) {\n const nextInput = itemsRef.current?.[index + 1];\n \n event.preventDefault();\n event.stopPropagation();\n \n nextInput?.focus();\n nextInput?.setSelectionRange(0, index === 1 ? 4 : 3);\n }\n }\n\n const getInputProps = (key: keyof CalendarDate, index: number): DateSelectorInputProps => ({\n 'data-cy': `date-selector-${key}`,\n 'data-testid': `date-selector-${key}`,\n className: styles[`${key}Input`],\n id: key,\n name: key,\n maxLength: key === 'year' ? 4 : 2,\n required: true,\n label: placeholders?.[key],\n placeholder: placeholders?.[`${key}Format` as FormatPlaceholder] ?? \"\",\n labelInsideInput: true,\n value: internalValue[key] ?? '',\n error: hasError && isDirty,\n type: \"text\", \n inputMode: \"numeric\",\n ref: (el: HTMLInputElement) => { itemsRef.current[index] = el }, \n onKeyUp: (event: KeyboardEvent<HTMLInputElement>) => handleOnKeyUp(event, index),\n onKeyDown: (event: KeyboardEvent<HTMLInputElement>) => handleOnKeyDown(event, index),\n onChange: ({ target }: ChangeEvent<HTMLInputElement>) => handleOnChange(key, target.value),\n ...inputProps?.(key) || {},\n });\n\n return (\n <div>\n <div className=\"d-flex ai-center\">\n <div className={classNames(styles.container, \"d-flex gap8\")}>\n <div className={\"d-flex gap8 jc-between\"}>\n <Input {...getInputProps('day', 0)} />\n\n <Input {...getInputProps('month', 1)} />\n </div>\n\n <Input {...getInputProps('year', 2)} />\n </div>\n\n <Calendar\n dateFormat={COLLECTABLE_DATE_FORMAT}\n yearBoundaries={yearBoundaries}\n displayCalendar={displayCalendar}\n dayjsLocale={dayjsLocale}\n firstDayOfWeek={firstDayOfWeek}\n isOpen={isCalendarOpen}\n setCalendarOpen={setIsCalendarOpen}\n value={value}\n onChange={onChange}\n />\n </div>\n\n {hasError && isDirty && (\n <p \n className={classNames(\n hasError && isDirty ? 'd-block' : 'd-none',\n \"p-p--small tc-red-500 w100 mt8\"\n )}\n data-testid=\"date-error-message\"\n >\n {{\n default: placeholders.error,\n afterMax: placeholders.errorAfterMaxYear || `Please choose a date before ${yearBoundaries.max + 1}`,\n beforeMin: placeholders.errorBeforeMinYear || `Please choose a date after ${yearBoundaries.min - 1}`,\n }[hasError || \"default\"]}\n </p>\n )}\n </div>\n );\n};\n"],"names":["this","_jsxs","_jsx"],"mappings":"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AC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CA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AE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CA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"}
|
|
@@ -76,7 +76,7 @@ describe('DateSelector component', function () {
|
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
}); });
|
|
79
|
-
it('should call onChange
|
|
79
|
+
it('should not call onChange when there is an invalid date that has not been completely filled', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
80
80
|
var callback, _a, getByLabelText, user;
|
|
81
81
|
return __generator(this, function (_b) {
|
|
82
82
|
switch (_b.label) {
|
|
@@ -87,11 +87,45 @@ describe('DateSelector component', function () {
|
|
|
87
87
|
case 1:
|
|
88
88
|
_b.sent();
|
|
89
89
|
expect(getByLabelText('Day')).toHaveValue('5');
|
|
90
|
-
expect(callback).
|
|
90
|
+
expect(callback).not.toHaveBeenCalled();
|
|
91
|
+
return [4 /*yield*/, user.type(getByLabelText('Month'), '4')];
|
|
92
|
+
case 2:
|
|
93
|
+
_b.sent();
|
|
94
|
+
expect(getByLabelText('Month')).toHaveValue('4');
|
|
95
|
+
expect(callback).not.toHaveBeenCalled();
|
|
96
|
+
return [4 /*yield*/, user.type(getByLabelText('Year'), '2020')];
|
|
97
|
+
case 3:
|
|
98
|
+
_b.sent();
|
|
99
|
+
expect(getByLabelText('Year')).toHaveValue('2020');
|
|
100
|
+
expect(callback).toHaveBeenCalledWith("2020-04-05");
|
|
91
101
|
return [2 /*return*/];
|
|
92
102
|
}
|
|
93
103
|
});
|
|
94
104
|
}); });
|
|
105
|
+
it('should show error boundaries error for min date onChange empty when year out of boundaries', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
var callback, date, getByTestId;
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
callback = jest.fn();
|
|
109
|
+
date = '2010-01-01';
|
|
110
|
+
getByTestId = setup(date, callback).getByTestId;
|
|
111
|
+
expect(getByTestId('date-error-message')).toBeVisible();
|
|
112
|
+
expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date after 2019');
|
|
113
|
+
expect(callback).not.toHaveBeenCalled();
|
|
114
|
+
return [2 /*return*/];
|
|
115
|
+
});
|
|
116
|
+
}); });
|
|
117
|
+
it('should show error boundaries error for ,ax date onChange empty when year out of boundaries', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
118
|
+
var callback, date, getByTestId;
|
|
119
|
+
return __generator(this, function (_a) {
|
|
120
|
+
callback = jest.fn();
|
|
121
|
+
date = '2100-01-01';
|
|
122
|
+
getByTestId = setup(date, callback).getByTestId;
|
|
123
|
+
expect(getByTestId('date-error-message')).toBeVisible();
|
|
124
|
+
expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date before 2026');
|
|
125
|
+
expect(callback).not.toHaveBeenCalled();
|
|
126
|
+
return [2 /*return*/];
|
|
127
|
+
});
|
|
128
|
+
}); });
|
|
95
129
|
it('should call onChange empty when year out of boundaries', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
96
130
|
var callback, date, _a, getByLabelText, user;
|
|
97
131
|
return __generator(this, function (_b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/dateSelector/index.test.tsx"],"sourcesContent":["import { render } from '../../util/testUtils';\n\nimport { DateSelector } from '.';\n\nconst setup = (date?: string, onChange: (date: string) => void = () => {}) => {\n return render(\n <DateSelector\n value={date}\n yearBoundaries={{ min: 2020, max: 2025 }}\n onChange={onChange}\n displayCalendar\n />\n );\n};\n\ndescribe('DateSelector component', () => {\n it('should show the value inside the inputs', () => {\n const date = '2024-01-01';\n const { getByLabelText } = setup(date);\n\n expect(getByLabelText('Day')).toHaveValue('1');\n expect(getByLabelText('Month')).toHaveValue('1');\n expect(getByLabelText('Year')).toHaveValue('2024');\n });\n\n it('should call onChange with the value changed', async () => {\n const callback = jest.fn();\n const { getByLabelText, user } = setup(undefined, callback);\n\n await user.type(getByLabelText('Day'), '5');\n await user.type(getByLabelText('Month'), '7');\n await user.type(getByLabelText('Year'), '2023');\n\n expect(getByLabelText('Day')).toHaveValue('5');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-07-05');\n });\n\n it('should call onChange with the value changed with initial value', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}3');\n await user.type(getByLabelText('Month'), '{backspace}7');\n await user.type(getByLabelText('Year'), '{backspace}3');\n\n expect(getByLabelText('Day')).toHaveValue('3');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-07-03');\n });\n\n it('should call onChange empty when invalid date', async () => {\n const callback = jest.fn();\n const { getByLabelText, user } = setup(undefined, callback);\n\n await user.type(getByLabelText('Day'), '5');\n\n expect(getByLabelText('Day')).toHaveValue('5');\n expect(callback).toHaveBeenCalledWith('');\n });\n\n it('should call onChange empty when year out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Year'), '{backspace}{backspace}30');\n\n expect(getByLabelText('Year')).toHaveValue('2030');\n expect(callback).toHaveBeenCalledWith('');\n });\n\n it('should call onChange when year in boundaries after being out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2030-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Year'), '{backspace}{backspace}23');\n\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-01-01');\n });\n\n it('should call onChange with the value changed', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}3');\n await user.type(getByLabelText('Month'), '{backspace}7');\n await user.type(getByLabelText('Year'), '{backspace}3');\n\n expect(getByLabelText('Day')).toHaveValue('3');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(callback).toHaveBeenCalledWith('2023-07-03');\n });\n\n it('should navigate inputs from day to month when day is over 3', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}45');\n\n expect(getByLabelText('Day')).toHaveValue('4');\n expect(getByLabelText('Month')).toHaveValue('5');\n expect(callback).toHaveBeenCalledWith('2024-05-04');\n });\n\n describe('Calendar button', () => {\n it('should return the selected date when clicking on the calendar', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const expectedDate = '2024-01-17';\n const { getByLabelText, getByTestId, user } = setup(date, callback);\n const button = getByTestId('calendar-button');\n\n await user.click(button);\n\n const calendarCell = getByLabelText(/17 2024/);\n\n await user.click(calendarCell);\n\n expect(callback).toHaveBeenCalledWith(expectedDate);\n\n expect(calendarCell).not.toBeVisible();\n });\n\n it('should close the calendar when clicking outside', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, getByTestId, user } = setup(date, callback);\n const button = getByTestId('calendar-button');\n\n await user.click(button);\n\n const calendarCell = getByLabelText(/17 2024/);\n expect(calendarCell).toBeVisible();\n\n // click outside the calendar\n await user.click(document.body);\n\n expect(callback).not.toHaveBeenCalled();\n\n expect(calendarCell).not.toBeVisible();\n });\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.test.js","sources":["../../../../../src/lib/components/dateSelector/index.test.tsx"],"sourcesContent":["import { render } from '../../util/testUtils';\n\nimport { DateSelector } from '.';\n\nconst setup = (date?: string, onChange: (date: string) => void = () => {}) => {\n return render(\n <DateSelector\n value={date}\n yearBoundaries={{ min: 2020, max: 2025 }}\n onChange={onChange}\n displayCalendar\n />\n );\n};\n\ndescribe('DateSelector component', () => {\n it('should show the value inside the inputs', () => {\n const date = '2024-01-01';\n const { getByLabelText } = setup(date);\n\n expect(getByLabelText('Day')).toHaveValue('1');\n expect(getByLabelText('Month')).toHaveValue('1');\n expect(getByLabelText('Year')).toHaveValue('2024');\n });\n\n it('should call onChange with the value changed', async () => {\n const callback = jest.fn();\n const { getByLabelText, user } = setup(undefined, callback);\n\n await user.type(getByLabelText('Day'), '5');\n await user.type(getByLabelText('Month'), '7');\n await user.type(getByLabelText('Year'), '2023');\n\n expect(getByLabelText('Day')).toHaveValue('5');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-07-05');\n });\n\n it('should call onChange with the value changed with initial value', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}3');\n await user.type(getByLabelText('Month'), '{backspace}7');\n await user.type(getByLabelText('Year'), '{backspace}3');\n\n expect(getByLabelText('Day')).toHaveValue('3');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-07-03');\n });\n\n it('should not call onChange when there is an invalid date that has not been completely filled', async () => {\n const callback = jest.fn();\n const { getByLabelText, user } = setup(undefined, callback);\n\n await user.type(getByLabelText('Day'), '5');\n\n expect(getByLabelText('Day')).toHaveValue('5');\n expect(callback).not.toHaveBeenCalled();\n\n await user.type(getByLabelText('Month'), '4');\n\n expect(getByLabelText('Month')).toHaveValue('4');\n expect(callback).not.toHaveBeenCalled();\n\n await user.type(getByLabelText('Year'), '2020');\n\n expect(getByLabelText('Year')).toHaveValue('2020');\n expect(callback).toHaveBeenCalledWith(\"2020-04-05\");\n });\n\n it('should show error boundaries error for min date onChange empty when year out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2010-01-01';\n const { getByTestId } = setup(date, callback);\n\n expect(getByTestId('date-error-message')).toBeVisible();\n expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date after 2019');\n expect(callback).not.toHaveBeenCalled();\n });\n\n it('should show error boundaries error for ,ax date onChange empty when year out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2100-01-01';\n const { getByTestId } = setup(date, callback);\n\n expect(getByTestId('date-error-message')).toBeVisible();\n expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date before 2026');\n expect(callback).not.toHaveBeenCalled();\n });\n\n it('should call onChange empty when year out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Year'), '{backspace}{backspace}30');\n\n expect(getByLabelText('Year')).toHaveValue('2030');\n expect(callback).toHaveBeenCalledWith('');\n });\n\n it('should call onChange when year in boundaries after being out of boundaries', async () => {\n const callback = jest.fn();\n const date = '2030-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Year'), '{backspace}{backspace}23');\n\n expect(getByLabelText('Year')).toHaveValue('2023');\n expect(callback).toHaveBeenCalledWith('2023-01-01');\n });\n\n it('should call onChange with the value changed', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}3');\n await user.type(getByLabelText('Month'), '{backspace}7');\n await user.type(getByLabelText('Year'), '{backspace}3');\n\n expect(getByLabelText('Day')).toHaveValue('3');\n expect(getByLabelText('Month')).toHaveValue('7');\n expect(callback).toHaveBeenCalledWith('2023-07-03');\n });\n\n it('should navigate inputs from day to month when day is over 3', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, user } = setup(date, callback);\n\n await user.type(getByLabelText('Day'), '{backspace}45');\n\n expect(getByLabelText('Day')).toHaveValue('4');\n expect(getByLabelText('Month')).toHaveValue('5');\n expect(callback).toHaveBeenCalledWith('2024-05-04');\n });\n\n describe('Calendar button', () => {\n it('should return the selected date when clicking on the calendar', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const expectedDate = '2024-01-17';\n const { getByLabelText, getByTestId, user } = setup(date, callback);\n const button = getByTestId('calendar-button');\n\n await user.click(button);\n\n const calendarCell = getByLabelText(/17 2024/);\n\n await user.click(calendarCell);\n\n expect(callback).toHaveBeenCalledWith(expectedDate);\n\n expect(calendarCell).not.toBeVisible();\n });\n\n it('should close the calendar when clicking outside', async () => {\n const callback = jest.fn();\n const date = '2024-01-01';\n const { getByLabelText, getByTestId, user } = setup(date, callback);\n const button = getByTestId('calendar-button');\n\n await user.click(button);\n\n const calendarCell = getByLabelText(/17 2024/);\n expect(calendarCell).toBeVisible();\n\n // click outside the calendar\n await user.click(document.body);\n\n expect(callback).not.toHaveBeenCalled();\n\n expect(calendarCell).not.toBeVisible();\n });\n });\n});\n"],"names":["render","_jsx"],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ export declare const useComparisonTable: ({ onSelectionChanged, }: {
|
|
|
4
4
|
onSelectionChanged?: ((selectedIndex: number) => void) | undefined;
|
|
5
5
|
}) => {
|
|
6
6
|
headerWidth: number;
|
|
7
|
-
headerId: string;
|
|
8
7
|
contentContainerRef: import("react").MutableRefObject<HTMLDivElement | null>;
|
|
9
8
|
selectedSection: string;
|
|
10
9
|
setSelectedSection: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
@@ -22,6 +22,8 @@ export interface DateSelectorProps {
|
|
|
22
22
|
year?: string;
|
|
23
23
|
yearFormat?: string;
|
|
24
24
|
error?: string;
|
|
25
|
+
errorBeforeMinYear?: string;
|
|
26
|
+
errorAfterMaxYear?: string;
|
|
25
27
|
};
|
|
26
28
|
firstDayOfWeek?: number;
|
|
27
29
|
inputProps?: (key: keyof CalendarDate) => Partial<DateSelectorInputProps>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@popsure/dirty-swan",
|
|
3
|
-
"version": "0.49.
|
|
3
|
+
"version": "0.49.2",
|
|
4
4
|
"author": "Vincent Audoire <vincent@getpopsure.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"react-dropzone": "^14.2.2",
|
|
37
37
|
"react-hot-toast": "^2.4.1",
|
|
38
38
|
"react-markdown": "^8.0.3",
|
|
39
|
-
"react-scroll-sync": "^0.11.
|
|
39
|
+
"react-scroll-sync": "^0.11.2",
|
|
40
40
|
"remark-directive": "^2.0.1",
|
|
41
41
|
"sass": "^1.35.1",
|
|
42
42
|
"signature_pad": "^3.0.0-beta.3"
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"@types/react-autosuggest": "^10.1.4",
|
|
99
99
|
"@types/react-day-picker": "^5.3.0",
|
|
100
100
|
"@types/react-dom": "^17.0.8",
|
|
101
|
-
"@types/react-scroll-sync": "^0.
|
|
101
|
+
"@types/react-scroll-sync": "^0.9.0",
|
|
102
102
|
"@types/sass": "^1.16.0",
|
|
103
103
|
"babel-core": "^6.26.3",
|
|
104
104
|
"babel-runtime": "^6.26.0",
|
|
@@ -25,9 +25,9 @@ const TableArrows = (props: TableArrowsProps) => {
|
|
|
25
25
|
styles.arrow,
|
|
26
26
|
{
|
|
27
27
|
[styles.active]: active.left,
|
|
28
|
+
[styles.noPointerEvents]: !active.left,
|
|
28
29
|
}
|
|
29
30
|
)}
|
|
30
|
-
disabled={!active.left}
|
|
31
31
|
>
|
|
32
32
|
<ArrowIcon />
|
|
33
33
|
</button>
|
|
@@ -39,9 +39,9 @@ const TableArrows = (props: TableArrowsProps) => {
|
|
|
39
39
|
styles.arrow,
|
|
40
40
|
{
|
|
41
41
|
[styles.active]: active.right,
|
|
42
|
+
[styles.noPointerEvents]: !active.right,
|
|
42
43
|
}
|
|
43
44
|
)}
|
|
44
|
-
disabled={!active.right}
|
|
45
45
|
>
|
|
46
46
|
<ArrowIcon />
|
|
47
47
|
</button>
|
|
@@ -42,12 +42,6 @@
|
|
|
42
42
|
background-color: $ds-grey-200;
|
|
43
43
|
cursor: not-allowed;
|
|
44
44
|
}
|
|
45
|
-
&:disabled {
|
|
46
|
-
opacity: 1;
|
|
47
|
-
&:hover {
|
|
48
|
-
background-color: $ds-grey-200;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
45
|
}
|
|
52
46
|
|
|
53
47
|
.active {
|
|
@@ -59,3 +53,7 @@
|
|
|
59
53
|
cursor: pointer;
|
|
60
54
|
}
|
|
61
55
|
}
|
|
56
|
+
|
|
57
|
+
.noPointerEvents {
|
|
58
|
+
pointer-events: none;
|
|
59
|
+
}
|
|
@@ -2,7 +2,6 @@ import debounce from 'lodash.debounce';
|
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
|
|
4
4
|
import { ArrowValues } from '../components/TableArrows';
|
|
5
|
-
import generateId from '../../../util/generateId';
|
|
6
5
|
|
|
7
6
|
export const useComparisonTable = ({
|
|
8
7
|
onSelectionChanged,
|
|
@@ -11,7 +10,6 @@ export const useComparisonTable = ({
|
|
|
11
10
|
}) => {
|
|
12
11
|
const [showMore, setShowMore] = useState<boolean>(false);
|
|
13
12
|
const [headerWidth, setHeaderWidth] = useState(1400);
|
|
14
|
-
const [headerId, setHeaderId] = useState('');
|
|
15
13
|
const [selectedTabIndex, setSelectedTabIndex] = useState(0);
|
|
16
14
|
const [selectedSection, setSelectedSection] = useState('');
|
|
17
15
|
|
|
@@ -126,22 +124,6 @@ export const useComparisonTable = ({
|
|
|
126
124
|
setShowMore(!showMore);
|
|
127
125
|
};
|
|
128
126
|
|
|
129
|
-
useEffect(() => {
|
|
130
|
-
if (headerRef.current) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const headerById = document.getElementById(headerId);
|
|
135
|
-
|
|
136
|
-
if (headerById) {
|
|
137
|
-
scrollContainerCallbackRef(headerById);
|
|
138
|
-
}
|
|
139
|
-
}, [headerId, scrollContainerCallbackRef]);
|
|
140
|
-
|
|
141
|
-
useEffect(() => {
|
|
142
|
-
setHeaderId(generateId());
|
|
143
|
-
}, []);
|
|
144
|
-
|
|
145
127
|
useEffect(() => {
|
|
146
128
|
onSelectionChanged?.(selectedTabIndex);
|
|
147
129
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -149,7 +131,6 @@ export const useComparisonTable = ({
|
|
|
149
131
|
|
|
150
132
|
return {
|
|
151
133
|
headerWidth,
|
|
152
|
-
headerId,
|
|
153
134
|
contentContainerRef,
|
|
154
135
|
selectedSection,
|
|
155
136
|
setSelectedSection,
|
|
@@ -100,7 +100,6 @@ const ComparisonTable = <T extends { id: number }>(
|
|
|
100
100
|
handleArrowsClick,
|
|
101
101
|
toggleMoreRows,
|
|
102
102
|
showMore,
|
|
103
|
-
headerId,
|
|
104
103
|
} = useComparisonTable({ onSelectionChanged });
|
|
105
104
|
|
|
106
105
|
const cssVariablesStyle = {
|
|
@@ -116,7 +115,7 @@ const ComparisonTable = <T extends { id: number }>(
|
|
|
116
115
|
} as React.CSSProperties;
|
|
117
116
|
|
|
118
117
|
return (
|
|
119
|
-
<ScrollSync
|
|
118
|
+
<ScrollSync>
|
|
120
119
|
<div
|
|
121
120
|
style={cssVariablesStyle}
|
|
122
121
|
className={classNames({
|
|
@@ -127,8 +126,8 @@ const ComparisonTable = <T extends { id: number }>(
|
|
|
127
126
|
<div
|
|
128
127
|
className={classNames(baseStyles.header, classNameOverrides?.header)}
|
|
129
128
|
>
|
|
130
|
-
<ScrollSyncPane>
|
|
131
|
-
<div
|
|
129
|
+
<ScrollSyncPane innerRef={scrollContainerCallbackRef}>
|
|
130
|
+
<div className={classNames(baseStyles.container)}>
|
|
132
131
|
<div className={classNames(baseStyles['overflow-container'])}>
|
|
133
132
|
<div className={baseStyles['group-container']}>
|
|
134
133
|
<TableArrows
|
|
@@ -52,14 +52,44 @@ describe('DateSelector component', () => {
|
|
|
52
52
|
expect(callback).toHaveBeenCalledWith('2023-07-03');
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
it('should call onChange
|
|
55
|
+
it('should not call onChange when there is an invalid date that has not been completely filled', async () => {
|
|
56
56
|
const callback = jest.fn();
|
|
57
57
|
const { getByLabelText, user } = setup(undefined, callback);
|
|
58
58
|
|
|
59
59
|
await user.type(getByLabelText('Day'), '5');
|
|
60
60
|
|
|
61
61
|
expect(getByLabelText('Day')).toHaveValue('5');
|
|
62
|
-
expect(callback).
|
|
62
|
+
expect(callback).not.toHaveBeenCalled();
|
|
63
|
+
|
|
64
|
+
await user.type(getByLabelText('Month'), '4');
|
|
65
|
+
|
|
66
|
+
expect(getByLabelText('Month')).toHaveValue('4');
|
|
67
|
+
expect(callback).not.toHaveBeenCalled();
|
|
68
|
+
|
|
69
|
+
await user.type(getByLabelText('Year'), '2020');
|
|
70
|
+
|
|
71
|
+
expect(getByLabelText('Year')).toHaveValue('2020');
|
|
72
|
+
expect(callback).toHaveBeenCalledWith("2020-04-05");
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('should show error boundaries error for min date onChange empty when year out of boundaries', async () => {
|
|
76
|
+
const callback = jest.fn();
|
|
77
|
+
const date = '2010-01-01';
|
|
78
|
+
const { getByTestId } = setup(date, callback);
|
|
79
|
+
|
|
80
|
+
expect(getByTestId('date-error-message')).toBeVisible();
|
|
81
|
+
expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date after 2019');
|
|
82
|
+
expect(callback).not.toHaveBeenCalled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should show error boundaries error for ,ax date onChange empty when year out of boundaries', async () => {
|
|
86
|
+
const callback = jest.fn();
|
|
87
|
+
const date = '2100-01-01';
|
|
88
|
+
const { getByTestId } = setup(date, callback);
|
|
89
|
+
|
|
90
|
+
expect(getByTestId('date-error-message')).toBeVisible();
|
|
91
|
+
expect(getByTestId('date-error-message')).toHaveTextContent('Please choose a date before 2026');
|
|
92
|
+
expect(callback).not.toHaveBeenCalled();
|
|
63
93
|
});
|
|
64
94
|
|
|
65
95
|
it('should call onChange empty when year out of boundaries', async () => {
|