@razorpay/blade 12.49.0 → 12.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.
@@ -74,17 +74,17 @@ var rangeFormattedValue = function rangeFormattedValue(startValue, endValue) {
74
74
  if (startValue === endValue) {
75
75
  return startValue; // Same date, show single value
76
76
  }
77
- return "".concat(startValue, " \u2192 ").concat(endValue); // Different dates, show range
77
+ return "".concat(startValue, " \u2013 ").concat(endValue); // Different dates, show range
78
78
  }
79
79
 
80
80
  // Only start value exists
81
81
  if (startValue) {
82
- return "".concat(startValue, " \u2192 ");
82
+ return "".concat(startValue, " \u2013 ");
83
83
  }
84
84
 
85
85
  // Only end value exists
86
86
  if (endValue) {
87
- return " \u2192 ".concat(endValue);
87
+ return " \u2013 ".concat(endValue);
88
88
  }
89
89
 
90
90
  // No values
@@ -92,16 +92,16 @@ var rangeFormattedValue = function rangeFormattedValue(startValue, endValue) {
92
92
  };
93
93
  var rangeInputPlaceHolder = function rangeInputPlaceHolder(placeholder, format) {
94
94
  if (placeholder) {
95
- return "".concat(placeholder, " \u2192 ").concat(placeholder);
95
+ return "".concat(placeholder, " \u2013 ").concat(placeholder);
96
96
  }
97
- return "".concat(format, " \u2192 ").concat(format);
97
+ return "".concat(format, " \u2013 ").concat(format);
98
98
  };
99
99
  var finalInputFormat = function finalInputFormat(startValue, endValue, format) {
100
100
  // For case: when start and end are the same, return the format
101
101
  if (startValue === endValue && (startValue || endValue)) {
102
102
  return format;
103
103
  }
104
- return "".concat(format, " \u2192 ").concat(format);
104
+ return "".concat(format, " \u2013 ").concat(format);
105
105
  };
106
106
 
107
107
  /**
@@ -109,13 +109,13 @@ var finalInputFormat = function finalInputFormat(startValue, endValue, format) {
109
109
  * TextInput format only recognizes # as input placeholder, so we replace
110
110
  * date characters (Y,M,D) with # while preserving delimiters.
111
111
  *
112
- * @example "DD/MM/YYYY" "##/##/####"
113
- * @example "MMMM" "################" (longest month: "September")
114
- * @example "MMM" "###"
112
+ * @example "DD/MM/YYYY" "##/##/####"
113
+ * @example "MMMM" "################" (longest month: "September")
114
+ * @example "MMM" "###"
115
115
  */
116
116
  var getTextInputFormat = function getTextInputFormat(formatStr, isRangeInput) {
117
117
  if (!formatStr) {
118
- return isRangeInput ? '##/##/######/##/####' : '##/##/####';
118
+ return isRangeInput ? '##/##/######/##/####' : '##/##/####';
119
119
  } else if (formatStr === 'MMMM') {
120
120
  return formatStr.replace(/MMMM/g, '#########');
121
121
  }
@@ -283,7 +283,7 @@ var parseSpecialSingleFormat = function parseSpecialSingleFormat(inputValue, for
283
283
  *
284
284
  * @example
285
285
  * // Valid range input
286
- * validateAndParseDateInput("25/12/202431/12/2024", true, "DD/MM/YYYY")
286
+ * validateAndParseDateInput("25/12/202431/12/2024", true, "DD/MM/YYYY")
287
287
  * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }
288
288
  *
289
289
  * @example
@@ -331,8 +331,8 @@ var validateAndParseDateInput = function validateAndParseDateInput(inputValue, i
331
331
  }
332
332
  if (isRange) {
333
333
  var _parts$, _parts$2, _parts$3, _parts$4;
334
- // Split range input on arrow separator (e.g., "25/12/202431/12/2024")
335
- var parts = inputValue.split(/\s*→\s*/);
334
+ // Split range input on en dash separator (e.g., "25/12/202431/12/2024")
335
+ var parts = inputValue.split(/\s*–\s*/);
336
336
 
337
337
  // Block incomplete input to prevent premature validation (e.g., "25/12/202" is being typed)
338
338
  if ((_parts$ = parts[0]) !== null && _parts$ !== void 0 && _parts$.trim() && parts[0].trim().length < 10 || (_parts$2 = parts[1]) !== null && _parts$2 !== void 0 && _parts$2.trim() && parts[1].trim().length < 10) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { DatePickerType, DatePickerValue } from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nconst dayjs_locales = [\n 'af',\n 'ar',\n 'ar-dz',\n 'ar-kw',\n 'ar-ly',\n 'ar-ma',\n 'ar-sa',\n 'ar-tn',\n 'az',\n 'be',\n 'bg',\n 'bm',\n 'bn',\n 'bo',\n 'br',\n 'bs',\n 'ca',\n 'cs',\n 'cv',\n 'cy',\n 'da',\n 'de',\n 'de-at',\n 'de-ch',\n 'dv',\n 'el',\n 'en',\n 'en-au',\n 'en-ca',\n 'en-gb',\n 'en-ie',\n 'en-il',\n 'en-nz',\n 'en-SG',\n 'eo',\n 'es',\n 'es-do',\n 'es-us',\n 'et',\n 'eu',\n 'fa',\n 'fi',\n 'fo',\n 'fr',\n 'fr-ca',\n 'fr-ch',\n 'fy',\n 'ga',\n 'gd',\n 'gl',\n 'gom-latn',\n 'gu',\n 'he',\n 'hi',\n 'hr',\n 'hu',\n 'hy-am',\n 'id',\n 'is',\n 'it',\n 'it-ch',\n 'ja',\n 'jv',\n 'ka',\n 'kk',\n 'km',\n 'kn',\n 'ko',\n 'ku',\n 'ky',\n 'lb',\n 'lo',\n 'lt',\n 'lv',\n 'me',\n 'mi',\n 'mk',\n 'ml',\n 'mn',\n 'mr',\n 'ms',\n 'ms-my',\n 'mt',\n 'my',\n 'nb',\n 'ne',\n 'nl',\n 'nl-be',\n 'nn',\n 'oc-lnc',\n 'pa-in',\n 'pl',\n 'pt',\n 'pt-br',\n 'ro',\n 'ru',\n 'sd',\n 'se',\n 'si',\n 'sk',\n 'sl',\n 'sq',\n 'sr',\n 'sr-cyrl',\n 'ss',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tet',\n 'tg',\n 'th',\n 'tl-ph',\n 'tlh',\n 'tr',\n 'tzl',\n 'tzm',\n 'tzm-latn',\n 'ug-cn',\n 'uk',\n 'ur',\n 'uz',\n 'uz-latn',\n 'vi',\n 'x-pseudo',\n 'yo',\n 'zh-cn',\n 'zh-hk',\n 'zh-tw',\n];\n\n// https://github.com/iamkun/dayjs/issues/732#issuecomment-554383261\nfunction patchLocale(locale: string): string | boolean {\n if (['en', 'en-us'].includes(locale)) return 'en';\n if (locale === 'zn') return 'zh-cn';\n if (locale === 'no') return 'nb';\n if (dayjs_locales.includes(locale)) return locale;\n return false;\n}\n\nfunction convertIntlToDayjsLocale(lang: string): string {\n lang = lang.toLowerCase();\n const locale = patchLocale(lang) || (lang.includes('-') && patchLocale(lang.split('-')[0]));\n if (!locale) return 'en';\n\n return `${locale}`;\n}\n\nfunction isScriptLoaded(src: string): boolean {\n return Boolean(document.querySelector(`script[src=\"${src}\"]`));\n}\n\n/**\n * Used to dynamically load a script\n */\nfunction loadScript(src: string, callback?: () => void): void {\n if (isScriptLoaded(src)) {\n callback?.();\n return;\n }\n const localeScript = document.createElement('script');\n localeScript.async = true;\n localeScript.src = src;\n localeScript.onload = () => callback?.();\n document.head.appendChild(localeScript);\n}\n\ninterface DateFormatterInput {\n type: DatePickerType;\n date: DatePickerValue<DatePickerType>;\n locale: string;\n format: string;\n labelSeparator: string;\n}\n\ntype DateFormatter = (input: DateFormatterInput) => string;\n\nfunction defaultDateFormatter({ type, date, locale, format, labelSeparator }: DateFormatterInput) {\n const formatDate = (value: Date) => dayjs(value).locale(locale).format(format);\n\n if (type === 'default') {\n return date === null ? '' : formatDate(date as Date);\n }\n\n if (type === 'range' && Array.isArray(date)) {\n if (date[0] && date[1]) {\n return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;\n }\n\n if (date[0]) {\n return `${formatDate(date[0])} ${labelSeparator} `;\n }\n\n return '';\n }\n\n return '';\n}\n\ninterface GetFormattedDateInput extends DateFormatterInput {\n formatter?: DateFormatter;\n}\n\nfunction getFormattedDate({ formatter, ...others }: GetFormattedDateInput) {\n return (formatter || defaultDateFormatter)(others);\n}\n\nconst rangeFormattedValue = (startValue: string, endValue: string) => {\n // Both values exist\n if (startValue && endValue) {\n if (startValue === endValue) {\n return startValue; // Same date, show single value\n }\n return `${startValue} → ${endValue}`; // Different dates, show range\n }\n\n // Only start value exists\n if (startValue) {\n return `${startValue} → `;\n }\n\n // Only end value exists\n if (endValue) {\n return ` → ${endValue}`;\n }\n\n // No values\n return '';\n};\n\nconst rangeInputPlaceHolder = (placeholder: string | undefined, format: string) => {\n if (placeholder) {\n return `${placeholder} → ${placeholder}`;\n }\n return `${format} → ${format}`;\n};\n\nconst finalInputFormat = (startValue: string, endValue: string, format: string | undefined) => {\n // For case: when start and end are the same, return the format\n if (startValue === endValue && (startValue || endValue)) {\n return format;\n }\n return `${format} → ${format}`;\n};\n\n/**\n * Converts date format string to TextInput pattern for masking.\n * TextInput format only recognizes # as input placeholder, so we replace\n * date characters (Y,M,D) with # while preserving delimiters.\n *\n * @example \"DD/MM/YYYY\" → \"##/##/####\"\n * @example \"MMMM\" → \"################\" (longest month: \"September\")\n * @example \"MMM\" → \"###\"\n */\nconst getTextInputFormat = (formatStr?: string, isRangeInput?: boolean): string => {\n if (!formatStr) {\n return isRangeInput ? '##/##/#### → ##/##/####' : '##/##/####';\n } else if (formatStr === 'MMMM') {\n return formatStr.replace(/MMMM/g, '#########');\n }\n return formatStr.replace(/[YMD]/g, '#');\n};\n\n/**\n * Validates date string using DayJS strict parsing and business rules\n *\n * @param dateStr - The date string to validate in DD/MM/YYYY format\n * @returns Object with validation result, error message if invalid, and parsed Date if valid\n *\n * @example\n * // Valid date\n * validateDateComponents(\"25/12/2024\")\n * // → { isValid: true, parsedDate: Date(2024, 11, 25) }\n *\n * @example\n * // Invalid date (non-existent)\n * validateDateComponents(\"31/02/2024\")\n * // → { isValid: false, error: \"Invalid date\" }\n *\n * @example\n * // Invalid year range\n * validateDateComponents(\"25/12/999\")\n * // → { isValid: false, error: \"Invalid year\" }\n *\n * @example\n * // Empty input\n * validateDateComponents(\"\")\n * // → { isValid: true }\n */\nconst validateDateComponents = (\n dateStr: string,\n): {\n isValid: boolean;\n error?: string;\n parsedDate?: Date;\n} => {\n // Empty strings are considered valid (user hasn't started typing)\n if (!dateStr?.trim()) {\n return { isValid: true };\n }\n\n // Use DayJS strict parsing to validate DD/MM/YYYY format and date existence\n const parsed = dayjs(dateStr, 'DD/MM/YYYY', true);\n\n // DayJS strict mode catches invalid days/months and non-existent dates (e.g., Feb 30th)\n if (!parsed.isValid()) {\n return { isValid: false, error: 'Invalid date' };\n }\n\n // Business rule: restrict year range to reasonable values for most applications\n const year = parsed.year();\n if (year < 1000 || year > 3000) {\n return { isValid: false, error: 'Invalid year' };\n }\n\n // Return both validation result AND parsed date to avoid double parsing\n return { isValid: true, parsedDate: parsed.toDate() };\n};\n\n/**\n * Detects and parses special single date formats (MMM, MMMM, YYYY)\n * These formats preserve current date/month/year and only change the specified component\n *\n * @param inputValue - The input string to parse\n * @param format - The expected format ('MMM', 'MMMM', or 'YYYY')\n * @returns Object with special format detection, parsed date, and validation result\n *\n * @example\n * // Year format - preserves current month/day, changes year\n * parseSpecialSingleFormat(\"2024\", \"YYYY\")\n * // → { isSpecialFormat: true, parsedDate: Date(2024, currentMonth, currentDay), shouldBlock: false }\n *\n * @example\n * // Short month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"Aug\", \"MMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Full month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"August\", \"MMMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Invalid year\n * parseSpecialSingleFormat(\"999\", \"YYYY\")\n * // → { isSpecialFormat: true, shouldBlock: true }\n *\n * @example\n * // Not a special format\n * parseSpecialSingleFormat(\"25/12/2024\", \"DD/MM/YYYY\")\n * // → { isSpecialFormat: false, shouldBlock: false }\n */\nconst parseSpecialSingleFormat = (\n inputValue: string,\n format?: string,\n): { isSpecialFormat: boolean; parsedDate?: Date; shouldBlock: boolean } => {\n if (!format) return { isSpecialFormat: false, shouldBlock: false };\n\n const trimmedInput = inputValue.trim();\n const today = new Date();\n\n // Handle year-only format (YYYY) - keep current month and day, change year\n if (format === 'YYYY' && /^\\d{4}$/.test(trimmedInput)) {\n const year = parseInt(trimmedInput, 10);\n if (year >= 1000 && year <= 3000) {\n return {\n isSpecialFormat: true,\n parsedDate: new Date(year, today.getMonth(), today.getDate()),\n shouldBlock: false,\n };\n } else {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n }\n\n // Handle month formats (MMM, MMMM) - keep current day and year, change month\n if ((format === 'MMM' || format === 'MMMM') && trimmedInput.length >= 3) {\n // Using DayJS to parse month names (handles both short \"Aug\" and full \"August\")\n const monthDate = dayjs(trimmedInput, format === 'MMM' ? 'MMM' : 'MMMM', true);\n\n if (!monthDate.isValid()) {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n return {\n isSpecialFormat: true,\n parsedDate: new Date(today.getFullYear(), monthDate.month(), today.getDate()),\n shouldBlock: false,\n };\n }\n\n return { isSpecialFormat: false, shouldBlock: false };\n};\n\n/**\n * Validates and parses date input with comprehensive error handling and constraint checking\n * Combines validation + parsing to avoid redundant operations and supports both single dates and ranges\n *\n * @param inputValue - The input string to validate and parse\n * @param isRange - Whether this is a range input (true) or single date (false)\n * @param format - The expected date format ('DD/MM/YYYY', 'MMM', 'MMMM', 'YYYY')\n * @param options - Additional validation constraints\n * @param options.excludeDate - Function to exclude specific dates (single dates only)\n * @param options.minDate - Minimum allowed date\n * @param options.maxDate - Maximum allowed date\n * @returns Object with shouldBlock flag, optional error message, and parsed values if valid\n *\n * @example\n * // Valid single date\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, 11, 25) }\n *\n * @example\n * // Valid range input\n * validateAndParseDateInput(\"25/12/2024 → 31/12/2024\", true, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }\n *\n * @example\n * // Invalid date with error\n * validateAndParseDateInput(\"31/02/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: true, error: \"Invalid date\" }\n *\n * @example\n * // Date excluded by constraint\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\", {\n * excludeDate: (date) => date.getDay() === 0 // No Sundays\n * })\n * // → { shouldBlock: true, error: \"Date is not allowed\" }\n *\n * @example\n * // Special format - year only\n * validateAndParseDateInput(\"2024\", false, \"YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, currentMonth, currentDay) }\n *\n * @example\n * // Incomplete input - allow continued typing\n * validateAndParseDateInput(\"25/12\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false } (no parsedValue, allows user to continue typing)\n */\nconst validateAndParseDateInput = (\n inputValue: string,\n isRange: boolean,\n format?: string,\n options?: {\n excludeDate?: (date: Date) => boolean;\n minDate?: Date;\n maxDate?: Date;\n },\n): {\n shouldBlock: boolean;\n error?: string;\n parsedValue?: Date | null | [Date | null, Date | null];\n} => {\n // Allow empty input - user hasn't started typing yet\n if (!inputValue?.trim()) return { shouldBlock: false };\n\n // Handle special single date formats (MMM, MMMM, YYYY) - skip normal validation\n if (!isRange && format) {\n const specialParse = parseSpecialSingleFormat(inputValue, format);\n if (specialParse.isSpecialFormat && !specialParse.shouldBlock) {\n return { shouldBlock: false, parsedValue: specialParse.parsedDate || null };\n } else if (specialParse.shouldBlock) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n }\n\n if (isRange) {\n // Split range input on arrow separator (e.g., \"25/12/2024 → 31/12/2024\")\n const parts = inputValue.split(/\\s*→\\s*/);\n\n // Block incomplete input to prevent premature validation (e.g., \"25/12/202\" is being typed)\n if (\n (parts[0]?.trim() && parts[0].trim().length < 10) ||\n (parts[1]?.trim() && parts[1].trim().length < 10)\n ) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n // Validate and parse start date if it looks complete (10+ chars = DD/MM/YYYY)\n if (parts[0]?.trim() && parts[0].trim().length >= 10) {\n const startValidation = validateDateComponents(parts[0].trim());\n if (!startValidation.isValid) {\n return { shouldBlock: true, error: `Start date: ${startValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n startDate = startValidation.parsedDate || null;\n }\n\n // Validate and parse end date if it looks complete\n if (parts[1]?.trim() && parts[1].trim().length >= 10) {\n const endValidation = validateDateComponents(parts[1].trim());\n if (!endValidation.isValid) {\n return { shouldBlock: true, error: `End date: ${endValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n endDate = endValidation.parsedDate || null;\n }\n\n // Business logic: start date cannot be after end date\n if (startDate && endDate && startDate > endDate) {\n return { shouldBlock: true, error: 'Start date cannot be greater than end date' };\n }\n\n // Additional validation for date range constraints\n if (options) {\n if (startDate && options.minDate && dayjs(startDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (startDate && options.maxDate && dayjs(startDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (endDate && options.minDate && dayjs(endDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n if (endDate && options.maxDate && dayjs(endDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n }\n\n // Return parsed dates ready for setControlledValue\n return { shouldBlock: false, parsedValue: [startDate, endDate] };\n } else if (inputValue.length >= 10) {\n // Single date: validate and parse if it looks complete\n const validation = validateDateComponents(inputValue);\n if (!validation.isValid) {\n return { shouldBlock: true, error: validation.error };\n }\n\n const parsedDate = validation.parsedDate;\n\n // Additional validation for single date constraints\n if (options && parsedDate) {\n if (options.excludeDate?.(parsedDate)) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.minDate && dayjs(parsedDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.maxDate && dayjs(parsedDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n }\n\n // Return parsed date ready for setControlledValue\n return { shouldBlock: false, parsedValue: parsedDate || null };\n }\n\n // Input is incomplete but valid so far - allow continued typing\n return { shouldBlock: false };\n};\n\n/**\n * Removes date delimiters (slashes) from formatted date strings for internal processing\n * Used to convert external formatted values to internal state for easier validation and length checks\n *\n * @param str - The date string with delimiters\n * @returns String without delimiters, or empty string if input is null/undefined\n *\n * @example\n * // Remove slashes from single date\n * stripDelimiters(\"25/12/2024\")\n * // → \"25122024\"\n *\n * @example\n * // Handle null/undefined input\n * stripDelimiters(undefined)\n * // → \"\"\n *\n * @example\n * // Used for internal state conversion\n * stripDelimiters(\"31/12/2024\")\n * // → \"31122024\" (easier for length checks: inputValue.length === 8)\n */\nconst stripDelimiters = (str?: string): string => str?.replace(/\\//g, '') ?? '';\n\nexport {\n convertIntlToDayjsLocale,\n loadScript,\n getFormattedDate,\n rangeFormattedValue,\n rangeInputPlaceHolder,\n finalInputFormat,\n getTextInputFormat,\n validateDateComponents,\n validateAndParseDateInput,\n stripDelimiters,\n};\n"],"names":["dayjs","extend","customParseFormat","dayjs_locales","patchLocale","locale","includes","convertIntlToDayjsLocale","lang","toLowerCase","split","concat","isScriptLoaded","src","Boolean","document","querySelector","loadScript","callback","localeScript","createElement","async","onload","head","appendChild","defaultDateFormatter","_ref","type","date","format","labelSeparator","formatDate","value","Array","isArray","getFormattedDate","_ref2","formatter","others","_objectWithoutProperties","_excluded","rangeFormattedValue","startValue","endValue","rangeInputPlaceHolder","placeholder","finalInputFormat","getTextInputFormat","formatStr","isRangeInput","replace","validateDateComponents","dateStr","trim","isValid","parsed","error","year","parsedDate","toDate","parseSpecialSingleFormat","inputValue","isSpecialFormat","shouldBlock","trimmedInput","today","Date","test","parseInt","getMonth","getDate","length","monthDate","getFullYear","month","validateAndParseDateInput","isRange","options","specialParse","parsedValue","_parts$","_parts$2","_parts$3","_parts$4","parts","startDate","endDate","startValidation","endValidation","minDate","isBefore","maxDate","isAfter","validation","_options$excludeDate","excludeDate","call","stripDelimiters","str","_str$replace"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { DatePickerType, DatePickerValue } from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nconst dayjs_locales = [\n 'af',\n 'ar',\n 'ar-dz',\n 'ar-kw',\n 'ar-ly',\n 'ar-ma',\n 'ar-sa',\n 'ar-tn',\n 'az',\n 'be',\n 'bg',\n 'bm',\n 'bn',\n 'bo',\n 'br',\n 'bs',\n 'ca',\n 'cs',\n 'cv',\n 'cy',\n 'da',\n 'de',\n 'de-at',\n 'de-ch',\n 'dv',\n 'el',\n 'en',\n 'en-au',\n 'en-ca',\n 'en-gb',\n 'en-ie',\n 'en-il',\n 'en-nz',\n 'en-SG',\n 'eo',\n 'es',\n 'es-do',\n 'es-us',\n 'et',\n 'eu',\n 'fa',\n 'fi',\n 'fo',\n 'fr',\n 'fr-ca',\n 'fr-ch',\n 'fy',\n 'ga',\n 'gd',\n 'gl',\n 'gom-latn',\n 'gu',\n 'he',\n 'hi',\n 'hr',\n 'hu',\n 'hy-am',\n 'id',\n 'is',\n 'it',\n 'it-ch',\n 'ja',\n 'jv',\n 'ka',\n 'kk',\n 'km',\n 'kn',\n 'ko',\n 'ku',\n 'ky',\n 'lb',\n 'lo',\n 'lt',\n 'lv',\n 'me',\n 'mi',\n 'mk',\n 'ml',\n 'mn',\n 'mr',\n 'ms',\n 'ms-my',\n 'mt',\n 'my',\n 'nb',\n 'ne',\n 'nl',\n 'nl-be',\n 'nn',\n 'oc-lnc',\n 'pa-in',\n 'pl',\n 'pt',\n 'pt-br',\n 'ro',\n 'ru',\n 'sd',\n 'se',\n 'si',\n 'sk',\n 'sl',\n 'sq',\n 'sr',\n 'sr-cyrl',\n 'ss',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tet',\n 'tg',\n 'th',\n 'tl-ph',\n 'tlh',\n 'tr',\n 'tzl',\n 'tzm',\n 'tzm-latn',\n 'ug-cn',\n 'uk',\n 'ur',\n 'uz',\n 'uz-latn',\n 'vi',\n 'x-pseudo',\n 'yo',\n 'zh-cn',\n 'zh-hk',\n 'zh-tw',\n];\n\n// https://github.com/iamkun/dayjs/issues/732#issuecomment-554383261\nfunction patchLocale(locale: string): string | boolean {\n if (['en', 'en-us'].includes(locale)) return 'en';\n if (locale === 'zn') return 'zh-cn';\n if (locale === 'no') return 'nb';\n if (dayjs_locales.includes(locale)) return locale;\n return false;\n}\n\nfunction convertIntlToDayjsLocale(lang: string): string {\n lang = lang.toLowerCase();\n const locale = patchLocale(lang) || (lang.includes('-') && patchLocale(lang.split('-')[0]));\n if (!locale) return 'en';\n\n return `${locale}`;\n}\n\nfunction isScriptLoaded(src: string): boolean {\n return Boolean(document.querySelector(`script[src=\"${src}\"]`));\n}\n\n/**\n * Used to dynamically load a script\n */\nfunction loadScript(src: string, callback?: () => void): void {\n if (isScriptLoaded(src)) {\n callback?.();\n return;\n }\n const localeScript = document.createElement('script');\n localeScript.async = true;\n localeScript.src = src;\n localeScript.onload = () => callback?.();\n document.head.appendChild(localeScript);\n}\n\ninterface DateFormatterInput {\n type: DatePickerType;\n date: DatePickerValue<DatePickerType>;\n locale: string;\n format: string;\n labelSeparator: string;\n}\n\ntype DateFormatter = (input: DateFormatterInput) => string;\n\nfunction defaultDateFormatter({ type, date, locale, format, labelSeparator }: DateFormatterInput) {\n const formatDate = (value: Date) => dayjs(value).locale(locale).format(format);\n\n if (type === 'default') {\n return date === null ? '' : formatDate(date as Date);\n }\n\n if (type === 'range' && Array.isArray(date)) {\n if (date[0] && date[1]) {\n return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;\n }\n\n if (date[0]) {\n return `${formatDate(date[0])} ${labelSeparator} `;\n }\n\n return '';\n }\n\n return '';\n}\n\ninterface GetFormattedDateInput extends DateFormatterInput {\n formatter?: DateFormatter;\n}\n\nfunction getFormattedDate({ formatter, ...others }: GetFormattedDateInput) {\n return (formatter || defaultDateFormatter)(others);\n}\n\nconst rangeFormattedValue = (startValue: string, endValue: string) => {\n // Both values exist\n if (startValue && endValue) {\n if (startValue === endValue) {\n return startValue; // Same date, show single value\n }\n return `${startValue} – ${endValue}`; // Different dates, show range\n }\n\n // Only start value exists\n if (startValue) {\n return `${startValue} – `;\n }\n\n // Only end value exists\n if (endValue) {\n return ` – ${endValue}`;\n }\n\n // No values\n return '';\n};\n\nconst rangeInputPlaceHolder = (placeholder: string | undefined, format: string) => {\n if (placeholder) {\n return `${placeholder} – ${placeholder}`;\n }\n return `${format} – ${format}`;\n};\n\nconst finalInputFormat = (startValue: string, endValue: string, format: string | undefined) => {\n // For case: when start and end are the same, return the format\n if (startValue === endValue && (startValue || endValue)) {\n return format;\n }\n return `${format} – ${format}`;\n};\n\n/**\n * Converts date format string to TextInput pattern for masking.\n * TextInput format only recognizes # as input placeholder, so we replace\n * date characters (Y,M,D) with # while preserving delimiters.\n *\n * @example \"DD/MM/YYYY\" – \"##/##/####\"\n * @example \"MMMM\" – \"################\" (longest month: \"September\")\n * @example \"MMM\" – \"###\"\n */\nconst getTextInputFormat = (formatStr?: string, isRangeInput?: boolean): string => {\n if (!formatStr) {\n return isRangeInput ? '##/##/#### – ##/##/####' : '##/##/####';\n } else if (formatStr === 'MMMM') {\n return formatStr.replace(/MMMM/g, '#########');\n }\n return formatStr.replace(/[YMD]/g, '#');\n};\n\n/**\n * Validates date string using DayJS strict parsing and business rules\n *\n * @param dateStr - The date string to validate in DD/MM/YYYY format\n * @returns Object with validation result, error message if invalid, and parsed Date if valid\n *\n * @example\n * // Valid date\n * validateDateComponents(\"25/12/2024\")\n * // → { isValid: true, parsedDate: Date(2024, 11, 25) }\n *\n * @example\n * // Invalid date (non-existent)\n * validateDateComponents(\"31/02/2024\")\n * // → { isValid: false, error: \"Invalid date\" }\n *\n * @example\n * // Invalid year range\n * validateDateComponents(\"25/12/999\")\n * // → { isValid: false, error: \"Invalid year\" }\n *\n * @example\n * // Empty input\n * validateDateComponents(\"\")\n * // → { isValid: true }\n */\nconst validateDateComponents = (\n dateStr: string,\n): {\n isValid: boolean;\n error?: string;\n parsedDate?: Date;\n} => {\n // Empty strings are considered valid (user hasn't started typing)\n if (!dateStr?.trim()) {\n return { isValid: true };\n }\n\n // Use DayJS strict parsing to validate DD/MM/YYYY format and date existence\n const parsed = dayjs(dateStr, 'DD/MM/YYYY', true);\n\n // DayJS strict mode catches invalid days/months and non-existent dates (e.g., Feb 30th)\n if (!parsed.isValid()) {\n return { isValid: false, error: 'Invalid date' };\n }\n\n // Business rule: restrict year range to reasonable values for most applications\n const year = parsed.year();\n if (year < 1000 || year > 3000) {\n return { isValid: false, error: 'Invalid year' };\n }\n\n // Return both validation result AND parsed date to avoid double parsing\n return { isValid: true, parsedDate: parsed.toDate() };\n};\n\n/**\n * Detects and parses special single date formats (MMM, MMMM, YYYY)\n * These formats preserve current date/month/year and only change the specified component\n *\n * @param inputValue - The input string to parse\n * @param format - The expected format ('MMM', 'MMMM', or 'YYYY')\n * @returns Object with special format detection, parsed date, and validation result\n *\n * @example\n * // Year format - preserves current month/day, changes year\n * parseSpecialSingleFormat(\"2024\", \"YYYY\")\n * // → { isSpecialFormat: true, parsedDate: Date(2024, currentMonth, currentDay), shouldBlock: false }\n *\n * @example\n * // Short month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"Aug\", \"MMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Full month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"August\", \"MMMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Invalid year\n * parseSpecialSingleFormat(\"999\", \"YYYY\")\n * // → { isSpecialFormat: true, shouldBlock: true }\n *\n * @example\n * // Not a special format\n * parseSpecialSingleFormat(\"25/12/2024\", \"DD/MM/YYYY\")\n * // → { isSpecialFormat: false, shouldBlock: false }\n */\nconst parseSpecialSingleFormat = (\n inputValue: string,\n format?: string,\n): { isSpecialFormat: boolean; parsedDate?: Date; shouldBlock: boolean } => {\n if (!format) return { isSpecialFormat: false, shouldBlock: false };\n\n const trimmedInput = inputValue.trim();\n const today = new Date();\n\n // Handle year-only format (YYYY) - keep current month and day, change year\n if (format === 'YYYY' && /^\\d{4}$/.test(trimmedInput)) {\n const year = parseInt(trimmedInput, 10);\n if (year >= 1000 && year <= 3000) {\n return {\n isSpecialFormat: true,\n parsedDate: new Date(year, today.getMonth(), today.getDate()),\n shouldBlock: false,\n };\n } else {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n }\n\n // Handle month formats (MMM, MMMM) - keep current day and year, change month\n if ((format === 'MMM' || format === 'MMMM') && trimmedInput.length >= 3) {\n // Using DayJS to parse month names (handles both short \"Aug\" and full \"August\")\n const monthDate = dayjs(trimmedInput, format === 'MMM' ? 'MMM' : 'MMMM', true);\n\n if (!monthDate.isValid()) {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n return {\n isSpecialFormat: true,\n parsedDate: new Date(today.getFullYear(), monthDate.month(), today.getDate()),\n shouldBlock: false,\n };\n }\n\n return { isSpecialFormat: false, shouldBlock: false };\n};\n\n/**\n * Validates and parses date input with comprehensive error handling and constraint checking\n * Combines validation + parsing to avoid redundant operations and supports both single dates and ranges\n *\n * @param inputValue - The input string to validate and parse\n * @param isRange - Whether this is a range input (true) or single date (false)\n * @param format - The expected date format ('DD/MM/YYYY', 'MMM', 'MMMM', 'YYYY')\n * @param options - Additional validation constraints\n * @param options.excludeDate - Function to exclude specific dates (single dates only)\n * @param options.minDate - Minimum allowed date\n * @param options.maxDate - Maximum allowed date\n * @returns Object with shouldBlock flag, optional error message, and parsed values if valid\n *\n * @example\n * // Valid single date\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, 11, 25) }\n *\n * @example\n * // Valid range input\n * validateAndParseDateInput(\"25/12/2024 – 31/12/2024\", true, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }\n *\n * @example\n * // Invalid date with error\n * validateAndParseDateInput(\"31/02/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: true, error: \"Invalid date\" }\n *\n * @example\n * // Date excluded by constraint\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\", {\n * excludeDate: (date) => date.getDay() === 0 // No Sundays\n * })\n * // → { shouldBlock: true, error: \"Date is not allowed\" }\n *\n * @example\n * // Special format - year only\n * validateAndParseDateInput(\"2024\", false, \"YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, currentMonth, currentDay) }\n *\n * @example\n * // Incomplete input - allow continued typing\n * validateAndParseDateInput(\"25/12\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false } (no parsedValue, allows user to continue typing)\n */\nconst validateAndParseDateInput = (\n inputValue: string,\n isRange: boolean,\n format?: string,\n options?: {\n excludeDate?: (date: Date) => boolean;\n minDate?: Date;\n maxDate?: Date;\n },\n): {\n shouldBlock: boolean;\n error?: string;\n parsedValue?: Date | null | [Date | null, Date | null];\n} => {\n // Allow empty input - user hasn't started typing yet\n if (!inputValue?.trim()) return { shouldBlock: false };\n\n // Handle special single date formats (MMM, MMMM, YYYY) - skip normal validation\n if (!isRange && format) {\n const specialParse = parseSpecialSingleFormat(inputValue, format);\n if (specialParse.isSpecialFormat && !specialParse.shouldBlock) {\n return { shouldBlock: false, parsedValue: specialParse.parsedDate || null };\n } else if (specialParse.shouldBlock) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n }\n\n if (isRange) {\n // Split range input on en dash separator (e.g., \"25/12/2024 – 31/12/2024\")\n const parts = inputValue.split(/\\s*–\\s*/);\n\n // Block incomplete input to prevent premature validation (e.g., \"25/12/202\" is being typed)\n if (\n (parts[0]?.trim() && parts[0].trim().length < 10) ||\n (parts[1]?.trim() && parts[1].trim().length < 10)\n ) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n // Validate and parse start date if it looks complete (10+ chars = DD/MM/YYYY)\n if (parts[0]?.trim() && parts[0].trim().length >= 10) {\n const startValidation = validateDateComponents(parts[0].trim());\n if (!startValidation.isValid) {\n return { shouldBlock: true, error: `Start date: ${startValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n startDate = startValidation.parsedDate || null;\n }\n\n // Validate and parse end date if it looks complete\n if (parts[1]?.trim() && parts[1].trim().length >= 10) {\n const endValidation = validateDateComponents(parts[1].trim());\n if (!endValidation.isValid) {\n return { shouldBlock: true, error: `End date: ${endValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n endDate = endValidation.parsedDate || null;\n }\n\n // Business logic: start date cannot be after end date\n if (startDate && endDate && startDate > endDate) {\n return { shouldBlock: true, error: 'Start date cannot be greater than end date' };\n }\n\n // Additional validation for date range constraints\n if (options) {\n if (startDate && options.minDate && dayjs(startDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (startDate && options.maxDate && dayjs(startDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (endDate && options.minDate && dayjs(endDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n if (endDate && options.maxDate && dayjs(endDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n }\n\n // Return parsed dates ready for setControlledValue\n return { shouldBlock: false, parsedValue: [startDate, endDate] };\n } else if (inputValue.length >= 10) {\n // Single date: validate and parse if it looks complete\n const validation = validateDateComponents(inputValue);\n if (!validation.isValid) {\n return { shouldBlock: true, error: validation.error };\n }\n\n const parsedDate = validation.parsedDate;\n\n // Additional validation for single date constraints\n if (options && parsedDate) {\n if (options.excludeDate?.(parsedDate)) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.minDate && dayjs(parsedDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.maxDate && dayjs(parsedDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n }\n\n // Return parsed date ready for setControlledValue\n return { shouldBlock: false, parsedValue: parsedDate || null };\n }\n\n // Input is incomplete but valid so far - allow continued typing\n return { shouldBlock: false };\n};\n\n/**\n * Removes date delimiters (slashes) from formatted date strings for internal processing\n * Used to convert external formatted values to internal state for easier validation and length checks\n *\n * @param str - The date string with delimiters\n * @returns String without delimiters, or empty string if input is null/undefined\n *\n * @example\n * // Remove slashes from single date\n * stripDelimiters(\"25/12/2024\")\n * // → \"25122024\"\n *\n * @example\n * // Handle null/undefined input\n * stripDelimiters(undefined)\n * // → \"\"\n *\n * @example\n * // Used for internal state conversion\n * stripDelimiters(\"31/12/2024\")\n * // → \"31122024\" (easier for length checks: inputValue.length === 8)\n */\nconst stripDelimiters = (str?: string): string => str?.replace(/\\//g, '') ?? '';\n\nexport {\n convertIntlToDayjsLocale,\n loadScript,\n getFormattedDate,\n rangeFormattedValue,\n rangeInputPlaceHolder,\n finalInputFormat,\n getTextInputFormat,\n validateDateComponents,\n validateAndParseDateInput,\n stripDelimiters,\n};\n"],"names":["dayjs","extend","customParseFormat","dayjs_locales","patchLocale","locale","includes","convertIntlToDayjsLocale","lang","toLowerCase","split","concat","isScriptLoaded","src","Boolean","document","querySelector","loadScript","callback","localeScript","createElement","async","onload","head","appendChild","defaultDateFormatter","_ref","type","date","format","labelSeparator","formatDate","value","Array","isArray","getFormattedDate","_ref2","formatter","others","_objectWithoutProperties","_excluded","rangeFormattedValue","startValue","endValue","rangeInputPlaceHolder","placeholder","finalInputFormat","getTextInputFormat","formatStr","isRangeInput","replace","validateDateComponents","dateStr","trim","isValid","parsed","error","year","parsedDate","toDate","parseSpecialSingleFormat","inputValue","isSpecialFormat","shouldBlock","trimmedInput","today","Date","test","parseInt","getMonth","getDate","length","monthDate","getFullYear","month","validateAndParseDateInput","isRange","options","specialParse","parsedValue","_parts$","_parts$2","_parts$3","_parts$4","parts","startDate","endDate","startValidation","endValidation","minDate","isBefore","maxDate","isAfter","validation","_options$excludeDate","excludeDate","call","stripDelimiters","str","_str$replace"],"mappings":"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"}
@@ -53,7 +53,7 @@ var CountrySelector = function CountrySelector(_ref) {
53
53
  setIsDropdownOpen = _React$useState2[1];
54
54
  var isMobile = useIsMobile();
55
55
  var actionList = /*#__PURE__*/jsx(ActionList, {
56
- isVirtualized: true,
56
+ isVirtualized: !isMobile,
57
57
  children: countryData.map(function (country) {
58
58
  return /*#__PURE__*/jsx(ActionListItem, {
59
59
  onClick: onItemClick,
@@ -1 +1 @@
1
- {"version":3,"file":"CountrySelector.web.js","sources":["../../../../../../../src/components/Input/PhoneNumberInput/CountrySelector.web.tsx"],"sourcesContent":["import type { CountryCodeType, getFlagsForAllCountries } from '@razorpay/i18nify-js';\nimport { getDialCodeByCountryCode, getFlagOfCountry } from '@razorpay/i18nify-js';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n ActionList,\n ActionListItem,\n ActionListItemAsset,\n ActionListItemText,\n} from '~components/ActionList';\nimport { BottomSheet, BottomSheetBody, BottomSheetHeader } from '~components/BottomSheet';\nimport type { DropdownOverlayProps } from '~components/Dropdown';\nimport { Dropdown, DropdownButton, DropdownOverlay } from '~components/Dropdown';\nimport { ChevronUpDownIcon } from '~components/Icons';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { size as sizes } from '~tokens/global';\nimport { makeSize } from '~utils';\nimport BaseBox from '~components/Box/BaseBox';\n\nconst countryNameFormatter = new Intl.DisplayNames(['en'], { type: 'region' });\n\ntype CountryData = {\n code: CountryCodeType;\n name: string;\n}[];\ntype CounterSelectorProps = {\n selectedCountry: CountryCodeType;\n inputWrapperRef: DropdownOverlayProps['referenceRef'];\n countryData: CountryData;\n onItemClick: (props: { name: string }) => void;\n flags: ReturnType<typeof getFlagsForAllCountries>;\n isDisabled?: boolean;\n size: 'medium' | 'large';\n};\n\nconst CountryDropdownButtonWrapper = styled(BaseBox)(() => {\n return {\n '& > button': {\n padding: '0',\n width: '100%',\n },\n };\n});\n\nconst CountrySelector = ({\n isDisabled,\n selectedCountry,\n inputWrapperRef,\n countryData,\n onItemClick,\n flags,\n size,\n}: CounterSelectorProps): React.ReactElement => {\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n const isMobile = useIsMobile();\n\n const actionList = (\n <ActionList isVirtualized>\n {countryData.map((country) => {\n return (\n <ActionListItem\n key={country.code}\n onClick={onItemClick}\n leading={<ActionListItemAsset src={flags[country.code]['4X3']} alt={country.name} />}\n title={country.name}\n value={country.code}\n trailing={\n <ActionListItemText>{getDialCodeByCountryCode(country.code)}</ActionListItemText>\n }\n />\n );\n })}\n </ActionList>\n );\n\n const flagSize = {\n medium: makeSize(sizes[20]),\n large: makeSize(sizes[24]),\n } as const;\n\n return (\n <Dropdown isOpen={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n {/* TODO: Remove once CountrySelector's button sizing is fixed in figma */}\n <CountryDropdownButtonWrapper\n width={size === 'medium' ? '45px' : '60px'}\n marginLeft={size === 'medium' ? '-3px' : '-2px'}\n >\n <DropdownButton\n isDisabled={isDisabled}\n size={size === 'medium' ? 'xsmall' : 'medium'}\n variant=\"tertiary\"\n //@ts-expect-error\n color=\"transparent\"\n accessibilityLabel={`${countryNameFormatter.of(selectedCountry)} - Select Country`}\n icon={ChevronUpDownIcon}\n iconPosition=\"right\"\n // We need to prevent the click event from propagating to the BaseInputWrapper,\n // Because the BaseInputWrapper is listening for click events to focus the input.\n // We don't want that to happen when the user clicks on the dropdown button\n // otherwise the dropdown will close immediately after opening\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {/* @ts-expect-error */}\n <img\n loading=\"lazy\"\n role=\"presentation\"\n width={flagSize[size]}\n src={getFlagOfCountry(selectedCountry)['4X3']}\n alt=\"\"\n />\n </DropdownButton>\n </CountryDropdownButtonWrapper>\n {isMobile ? (\n <BottomSheet>\n <BottomSheetHeader title=\"Select A Country\" />\n <BottomSheetBody>{actionList}</BottomSheetBody>\n </BottomSheet>\n ) : (\n <DropdownOverlay referenceRef={inputWrapperRef}>{actionList}</DropdownOverlay>\n )}\n </Dropdown>\n );\n};\n\nexport { CountrySelector, countryNameFormatter };\n"],"names":["countryNameFormatter","Intl","DisplayNames","type","CountryDropdownButtonWrapper","styled","BaseBox","withConfig","displayName","componentId","padding","width","CountrySelector","_ref","isDisabled","selectedCountry","inputWrapperRef","countryData","onItemClick","flags","size","_React$useState","React","useState","_React$useState2","_slicedToArray","isDropdownOpen","setIsDropdownOpen","isMobile","useIsMobile","actionList","_jsx","ActionList","isVirtualized","children","map","country","ActionListItem","onClick","leading","ActionListItemAsset","src","code","alt","name","title","value","trailing","ActionListItemText","getDialCodeByCountryCode","flagSize","medium","makeSize","sizes","large","_jsxs","Dropdown","isOpen","onOpenChange","marginLeft","DropdownButton","variant","color","accessibilityLabel","concat","of","icon","ChevronUpDownIcon","iconPosition","e","stopPropagation","loading","role","getFlagOfCountry","BottomSheet","BottomSheetHeader","BottomSheetBody","DropdownOverlay","referenceRef"],"mappings":"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"}
1
+ {"version":3,"file":"CountrySelector.web.js","sources":["../../../../../../../src/components/Input/PhoneNumberInput/CountrySelector.web.tsx"],"sourcesContent":["import type { CountryCodeType, getFlagsForAllCountries } from '@razorpay/i18nify-js';\nimport { getDialCodeByCountryCode, getFlagOfCountry } from '@razorpay/i18nify-js';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n ActionList,\n ActionListItem,\n ActionListItemAsset,\n ActionListItemText,\n} from '~components/ActionList';\nimport { BottomSheet, BottomSheetBody, BottomSheetHeader } from '~components/BottomSheet';\nimport type { DropdownOverlayProps } from '~components/Dropdown';\nimport { Dropdown, DropdownButton, DropdownOverlay } from '~components/Dropdown';\nimport { ChevronUpDownIcon } from '~components/Icons';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { size as sizes } from '~tokens/global';\nimport { makeSize } from '~utils';\nimport BaseBox from '~components/Box/BaseBox';\n\nconst countryNameFormatter = new Intl.DisplayNames(['en'], { type: 'region' });\n\ntype CountryData = {\n code: CountryCodeType;\n name: string;\n}[];\ntype CounterSelectorProps = {\n selectedCountry: CountryCodeType;\n inputWrapperRef: DropdownOverlayProps['referenceRef'];\n countryData: CountryData;\n onItemClick: (props: { name: string }) => void;\n flags: ReturnType<typeof getFlagsForAllCountries>;\n isDisabled?: boolean;\n size: 'medium' | 'large';\n};\n\nconst CountryDropdownButtonWrapper = styled(BaseBox)(() => {\n return {\n '& > button': {\n padding: '0',\n width: '100%',\n },\n };\n});\n\nconst CountrySelector = ({\n isDisabled,\n selectedCountry,\n inputWrapperRef,\n countryData,\n onItemClick,\n flags,\n size,\n}: CounterSelectorProps): React.ReactElement => {\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n const isMobile = useIsMobile();\n\n const actionList = (\n <ActionList isVirtualized={!isMobile}>\n {countryData.map((country) => {\n return (\n <ActionListItem\n key={country.code}\n onClick={onItemClick}\n leading={<ActionListItemAsset src={flags[country.code]['4X3']} alt={country.name} />}\n title={country.name}\n value={country.code}\n trailing={\n <ActionListItemText>{getDialCodeByCountryCode(country.code)}</ActionListItemText>\n }\n />\n );\n })}\n </ActionList>\n );\n\n const flagSize = {\n medium: makeSize(sizes[20]),\n large: makeSize(sizes[24]),\n } as const;\n\n return (\n <Dropdown isOpen={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n {/* TODO: Remove once CountrySelector's button sizing is fixed in figma */}\n <CountryDropdownButtonWrapper\n width={size === 'medium' ? '45px' : '60px'}\n marginLeft={size === 'medium' ? '-3px' : '-2px'}\n >\n <DropdownButton\n isDisabled={isDisabled}\n size={size === 'medium' ? 'xsmall' : 'medium'}\n variant=\"tertiary\"\n //@ts-expect-error\n color=\"transparent\"\n accessibilityLabel={`${countryNameFormatter.of(selectedCountry)} - Select Country`}\n icon={ChevronUpDownIcon}\n iconPosition=\"right\"\n // We need to prevent the click event from propagating to the BaseInputWrapper,\n // Because the BaseInputWrapper is listening for click events to focus the input.\n // We don't want that to happen when the user clicks on the dropdown button\n // otherwise the dropdown will close immediately after opening\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {/* @ts-expect-error */}\n <img\n loading=\"lazy\"\n role=\"presentation\"\n width={flagSize[size]}\n src={getFlagOfCountry(selectedCountry)['4X3']}\n alt=\"\"\n />\n </DropdownButton>\n </CountryDropdownButtonWrapper>\n {isMobile ? (\n <BottomSheet>\n <BottomSheetHeader title=\"Select A Country\" />\n <BottomSheetBody>{actionList}</BottomSheetBody>\n </BottomSheet>\n ) : (\n <DropdownOverlay referenceRef={inputWrapperRef}>{actionList}</DropdownOverlay>\n )}\n </Dropdown>\n );\n};\n\nexport { CountrySelector, countryNameFormatter };\n"],"names":["countryNameFormatter","Intl","DisplayNames","type","CountryDropdownButtonWrapper","styled","BaseBox","withConfig","displayName","componentId","padding","width","CountrySelector","_ref","isDisabled","selectedCountry","inputWrapperRef","countryData","onItemClick","flags","size","_React$useState","React","useState","_React$useState2","_slicedToArray","isDropdownOpen","setIsDropdownOpen","isMobile","useIsMobile","actionList","_jsx","ActionList","isVirtualized","children","map","country","ActionListItem","onClick","leading","ActionListItemAsset","src","code","alt","name","title","value","trailing","ActionListItemText","getDialCodeByCountryCode","flagSize","medium","makeSize","sizes","large","_jsxs","Dropdown","isOpen","onOpenChange","marginLeft","DropdownButton","variant","color","accessibilityLabel","concat","of","icon","ChevronUpDownIcon","iconPosition","e","stopPropagation","loading","role","getFlagOfCountry","BottomSheet","BottomSheetHeader","BottomSheetBody","DropdownOverlay","referenceRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBMA,IAAAA,oBAAoB,GAAG,IAAIC,IAAI,CAACC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE;AAAEC,EAAAA,IAAI,EAAE,QAAA;AAAS,CAAC,EAAC;AAgB9E,IAAMC,4BAA4B,gBAAGC,MAAM,CAACC,OAAO,CAAC,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,kDAAA;EAAAC,WAAA,EAAA,UAAA;AAAA,CAAA,CAAA,CAAC,YAAM;EACzD,OAAO;AACL,IAAA,YAAY,EAAE;AACZC,MAAAA,OAAO,EAAE,GAAG;AACZC,MAAAA,KAAK,EAAE,MAAA;AACT,KAAA;GACD,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAQ2B;AAAA,EAAA,IAP9CC,UAAU,GAAAD,IAAA,CAAVC,UAAU;IACVC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IACfC,eAAe,GAAAH,IAAA,CAAfG,eAAe;IACfC,WAAW,GAAAJ,IAAA,CAAXI,WAAW;IACXC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,KAAK,GAAAN,IAAA,CAALM,KAAK;IACLC,MAAI,GAAAP,IAAA,CAAJO,IAAI,CAAA;AAEJ,EAAA,IAAAC,eAAA,GAA4CC,cAAK,CAACC,QAAQ,CAAC,KAAK,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAJ,eAAA,EAAA,CAAA,CAAA;AAA1DK,IAAAA,cAAc,GAAAF,gBAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,iBAAiB,GAAAH,gBAAA,CAAA,CAAA,CAAA,CAAA;AACxC,EAAA,IAAMI,QAAQ,GAAGC,WAAW,EAAE,CAAA;AAE9B,EAAA,IAAMC,UAAU,gBACdC,GAAA,CAACC,UAAU,EAAA;IAACC,aAAa,EAAE,CAACL,QAAS;AAAAM,IAAAA,QAAA,EAClCjB,WAAW,CAACkB,GAAG,CAAC,UAACC,OAAO,EAAK;MAC5B,oBACEL,GAAA,CAACM,cAAc,EAAA;AAEbC,QAAAA,OAAO,EAAEpB,WAAY;QACrBqB,OAAO,eAAER,GAAA,CAACS,mBAAmB,EAAA;UAACC,GAAG,EAAEtB,KAAK,CAACiB,OAAO,CAACM,IAAI,CAAC,CAAC,KAAK,CAAE;UAACC,GAAG,EAAEP,OAAO,CAACQ,IAAAA;AAAK,SAAE,CAAE;QACrFC,KAAK,EAAET,OAAO,CAACQ,IAAK;QACpBE,KAAK,EAAEV,OAAO,CAACM,IAAK;QACpBK,QAAQ,eACNhB,GAAA,CAACiB,kBAAkB,EAAA;AAAAd,UAAAA,QAAA,EAAEe,wBAAwB,CAACb,OAAO,CAACM,IAAI,CAAA;SAAsB,CAAA;OAN7EN,EAAAA,OAAO,CAACM,IAQd,CAAC,CAAA;KAEL,CAAA;AAAC,GACQ,CACb,CAAA;AAED,EAAA,IAAMQ,QAAQ,GAAG;AACfC,IAAAA,MAAM,EAAEC,QAAQ,CAACC,IAAK,CAAC,EAAE,CAAC,CAAC;AAC3BC,IAAAA,KAAK,EAAEF,QAAQ,CAACC,IAAK,CAAC,EAAE,CAAC,CAAA;GACjB,CAAA;EAEV,oBACEE,IAAA,CAACC,QAAQ,EAAA;AAACC,IAAAA,MAAM,EAAE/B,cAAe;AAACgC,IAAAA,YAAY,EAAE/B,iBAAkB;IAAAO,QAAA,EAAA,cAEhEH,GAAA,CAAC3B,4BAA4B,EAAA;AAC3BO,MAAAA,KAAK,EAAES,MAAI,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAO;AAC3CuC,MAAAA,UAAU,EAAEvC,MAAI,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAO;MAAAc,QAAA,eAEhDH,GAAA,CAAC6B,cAAc,EAAA;AACb9C,QAAAA,UAAU,EAAEA,UAAW;AACvBM,QAAAA,IAAI,EAAEA,MAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAS;AAC9CyC,QAAAA,OAAO,EAAC,UAAA;AACR;AAAA;AACAC,QAAAA,KAAK,EAAC,aAAa;QACnBC,kBAAkB,EAAA,EAAA,CAAAC,MAAA,CAAKhE,oBAAoB,CAACiE,EAAE,CAAClD,eAAe,CAAC,EAAoB,mBAAA,CAAA;AACnFmD,QAAAA,IAAI,EAAEC,iBAAkB;AACxBC,QAAAA,YAAY,EAAC,OAAA;AACb;AACA;AACA;AACA;AAAA;AACA9B,QAAAA,OAAO,EAAE,SAAAA,OAAC+B,CAAAA,CAAC,EAAK;UACdA,CAAC,CAACC,eAAe,EAAE,CAAA;SACnB;AAAApC,QAAAA,QAAA,eAGFH,GAAA,CAAA,KAAA,EAAA;AACEwC,UAAAA,OAAO,EAAC,MAAM;AACdC,UAAAA,IAAI,EAAC,cAAc;AACnB7D,UAAAA,KAAK,EAAEuC,QAAQ,CAAC9B,MAAI,CAAE;AACtBqB,UAAAA,GAAG,EAAEgC,gBAAgB,CAAC1D,eAAe,CAAC,CAAC,KAAK,CAAE;AAC9C4B,UAAAA,GAAG,EAAC,EAAA;SACL,CAAA;OACa,CAAA;AAAC,KACW,CAAC,EAC9Bf,QAAQ,gBACP2B,IAAA,CAACmB,WAAW,EAAA;MAAAxC,QAAA,EAAA,cACVH,GAAA,CAAC4C,iBAAiB,EAAA;AAAC9B,QAAAA,KAAK,EAAC,kBAAA;AAAkB,OAAE,CAAC,eAC9Cd,GAAA,CAAC6C,eAAe,EAAA;AAAA1C,QAAAA,QAAA,EAAEJ,UAAAA;AAAU,OAAkB,CAAC,CAAA;AAAA,KACpC,CAAC,gBAEdC,GAAA,CAAC8C,eAAe,EAAA;AAACC,MAAAA,YAAY,EAAE9D,eAAgB;AAAAkB,MAAAA,QAAA,EAAEJ,UAAAA;AAAU,KAAkB,CAC9E,CAAA;AAAA,GACO,CAAC,CAAA;AAEf;;;;"}
@@ -74,17 +74,17 @@ var rangeFormattedValue = function rangeFormattedValue(startValue, endValue) {
74
74
  if (startValue === endValue) {
75
75
  return startValue; // Same date, show single value
76
76
  }
77
- return "".concat(startValue, " \u2192 ").concat(endValue); // Different dates, show range
77
+ return "".concat(startValue, " \u2013 ").concat(endValue); // Different dates, show range
78
78
  }
79
79
 
80
80
  // Only start value exists
81
81
  if (startValue) {
82
- return "".concat(startValue, " \u2192 ");
82
+ return "".concat(startValue, " \u2013 ");
83
83
  }
84
84
 
85
85
  // Only end value exists
86
86
  if (endValue) {
87
- return " \u2192 ".concat(endValue);
87
+ return " \u2013 ".concat(endValue);
88
88
  }
89
89
 
90
90
  // No values
@@ -92,16 +92,16 @@ var rangeFormattedValue = function rangeFormattedValue(startValue, endValue) {
92
92
  };
93
93
  var rangeInputPlaceHolder = function rangeInputPlaceHolder(placeholder, format) {
94
94
  if (placeholder) {
95
- return "".concat(placeholder, " \u2192 ").concat(placeholder);
95
+ return "".concat(placeholder, " \u2013 ").concat(placeholder);
96
96
  }
97
- return "".concat(format, " \u2192 ").concat(format);
97
+ return "".concat(format, " \u2013 ").concat(format);
98
98
  };
99
99
  var finalInputFormat = function finalInputFormat(startValue, endValue, format) {
100
100
  // For case: when start and end are the same, return the format
101
101
  if (startValue === endValue && (startValue || endValue)) {
102
102
  return format;
103
103
  }
104
- return "".concat(format, " \u2192 ").concat(format);
104
+ return "".concat(format, " \u2013 ").concat(format);
105
105
  };
106
106
 
107
107
  /**
@@ -109,13 +109,13 @@ var finalInputFormat = function finalInputFormat(startValue, endValue, format) {
109
109
  * TextInput format only recognizes # as input placeholder, so we replace
110
110
  * date characters (Y,M,D) with # while preserving delimiters.
111
111
  *
112
- * @example "DD/MM/YYYY" "##/##/####"
113
- * @example "MMMM" "################" (longest month: "September")
114
- * @example "MMM" "###"
112
+ * @example "DD/MM/YYYY" "##/##/####"
113
+ * @example "MMMM" "################" (longest month: "September")
114
+ * @example "MMM" "###"
115
115
  */
116
116
  var getTextInputFormat = function getTextInputFormat(formatStr, isRangeInput) {
117
117
  if (!formatStr) {
118
- return isRangeInput ? '##/##/######/##/####' : '##/##/####';
118
+ return isRangeInput ? '##/##/######/##/####' : '##/##/####';
119
119
  } else if (formatStr === 'MMMM') {
120
120
  return formatStr.replace(/MMMM/g, '#########');
121
121
  }
@@ -283,7 +283,7 @@ var parseSpecialSingleFormat = function parseSpecialSingleFormat(inputValue, for
283
283
  *
284
284
  * @example
285
285
  * // Valid range input
286
- * validateAndParseDateInput("25/12/202431/12/2024", true, "DD/MM/YYYY")
286
+ * validateAndParseDateInput("25/12/202431/12/2024", true, "DD/MM/YYYY")
287
287
  * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }
288
288
  *
289
289
  * @example
@@ -331,8 +331,8 @@ var validateAndParseDateInput = function validateAndParseDateInput(inputValue, i
331
331
  }
332
332
  if (isRange) {
333
333
  var _parts$, _parts$2, _parts$3, _parts$4;
334
- // Split range input on arrow separator (e.g., "25/12/202431/12/2024")
335
- var parts = inputValue.split(/\s*→\s*/);
334
+ // Split range input on en dash separator (e.g., "25/12/202431/12/2024")
335
+ var parts = inputValue.split(/\s*–\s*/);
336
336
 
337
337
  // Block incomplete input to prevent premature validation (e.g., "25/12/202" is being typed)
338
338
  if ((_parts$ = parts[0]) !== null && _parts$ !== void 0 && _parts$.trim() && parts[0].trim().length < 10 || (_parts$2 = parts[1]) !== null && _parts$2 !== void 0 && _parts$2.trim() && parts[1].trim().length < 10) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { DatePickerType, DatePickerValue } from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nconst dayjs_locales = [\n 'af',\n 'ar',\n 'ar-dz',\n 'ar-kw',\n 'ar-ly',\n 'ar-ma',\n 'ar-sa',\n 'ar-tn',\n 'az',\n 'be',\n 'bg',\n 'bm',\n 'bn',\n 'bo',\n 'br',\n 'bs',\n 'ca',\n 'cs',\n 'cv',\n 'cy',\n 'da',\n 'de',\n 'de-at',\n 'de-ch',\n 'dv',\n 'el',\n 'en',\n 'en-au',\n 'en-ca',\n 'en-gb',\n 'en-ie',\n 'en-il',\n 'en-nz',\n 'en-SG',\n 'eo',\n 'es',\n 'es-do',\n 'es-us',\n 'et',\n 'eu',\n 'fa',\n 'fi',\n 'fo',\n 'fr',\n 'fr-ca',\n 'fr-ch',\n 'fy',\n 'ga',\n 'gd',\n 'gl',\n 'gom-latn',\n 'gu',\n 'he',\n 'hi',\n 'hr',\n 'hu',\n 'hy-am',\n 'id',\n 'is',\n 'it',\n 'it-ch',\n 'ja',\n 'jv',\n 'ka',\n 'kk',\n 'km',\n 'kn',\n 'ko',\n 'ku',\n 'ky',\n 'lb',\n 'lo',\n 'lt',\n 'lv',\n 'me',\n 'mi',\n 'mk',\n 'ml',\n 'mn',\n 'mr',\n 'ms',\n 'ms-my',\n 'mt',\n 'my',\n 'nb',\n 'ne',\n 'nl',\n 'nl-be',\n 'nn',\n 'oc-lnc',\n 'pa-in',\n 'pl',\n 'pt',\n 'pt-br',\n 'ro',\n 'ru',\n 'sd',\n 'se',\n 'si',\n 'sk',\n 'sl',\n 'sq',\n 'sr',\n 'sr-cyrl',\n 'ss',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tet',\n 'tg',\n 'th',\n 'tl-ph',\n 'tlh',\n 'tr',\n 'tzl',\n 'tzm',\n 'tzm-latn',\n 'ug-cn',\n 'uk',\n 'ur',\n 'uz',\n 'uz-latn',\n 'vi',\n 'x-pseudo',\n 'yo',\n 'zh-cn',\n 'zh-hk',\n 'zh-tw',\n];\n\n// https://github.com/iamkun/dayjs/issues/732#issuecomment-554383261\nfunction patchLocale(locale: string): string | boolean {\n if (['en', 'en-us'].includes(locale)) return 'en';\n if (locale === 'zn') return 'zh-cn';\n if (locale === 'no') return 'nb';\n if (dayjs_locales.includes(locale)) return locale;\n return false;\n}\n\nfunction convertIntlToDayjsLocale(lang: string): string {\n lang = lang.toLowerCase();\n const locale = patchLocale(lang) || (lang.includes('-') && patchLocale(lang.split('-')[0]));\n if (!locale) return 'en';\n\n return `${locale}`;\n}\n\nfunction isScriptLoaded(src: string): boolean {\n return Boolean(document.querySelector(`script[src=\"${src}\"]`));\n}\n\n/**\n * Used to dynamically load a script\n */\nfunction loadScript(src: string, callback?: () => void): void {\n if (isScriptLoaded(src)) {\n callback?.();\n return;\n }\n const localeScript = document.createElement('script');\n localeScript.async = true;\n localeScript.src = src;\n localeScript.onload = () => callback?.();\n document.head.appendChild(localeScript);\n}\n\ninterface DateFormatterInput {\n type: DatePickerType;\n date: DatePickerValue<DatePickerType>;\n locale: string;\n format: string;\n labelSeparator: string;\n}\n\ntype DateFormatter = (input: DateFormatterInput) => string;\n\nfunction defaultDateFormatter({ type, date, locale, format, labelSeparator }: DateFormatterInput) {\n const formatDate = (value: Date) => dayjs(value).locale(locale).format(format);\n\n if (type === 'default') {\n return date === null ? '' : formatDate(date as Date);\n }\n\n if (type === 'range' && Array.isArray(date)) {\n if (date[0] && date[1]) {\n return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;\n }\n\n if (date[0]) {\n return `${formatDate(date[0])} ${labelSeparator} `;\n }\n\n return '';\n }\n\n return '';\n}\n\ninterface GetFormattedDateInput extends DateFormatterInput {\n formatter?: DateFormatter;\n}\n\nfunction getFormattedDate({ formatter, ...others }: GetFormattedDateInput) {\n return (formatter || defaultDateFormatter)(others);\n}\n\nconst rangeFormattedValue = (startValue: string, endValue: string) => {\n // Both values exist\n if (startValue && endValue) {\n if (startValue === endValue) {\n return startValue; // Same date, show single value\n }\n return `${startValue} → ${endValue}`; // Different dates, show range\n }\n\n // Only start value exists\n if (startValue) {\n return `${startValue} → `;\n }\n\n // Only end value exists\n if (endValue) {\n return ` → ${endValue}`;\n }\n\n // No values\n return '';\n};\n\nconst rangeInputPlaceHolder = (placeholder: string | undefined, format: string) => {\n if (placeholder) {\n return `${placeholder} → ${placeholder}`;\n }\n return `${format} → ${format}`;\n};\n\nconst finalInputFormat = (startValue: string, endValue: string, format: string | undefined) => {\n // For case: when start and end are the same, return the format\n if (startValue === endValue && (startValue || endValue)) {\n return format;\n }\n return `${format} → ${format}`;\n};\n\n/**\n * Converts date format string to TextInput pattern for masking.\n * TextInput format only recognizes # as input placeholder, so we replace\n * date characters (Y,M,D) with # while preserving delimiters.\n *\n * @example \"DD/MM/YYYY\" → \"##/##/####\"\n * @example \"MMMM\" → \"################\" (longest month: \"September\")\n * @example \"MMM\" → \"###\"\n */\nconst getTextInputFormat = (formatStr?: string, isRangeInput?: boolean): string => {\n if (!formatStr) {\n return isRangeInput ? '##/##/#### → ##/##/####' : '##/##/####';\n } else if (formatStr === 'MMMM') {\n return formatStr.replace(/MMMM/g, '#########');\n }\n return formatStr.replace(/[YMD]/g, '#');\n};\n\n/**\n * Validates date string using DayJS strict parsing and business rules\n *\n * @param dateStr - The date string to validate in DD/MM/YYYY format\n * @returns Object with validation result, error message if invalid, and parsed Date if valid\n *\n * @example\n * // Valid date\n * validateDateComponents(\"25/12/2024\")\n * // → { isValid: true, parsedDate: Date(2024, 11, 25) }\n *\n * @example\n * // Invalid date (non-existent)\n * validateDateComponents(\"31/02/2024\")\n * // → { isValid: false, error: \"Invalid date\" }\n *\n * @example\n * // Invalid year range\n * validateDateComponents(\"25/12/999\")\n * // → { isValid: false, error: \"Invalid year\" }\n *\n * @example\n * // Empty input\n * validateDateComponents(\"\")\n * // → { isValid: true }\n */\nconst validateDateComponents = (\n dateStr: string,\n): {\n isValid: boolean;\n error?: string;\n parsedDate?: Date;\n} => {\n // Empty strings are considered valid (user hasn't started typing)\n if (!dateStr?.trim()) {\n return { isValid: true };\n }\n\n // Use DayJS strict parsing to validate DD/MM/YYYY format and date existence\n const parsed = dayjs(dateStr, 'DD/MM/YYYY', true);\n\n // DayJS strict mode catches invalid days/months and non-existent dates (e.g., Feb 30th)\n if (!parsed.isValid()) {\n return { isValid: false, error: 'Invalid date' };\n }\n\n // Business rule: restrict year range to reasonable values for most applications\n const year = parsed.year();\n if (year < 1000 || year > 3000) {\n return { isValid: false, error: 'Invalid year' };\n }\n\n // Return both validation result AND parsed date to avoid double parsing\n return { isValid: true, parsedDate: parsed.toDate() };\n};\n\n/**\n * Detects and parses special single date formats (MMM, MMMM, YYYY)\n * These formats preserve current date/month/year and only change the specified component\n *\n * @param inputValue - The input string to parse\n * @param format - The expected format ('MMM', 'MMMM', or 'YYYY')\n * @returns Object with special format detection, parsed date, and validation result\n *\n * @example\n * // Year format - preserves current month/day, changes year\n * parseSpecialSingleFormat(\"2024\", \"YYYY\")\n * // → { isSpecialFormat: true, parsedDate: Date(2024, currentMonth, currentDay), shouldBlock: false }\n *\n * @example\n * // Short month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"Aug\", \"MMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Full month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"August\", \"MMMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Invalid year\n * parseSpecialSingleFormat(\"999\", \"YYYY\")\n * // → { isSpecialFormat: true, shouldBlock: true }\n *\n * @example\n * // Not a special format\n * parseSpecialSingleFormat(\"25/12/2024\", \"DD/MM/YYYY\")\n * // → { isSpecialFormat: false, shouldBlock: false }\n */\nconst parseSpecialSingleFormat = (\n inputValue: string,\n format?: string,\n): { isSpecialFormat: boolean; parsedDate?: Date; shouldBlock: boolean } => {\n if (!format) return { isSpecialFormat: false, shouldBlock: false };\n\n const trimmedInput = inputValue.trim();\n const today = new Date();\n\n // Handle year-only format (YYYY) - keep current month and day, change year\n if (format === 'YYYY' && /^\\d{4}$/.test(trimmedInput)) {\n const year = parseInt(trimmedInput, 10);\n if (year >= 1000 && year <= 3000) {\n return {\n isSpecialFormat: true,\n parsedDate: new Date(year, today.getMonth(), today.getDate()),\n shouldBlock: false,\n };\n } else {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n }\n\n // Handle month formats (MMM, MMMM) - keep current day and year, change month\n if ((format === 'MMM' || format === 'MMMM') && trimmedInput.length >= 3) {\n // Using DayJS to parse month names (handles both short \"Aug\" and full \"August\")\n const monthDate = dayjs(trimmedInput, format === 'MMM' ? 'MMM' : 'MMMM', true);\n\n if (!monthDate.isValid()) {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n return {\n isSpecialFormat: true,\n parsedDate: new Date(today.getFullYear(), monthDate.month(), today.getDate()),\n shouldBlock: false,\n };\n }\n\n return { isSpecialFormat: false, shouldBlock: false };\n};\n\n/**\n * Validates and parses date input with comprehensive error handling and constraint checking\n * Combines validation + parsing to avoid redundant operations and supports both single dates and ranges\n *\n * @param inputValue - The input string to validate and parse\n * @param isRange - Whether this is a range input (true) or single date (false)\n * @param format - The expected date format ('DD/MM/YYYY', 'MMM', 'MMMM', 'YYYY')\n * @param options - Additional validation constraints\n * @param options.excludeDate - Function to exclude specific dates (single dates only)\n * @param options.minDate - Minimum allowed date\n * @param options.maxDate - Maximum allowed date\n * @returns Object with shouldBlock flag, optional error message, and parsed values if valid\n *\n * @example\n * // Valid single date\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, 11, 25) }\n *\n * @example\n * // Valid range input\n * validateAndParseDateInput(\"25/12/2024 → 31/12/2024\", true, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }\n *\n * @example\n * // Invalid date with error\n * validateAndParseDateInput(\"31/02/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: true, error: \"Invalid date\" }\n *\n * @example\n * // Date excluded by constraint\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\", {\n * excludeDate: (date) => date.getDay() === 0 // No Sundays\n * })\n * // → { shouldBlock: true, error: \"Date is not allowed\" }\n *\n * @example\n * // Special format - year only\n * validateAndParseDateInput(\"2024\", false, \"YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, currentMonth, currentDay) }\n *\n * @example\n * // Incomplete input - allow continued typing\n * validateAndParseDateInput(\"25/12\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false } (no parsedValue, allows user to continue typing)\n */\nconst validateAndParseDateInput = (\n inputValue: string,\n isRange: boolean,\n format?: string,\n options?: {\n excludeDate?: (date: Date) => boolean;\n minDate?: Date;\n maxDate?: Date;\n },\n): {\n shouldBlock: boolean;\n error?: string;\n parsedValue?: Date | null | [Date | null, Date | null];\n} => {\n // Allow empty input - user hasn't started typing yet\n if (!inputValue?.trim()) return { shouldBlock: false };\n\n // Handle special single date formats (MMM, MMMM, YYYY) - skip normal validation\n if (!isRange && format) {\n const specialParse = parseSpecialSingleFormat(inputValue, format);\n if (specialParse.isSpecialFormat && !specialParse.shouldBlock) {\n return { shouldBlock: false, parsedValue: specialParse.parsedDate || null };\n } else if (specialParse.shouldBlock) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n }\n\n if (isRange) {\n // Split range input on arrow separator (e.g., \"25/12/2024 → 31/12/2024\")\n const parts = inputValue.split(/\\s*→\\s*/);\n\n // Block incomplete input to prevent premature validation (e.g., \"25/12/202\" is being typed)\n if (\n (parts[0]?.trim() && parts[0].trim().length < 10) ||\n (parts[1]?.trim() && parts[1].trim().length < 10)\n ) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n // Validate and parse start date if it looks complete (10+ chars = DD/MM/YYYY)\n if (parts[0]?.trim() && parts[0].trim().length >= 10) {\n const startValidation = validateDateComponents(parts[0].trim());\n if (!startValidation.isValid) {\n return { shouldBlock: true, error: `Start date: ${startValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n startDate = startValidation.parsedDate || null;\n }\n\n // Validate and parse end date if it looks complete\n if (parts[1]?.trim() && parts[1].trim().length >= 10) {\n const endValidation = validateDateComponents(parts[1].trim());\n if (!endValidation.isValid) {\n return { shouldBlock: true, error: `End date: ${endValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n endDate = endValidation.parsedDate || null;\n }\n\n // Business logic: start date cannot be after end date\n if (startDate && endDate && startDate > endDate) {\n return { shouldBlock: true, error: 'Start date cannot be greater than end date' };\n }\n\n // Additional validation for date range constraints\n if (options) {\n if (startDate && options.minDate && dayjs(startDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (startDate && options.maxDate && dayjs(startDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (endDate && options.minDate && dayjs(endDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n if (endDate && options.maxDate && dayjs(endDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n }\n\n // Return parsed dates ready for setControlledValue\n return { shouldBlock: false, parsedValue: [startDate, endDate] };\n } else if (inputValue.length >= 10) {\n // Single date: validate and parse if it looks complete\n const validation = validateDateComponents(inputValue);\n if (!validation.isValid) {\n return { shouldBlock: true, error: validation.error };\n }\n\n const parsedDate = validation.parsedDate;\n\n // Additional validation for single date constraints\n if (options && parsedDate) {\n if (options.excludeDate?.(parsedDate)) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.minDate && dayjs(parsedDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.maxDate && dayjs(parsedDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n }\n\n // Return parsed date ready for setControlledValue\n return { shouldBlock: false, parsedValue: parsedDate || null };\n }\n\n // Input is incomplete but valid so far - allow continued typing\n return { shouldBlock: false };\n};\n\n/**\n * Removes date delimiters (slashes) from formatted date strings for internal processing\n * Used to convert external formatted values to internal state for easier validation and length checks\n *\n * @param str - The date string with delimiters\n * @returns String without delimiters, or empty string if input is null/undefined\n *\n * @example\n * // Remove slashes from single date\n * stripDelimiters(\"25/12/2024\")\n * // → \"25122024\"\n *\n * @example\n * // Handle null/undefined input\n * stripDelimiters(undefined)\n * // → \"\"\n *\n * @example\n * // Used for internal state conversion\n * stripDelimiters(\"31/12/2024\")\n * // → \"31122024\" (easier for length checks: inputValue.length === 8)\n */\nconst stripDelimiters = (str?: string): string => str?.replace(/\\//g, '') ?? '';\n\nexport {\n convertIntlToDayjsLocale,\n loadScript,\n getFormattedDate,\n rangeFormattedValue,\n rangeInputPlaceHolder,\n finalInputFormat,\n getTextInputFormat,\n validateDateComponents,\n validateAndParseDateInput,\n stripDelimiters,\n};\n"],"names":["dayjs","extend","customParseFormat","dayjs_locales","patchLocale","locale","includes","convertIntlToDayjsLocale","lang","toLowerCase","split","concat","isScriptLoaded","src","Boolean","document","querySelector","loadScript","callback","localeScript","createElement","async","onload","head","appendChild","defaultDateFormatter","_ref","type","date","format","labelSeparator","formatDate","value","Array","isArray","getFormattedDate","_ref2","formatter","others","_objectWithoutProperties","_excluded","rangeFormattedValue","startValue","endValue","rangeInputPlaceHolder","placeholder","finalInputFormat","getTextInputFormat","formatStr","isRangeInput","replace","validateDateComponents","dateStr","trim","isValid","parsed","error","year","parsedDate","toDate","parseSpecialSingleFormat","inputValue","isSpecialFormat","shouldBlock","trimmedInput","today","Date","test","parseInt","getMonth","getDate","length","monthDate","getFullYear","month","validateAndParseDateInput","isRange","options","specialParse","parsedValue","_parts$","_parts$2","_parts$3","_parts$4","parts","startDate","endDate","startValidation","endValidation","minDate","isBefore","maxDate","isAfter","validation","_options$excludeDate","excludeDate","call","stripDelimiters","str","_str$replace"],"mappings":";;;;;AAMAA,KAAK,CAACC,MAAM,CAACC,iBAAiB,CAAC,CAAA;AAE/B,IAAMC,aAAa,GAAG,CACpB,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,EACV,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,CACR,CAAA;;AAED;AACA,SAASC,WAAWA,CAACC,MAAc,EAAoB;AACrD,EAAA,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAACC,QAAQ,CAACD,MAAM,CAAC,EAAE,OAAO,IAAI,CAAA;AACjD,EAAA,IAAIA,MAAM,KAAK,IAAI,EAAE,OAAO,OAAO,CAAA;AACnC,EAAA,IAAIA,MAAM,KAAK,IAAI,EAAE,OAAO,IAAI,CAAA;EAChC,IAAIF,aAAa,CAACG,QAAQ,CAACD,MAAM,CAAC,EAAE,OAAOA,MAAM,CAAA;AACjD,EAAA,OAAO,KAAK,CAAA;AACd,CAAA;AAEA,SAASE,wBAAwBA,CAACC,IAAY,EAAU;AACtDA,EAAAA,IAAI,GAAGA,IAAI,CAACC,WAAW,EAAE,CAAA;EACzB,IAAMJ,MAAM,GAAGD,WAAW,CAACI,IAAI,CAAC,IAAKA,IAAI,CAACF,QAAQ,CAAC,GAAG,CAAC,IAAIF,WAAW,CAACI,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;AAC3F,EAAA,IAAI,CAACL,MAAM,EAAE,OAAO,IAAI,CAAA;EAExB,OAAAM,EAAAA,CAAAA,MAAA,CAAUN,MAAM,CAAA,CAAA;AAClB,CAAA;AAEA,SAASO,cAAcA,CAACC,GAAW,EAAW;EAC5C,OAAOC,OAAO,CAACC,QAAQ,CAACC,aAAa,CAAAL,eAAAA,CAAAA,MAAA,CAAgBE,GAAG,EAAI,KAAA,CAAA,CAAC,CAAC,CAAA;AAChE,CAAA;;AAEA;AACA;AACA;AACA,SAASI,UAAUA,CAACJ,GAAW,EAAEK,QAAqB,EAAQ;AAC5D,EAAA,IAAIN,cAAc,CAACC,GAAG,CAAC,EAAE;AACvBK,IAAAA,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,EAAI,CAAA;AACZ,IAAA,OAAA;AACF,GAAA;AACA,EAAA,IAAMC,YAAY,GAAGJ,QAAQ,CAACK,aAAa,CAAC,QAAQ,CAAC,CAAA;EACrDD,YAAY,CAACE,KAAK,GAAG,IAAI,CAAA;EACzBF,YAAY,CAACN,GAAG,GAAGA,GAAG,CAAA;EACtBM,YAAY,CAACG,MAAM,GAAG,YAAA;AAAA,IAAA,OAAMJ,QAAQ,KAARA,IAAAA,IAAAA,QAAQ,KAARA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,EAAI,CAAA;AAAA,GAAA,CAAA;AACxCH,EAAAA,QAAQ,CAACQ,IAAI,CAACC,WAAW,CAACL,YAAY,CAAC,CAAA;AACzC,CAAA;AAYA,SAASM,oBAAoBA,CAAAC,IAAA,EAAqE;AAAA,EAAA,IAAlEC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEvB,MAAM,GAAAqB,IAAA,CAANrB,MAAM;IAAEwB,MAAM,GAAAH,IAAA,CAANG,MAAM;IAAEC,cAAc,GAAAJ,IAAA,CAAdI,cAAc,CAAA;AACxE,EAAA,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,KAAW,EAAA;AAAA,IAAA,OAAKhC,KAAK,CAACgC,KAAK,CAAC,CAAC3B,MAAM,CAACA,MAAM,CAAC,CAACwB,MAAM,CAACA,MAAM,CAAC,CAAA;AAAA,GAAA,CAAA;EAE9E,IAAIF,IAAI,KAAK,SAAS,EAAE;IACtB,OAAOC,IAAI,KAAK,IAAI,GAAG,EAAE,GAAGG,UAAU,CAACH,IAAY,CAAC,CAAA;AACtD,GAAA;EAEA,IAAID,IAAI,KAAK,OAAO,IAAIM,KAAK,CAACC,OAAO,CAACN,IAAI,CAAC,EAAE;IAC3C,IAAIA,IAAI,CAAC,CAAC,CAAC,IAAIA,IAAI,CAAC,CAAC,CAAC,EAAE;MACtB,OAAAjB,EAAAA,CAAAA,MAAA,CAAUoB,UAAU,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC,EAAAjB,GAAAA,CAAAA,CAAAA,MAAA,CAAImB,cAAc,EAAA,GAAA,CAAA,CAAAnB,MAAA,CAAIoB,UAAU,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA;AACxE,KAAA;AAEA,IAAA,IAAIA,IAAI,CAAC,CAAC,CAAC,EAAE;AACX,MAAA,OAAA,EAAA,CAAAjB,MAAA,CAAUoB,UAAU,CAACH,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA,GAAA,CAAA,CAAAjB,MAAA,CAAImB,cAAc,EAAA,GAAA,CAAA,CAAA;AACjD,KAAA;AAEA,IAAA,OAAO,EAAE,CAAA;AACX,GAAA;AAEA,EAAA,OAAO,EAAE,CAAA;AACX,CAAA;AAMA,SAASK,gBAAgBA,CAAAC,KAAA,EAAkD;AAAA,EAAA,IAA/CC,SAAS,GAAAD,KAAA,CAATC,SAAS;AAAKC,IAAAA,MAAM,GAAAC,wBAAA,CAAAH,KAAA,EAAAI,SAAA,CAAA,CAAA;AAC9C,EAAA,OAAO,CAACH,SAAS,IAAIZ,oBAAoB,EAAEa,MAAM,CAAC,CAAA;AACpD,CAAA;AAEMG,IAAAA,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,UAAkB,EAAEC,QAAgB,EAAK;AACpE;EACA,IAAID,UAAU,IAAIC,QAAQ,EAAE;IAC1B,IAAID,UAAU,KAAKC,QAAQ,EAAE;MAC3B,OAAOD,UAAU,CAAC;AACpB,KAAA;IACA,OAAA/B,EAAAA,CAAAA,MAAA,CAAU+B,UAAU,EAAA,UAAA,CAAA,CAAA/B,MAAA,CAAMgC,QAAQ,EAAG;AACvC,GAAA;;AAEA;AACA,EAAA,IAAID,UAAU,EAAE;IACd,OAAA/B,EAAAA,CAAAA,MAAA,CAAU+B,UAAU,EAAA,UAAA,CAAA,CAAA;AACtB,GAAA;;AAEA;AACA,EAAA,IAAIC,QAAQ,EAAE;IACZ,OAAAhC,UAAAA,CAAAA,MAAA,CAAagC,QAAQ,CAAA,CAAA;AACvB,GAAA;;AAEA;AACA,EAAA,OAAO,EAAE,CAAA;AACX,EAAC;AAEKC,IAAAA,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,WAA+B,EAAEhB,MAAc,EAAK;AACjF,EAAA,IAAIgB,WAAW,EAAE;AACf,IAAA,OAAA,EAAA,CAAAlC,MAAA,CAAUkC,WAAW,EAAAlC,UAAAA,CAAAA,CAAAA,MAAA,CAAMkC,WAAW,CAAA,CAAA;AACxC,GAAA;AACA,EAAA,OAAA,EAAA,CAAAlC,MAAA,CAAUkB,MAAM,EAAAlB,UAAAA,CAAAA,CAAAA,MAAA,CAAMkB,MAAM,CAAA,CAAA;AAC9B,EAAC;AAEKiB,IAAAA,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIJ,UAAkB,EAAEC,QAAgB,EAAEd,MAA0B,EAAK;AAC7F;EACA,IAAIa,UAAU,KAAKC,QAAQ,KAAKD,UAAU,IAAIC,QAAQ,CAAC,EAAE;AACvD,IAAA,OAAOd,MAAM,CAAA;AACf,GAAA;AACA,EAAA,OAAA,EAAA,CAAAlB,MAAA,CAAUkB,MAAM,EAAAlB,UAAAA,CAAAA,CAAAA,MAAA,CAAMkB,MAAM,CAAA,CAAA;AAC9B,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACMkB,IAAAA,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,SAAkB,EAAEC,YAAsB,EAAa;EACjF,IAAI,CAACD,SAAS,EAAE;AACd,IAAA,OAAOC,YAAY,GAAG,yBAAyB,GAAG,YAAY,CAAA;AAChE,GAAC,MAAM,IAAID,SAAS,KAAK,MAAM,EAAE;AAC/B,IAAA,OAAOA,SAAS,CAACE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;AAChD,GAAA;AACA,EAAA,OAAOF,SAAS,CAACE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AACzC,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAC1BC,OAAe,EAKZ;AACH;EACA,IAAI,EAACA,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,KAAA,CAAA,IAAPA,OAAO,CAAEC,IAAI,EAAE,CAAE,EAAA;IACpB,OAAO;AAAEC,MAAAA,OAAO,EAAE,IAAA;KAAM,CAAA;AAC1B,GAAA;;AAEA;EACA,IAAMC,MAAM,GAAGvD,KAAK,CAACoD,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;;AAEjD;AACA,EAAA,IAAI,CAACG,MAAM,CAACD,OAAO,EAAE,EAAE;IACrB,OAAO;AAAEA,MAAAA,OAAO,EAAE,KAAK;AAAEE,MAAAA,KAAK,EAAE,cAAA;KAAgB,CAAA;AAClD,GAAA;;AAEA;AACA,EAAA,IAAMC,IAAI,GAAGF,MAAM,CAACE,IAAI,EAAE,CAAA;AAC1B,EAAA,IAAIA,IAAI,GAAG,IAAI,IAAIA,IAAI,GAAG,IAAI,EAAE;IAC9B,OAAO;AAAEH,MAAAA,OAAO,EAAE,KAAK;AAAEE,MAAAA,KAAK,EAAE,cAAA;KAAgB,CAAA;AAClD,GAAA;;AAEA;EACA,OAAO;AAAEF,IAAAA,OAAO,EAAE,IAAI;AAAEI,IAAAA,UAAU,EAAEH,MAAM,CAACI,MAAM,EAAC;GAAG,CAAA;AACvD,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAC5BC,UAAkB,EAClBhC,MAAe,EAC2D;EAC1E,IAAI,CAACA,MAAM,EAAE,OAAO;AAAEiC,IAAAA,eAAe,EAAE,KAAK;AAAEC,IAAAA,WAAW,EAAE,KAAA;GAAO,CAAA;AAElE,EAAA,IAAMC,YAAY,GAAGH,UAAU,CAACR,IAAI,EAAE,CAAA;AACtC,EAAA,IAAMY,KAAK,GAAG,IAAIC,IAAI,EAAE,CAAA;;AAExB;EACA,IAAIrC,MAAM,KAAK,MAAM,IAAI,SAAS,CAACsC,IAAI,CAACH,YAAY,CAAC,EAAE;AACrD,IAAA,IAAMP,IAAI,GAAGW,QAAQ,CAACJ,YAAY,EAAE,EAAE,CAAC,CAAA;AACvC,IAAA,IAAIP,IAAI,IAAI,IAAI,IAAIA,IAAI,IAAI,IAAI,EAAE;MAChC,OAAO;AACLK,QAAAA,eAAe,EAAE,IAAI;AACrBJ,QAAAA,UAAU,EAAE,IAAIQ,IAAI,CAACT,IAAI,EAAEQ,KAAK,CAACI,QAAQ,EAAE,EAAEJ,KAAK,CAACK,OAAO,EAAE,CAAC;AAC7DP,QAAAA,WAAW,EAAE,KAAA;OACd,CAAA;AACH,KAAC,MAAM;MACL,OAAO;AACLD,QAAAA,eAAe,EAAE,IAAI;AACrBC,QAAAA,WAAW,EAAE,IAAA;OACd,CAAA;AACH,KAAA;AACF,GAAA;;AAEA;AACA,EAAA,IAAI,CAAClC,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,MAAM,KAAKmC,YAAY,CAACO,MAAM,IAAI,CAAC,EAAE;AACvE;AACA,IAAA,IAAMC,SAAS,GAAGxE,KAAK,CAACgE,YAAY,EAAEnC,MAAM,KAAK,KAAK,GAAG,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,CAAA;AAE9E,IAAA,IAAI,CAAC2C,SAAS,CAAClB,OAAO,EAAE,EAAE;MACxB,OAAO;AACLQ,QAAAA,eAAe,EAAE,IAAI;AACrBC,QAAAA,WAAW,EAAE,IAAA;OACd,CAAA;AACH,KAAA;IACA,OAAO;AACLD,MAAAA,eAAe,EAAE,IAAI;MACrBJ,UAAU,EAAE,IAAIQ,IAAI,CAACD,KAAK,CAACQ,WAAW,EAAE,EAAED,SAAS,CAACE,KAAK,EAAE,EAAET,KAAK,CAACK,OAAO,EAAE,CAAC;AAC7EP,MAAAA,WAAW,EAAE,KAAA;KACd,CAAA;AACH,GAAA;EAEA,OAAO;AAAED,IAAAA,eAAe,EAAE,KAAK;AAAEC,IAAAA,WAAW,EAAE,KAAA;GAAO,CAAA;AACvD,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMY,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC7Bd,UAAkB,EAClBe,OAAgB,EAChB/C,MAAe,EACfgD,OAIC,EAKE;AACH;EACA,IAAI,EAAChB,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,KAAA,CAAA,IAAVA,UAAU,CAAER,IAAI,EAAE,CAAA,EAAE,OAAO;AAAEU,IAAAA,WAAW,EAAE,KAAA;GAAO,CAAA;;AAEtD;AACA,EAAA,IAAI,CAACa,OAAO,IAAI/C,MAAM,EAAE;AACtB,IAAA,IAAMiD,YAAY,GAAGlB,wBAAwB,CAACC,UAAU,EAAEhC,MAAM,CAAC,CAAA;IACjE,IAAIiD,YAAY,CAAChB,eAAe,IAAI,CAACgB,YAAY,CAACf,WAAW,EAAE;MAC7D,OAAO;AAAEA,QAAAA,WAAW,EAAE,KAAK;AAAEgB,QAAAA,WAAW,EAAED,YAAY,CAACpB,UAAU,IAAI,IAAA;OAAM,CAAA;AAC7E,KAAC,MAAM,IAAIoB,YAAY,CAACf,WAAW,EAAE;MACnC,OAAO;AAAEA,QAAAA,WAAW,EAAE,IAAI;AAAEP,QAAAA,KAAK,EAAE,cAAA;OAAgB,CAAA;AACrD,KAAA;AACF,GAAA;AAEA,EAAA,IAAIoB,OAAO,EAAE;AAAA,IAAA,IAAAI,OAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,QAAA,CAAA;AACX;AACA,IAAA,IAAMC,KAAK,GAAGvB,UAAU,CAACnD,KAAK,CAAC,SAAS,CAAC,CAAA;;AAEzC;IACA,IACG,CAAAsE,OAAA,GAAAI,KAAK,CAAC,CAAC,CAAC,MAAAJ,IAAAA,IAAAA,OAAA,KAARA,KAAAA,CAAAA,IAAAA,OAAA,CAAU3B,IAAI,EAAE,IAAI+B,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAACkB,MAAM,GAAG,EAAE,IAC/C,CAAAU,QAAA,GAAAG,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAAH,QAAA,KAAA,KAAA,CAAA,IAARA,QAAA,CAAU5B,IAAI,EAAE,IAAI+B,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAACkB,MAAM,GAAG,EAAG,EACjD;MACA,OAAO;AAAER,QAAAA,WAAW,EAAE,IAAI;AAAEP,QAAAA,KAAK,EAAE,cAAA;OAAgB,CAAA;AACrD,KAAA;IAEA,IAAI6B,SAAsB,GAAG,IAAI,CAAA;IACjC,IAAIC,OAAoB,GAAG,IAAI,CAAA;;AAE/B;AACA,IAAA,IAAI,CAAAJ,QAAA,GAAAE,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAAF,QAAA,KAAA,KAAA,CAAA,IAARA,QAAA,CAAU7B,IAAI,EAAE,IAAI+B,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAACkB,MAAM,IAAI,EAAE,EAAE;AACpD,MAAA,IAAMgB,eAAe,GAAGpC,sBAAsB,CAACiC,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAAC,CAAA;AAC/D,MAAA,IAAI,CAACkC,eAAe,CAACjC,OAAO,EAAE;QAC5B,OAAO;AAAES,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAA7C,cAAAA,CAAAA,MAAA,CAAiB4E,eAAe,CAAC/B,KAAK,CAAA;SAAI,CAAA;AAC7E,OAAA;AACA;AACA6B,MAAAA,SAAS,GAAGE,eAAe,CAAC7B,UAAU,IAAI,IAAI,CAAA;AAChD,KAAA;;AAEA;AACA,IAAA,IAAI,CAAAyB,QAAA,GAAAC,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAAD,QAAA,KAAA,KAAA,CAAA,IAARA,QAAA,CAAU9B,IAAI,EAAE,IAAI+B,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAACkB,MAAM,IAAI,EAAE,EAAE;AACpD,MAAA,IAAMiB,aAAa,GAAGrC,sBAAsB,CAACiC,KAAK,CAAC,CAAC,CAAC,CAAC/B,IAAI,EAAE,CAAC,CAAA;AAC7D,MAAA,IAAI,CAACmC,aAAa,CAAClC,OAAO,EAAE;QAC1B,OAAO;AAAES,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAA7C,YAAAA,CAAAA,MAAA,CAAe6E,aAAa,CAAChC,KAAK,CAAA;SAAI,CAAA;AACzE,OAAA;AACA;AACA8B,MAAAA,OAAO,GAAGE,aAAa,CAAC9B,UAAU,IAAI,IAAI,CAAA;AAC5C,KAAA;;AAEA;AACA,IAAA,IAAI2B,SAAS,IAAIC,OAAO,IAAID,SAAS,GAAGC,OAAO,EAAE;MAC/C,OAAO;AAAEvB,QAAAA,WAAW,EAAE,IAAI;AAAEP,QAAAA,KAAK,EAAE,4CAAA;OAA8C,CAAA;AACnF,KAAA;;AAEA;AACA,IAAA,IAAIqB,OAAO,EAAE;MACX,IAAIQ,SAAS,IAAIR,OAAO,CAACY,OAAO,IAAIzF,KAAK,CAACqF,SAAS,CAAC,CAACK,QAAQ,CAAC1F,KAAK,CAAC6E,OAAO,CAACY,OAAO,CAAC,CAAC,EAAE;QACrF,OAAO;AAAE1B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,2BAAA;SAA6B,CAAA;AAClE,OAAA;MACA,IAAI6B,SAAS,IAAIR,OAAO,CAACc,OAAO,IAAI3F,KAAK,CAACqF,SAAS,CAAC,CAACO,OAAO,CAAC5F,KAAK,CAAC6E,OAAO,CAACc,OAAO,CAAC,CAAC,EAAE;QACpF,OAAO;AAAE5B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,2BAAA;SAA6B,CAAA;AAClE,OAAA;MACA,IAAI8B,OAAO,IAAIT,OAAO,CAACY,OAAO,IAAIzF,KAAK,CAACsF,OAAO,CAAC,CAACI,QAAQ,CAAC1F,KAAK,CAAC6E,OAAO,CAACY,OAAO,CAAC,CAAC,EAAE;QACjF,OAAO;AAAE1B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,yBAAA;SAA2B,CAAA;AAChE,OAAA;MACA,IAAI8B,OAAO,IAAIT,OAAO,CAACc,OAAO,IAAI3F,KAAK,CAACsF,OAAO,CAAC,CAACM,OAAO,CAAC5F,KAAK,CAAC6E,OAAO,CAACc,OAAO,CAAC,CAAC,EAAE;QAChF,OAAO;AAAE5B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,yBAAA;SAA2B,CAAA;AAChE,OAAA;AACF,KAAA;;AAEA;IACA,OAAO;AAAEO,MAAAA,WAAW,EAAE,KAAK;AAAEgB,MAAAA,WAAW,EAAE,CAACM,SAAS,EAAEC,OAAO,CAAA;KAAG,CAAA;AAClE,GAAC,MAAM,IAAIzB,UAAU,CAACU,MAAM,IAAI,EAAE,EAAE;AAClC;AACA,IAAA,IAAMsB,UAAU,GAAG1C,sBAAsB,CAACU,UAAU,CAAC,CAAA;AACrD,IAAA,IAAI,CAACgC,UAAU,CAACvC,OAAO,EAAE;MACvB,OAAO;AAAES,QAAAA,WAAW,EAAE,IAAI;QAAEP,KAAK,EAAEqC,UAAU,CAACrC,KAAAA;OAAO,CAAA;AACvD,KAAA;AAEA,IAAA,IAAME,UAAU,GAAGmC,UAAU,CAACnC,UAAU,CAAA;;AAExC;IACA,IAAImB,OAAO,IAAInB,UAAU,EAAE;AAAA,MAAA,IAAAoC,oBAAA,CAAA;AACzB,MAAA,IAAA,CAAAA,oBAAA,GAAIjB,OAAO,CAACkB,WAAW,cAAAD,oBAAA,KAAA,KAAA,CAAA,IAAnBA,oBAAA,CAAAE,IAAA,CAAAnB,OAAO,EAAenB,UAAU,CAAC,EAAE;QACrC,OAAO;AAAEK,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,qBAAA;SAAuB,CAAA;AAC5D,OAAA;AACA,MAAA,IAAIqB,OAAO,CAACY,OAAO,IAAIzF,KAAK,CAAC0D,UAAU,CAAC,CAACgC,QAAQ,CAAC1F,KAAK,CAAC6E,OAAO,CAACY,OAAO,CAAC,CAAC,EAAE;QACzE,OAAO;AAAE1B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,qBAAA;SAAuB,CAAA;AAC5D,OAAA;AACA,MAAA,IAAIqB,OAAO,CAACc,OAAO,IAAI3F,KAAK,CAAC0D,UAAU,CAAC,CAACkC,OAAO,CAAC5F,KAAK,CAAC6E,OAAO,CAACc,OAAO,CAAC,CAAC,EAAE;QACxE,OAAO;AAAE5B,UAAAA,WAAW,EAAE,IAAI;AAAEP,UAAAA,KAAK,EAAE,qBAAA;SAAuB,CAAA;AAC5D,OAAA;AACF,KAAA;;AAEA;IACA,OAAO;AAAEO,MAAAA,WAAW,EAAE,KAAK;MAAEgB,WAAW,EAAErB,UAAU,IAAI,IAAA;KAAM,CAAA;AAChE,GAAA;;AAEA;EACA,OAAO;AAAEK,IAAAA,WAAW,EAAE,KAAA;GAAO,CAAA;AAC/B,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMkC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,GAAY,EAAA;AAAA,EAAA,IAAAC,YAAA,CAAA;AAAA,EAAA,OAAA,CAAAA,YAAA,GAAaD,GAAG,aAAHA,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAHA,GAAG,CAAEhD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAA,IAAA,IAAAiD,YAAA,KAAAA,KAAAA,CAAAA,GAAAA,YAAA,GAAI,EAAE,CAAA;AAAA;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/components/DatePicker/utils.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport type { DatePickerType, DatePickerValue } from '@mantine/dates';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(customParseFormat);\n\nconst dayjs_locales = [\n 'af',\n 'ar',\n 'ar-dz',\n 'ar-kw',\n 'ar-ly',\n 'ar-ma',\n 'ar-sa',\n 'ar-tn',\n 'az',\n 'be',\n 'bg',\n 'bm',\n 'bn',\n 'bo',\n 'br',\n 'bs',\n 'ca',\n 'cs',\n 'cv',\n 'cy',\n 'da',\n 'de',\n 'de-at',\n 'de-ch',\n 'dv',\n 'el',\n 'en',\n 'en-au',\n 'en-ca',\n 'en-gb',\n 'en-ie',\n 'en-il',\n 'en-nz',\n 'en-SG',\n 'eo',\n 'es',\n 'es-do',\n 'es-us',\n 'et',\n 'eu',\n 'fa',\n 'fi',\n 'fo',\n 'fr',\n 'fr-ca',\n 'fr-ch',\n 'fy',\n 'ga',\n 'gd',\n 'gl',\n 'gom-latn',\n 'gu',\n 'he',\n 'hi',\n 'hr',\n 'hu',\n 'hy-am',\n 'id',\n 'is',\n 'it',\n 'it-ch',\n 'ja',\n 'jv',\n 'ka',\n 'kk',\n 'km',\n 'kn',\n 'ko',\n 'ku',\n 'ky',\n 'lb',\n 'lo',\n 'lt',\n 'lv',\n 'me',\n 'mi',\n 'mk',\n 'ml',\n 'mn',\n 'mr',\n 'ms',\n 'ms-my',\n 'mt',\n 'my',\n 'nb',\n 'ne',\n 'nl',\n 'nl-be',\n 'nn',\n 'oc-lnc',\n 'pa-in',\n 'pl',\n 'pt',\n 'pt-br',\n 'ro',\n 'ru',\n 'sd',\n 'se',\n 'si',\n 'sk',\n 'sl',\n 'sq',\n 'sr',\n 'sr-cyrl',\n 'ss',\n 'sv',\n 'sw',\n 'ta',\n 'te',\n 'tet',\n 'tg',\n 'th',\n 'tl-ph',\n 'tlh',\n 'tr',\n 'tzl',\n 'tzm',\n 'tzm-latn',\n 'ug-cn',\n 'uk',\n 'ur',\n 'uz',\n 'uz-latn',\n 'vi',\n 'x-pseudo',\n 'yo',\n 'zh-cn',\n 'zh-hk',\n 'zh-tw',\n];\n\n// https://github.com/iamkun/dayjs/issues/732#issuecomment-554383261\nfunction patchLocale(locale: string): string | boolean {\n if (['en', 'en-us'].includes(locale)) return 'en';\n if (locale === 'zn') return 'zh-cn';\n if (locale === 'no') return 'nb';\n if (dayjs_locales.includes(locale)) return locale;\n return false;\n}\n\nfunction convertIntlToDayjsLocale(lang: string): string {\n lang = lang.toLowerCase();\n const locale = patchLocale(lang) || (lang.includes('-') && patchLocale(lang.split('-')[0]));\n if (!locale) return 'en';\n\n return `${locale}`;\n}\n\nfunction isScriptLoaded(src: string): boolean {\n return Boolean(document.querySelector(`script[src=\"${src}\"]`));\n}\n\n/**\n * Used to dynamically load a script\n */\nfunction loadScript(src: string, callback?: () => void): void {\n if (isScriptLoaded(src)) {\n callback?.();\n return;\n }\n const localeScript = document.createElement('script');\n localeScript.async = true;\n localeScript.src = src;\n localeScript.onload = () => callback?.();\n document.head.appendChild(localeScript);\n}\n\ninterface DateFormatterInput {\n type: DatePickerType;\n date: DatePickerValue<DatePickerType>;\n locale: string;\n format: string;\n labelSeparator: string;\n}\n\ntype DateFormatter = (input: DateFormatterInput) => string;\n\nfunction defaultDateFormatter({ type, date, locale, format, labelSeparator }: DateFormatterInput) {\n const formatDate = (value: Date) => dayjs(value).locale(locale).format(format);\n\n if (type === 'default') {\n return date === null ? '' : formatDate(date as Date);\n }\n\n if (type === 'range' && Array.isArray(date)) {\n if (date[0] && date[1]) {\n return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;\n }\n\n if (date[0]) {\n return `${formatDate(date[0])} ${labelSeparator} `;\n }\n\n return '';\n }\n\n return '';\n}\n\ninterface GetFormattedDateInput extends DateFormatterInput {\n formatter?: DateFormatter;\n}\n\nfunction getFormattedDate({ formatter, ...others }: GetFormattedDateInput) {\n return (formatter || defaultDateFormatter)(others);\n}\n\nconst rangeFormattedValue = (startValue: string, endValue: string) => {\n // Both values exist\n if (startValue && endValue) {\n if (startValue === endValue) {\n return startValue; // Same date, show single value\n }\n return `${startValue} – ${endValue}`; // Different dates, show range\n }\n\n // Only start value exists\n if (startValue) {\n return `${startValue} – `;\n }\n\n // Only end value exists\n if (endValue) {\n return ` – ${endValue}`;\n }\n\n // No values\n return '';\n};\n\nconst rangeInputPlaceHolder = (placeholder: string | undefined, format: string) => {\n if (placeholder) {\n return `${placeholder} – ${placeholder}`;\n }\n return `${format} – ${format}`;\n};\n\nconst finalInputFormat = (startValue: string, endValue: string, format: string | undefined) => {\n // For case: when start and end are the same, return the format\n if (startValue === endValue && (startValue || endValue)) {\n return format;\n }\n return `${format} – ${format}`;\n};\n\n/**\n * Converts date format string to TextInput pattern for masking.\n * TextInput format only recognizes # as input placeholder, so we replace\n * date characters (Y,M,D) with # while preserving delimiters.\n *\n * @example \"DD/MM/YYYY\" – \"##/##/####\"\n * @example \"MMMM\" – \"################\" (longest month: \"September\")\n * @example \"MMM\" – \"###\"\n */\nconst getTextInputFormat = (formatStr?: string, isRangeInput?: boolean): string => {\n if (!formatStr) {\n return isRangeInput ? '##/##/#### – ##/##/####' : '##/##/####';\n } else if (formatStr === 'MMMM') {\n return formatStr.replace(/MMMM/g, '#########');\n }\n return formatStr.replace(/[YMD]/g, '#');\n};\n\n/**\n * Validates date string using DayJS strict parsing and business rules\n *\n * @param dateStr - The date string to validate in DD/MM/YYYY format\n * @returns Object with validation result, error message if invalid, and parsed Date if valid\n *\n * @example\n * // Valid date\n * validateDateComponents(\"25/12/2024\")\n * // → { isValid: true, parsedDate: Date(2024, 11, 25) }\n *\n * @example\n * // Invalid date (non-existent)\n * validateDateComponents(\"31/02/2024\")\n * // → { isValid: false, error: \"Invalid date\" }\n *\n * @example\n * // Invalid year range\n * validateDateComponents(\"25/12/999\")\n * // → { isValid: false, error: \"Invalid year\" }\n *\n * @example\n * // Empty input\n * validateDateComponents(\"\")\n * // → { isValid: true }\n */\nconst validateDateComponents = (\n dateStr: string,\n): {\n isValid: boolean;\n error?: string;\n parsedDate?: Date;\n} => {\n // Empty strings are considered valid (user hasn't started typing)\n if (!dateStr?.trim()) {\n return { isValid: true };\n }\n\n // Use DayJS strict parsing to validate DD/MM/YYYY format and date existence\n const parsed = dayjs(dateStr, 'DD/MM/YYYY', true);\n\n // DayJS strict mode catches invalid days/months and non-existent dates (e.g., Feb 30th)\n if (!parsed.isValid()) {\n return { isValid: false, error: 'Invalid date' };\n }\n\n // Business rule: restrict year range to reasonable values for most applications\n const year = parsed.year();\n if (year < 1000 || year > 3000) {\n return { isValid: false, error: 'Invalid year' };\n }\n\n // Return both validation result AND parsed date to avoid double parsing\n return { isValid: true, parsedDate: parsed.toDate() };\n};\n\n/**\n * Detects and parses special single date formats (MMM, MMMM, YYYY)\n * These formats preserve current date/month/year and only change the specified component\n *\n * @param inputValue - The input string to parse\n * @param format - The expected format ('MMM', 'MMMM', or 'YYYY')\n * @returns Object with special format detection, parsed date, and validation result\n *\n * @example\n * // Year format - preserves current month/day, changes year\n * parseSpecialSingleFormat(\"2024\", \"YYYY\")\n * // → { isSpecialFormat: true, parsedDate: Date(2024, currentMonth, currentDay), shouldBlock: false }\n *\n * @example\n * // Short month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"Aug\", \"MMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Full month format - preserves current day/year, changes month\n * parseSpecialSingleFormat(\"August\", \"MMMM\")\n * // → { isSpecialFormat: true, parsedDate: Date(currentYear, 7, currentDay), shouldBlock: false }\n *\n * @example\n * // Invalid year\n * parseSpecialSingleFormat(\"999\", \"YYYY\")\n * // → { isSpecialFormat: true, shouldBlock: true }\n *\n * @example\n * // Not a special format\n * parseSpecialSingleFormat(\"25/12/2024\", \"DD/MM/YYYY\")\n * // → { isSpecialFormat: false, shouldBlock: false }\n */\nconst parseSpecialSingleFormat = (\n inputValue: string,\n format?: string,\n): { isSpecialFormat: boolean; parsedDate?: Date; shouldBlock: boolean } => {\n if (!format) return { isSpecialFormat: false, shouldBlock: false };\n\n const trimmedInput = inputValue.trim();\n const today = new Date();\n\n // Handle year-only format (YYYY) - keep current month and day, change year\n if (format === 'YYYY' && /^\\d{4}$/.test(trimmedInput)) {\n const year = parseInt(trimmedInput, 10);\n if (year >= 1000 && year <= 3000) {\n return {\n isSpecialFormat: true,\n parsedDate: new Date(year, today.getMonth(), today.getDate()),\n shouldBlock: false,\n };\n } else {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n }\n\n // Handle month formats (MMM, MMMM) - keep current day and year, change month\n if ((format === 'MMM' || format === 'MMMM') && trimmedInput.length >= 3) {\n // Using DayJS to parse month names (handles both short \"Aug\" and full \"August\")\n const monthDate = dayjs(trimmedInput, format === 'MMM' ? 'MMM' : 'MMMM', true);\n\n if (!monthDate.isValid()) {\n return {\n isSpecialFormat: true,\n shouldBlock: true,\n };\n }\n return {\n isSpecialFormat: true,\n parsedDate: new Date(today.getFullYear(), monthDate.month(), today.getDate()),\n shouldBlock: false,\n };\n }\n\n return { isSpecialFormat: false, shouldBlock: false };\n};\n\n/**\n * Validates and parses date input with comprehensive error handling and constraint checking\n * Combines validation + parsing to avoid redundant operations and supports both single dates and ranges\n *\n * @param inputValue - The input string to validate and parse\n * @param isRange - Whether this is a range input (true) or single date (false)\n * @param format - The expected date format ('DD/MM/YYYY', 'MMM', 'MMMM', 'YYYY')\n * @param options - Additional validation constraints\n * @param options.excludeDate - Function to exclude specific dates (single dates only)\n * @param options.minDate - Minimum allowed date\n * @param options.maxDate - Maximum allowed date\n * @returns Object with shouldBlock flag, optional error message, and parsed values if valid\n *\n * @example\n * // Valid single date\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, 11, 25) }\n *\n * @example\n * // Valid range input\n * validateAndParseDateInput(\"25/12/2024 – 31/12/2024\", true, \"DD/MM/YYYY\")\n * // → { shouldBlock: false, parsedValue: [Date(2024, 11, 25), Date(2024, 11, 31)] }\n *\n * @example\n * // Invalid date with error\n * validateAndParseDateInput(\"31/02/2024\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: true, error: \"Invalid date\" }\n *\n * @example\n * // Date excluded by constraint\n * validateAndParseDateInput(\"25/12/2024\", false, \"DD/MM/YYYY\", {\n * excludeDate: (date) => date.getDay() === 0 // No Sundays\n * })\n * // → { shouldBlock: true, error: \"Date is not allowed\" }\n *\n * @example\n * // Special format - year only\n * validateAndParseDateInput(\"2024\", false, \"YYYY\")\n * // → { shouldBlock: false, parsedValue: Date(2024, currentMonth, currentDay) }\n *\n * @example\n * // Incomplete input - allow continued typing\n * validateAndParseDateInput(\"25/12\", false, \"DD/MM/YYYY\")\n * // → { shouldBlock: false } (no parsedValue, allows user to continue typing)\n */\nconst validateAndParseDateInput = (\n inputValue: string,\n isRange: boolean,\n format?: string,\n options?: {\n excludeDate?: (date: Date) => boolean;\n minDate?: Date;\n maxDate?: Date;\n },\n): {\n shouldBlock: boolean;\n error?: string;\n parsedValue?: Date | null | [Date | null, Date | null];\n} => {\n // Allow empty input - user hasn't started typing yet\n if (!inputValue?.trim()) return { shouldBlock: false };\n\n // Handle special single date formats (MMM, MMMM, YYYY) - skip normal validation\n if (!isRange && format) {\n const specialParse = parseSpecialSingleFormat(inputValue, format);\n if (specialParse.isSpecialFormat && !specialParse.shouldBlock) {\n return { shouldBlock: false, parsedValue: specialParse.parsedDate || null };\n } else if (specialParse.shouldBlock) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n }\n\n if (isRange) {\n // Split range input on en dash separator (e.g., \"25/12/2024 – 31/12/2024\")\n const parts = inputValue.split(/\\s*–\\s*/);\n\n // Block incomplete input to prevent premature validation (e.g., \"25/12/202\" is being typed)\n if (\n (parts[0]?.trim() && parts[0].trim().length < 10) ||\n (parts[1]?.trim() && parts[1].trim().length < 10)\n ) {\n return { shouldBlock: true, error: 'Invalid date' };\n }\n\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n // Validate and parse start date if it looks complete (10+ chars = DD/MM/YYYY)\n if (parts[0]?.trim() && parts[0].trim().length >= 10) {\n const startValidation = validateDateComponents(parts[0].trim());\n if (!startValidation.isValid) {\n return { shouldBlock: true, error: `Start date: ${startValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n startDate = startValidation.parsedDate || null;\n }\n\n // Validate and parse end date if it looks complete\n if (parts[1]?.trim() && parts[1].trim().length >= 10) {\n const endValidation = validateDateComponents(parts[1].trim());\n if (!endValidation.isValid) {\n return { shouldBlock: true, error: `End date: ${endValidation.error}` };\n }\n // Use the already-parsed date from validation to avoid double parsing\n endDate = endValidation.parsedDate || null;\n }\n\n // Business logic: start date cannot be after end date\n if (startDate && endDate && startDate > endDate) {\n return { shouldBlock: true, error: 'Start date cannot be greater than end date' };\n }\n\n // Additional validation for date range constraints\n if (options) {\n if (startDate && options.minDate && dayjs(startDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (startDate && options.maxDate && dayjs(startDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Start date is not allowed' };\n }\n if (endDate && options.minDate && dayjs(endDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n if (endDate && options.maxDate && dayjs(endDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'End date is not allowed' };\n }\n }\n\n // Return parsed dates ready for setControlledValue\n return { shouldBlock: false, parsedValue: [startDate, endDate] };\n } else if (inputValue.length >= 10) {\n // Single date: validate and parse if it looks complete\n const validation = validateDateComponents(inputValue);\n if (!validation.isValid) {\n return { shouldBlock: true, error: validation.error };\n }\n\n const parsedDate = validation.parsedDate;\n\n // Additional validation for single date constraints\n if (options && parsedDate) {\n if (options.excludeDate?.(parsedDate)) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.minDate && dayjs(parsedDate).isBefore(dayjs(options.minDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n if (options.maxDate && dayjs(parsedDate).isAfter(dayjs(options.maxDate))) {\n return { shouldBlock: true, error: 'Date is not allowed' };\n }\n }\n\n // Return parsed date ready for setControlledValue\n return { shouldBlock: false, parsedValue: parsedDate || null };\n }\n\n // Input is incomplete but valid so far - allow continued typing\n return { shouldBlock: false };\n};\n\n/**\n * Removes date delimiters (slashes) from formatted date strings for internal processing\n * Used to convert external formatted values to internal state for easier validation and length checks\n *\n * @param str - The date string with delimiters\n * @returns String without delimiters, or empty string if input is null/undefined\n *\n * @example\n * // Remove slashes from single date\n * stripDelimiters(\"25/12/2024\")\n * // → \"25122024\"\n *\n * @example\n * // Handle null/undefined input\n * stripDelimiters(undefined)\n * // → \"\"\n *\n * @example\n * // Used for internal state conversion\n * stripDelimiters(\"31/12/2024\")\n * // → \"31122024\" (easier for length checks: inputValue.length === 8)\n */\nconst stripDelimiters = (str?: string): string => str?.replace(/\\//g, '') ?? '';\n\nexport {\n convertIntlToDayjsLocale,\n loadScript,\n getFormattedDate,\n rangeFormattedValue,\n rangeInputPlaceHolder,\n finalInputFormat,\n getTextInputFormat,\n validateDateComponents,\n validateAndParseDateInput,\n stripDelimiters,\n};\n"],"names":["dayjs","extend","customParseFormat","dayjs_locales","patchLocale","locale","includes","convertIntlToDayjsLocale","lang","toLowerCase","split","concat","isScriptLoaded","src","Boolean","document","querySelector","loadScript","callback","localeScript","createElement","async","onload","head","appendChild","defaultDateFormatter","_ref","type","date","format","labelSeparator","formatDate","value","Array","isArray","getFormattedDate","_ref2","formatter","others","_objectWithoutProperties","_excluded","rangeFormattedValue","startValue","endValue","rangeInputPlaceHolder","placeholder","finalInputFormat","getTextInputFormat","formatStr","isRangeInput","replace","validateDateComponents","dateStr","trim","isValid","parsed","error","year","parsedDate","toDate","parseSpecialSingleFormat","inputValue","isSpecialFormat","shouldBlock","trimmedInput","today","Date","test","parseInt","getMonth","getDate","length","monthDate","getFullYear","month","validateAndParseDateInput","isRange","options","specialParse","parsedValue","_parts$","_parts$2","_parts$3","_parts$4","parts","startDate","endDate","startValidation","endValidation","minDate","isBefore","maxDate","isAfter","validation","_options$excludeDate","excludeDate","call","stripDelimiters","str","_str$replace"],"mappings":"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"}
@@ -53,7 +53,7 @@ var CountrySelector = function CountrySelector(_ref) {
53
53
  setIsDropdownOpen = _React$useState2[1];
54
54
  var isMobile = useIsMobile();
55
55
  var actionList = /*#__PURE__*/jsx(ActionList, {
56
- isVirtualized: true,
56
+ isVirtualized: !isMobile,
57
57
  children: countryData.map(function (country) {
58
58
  return /*#__PURE__*/jsx(ActionListItem, {
59
59
  onClick: onItemClick,
@@ -1 +1 @@
1
- {"version":3,"file":"CountrySelector.web.js","sources":["../../../../../../../src/components/Input/PhoneNumberInput/CountrySelector.web.tsx"],"sourcesContent":["import type { CountryCodeType, getFlagsForAllCountries } from '@razorpay/i18nify-js';\nimport { getDialCodeByCountryCode, getFlagOfCountry } from '@razorpay/i18nify-js';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n ActionList,\n ActionListItem,\n ActionListItemAsset,\n ActionListItemText,\n} from '~components/ActionList';\nimport { BottomSheet, BottomSheetBody, BottomSheetHeader } from '~components/BottomSheet';\nimport type { DropdownOverlayProps } from '~components/Dropdown';\nimport { Dropdown, DropdownButton, DropdownOverlay } from '~components/Dropdown';\nimport { ChevronUpDownIcon } from '~components/Icons';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { size as sizes } from '~tokens/global';\nimport { makeSize } from '~utils';\nimport BaseBox from '~components/Box/BaseBox';\n\nconst countryNameFormatter = new Intl.DisplayNames(['en'], { type: 'region' });\n\ntype CountryData = {\n code: CountryCodeType;\n name: string;\n}[];\ntype CounterSelectorProps = {\n selectedCountry: CountryCodeType;\n inputWrapperRef: DropdownOverlayProps['referenceRef'];\n countryData: CountryData;\n onItemClick: (props: { name: string }) => void;\n flags: ReturnType<typeof getFlagsForAllCountries>;\n isDisabled?: boolean;\n size: 'medium' | 'large';\n};\n\nconst CountryDropdownButtonWrapper = styled(BaseBox)(() => {\n return {\n '& > button': {\n padding: '0',\n width: '100%',\n },\n };\n});\n\nconst CountrySelector = ({\n isDisabled,\n selectedCountry,\n inputWrapperRef,\n countryData,\n onItemClick,\n flags,\n size,\n}: CounterSelectorProps): React.ReactElement => {\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n const isMobile = useIsMobile();\n\n const actionList = (\n <ActionList isVirtualized>\n {countryData.map((country) => {\n return (\n <ActionListItem\n key={country.code}\n onClick={onItemClick}\n leading={<ActionListItemAsset src={flags[country.code]['4X3']} alt={country.name} />}\n title={country.name}\n value={country.code}\n trailing={\n <ActionListItemText>{getDialCodeByCountryCode(country.code)}</ActionListItemText>\n }\n />\n );\n })}\n </ActionList>\n );\n\n const flagSize = {\n medium: makeSize(sizes[20]),\n large: makeSize(sizes[24]),\n } as const;\n\n return (\n <Dropdown isOpen={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n {/* TODO: Remove once CountrySelector's button sizing is fixed in figma */}\n <CountryDropdownButtonWrapper\n width={size === 'medium' ? '45px' : '60px'}\n marginLeft={size === 'medium' ? '-3px' : '-2px'}\n >\n <DropdownButton\n isDisabled={isDisabled}\n size={size === 'medium' ? 'xsmall' : 'medium'}\n variant=\"tertiary\"\n //@ts-expect-error\n color=\"transparent\"\n accessibilityLabel={`${countryNameFormatter.of(selectedCountry)} - Select Country`}\n icon={ChevronUpDownIcon}\n iconPosition=\"right\"\n // We need to prevent the click event from propagating to the BaseInputWrapper,\n // Because the BaseInputWrapper is listening for click events to focus the input.\n // We don't want that to happen when the user clicks on the dropdown button\n // otherwise the dropdown will close immediately after opening\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {/* @ts-expect-error */}\n <img\n loading=\"lazy\"\n role=\"presentation\"\n width={flagSize[size]}\n src={getFlagOfCountry(selectedCountry)['4X3']}\n alt=\"\"\n />\n </DropdownButton>\n </CountryDropdownButtonWrapper>\n {isMobile ? (\n <BottomSheet>\n <BottomSheetHeader title=\"Select A Country\" />\n <BottomSheetBody>{actionList}</BottomSheetBody>\n </BottomSheet>\n ) : (\n <DropdownOverlay referenceRef={inputWrapperRef}>{actionList}</DropdownOverlay>\n )}\n </Dropdown>\n );\n};\n\nexport { CountrySelector, countryNameFormatter };\n"],"names":["countryNameFormatter","Intl","DisplayNames","type","CountryDropdownButtonWrapper","styled","BaseBox","withConfig","displayName","componentId","padding","width","CountrySelector","_ref","isDisabled","selectedCountry","inputWrapperRef","countryData","onItemClick","flags","size","_React$useState","React","useState","_React$useState2","_slicedToArray","isDropdownOpen","setIsDropdownOpen","isMobile","useIsMobile","actionList","_jsx","ActionList","isVirtualized","children","map","country","ActionListItem","onClick","leading","ActionListItemAsset","src","code","alt","name","title","value","trailing","ActionListItemText","getDialCodeByCountryCode","flagSize","medium","makeSize","sizes","large","_jsxs","Dropdown","isOpen","onOpenChange","marginLeft","DropdownButton","variant","color","accessibilityLabel","concat","of","icon","ChevronUpDownIcon","iconPosition","e","stopPropagation","loading","role","getFlagOfCountry","BottomSheet","BottomSheetHeader","BottomSheetBody","DropdownOverlay","referenceRef"],"mappings":"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"}
1
+ {"version":3,"file":"CountrySelector.web.js","sources":["../../../../../../../src/components/Input/PhoneNumberInput/CountrySelector.web.tsx"],"sourcesContent":["import type { CountryCodeType, getFlagsForAllCountries } from '@razorpay/i18nify-js';\nimport { getDialCodeByCountryCode, getFlagOfCountry } from '@razorpay/i18nify-js';\nimport React from 'react';\nimport styled from 'styled-components';\nimport {\n ActionList,\n ActionListItem,\n ActionListItemAsset,\n ActionListItemText,\n} from '~components/ActionList';\nimport { BottomSheet, BottomSheetBody, BottomSheetHeader } from '~components/BottomSheet';\nimport type { DropdownOverlayProps } from '~components/Dropdown';\nimport { Dropdown, DropdownButton, DropdownOverlay } from '~components/Dropdown';\nimport { ChevronUpDownIcon } from '~components/Icons';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { size as sizes } from '~tokens/global';\nimport { makeSize } from '~utils';\nimport BaseBox from '~components/Box/BaseBox';\n\nconst countryNameFormatter = new Intl.DisplayNames(['en'], { type: 'region' });\n\ntype CountryData = {\n code: CountryCodeType;\n name: string;\n}[];\ntype CounterSelectorProps = {\n selectedCountry: CountryCodeType;\n inputWrapperRef: DropdownOverlayProps['referenceRef'];\n countryData: CountryData;\n onItemClick: (props: { name: string }) => void;\n flags: ReturnType<typeof getFlagsForAllCountries>;\n isDisabled?: boolean;\n size: 'medium' | 'large';\n};\n\nconst CountryDropdownButtonWrapper = styled(BaseBox)(() => {\n return {\n '& > button': {\n padding: '0',\n width: '100%',\n },\n };\n});\n\nconst CountrySelector = ({\n isDisabled,\n selectedCountry,\n inputWrapperRef,\n countryData,\n onItemClick,\n flags,\n size,\n}: CounterSelectorProps): React.ReactElement => {\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n const isMobile = useIsMobile();\n\n const actionList = (\n <ActionList isVirtualized={!isMobile}>\n {countryData.map((country) => {\n return (\n <ActionListItem\n key={country.code}\n onClick={onItemClick}\n leading={<ActionListItemAsset src={flags[country.code]['4X3']} alt={country.name} />}\n title={country.name}\n value={country.code}\n trailing={\n <ActionListItemText>{getDialCodeByCountryCode(country.code)}</ActionListItemText>\n }\n />\n );\n })}\n </ActionList>\n );\n\n const flagSize = {\n medium: makeSize(sizes[20]),\n large: makeSize(sizes[24]),\n } as const;\n\n return (\n <Dropdown isOpen={isDropdownOpen} onOpenChange={setIsDropdownOpen}>\n {/* TODO: Remove once CountrySelector's button sizing is fixed in figma */}\n <CountryDropdownButtonWrapper\n width={size === 'medium' ? '45px' : '60px'}\n marginLeft={size === 'medium' ? '-3px' : '-2px'}\n >\n <DropdownButton\n isDisabled={isDisabled}\n size={size === 'medium' ? 'xsmall' : 'medium'}\n variant=\"tertiary\"\n //@ts-expect-error\n color=\"transparent\"\n accessibilityLabel={`${countryNameFormatter.of(selectedCountry)} - Select Country`}\n icon={ChevronUpDownIcon}\n iconPosition=\"right\"\n // We need to prevent the click event from propagating to the BaseInputWrapper,\n // Because the BaseInputWrapper is listening for click events to focus the input.\n // We don't want that to happen when the user clicks on the dropdown button\n // otherwise the dropdown will close immediately after opening\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n {/* @ts-expect-error */}\n <img\n loading=\"lazy\"\n role=\"presentation\"\n width={flagSize[size]}\n src={getFlagOfCountry(selectedCountry)['4X3']}\n alt=\"\"\n />\n </DropdownButton>\n </CountryDropdownButtonWrapper>\n {isMobile ? (\n <BottomSheet>\n <BottomSheetHeader title=\"Select A Country\" />\n <BottomSheetBody>{actionList}</BottomSheetBody>\n </BottomSheet>\n ) : (\n <DropdownOverlay referenceRef={inputWrapperRef}>{actionList}</DropdownOverlay>\n )}\n </Dropdown>\n );\n};\n\nexport { CountrySelector, countryNameFormatter };\n"],"names":["countryNameFormatter","Intl","DisplayNames","type","CountryDropdownButtonWrapper","styled","BaseBox","withConfig","displayName","componentId","padding","width","CountrySelector","_ref","isDisabled","selectedCountry","inputWrapperRef","countryData","onItemClick","flags","size","_React$useState","React","useState","_React$useState2","_slicedToArray","isDropdownOpen","setIsDropdownOpen","isMobile","useIsMobile","actionList","_jsx","ActionList","isVirtualized","children","map","country","ActionListItem","onClick","leading","ActionListItemAsset","src","code","alt","name","title","value","trailing","ActionListItemText","getDialCodeByCountryCode","flagSize","medium","makeSize","sizes","large","_jsxs","Dropdown","isOpen","onOpenChange","marginLeft","DropdownButton","variant","color","accessibilityLabel","concat","of","icon","ChevronUpDownIcon","iconPosition","e","stopPropagation","loading","role","getFlagOfCountry","BottomSheet","BottomSheetHeader","BottomSheetBody","DropdownOverlay","referenceRef"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@razorpay/blade",
3
3
  "description": "The Design System that powers Razorpay",
4
- "version": "12.49.0",
4
+ "version": "12.49.2",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=18.12.1"