lizaui 8.0.2 → 8.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/index-BJ7LndVf.js +87 -0
- package/dist/chunks/index-BJ7LndVf.js.map +1 -0
- package/dist/chunks/index-F6lXbxSB.js +2 -0
- package/dist/chunks/index-F6lXbxSB.js.map +1 -0
- package/dist/chunks/scroll-area-DQDhB5AF.js +2 -0
- package/dist/chunks/scroll-area-DQDhB5AF.js.map +1 -0
- package/dist/chunks/{scroll-area-CsOiTMG3.js → scroll-area-DraFsZQz.js} +167 -162
- package/dist/chunks/scroll-area-DraFsZQz.js.map +1 -0
- package/dist/chunks/{select-CJRY9hSL.js → select-BSKY8D4Z.js} +179 -179
- package/dist/chunks/select-BSKY8D4Z.js.map +1 -0
- package/dist/chunks/select-oS2dnCk6.js +2 -0
- package/dist/chunks/select-oS2dnCk6.js.map +1 -0
- package/dist/pagination/index.cjs.js +1 -1
- package/dist/pagination/index.cjs.js.map +1 -1
- package/dist/pagination/index.es.js +24 -25
- package/dist/pagination/index.es.js.map +1 -1
- package/dist/phone-input/index.cjs.js +1 -1
- package/dist/phone-input/index.cjs.js.map +1 -1
- package/dist/phone-input/index.es.js +13 -13
- package/dist/time-input/index.cjs.js +1 -1
- package/dist/time-input/index.cjs.js.map +1 -1
- package/dist/time-input/index.es.js +2 -3
- package/dist/time-input/index.es.js.map +1 -1
- package/dist/ui/index.cjs.js +4 -4
- package/dist/ui/index.cjs.js.map +1 -1
- package/dist/ui/index.es.js +1062 -1051
- package/dist/ui/index.es.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-BD4EmzUR.js +0 -15
- package/dist/chunks/index-BD4EmzUR.js.map +0 -1
- package/dist/chunks/index-COBcVFMF.js +0 -2
- package/dist/chunks/index-COBcVFMF.js.map +0 -1
- package/dist/chunks/scroll-area--KGqTnx5.js +0 -2
- package/dist/chunks/scroll-area--KGqTnx5.js.map +0 -1
- package/dist/chunks/scroll-area-CsOiTMG3.js.map +0 -1
- package/dist/chunks/select-CJRY9hSL.js.map +0 -1
- package/dist/chunks/select-DCeDDexH.js +0 -2
- package/dist/chunks/select-DCeDDexH.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../../src/components/pagination/pagination-item.tsx","../../src/components/pagination/function/index.ts","../../src/components/pagination/pagination.tsx","../../src/components/pagination/hook/use-pagination.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { type PaginationItemProps } from \"./interface/pagination.interface\";\nimport clsx from \"clsx\";\n\nexport const PaginationItem = ({ className, color = \"primary\", active, children, text, onClick }: PaginationItemProps) => {\n\tconst bgClass = clsx(\n\t\t{\n\t\t\t\"bg-primary\": color === \"primary\" && active,\n\t\t\t\"bg-success\": color === \"success\" && active,\n\t\t\t\"bg-danger\": color === \"danger\" && active,\n\t\t\t\"bg-warning\": color === \"warning\" && active,\n\t\t\t\"bg-default\": color === \"default\" && active,\n \"dark:hover:bg-default-200 dark:hover:text-default-800\": !active,\n\t\t},\n\t);\n\tconst colorClass = twMerge(\n\t\tclsx(\"text-sm\", {\n\t\t\t\"group-hover:text-primary-500 dark:group-hover:text-default-800\": color === \"primary\" && !active,\n\t\t\t\"group-hover:text-success-500 dark:group-hover:text-default-800\": color === \"success\" && !active,\n\t\t\t\"group-hover:text-danger-500 dark:group-hover:text-default-800\": color === \"danger\" && !active,\n\t\t\t\"group-hover:text-warning-500 dark:group-hover:text-default-800\": color === \"warning\" && !active,\n\t\t\t\"group-hover:text-default-500 dark:group-hover:text-default-800\": color === \"default\" && !active,\n\n\t\t\t\"text-default-foreground\": active && color === \"default\",\n\t\t\t\"text-primary-foreground\": active && color === \"primary\",\n\t\t\t\"text-success-foreground\": active && color === \"success\",\n\t\t\t\"text-danger-foreground\": active && color === \"danger\",\n\t\t\t\"text-warning-foreground\": active && color === \"warning\",\n\t\t}),\n\t);\n\n\treturn (\n\t\t<div className={twMerge(\"w-[33px] h-[32px] flex items-center justify-center group \", bgClass, className)} onClick={onClick}>\n\t\t\t{children || <p className={colorClass}>{text}</p>}\n\t\t</div>\n\t);\n};\n","import { type PaginationValueProps } from \"../interface/pagination-share.interface\";\n\nexport const FormatPagePagination = ({\n\tpage,\n\ttotal,\n\tsiblings = 1,\n}: PaginationValueProps) => {\n\tconst totalPageNoInArray = 7 + siblings;\n\n\tif (totalPageNoInArray >= total) {\n\t\treturn Array.from({ length: total }, (_, i) => i + 1);\n\t}\n\n\tconst leftSiblingsIndex = Math.max(page - siblings, 1);\n\tconst rightSiblingsIndex = Math.min(page + siblings, total);\n\n\tconst showLeftDots = leftSiblingsIndex > 2;\n\tconst showRightDots = rightSiblingsIndex < total - 2;\n\n\tif (!showLeftDots && showRightDots) {\n\t\tconst leftItemsCount = 3 + 2 * siblings;\n\t\tconst leftRange = Array.from({ length: leftItemsCount }, (_, i) => i + 1);\n\t\treturn [...leftRange, \"...\", total];\n\t} else if (showLeftDots && !showRightDots) {\n\t\tconst rightItemsCount = 3 + 2 * siblings;\n\t\tconst rightRange = Array.from(\n\t\t\t{ length: rightItemsCount },\n\t\t\t(_, i) => total - rightItemsCount + i + 1\n\t\t);\n\t\treturn [1, \"...\", ...rightRange];\n\t} else {\n\t\tconst middleRange = Array.from(\n\t\t\t{ length: rightSiblingsIndex - leftSiblingsIndex + 1 },\n\t\t\t(_, i) => leftSiblingsIndex + i\n\t\t);\n\t\treturn [1, \"...\", ...middleRange, \"...\", total];\n\t}\n};\n\nexport const FormatLimitPagination = (data: number[]) => {\n\treturn data.map((el) => {\n\t\treturn {\n\t\t\tid: el,\n\t\t\tname: el,\n\t\t};\n\t});\n};\n","import { twMerge } from \"tailwind-merge\";\nimport { IoIosArrowBack } from \"react-icons/io\";\nimport { PaginationItem } from \"./pagination-item\";\nimport { type PaginationProps } from \"./interface/pagination.interface\";\nimport { FormatLimitPagination, FormatPagePagination } from \"./function\";\nimport clsx from \"clsx\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from \"../ui\";\n\nexport const Pagination = ({\n\tclassName,\n\tcolor = \"primary\",\n\n\ttotal,\n\tlimit = 20,\n\tpage = 1,\n\tsiblings = 1,\n\tisLimitSelect = true,\n\tdataLimit = [10, 15, 20, 50, 100, 200],\n\tonChange,\n\ttranslate = {\n\t\tselectLimit: \"Limites\",\n\t\trowPerPage: \"Filas por pagina\",\n\t\tof: \"de\",\n\t},\n}: PaginationProps) => {\n\tconst totalPagination = Math.ceil(total / limit);\n\n\tconst dataPageFormat = FormatPagePagination({\n\t\tlimit,\n\t\tpage,\n\t\tsiblings,\n\t\ttotal: totalPagination,\n\t});\n\tconst dataLimitFormat = FormatLimitPagination(dataLimit);\n\n\tconst handleChange = (value: number | string | null) => {\n\t\tif (value === \"...\") return;\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: Number(value),\n\t\t\t});\n\t};\n\n\tconst handlePrev = () => {\n\t\tif (page === 1) return;\n\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: page - 1,\n\t\t\t});\n\t};\n\n\tconst handleNext = () => {\n\t\tif (page === totalPagination || totalPagination === 0) return;\n\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: page + 1,\n\t\t\t});\n\t};\n\n\tconst handleChangeSelect = (value: string) => {\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tpage,\n\t\t\t\tlimit: value ? Number(value) : 20,\n\t\t\t});\n\t};\n\n\treturn (\n\t\t<div className={twMerge(\"flex justify-between gap-x-2 items-center\", className)}>\n\t\t\t{isLimitSelect ? (\n\t\t\t\t<div className=\"flex items-center gap-x-2.5\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span className=\"text-sm text-default-500\">{translate?.rowPerPage || \"Filas por pagina\"}:</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Select value={limit?.toString()} onValueChange={handleChangeSelect}>\n\t\t\t\t\t\t<SelectTrigger className=\"min-w-20\">\n\t\t\t\t\t\t\t<SelectValue placeholder=\"Select limit\" />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectGroup>\n\t\t\t\t\t\t\t\t<SelectLabel>{translate?.selectLimit || \"Limites\"}</SelectLabel>\n\t\t\t\t\t\t\t\t{dataLimitFormat.map((item) => (\n\t\t\t\t\t\t\t\t\t<SelectItem key={item.id} value={item.id?.toString()}>\n\t\t\t\t\t\t\t\t\t\t{item.name}\n\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</SelectGroup>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\n\t\t\t\t\t<div className=\"text-sm text-default-500\">\n\t\t\t\t\t\t<span className=\"text-default-500\">{`${page} - ${limit}`}</span> {translate?.of || \"de\"}{\" \"}\n\t\t\t\t\t\t<span className=\"text-default-500\">{total}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{totalPagination > 1 && (\n\t\t\t\t<div className=\"flex flex-nowrap h-fit max-w-fit relative items-center overflow-visible gap-0 border border-divider rounded-lg cursor-pointer dark:bg-default-100\">\n\t\t\t\t\t<PaginationItem className={clsx(page === 1 && \"cursor-no-drop\", \"rounded-tl-lg rounded-bl-lg \")} onClick={handlePrev}>\n\t\t\t\t\t\t<IoIosArrowBack className={twMerge(\"fill-default-500\", clsx(page === 1 && \"fill-default-300\"))} />\n\t\t\t\t\t</PaginationItem>\n\n\t\t\t\t\t{dataPageFormat.map((el, i) => (\n\t\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\ttext={el}\n\t\t\t\t\t\t\tactive={page === el}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\tonClick={() => handleChange(el)}\n\t\t\t\t\t\t\tclassName=\"border-l border-divider \"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\"border-l border-divider rounded-tr-lg rounded-br-lg \",\n\t\t\t\t\t\t\t(page === totalPagination || totalPagination === 0) && \"cursor-no-drop\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t>\n\t\t\t\t\t\t<IoIosArrowBack\n\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\"fill-default-500 transform rotate-180 \",\n\t\t\t\t\t\t\t\tclsx((page === totalPagination || totalPagination === 0) && \"fill-default-300\"),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useCallback, useState } from \"react\";\nimport { type PaginationHookProps, type UsePaginationProps } from \"../interface/pagination.interface\";\nimport { type PaginationSetValueProps } from \"../interface/pagination-share.interface\";\n\nexport const usePagination = ({ initialPage = 1, initialLimit = 20 }: UsePaginationProps): PaginationHookProps => {\n\tconst [pageCurrent, setPageCurrent] = useState<number>(initialPage);\n\tconst [limitCurrent, setLimitCurrent] = useState<number>(initialLimit);\n\n\tconst handleSetPagination = useCallback(\n\t\t({ page, limit }: PaginationSetValueProps) => {\n\t\t\tif (page !== pageCurrent) setPageCurrent(page);\n\t\t\tif (limit !== limitCurrent) setLimitCurrent(limit);\n\t\t},\n\t\t[limitCurrent, pageCurrent],\n\t);\n\n\treturn {\n\t\thandleSetPagination,\n\t\tpage: pageCurrent,\n\t\tlimit: limitCurrent,\n\t};\n};\n"],"names":["PaginationItem","className","color","active","children","text","onClick","bgClass","clsx","colorClass","twMerge","jsx","FormatPagePagination","page","total","siblings","_","i","leftSiblingsIndex","rightSiblingsIndex","showLeftDots","showRightDots","leftItemsCount","rightItemsCount","FormatLimitPagination","data","el","Pagination","limit","isLimitSelect","dataLimit","onChange","translate","totalPagination","dataPageFormat","dataLimitFormat","handleChange","value","handlePrev","handleNext","handleChangeSelect","jsxs","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","SelectLabel","item","SelectItem","IoIosArrowBack","usePagination","initialPage","initialLimit","pageCurrent","setPageCurrent","useState","limitCurrent","setLimitCurrent","useCallback"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../src/components/pagination/pagination-item.tsx","../../src/components/pagination/function/index.ts","../../src/components/pagination/pagination.tsx","../../src/components/pagination/hook/use-pagination.tsx"],"sourcesContent":["import { twMerge } from \"tailwind-merge\";\nimport { type PaginationItemProps } from \"./interface/pagination.interface\";\nimport clsx from \"clsx\";\n\nexport const PaginationItem = ({ className, color = \"primary\", active, children, text, onClick }: PaginationItemProps) => {\n\tconst bgClass = clsx(\n\t\t{\n\t\t\t\"bg-primary\": color === \"primary\" && active,\n\t\t\t\"bg-success\": color === \"success\" && active,\n\t\t\t\"bg-danger\": color === \"danger\" && active,\n\t\t\t\"bg-warning\": color === \"warning\" && active,\n\t\t\t\"bg-default\": color === \"default\" && active,\n \"dark:hover:bg-default-200 dark:hover:text-default-800\": !active,\n\t\t},\n\t);\n\tconst colorClass = twMerge(\n\t\tclsx(\"text-sm\", {\n\t\t\t\"group-hover:text-primary-500 dark:group-hover:text-default-800\": color === \"primary\" && !active,\n\t\t\t\"group-hover:text-success-500 dark:group-hover:text-default-800\": color === \"success\" && !active,\n\t\t\t\"group-hover:text-danger-500 dark:group-hover:text-default-800\": color === \"danger\" && !active,\n\t\t\t\"group-hover:text-warning-500 dark:group-hover:text-default-800\": color === \"warning\" && !active,\n\t\t\t\"group-hover:text-default-500 dark:group-hover:text-default-800\": color === \"default\" && !active,\n\n\t\t\t\"text-default-foreground\": active && color === \"default\",\n\t\t\t\"text-primary-foreground\": active && color === \"primary\",\n\t\t\t\"text-success-foreground\": active && color === \"success\",\n\t\t\t\"text-danger-foreground\": active && color === \"danger\",\n\t\t\t\"text-warning-foreground\": active && color === \"warning\",\n\t\t}),\n\t);\n\n\treturn (\n\t\t<div className={twMerge(\"w-[33px] h-[32px] flex items-center justify-center group \", bgClass, className)} onClick={onClick}>\n\t\t\t{children || <p className={colorClass}>{text}</p>}\n\t\t</div>\n\t);\n};\n","import { type PaginationValueProps } from \"../interface/pagination-share.interface\";\n\nexport const FormatPagePagination = ({\n\tpage,\n\ttotal,\n\tsiblings = 1,\n}: PaginationValueProps) => {\n\tconst totalPageNoInArray = 7 + siblings;\n\n\tif (totalPageNoInArray >= total) {\n\t\treturn Array.from({ length: total }, (_, i) => i + 1);\n\t}\n\n\tconst leftSiblingsIndex = Math.max(page - siblings, 1);\n\tconst rightSiblingsIndex = Math.min(page + siblings, total);\n\n\tconst showLeftDots = leftSiblingsIndex > 2;\n\tconst showRightDots = rightSiblingsIndex < total - 2;\n\n\tif (!showLeftDots && showRightDots) {\n\t\tconst leftItemsCount = 3 + 2 * siblings;\n\t\tconst leftRange = Array.from({ length: leftItemsCount }, (_, i) => i + 1);\n\t\treturn [...leftRange, \"...\", total];\n\t} else if (showLeftDots && !showRightDots) {\n\t\tconst rightItemsCount = 3 + 2 * siblings;\n\t\tconst rightRange = Array.from(\n\t\t\t{ length: rightItemsCount },\n\t\t\t(_, i) => total - rightItemsCount + i + 1\n\t\t);\n\t\treturn [1, \"...\", ...rightRange];\n\t} else {\n\t\tconst middleRange = Array.from(\n\t\t\t{ length: rightSiblingsIndex - leftSiblingsIndex + 1 },\n\t\t\t(_, i) => leftSiblingsIndex + i\n\t\t);\n\t\treturn [1, \"...\", ...middleRange, \"...\", total];\n\t}\n};\n\nexport const FormatLimitPagination = (data: number[]) => {\n\treturn data.map((el) => {\n\t\treturn {\n\t\t\tid: el,\n\t\t\tname: el,\n\t\t};\n\t});\n};\n","import { twMerge } from \"tailwind-merge\";\nimport { IoIosArrowBack } from \"react-icons/io\";\nimport { PaginationItem } from \"./pagination-item\";\nimport { type PaginationProps } from \"./interface/pagination.interface\";\nimport { FormatLimitPagination, FormatPagePagination } from \"./function\";\nimport clsx from \"clsx\";\nimport { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from \"../ui\";\n\nexport const Pagination = ({\n\tclassName,\n\tcolor = \"primary\",\n\n\ttotal,\n\tlimit = 20,\n\tpage = 1,\n\tsiblings = 1,\n\tisLimitSelect = true,\n\tdataLimit = [10, 15, 20, 50, 100, 200],\n\tonChange,\n\ttranslate = {\n\t\tselectLimit: \"Limites\",\n\t\trowPerPage: \"Filas por pagina\",\n\t\tof: \"de\",\n\t},\n}: PaginationProps) => {\n\tconst totalPagination = Math.ceil(total / limit);\n\n\tconst dataPageFormat = FormatPagePagination({\n\t\tlimit,\n\t\tpage,\n\t\tsiblings,\n\t\ttotal: totalPagination,\n\t});\n\tconst dataLimitFormat = FormatLimitPagination(dataLimit);\n\n\tconst handleChange = (value: number | string | null) => {\n\t\tif (value === \"...\") return;\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: Number(value),\n\t\t\t});\n\t};\n\n\tconst handlePrev = () => {\n\t\tif (page === 1) return;\n\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: page - 1,\n\t\t\t});\n\t};\n\n\tconst handleNext = () => {\n\t\tif (page === totalPagination || totalPagination === 0) return;\n\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tlimit,\n\t\t\t\tpage: page + 1,\n\t\t\t});\n\t};\n\n\tconst handleChangeSelect = (value: string) => {\n\t\tif (onChange)\n\t\t\tonChange({\n\t\t\t\tpage,\n\t\t\t\tlimit: value ? Number(value) : 20,\n\t\t\t});\n\t};\n\n\treturn (\n\t\t<div className={twMerge(\"flex justify-between gap-x-2 items-center\", className)}>\n\t\t\t{isLimitSelect ? (\n\t\t\t\t<div className=\"flex items-center gap-x-2.5\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span className=\"text-sm text-default-500\">{translate?.rowPerPage || \"Filas por pagina\"}:</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<Select value={limit?.toString()} onValueChange={handleChangeSelect}>\n\t\t\t\t\t\t<SelectTrigger className=\"min-w-20\">\n\t\t\t\t\t\t\t<SelectValue placeholder=\"Select limit\" />\n\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t<SelectContent>\n\t\t\t\t\t\t\t<SelectGroup>\n\t\t\t\t\t\t\t\t<SelectLabel>{translate?.selectLimit || \"Limites\"}</SelectLabel>\n\t\t\t\t\t\t\t\t{dataLimitFormat.map((item) => (\n\t\t\t\t\t\t\t\t\t<SelectItem key={item.id} value={item.id?.toString()}>\n\t\t\t\t\t\t\t\t\t\t{item.name}\n\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</SelectGroup>\n\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t</Select>\n\n\t\t\t\t\t<div className=\"text-sm text-default-500\">\n\t\t\t\t\t\t<span className=\"text-default-500\">{`${page} - ${limit}`}</span> {translate?.of || \"de\"}{\" \"}\n\t\t\t\t\t\t<span className=\"text-default-500\">{total}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{totalPagination > 1 && (\n\t\t\t\t<div className=\"flex flex-nowrap h-fit max-w-fit relative items-center overflow-visible gap-0 border border-divider rounded-lg cursor-pointer dark:bg-default-100\">\n\t\t\t\t\t<PaginationItem className={clsx(page === 1 && \"cursor-no-drop\", \"rounded-tl-lg rounded-bl-lg \")} onClick={handlePrev}>\n\t\t\t\t\t\t<IoIosArrowBack className={twMerge(\"fill-default-500\", clsx(page === 1 && \"fill-default-300\"))} />\n\t\t\t\t\t</PaginationItem>\n\n\t\t\t\t\t{dataPageFormat.map((el, i) => (\n\t\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\ttext={el}\n\t\t\t\t\t\t\tactive={page === el}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\tonClick={() => handleChange(el)}\n\t\t\t\t\t\t\tclassName=\"border-l border-divider \"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\n\t\t\t\t\t<PaginationItem\n\t\t\t\t\t\tclassName={clsx(\n\t\t\t\t\t\t\t\"border-l border-divider rounded-tr-lg rounded-br-lg \",\n\t\t\t\t\t\t\t(page === totalPagination || totalPagination === 0) && \"cursor-no-drop\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonClick={handleNext}\n\t\t\t\t\t>\n\t\t\t\t\t\t<IoIosArrowBack\n\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\"fill-default-500 transform rotate-180 \",\n\t\t\t\t\t\t\t\tclsx((page === totalPagination || totalPagination === 0) && \"fill-default-300\"),\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PaginationItem>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import { useCallback, useState } from \"react\";\nimport { type PaginationHookProps, type UsePaginationProps } from \"../interface/pagination.interface\";\nimport { type PaginationSetValueProps } from \"../interface/pagination-share.interface\";\n\nexport const usePagination = ({ initialPage = 1, initialLimit = 20 }: UsePaginationProps): PaginationHookProps => {\n\tconst [pageCurrent, setPageCurrent] = useState<number>(initialPage);\n\tconst [limitCurrent, setLimitCurrent] = useState<number>(initialLimit);\n\n\tconst handleSetPagination = useCallback(\n\t\t({ page, limit }: PaginationSetValueProps) => {\n\t\t\tif (page !== pageCurrent) setPageCurrent(page);\n\t\t\tif (limit !== limitCurrent) setLimitCurrent(limit);\n\t\t},\n\t\t[limitCurrent, pageCurrent],\n\t);\n\n\treturn {\n\t\thandleSetPagination,\n\t\tpage: pageCurrent,\n\t\tlimit: limitCurrent,\n\t};\n};\n"],"names":["PaginationItem","className","color","active","children","text","onClick","bgClass","clsx","colorClass","twMerge","jsx","FormatPagePagination","page","total","siblings","_","i","leftSiblingsIndex","rightSiblingsIndex","showLeftDots","showRightDots","leftItemsCount","rightItemsCount","FormatLimitPagination","data","el","Pagination","limit","isLimitSelect","dataLimit","onChange","translate","totalPagination","dataPageFormat","dataLimitFormat","handleChange","value","handlePrev","handleNext","handleChangeSelect","jsxs","Select","SelectTrigger","SelectValue","SelectContent","SelectGroup","SelectLabel","item","SelectItem","IoIosArrowBack","usePagination","initialPage","initialLimit","pageCurrent","setPageCurrent","useState","limitCurrent","setLimitCurrent","useCallback"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../chunks/jsx-runtime-DZW6kfQG.js"),r=require("react"),a=require("libphonenumber-js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../chunks/jsx-runtime-DZW6kfQG.js"),r=require("react"),a=require("libphonenumber-js"),p=require("tailwind-merge"),oe=require("../chunks/utils-IjLH3w2e.js");require("../chunks/textarea-99dejq_o.js");const ae=require("../chunks/label-error-wbavGDVw.js");require("clsx");const z=require("../chunks/scroll-area-DQDhB5AF.js");require("../chunks/button-CGIs6rx_.js");const E=require("framer-motion"),F=require("../chunks/index-F6lXbxSB.js"),C={PE:{name:"Perú",flag:"🇵🇪"},US:{name:"Estados Unidos",flag:"🇺🇸"},MX:{name:"México",flag:"🇲🇽"},AR:{name:"Argentina",flag:"🇦🇷"},CO:{name:"Colombia",flag:"🇨🇴"},CL:{name:"Chile",flag:"🇨🇱"},BR:{name:"Brasil",flag:"🇧🇷"},BO:{name:"Bolivia",flag:"🇧🇴"},VE:{name:"Venezuela",flag:"🇻🇪"}},ie=({id:Y,name:$,label:q="Teléfono",placeholder:U="Ingrese un número de teléfono",required:J=!1,className:W="",classNameContainer:X="",onCountryChange:G,onPhoneChange:I,touched:R,onBlur:H,error:x,value:u,defaultCountry:g="PE",disabled:h=!1})=>{const[o,M]=r.useState({code:g,name:C[g].name,flag:C[g].flag,callingCode:`+${a.getCountryCallingCode(g)}`}),[j,y]=r.useState(!1),[b,d]=r.useState(""),[K,i]=r.useState(""),[Q,m]=r.useState(!1),[l,Z]=r.useState([]),[f,P]=r.useState(""),[_,N]=r.useState([]),S=r.useRef(null),T=r.useRef(null),A=r.useRef(null),ee=r.useId(),L=Y||ee,O=u!==void 0;r.useEffect(()=>{const e=Object.keys(C).map(n=>{const s=C[n];return{code:n,name:s.name,flag:s.flag,callingCode:`+${a.getCountryCallingCode(n)}`}});Z(e),N(e)},[]),r.useEffect(()=>{const e=n=>{S.current&&!S.current.contains(n.target)&&y(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),r.useEffect(()=>{if(!O||l.length===0)return;if(u===""||u==null){d(""),i(""),m(!1);return}const e=String(u);let n=l.find(s=>e.startsWith(s.callingCode));if(n||(n=o),n){o.code!==n.code&&M(n);const s=e.replace(n.callingCode,"").replace(/[^\d]/g,"");d(s);const c=new a.AsYouType(n.code).input(s);i(c);const v=a.isValidPhoneNumber(e);m(v)}else d(""),i(""),m(!1)},[u,l,O,o]);const te=(e,n)=>{const s=e.replace(/[^\d]/g,"");if(n?.nativeEvent instanceof InputEvent&&n.nativeEvent.inputType==="deleteContentBackward"&&s.length<4){d(s),i(s);return}const c=new a.AsYouType(o.code).input(s);d(s),i(c);const v=o.callingCode+s,D=a.isValidPhoneNumber(v);m(D),I?.(v,D)},se=e=>{if(M(e),y(!1),P(""),b){const s=new a.AsYouType(e.code).input(b);i(s);const w=e.callingCode+b,c=a.isValidPhoneNumber(w);m(c),I?.(w,c)}G?.(e),setTimeout(()=>T.current?.focus(),100)},ne=()=>{y(!j),j||setTimeout(()=>A.current?.focus(),100)};r.useEffect(()=>{if(!f.trim())N(l);else{const e=f.toLowerCase(),n=l.filter(s=>s.name.toLowerCase().includes(e)||s.callingCode.includes(f)||s.code.toLowerCase().includes(e));N(n)}},[f,l]);const re=R,k=x,B=re&&k,V=!h&&!!x&&R;return t.jsxRuntimeExports.jsxs("div",{className:p.twMerge("w-full relative flex flex-col",X),children:[q&&t.jsxRuntimeExports.jsxs("label",{htmlFor:L,className:oe.cn("form-control-label block font-normal text-sm text-foreground mb-1",{"text-danger":B}),children:[q," ",J&&t.jsxRuntimeExports.jsx("span",{className:"text-danger",children:"*"})]}),t.jsxRuntimeExports.jsxs("div",{className:p.twMerge("flex w-full min-w-0 transition-[color,box-shadow] outline-none rounded-md h-input-default","bg-white border border-input","disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",B?"border-danger aria-invalid:ring-danger/20":"focus-within:border-primary focus-within:ring-primary/20","focus-within:ring-[3px]"),"aria-invalid":V?"true":"false",children:[t.jsxRuntimeExports.jsxs("div",{className:"relative",ref:S,children:[t.jsxRuntimeExports.jsxs("button",{type:"button",onClick:ne,className:p.twMerge("flex items-center gap-2 px-3 border-r border-input h-input-default","hover:bg-muted/20 focus:outline-none rounded-l-md"),children:[t.jsxRuntimeExports.jsx("span",{className:"text-lg",children:o.flag}),t.jsxRuntimeExports.jsx("span",{className:"text-sm font-medium text-foreground",children:o.callingCode}),t.jsxRuntimeExports.jsx(F.ChevronDown,{className:`w-4 h-4 text-muted-foreground transition-transform ${j?"rotate-180":""}`})]}),t.jsxRuntimeExports.jsx(E.AnimatePresence,{children:j&&t.jsxRuntimeExports.jsx(E.LazyMotion,{features:E.domAnimation,children:t.jsxRuntimeExports.jsxs(E.m.div,{initial:{opacity:0,y:-8,scale:.98},animate:{opacity:1,y:0,scale:1,transition:{type:"spring",stiffness:420,damping:28}},exit:{opacity:0,y:-6,scale:.98,transition:{duration:.15,ease:"easeOut"}},style:{transformOrigin:"top center"},className:"absolute top-full left-0 z-50 w-60 mt-1 bg-white border border-input rounded-md shadow-lg max-h-60 overflow-hidden",children:[t.jsxRuntimeExports.jsx("div",{className:"sticky top-0 bg-white border-b border-input p-3",children:t.jsxRuntimeExports.jsxs("div",{className:"relative",children:[t.jsxRuntimeExports.jsx(z.Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"}),t.jsxRuntimeExports.jsx("input",{ref:A,type:"text",value:f,onChange:e=>P(e.target.value),placeholder:"Buscar país o código",className:"w-full pl-10 pr-3 py-2 h-9 border border-input rounded-md text-sm focus:outline-none focus:border-primary focus:ring-[3px] focus:ring-primary/20"})]})}),t.jsxRuntimeExports.jsx(z.ScrollArea,{className:"max-h-48 overflow-y-auto pb-5",children:_.map(e=>t.jsxRuntimeExports.jsxs("button",{type:"button",onClick:()=>se(e),className:p.twMerge("w-full flex items-center gap-3 px-3 py-1 text-sm transition",o.code===e.code?"bg-primary/5 border-l-2 border-primary":"hover:bg-muted/20"),children:[t.jsxRuntimeExports.jsx("span",{className:"text-lg",children:e.flag}),t.jsxRuntimeExports.jsx("span",{className:"flex-1 text-left",children:e.name}),t.jsxRuntimeExports.jsx("span",{className:"text-muted-foreground",children:e.callingCode}),o.code===e.code&&t.jsxRuntimeExports.jsx(F.Check,{className:"w-4 h-4 text-primary"})]},e.code))})]},"country-dropdown")})})]}),t.jsxRuntimeExports.jsx("input",{ref:T,id:L,type:"tel",name:$,value:K,onChange:e=>te(e.target.value,e),onBlur:H,placeholder:U,disabled:h,...h?{}:{"aria-invalid":V},className:p.twMerge("flex-1 px-3 py-1 h-input-default border-0 rounded-r-md bg-transparent focus:outline-none text-foreground text-sm",W),autoComplete:"tel"})]}),!h&&x&&R&&t.jsxRuntimeExports.jsx(ae.LabelError,{text:x||k||""})]})};exports.PhoneInput=ie;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["import type React from \"react\";\nimport { useState, useEffect, useRef, useId } from \"react\";\nimport { getCountryCallingCode, AsYouType, isValidPhoneNumber } from \"libphonenumber-js\";\nimport { ChevronDown, Check, Search } from \"lucide-react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { cn } from \"@/lib/utils\";\nimport { LabelError, ScrollArea } from \"../ui\";\nimport { AnimatePresence } from \"framer-motion\";\nimport { LazyMotion, m, domAnimation } from \"framer-motion\";\n\nconst countryData = {\n\tPE: { name: \"Perú\", flag: \"🇵🇪\" },\n\tUS: { name: \"Estados Unidos\", flag: \"🇺🇸\" },\n\tMX: { name: \"México\", flag: \"🇲🇽\" },\n\tAR: { name: \"Argentina\", flag: \"🇦🇷\" },\n\tCO: { name: \"Colombia\", flag: \"🇨🇴\" },\n\tCL: { name: \"Chile\", flag: \"🇨🇱\" },\n\tBR: { name: \"Brasil\", flag: \"🇧🇷\" },\n\tBO: { name: \"Bolivia\", flag: \"🇧🇴\" },\n\tVE: { name: \"Venezuela\", flag: \"🇻🇪\" },\n};\n\ninterface Country {\n\tcode: string;\n\tname: string;\n\tflag: string;\n\tcallingCode: string;\n}\n\ninterface PhoneInputProps {\n\tid?: string;\n\tname: string;\n\tlabel?: string;\n\tplaceholder?: string;\n\trequired?: boolean;\n\tclassName?: string;\n\tonCountryChange?: (country: Country) => void;\n\tonPhoneChange?: (phone: string, isValid: boolean) => void;\n\ttouched?: boolean;\n\tvalues?: any;\n\tonBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n\terror?: string;\n\tvalue?: string; // para standalone\n\tdefaultCountry?: string;\n\tdisabled?: boolean;\n\tclassNameContainer?: string;\n}\n\nexport const PhoneInput: React.FC<PhoneInputProps> = ({\n\tid,\n\tname,\n\tlabel = \"Teléfono\",\n\tplaceholder = \"Ingrese un número de teléfono\",\n\trequired = false,\n\tclassName = \"\",\n\tclassNameContainer = \"\",\n\tonCountryChange,\n\tonPhoneChange,\n\ttouched: externalTouched,\n\tonBlur: externalOnBlur,\n\terror: externalError,\n\tvalue: externalValue,\n\tdefaultCountry = \"PE\",\n\tdisabled = false,\n}) => {\n\tconst [selectedCountry, setSelectedCountry] = useState<Country>({\n\t\tcode: defaultCountry,\n\t\tname: countryData[defaultCountry as keyof typeof countryData].name,\n\t\tflag: countryData[defaultCountry as keyof typeof countryData].flag,\n\t\tcallingCode: `+${getCountryCallingCode(defaultCountry as keyof typeof countryData)}`,\n\t});\n\n\tconst [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\tconst [phoneValue, setPhoneValue] = useState(\"\");\n\tconst [formattedValue, setFormattedValue] = useState(\"\");\n\tconst [isValid, setIsValid] = useState(false);\n\tconst [countries, setCountries] = useState<Country[]>([]);\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\n\tconst [filteredCountries, setFilteredCountries] = useState<Country[]>([]);\n\n\tconst dropdownRef = useRef<HTMLDivElement>(null);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst searchInputRef = useRef<HTMLInputElement>(null);\n\n\tconst inputId = useId();\n\tconst resolvedId = id || inputId;\n\tconst isControlled = externalValue !== undefined;\n\n\t// Inicializar países en el orden definido en countryData\n\tuseEffect(() => {\n\t\tconst availableCountries = Object.keys(countryData).map((countryCode) => {\n\t\t\tconst data = countryData[countryCode as keyof typeof countryData];\n\t\t\treturn {\n\t\t\t\tcode: countryCode,\n\t\t\t\tname: data.name,\n\t\t\t\tflag: data.flag,\n\t\t\t\tcallingCode: `+${getCountryCallingCode(countryCode as keyof typeof countryData)}`,\n\t\t\t};\n\t\t});\n\t\tsetCountries(availableCountries);\n\t\tsetFilteredCountries(availableCountries);\n\t}, []);\n\n\t// Manejo de click fuera para cerrar dropdown\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsDropdownOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => document.removeEventListener(\"mousedown\", handleClickOutside);\n\t}, []);\n\n\t// Sincronizar externalValue con estados internos (incluye reset con \"\")\n\tuseEffect(() => {\n\t\tif (!isControlled || countries.length === 0) return;\n\n\t\t// Si el valor externo es vacío o null, limpiar estados\n\t\tif (externalValue === \"\" || externalValue == null) {\n\t\t\tsetPhoneValue(\"\");\n\t\t\tsetFormattedValue(\"\");\n\t\t\tsetIsValid(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = String(externalValue);\n\t\tlet country = countries.find((c) => value.startsWith(c.callingCode));\n\n\t\t// Si no se detecta país por código, mantener el seleccionado actual\n\t\tif (!country) {\n\t\t\tcountry = selectedCountry;\n\t\t}\n\n\t\tif (country) {\n\t\t\t// Actualizar país si cambió\n\t\t\tif (selectedCountry.code !== country.code) {\n\t\t\t\tsetSelectedCountry(country);\n\t\t\t}\n\n\t\t\tconst raw = value.replace(country.callingCode, \"\").replace(/[^\\d]/g, \"\");\n\t\t\tsetPhoneValue(raw);\n\n\t\t\tconst formatter = new AsYouType(country.code as keyof typeof countryData);\n\t\t\tconst formatted = formatter.input(raw);\n\t\t\tsetFormattedValue(formatted);\n\n\t\t\tconst valid = isValidPhoneNumber(value);\n\t\t\tsetIsValid(valid);\n\t\t} else {\n\t\t\t// Fallback: no país detectado, limpiar formato pero conservar value crudo\n\t\t\tsetPhoneValue(\"\");\n\t\t\tsetFormattedValue(\"\");\n\t\t\tsetIsValid(false);\n\t\t}\n\t}, [externalValue, countries, isControlled, selectedCountry]);\n\n\t// Formatear número al escribir\n\tconst handlePhoneChange = (value: string, event?: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst cleanValue = value.replace(/[^\\d]/g, \"\");\n\n\t\tif (event?.nativeEvent instanceof InputEvent && event.nativeEvent.inputType === \"deleteContentBackward\" && cleanValue.length < 4) {\n\t\t\tsetPhoneValue(cleanValue);\n\t\t\tsetFormattedValue(cleanValue); // mostrar sin formato\n\t\t\treturn;\n\t\t}\n\t\tconst formatter = new AsYouType(selectedCountry.code as keyof typeof countryData);\n\t\tconst formatted = formatter.input(cleanValue);\n\n\t\tsetPhoneValue(cleanValue);\n\t\tsetFormattedValue(formatted);\n\n\t\tconst fullNumber = selectedCountry.callingCode + cleanValue;\n\t\tconst valid = isValidPhoneNumber(fullNumber);\n\t\tsetIsValid(valid);\n\n\t\tonPhoneChange?.(fullNumber, valid);\n\t};\n\n\t// Seleccionar país\n\tconst handleCountrySelect = (country: Country) => {\n\t\tsetSelectedCountry(country);\n\t\tsetIsDropdownOpen(false);\n\t\tsetSearchTerm(\"\");\n\n\t\tif (phoneValue) {\n\t\t\tconst formatter = new AsYouType(country.code as keyof typeof countryData);\n\t\t\tconst formatted = formatter.input(phoneValue);\n\t\t\tsetFormattedValue(formatted);\n\n\t\t\tconst fullNumber = country.callingCode + phoneValue;\n\t\t\tconst valid = isValidPhoneNumber(fullNumber);\n\t\t\tsetIsValid(valid);\n\n\t\t\tonPhoneChange?.(fullNumber, valid);\n\t\t}\n\n\t\tonCountryChange?.(country);\n\t\tsetTimeout(() => inputRef.current?.focus(), 100);\n\t};\n\n\tconst handleDropdownToggle = () => {\n\t\tsetIsDropdownOpen(!isDropdownOpen);\n\t\tif (!isDropdownOpen) {\n\t\t\tsetTimeout(() => searchInputRef.current?.focus(), 100);\n\t\t}\n\t};\n\n\t// Filtrar países en búsqueda\n\tuseEffect(() => {\n\t\tif (!searchTerm.trim()) {\n\t\t\tsetFilteredCountries(countries);\n\t\t} else {\n\t\t\tconst searchLower = searchTerm.toLowerCase();\n\t\t\tconst filtered = countries.filter(\n\t\t\t\t(country) =>\n\t\t\t\t\tcountry.name.toLowerCase().includes(searchLower) ||\n\t\t\t\t\tcountry.callingCode.includes(searchTerm) ||\n\t\t\t\t\tcountry.code.toLowerCase().includes(searchLower),\n\t\t\t);\n\t\t\tsetFilteredCountries(filtered);\n\t\t}\n\t}, [searchTerm, countries]);\n\n\tconst isTouched = externalTouched;\n\tconst currentError = externalError;\n\tconst hasError = isTouched && currentError;\n\n\tconst isInvalid = !disabled && !!externalError && externalTouched;\n\n\treturn (\n\t\t<div className={twMerge(\"w-full relative flex flex-col\", classNameContainer)}>\n\t\t\t{label && (\n\t\t\t\t<label\n\t\t\t\t\thtmlFor={resolvedId}\n\t\t\t\t\tclassName={cn(\"form-control-label block font-normal text-sm text-foreground mb-1\", {\n\t\t\t\t\t\t\"text-danger\": hasError,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{label} {required && <span className=\"text-danger\">*</span>}\n\t\t\t\t</label>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\"flex w-full min-w-0 transition-[color,box-shadow] outline-none rounded-md h-input-default\",\n\t\t\t\t\t\"bg-white border border-input\",\n\t\t\t\t\t\"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\thasError\n\t\t\t\t\t\t? \"border-danger aria-invalid:ring-danger/20\"\n\t\t\t\t\t\t: isValid && phoneValue\n\t\t\t\t\t\t? \"focus-within:border-primary focus-within:ring-primary/20\"\n\t\t\t\t\t\t: \"focus-within:border-primary focus-within:ring-primary/20\",\n\t\t\t\t\t\"focus-within:ring-[3px]\",\n\t\t\t\t)}\n\t\t\t\taria-invalid={isInvalid ? \"true\" : \"false\"}\n\t\t\t>\n\t\t\t\t{/* Country selector */}\n\t\t\t\t<div className=\"relative\" ref={dropdownRef}>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={handleDropdownToggle}\n\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\"flex items-center gap-2 px-3 border-r border-input h-input-default\",\n\t\t\t\t\t\t\t\"hover:bg-muted/20 focus:outline-none rounded-l-md\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"text-lg\">{selectedCountry.flag}</span>\n\t\t\t\t\t\t<span className=\"text-sm font-medium text-foreground\">{selectedCountry.callingCode}</span>\n\t\t\t\t\t\t<ChevronDown className={`w-4 h-4 text-muted-foreground transition-transform ${isDropdownOpen ? \"rotate-180\" : \"\"}`} />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{isDropdownOpen && (\n\t\t\t\t\t\t\t<LazyMotion features={domAnimation}>\n\t\t\t\t\t\t\t\t<m.div\n\t\t\t\t\t\t\t\t\tkey=\"country-dropdown\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -8, scale: 0.98 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0, scale: 1, transition: { type: \"spring\", stiffness: 420, damping: 28 } }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0, y: -6, scale: 0.98, transition: { duration: 0.15, ease: \"easeOut\" } }}\n\t\t\t\t\t\t\t\t\tstyle={{ transformOrigin: \"top center\" }}\n\t\t\t\t\t\t\t\t\tclassName=\"absolute top-full left-0 z-50 w-60 mt-1 bg-white border border-input rounded-md shadow-lg max-h-60 overflow-hidden\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"sticky top-0 bg-white border-b border-input p-3\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t\t\t\t\t\t<Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\t\tref={searchInputRef}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => setSearchTerm(e.target.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Buscar país o código\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full pl-10 pr-3 py-2 h-9 border border-input rounded-md text-sm focus:outline-none focus:border-primary focus:ring-[3px] focus:ring-primary/20\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<ScrollArea className=\"max-h-48 overflow-y-auto pb-5\">\n\t\t\t\t\t\t\t\t\t\t{filteredCountries.map((country) => (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={country.code}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleCountrySelect(country)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"w-full flex items-center gap-3 px-3 py-1 text-sm transition\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedCountry.code === country.code\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"bg-primary/5 border-l-2 border-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"hover:bg-muted/20\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-lg\">{country.flag}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex-1 text-left\">{country.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{country.callingCode}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{selectedCountry.code === country.code && <Check className=\"w-4 h-4 text-primary\" />}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</ScrollArea>\n\t\t\t\t\t\t\t\t</m.div>\n\t\t\t\t\t\t\t</LazyMotion>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Phone input */}\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tid={resolvedId}\n\t\t\t\t\ttype=\"tel\"\n\t\t\t\t\tname={name}\n\t\t\t\t\tvalue={formattedValue}\n\t\t\t\t\tonChange={(e) => handlePhoneChange(e.target.value, e)}\n\t\t\t\t\tonBlur={externalOnBlur}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...(!disabled ? { \"aria-invalid\": isInvalid } : {})}\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\"flex-1 px-3 py-1 h-input-default border-0 rounded-r-md bg-transparent focus:outline-none text-foreground text-sm\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tautoComplete=\"tel\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{!disabled && externalError && externalTouched && <LabelError text={externalError || currentError || \"\"} />}\n\t\t</div>\n\t);\n};\n"],"names":["countryData","PhoneInput","id","name","label","placeholder","required","className","classNameContainer","onCountryChange","onPhoneChange","externalTouched","externalOnBlur","externalError","externalValue","defaultCountry","disabled","selectedCountry","setSelectedCountry","useState","getCountryCallingCode","isDropdownOpen","setIsDropdownOpen","phoneValue","setPhoneValue","formattedValue","setFormattedValue","isValid","setIsValid","countries","setCountries","searchTerm","setSearchTerm","filteredCountries","setFilteredCountries","dropdownRef","useRef","inputRef","searchInputRef","inputId","useId","resolvedId","isControlled","useEffect","availableCountries","countryCode","data","handleClickOutside","event","value","country","c","raw","formatted","AsYouType","valid","isValidPhoneNumber","handlePhoneChange","cleanValue","fullNumber","handleCountrySelect","handleDropdownToggle","searchLower","filtered","isTouched","currentError","hasError","isInvalid","twMerge","jsxs","cn","jsx","ChevronDown","AnimatePresence","LazyMotion","domAnimation","m","Search","ScrollArea","Check","LabelError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["import type React from \"react\";\nimport { useState, useEffect, useRef, useId } from \"react\";\nimport { getCountryCallingCode, AsYouType, isValidPhoneNumber } from \"libphonenumber-js\";\nimport { ChevronDown, Check, Search } from \"lucide-react\";\nimport { twMerge } from \"tailwind-merge\";\nimport { cn } from \"@/lib/utils\";\nimport { LabelError, ScrollArea } from \"../ui\";\nimport { AnimatePresence } from \"framer-motion\";\nimport { LazyMotion, m, domAnimation } from \"framer-motion\";\n\nconst countryData = {\n\tPE: { name: \"Perú\", flag: \"🇵🇪\" },\n\tUS: { name: \"Estados Unidos\", flag: \"🇺🇸\" },\n\tMX: { name: \"México\", flag: \"🇲🇽\" },\n\tAR: { name: \"Argentina\", flag: \"🇦🇷\" },\n\tCO: { name: \"Colombia\", flag: \"🇨🇴\" },\n\tCL: { name: \"Chile\", flag: \"🇨🇱\" },\n\tBR: { name: \"Brasil\", flag: \"🇧🇷\" },\n\tBO: { name: \"Bolivia\", flag: \"🇧🇴\" },\n\tVE: { name: \"Venezuela\", flag: \"🇻🇪\" },\n};\n\ninterface Country {\n\tcode: string;\n\tname: string;\n\tflag: string;\n\tcallingCode: string;\n}\n\ninterface PhoneInputProps {\n\tid?: string;\n\tname: string;\n\tlabel?: string;\n\tplaceholder?: string;\n\trequired?: boolean;\n\tclassName?: string;\n\tonCountryChange?: (country: Country) => void;\n\tonPhoneChange?: (phone: string, isValid: boolean) => void;\n\ttouched?: boolean;\n\tvalues?: any;\n\tonBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n\terror?: string;\n\tvalue?: string; // para standalone\n\tdefaultCountry?: string;\n\tdisabled?: boolean;\n\tclassNameContainer?: string;\n}\n\nexport const PhoneInput: React.FC<PhoneInputProps> = ({\n\tid,\n\tname,\n\tlabel = \"Teléfono\",\n\tplaceholder = \"Ingrese un número de teléfono\",\n\trequired = false,\n\tclassName = \"\",\n\tclassNameContainer = \"\",\n\tonCountryChange,\n\tonPhoneChange,\n\ttouched: externalTouched,\n\tonBlur: externalOnBlur,\n\terror: externalError,\n\tvalue: externalValue,\n\tdefaultCountry = \"PE\",\n\tdisabled = false,\n}) => {\n\tconst [selectedCountry, setSelectedCountry] = useState<Country>({\n\t\tcode: defaultCountry,\n\t\tname: countryData[defaultCountry as keyof typeof countryData].name,\n\t\tflag: countryData[defaultCountry as keyof typeof countryData].flag,\n\t\tcallingCode: `+${getCountryCallingCode(defaultCountry as keyof typeof countryData)}`,\n\t});\n\n\tconst [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\tconst [phoneValue, setPhoneValue] = useState(\"\");\n\tconst [formattedValue, setFormattedValue] = useState(\"\");\n\tconst [isValid, setIsValid] = useState(false);\n\tconst [countries, setCountries] = useState<Country[]>([]);\n\tconst [searchTerm, setSearchTerm] = useState(\"\");\n\tconst [filteredCountries, setFilteredCountries] = useState<Country[]>([]);\n\n\tconst dropdownRef = useRef<HTMLDivElement>(null);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst searchInputRef = useRef<HTMLInputElement>(null);\n\n\tconst inputId = useId();\n\tconst resolvedId = id || inputId;\n\tconst isControlled = externalValue !== undefined;\n\n\t// Inicializar países en el orden definido en countryData\n\tuseEffect(() => {\n\t\tconst availableCountries = Object.keys(countryData).map((countryCode) => {\n\t\t\tconst data = countryData[countryCode as keyof typeof countryData];\n\t\t\treturn {\n\t\t\t\tcode: countryCode,\n\t\t\t\tname: data.name,\n\t\t\t\tflag: data.flag,\n\t\t\t\tcallingCode: `+${getCountryCallingCode(countryCode as keyof typeof countryData)}`,\n\t\t\t};\n\t\t});\n\t\tsetCountries(availableCountries);\n\t\tsetFilteredCountries(availableCountries);\n\t}, []);\n\n\t// Manejo de click fuera para cerrar dropdown\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsDropdownOpen(false);\n\t\t\t}\n\t\t};\n\t\tdocument.addEventListener(\"mousedown\", handleClickOutside);\n\t\treturn () => document.removeEventListener(\"mousedown\", handleClickOutside);\n\t}, []);\n\n\t// Sincronizar externalValue con estados internos (incluye reset con \"\")\n\tuseEffect(() => {\n\t\tif (!isControlled || countries.length === 0) return;\n\n\t\t// Si el valor externo es vacío o null, limpiar estados\n\t\tif (externalValue === \"\" || externalValue == null) {\n\t\t\tsetPhoneValue(\"\");\n\t\t\tsetFormattedValue(\"\");\n\t\t\tsetIsValid(false);\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = String(externalValue);\n\t\tlet country = countries.find((c) => value.startsWith(c.callingCode));\n\n\t\t// Si no se detecta país por código, mantener el seleccionado actual\n\t\tif (!country) {\n\t\t\tcountry = selectedCountry;\n\t\t}\n\n\t\tif (country) {\n\t\t\t// Actualizar país si cambió\n\t\t\tif (selectedCountry.code !== country.code) {\n\t\t\t\tsetSelectedCountry(country);\n\t\t\t}\n\n\t\t\tconst raw = value.replace(country.callingCode, \"\").replace(/[^\\d]/g, \"\");\n\t\t\tsetPhoneValue(raw);\n\n\t\t\tconst formatter = new AsYouType(country.code as keyof typeof countryData);\n\t\t\tconst formatted = formatter.input(raw);\n\t\t\tsetFormattedValue(formatted);\n\n\t\t\tconst valid = isValidPhoneNumber(value);\n\t\t\tsetIsValid(valid);\n\t\t} else {\n\t\t\t// Fallback: no país detectado, limpiar formato pero conservar value crudo\n\t\t\tsetPhoneValue(\"\");\n\t\t\tsetFormattedValue(\"\");\n\t\t\tsetIsValid(false);\n\t\t}\n\t}, [externalValue, countries, isControlled, selectedCountry]);\n\n\t// Formatear número al escribir\n\tconst handlePhoneChange = (value: string, event?: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst cleanValue = value.replace(/[^\\d]/g, \"\");\n\n\t\tif (event?.nativeEvent instanceof InputEvent && event.nativeEvent.inputType === \"deleteContentBackward\" && cleanValue.length < 4) {\n\t\t\tsetPhoneValue(cleanValue);\n\t\t\tsetFormattedValue(cleanValue); // mostrar sin formato\n\t\t\treturn;\n\t\t}\n\t\tconst formatter = new AsYouType(selectedCountry.code as keyof typeof countryData);\n\t\tconst formatted = formatter.input(cleanValue);\n\n\t\tsetPhoneValue(cleanValue);\n\t\tsetFormattedValue(formatted);\n\n\t\tconst fullNumber = selectedCountry.callingCode + cleanValue;\n\t\tconst valid = isValidPhoneNumber(fullNumber);\n\t\tsetIsValid(valid);\n\n\t\tonPhoneChange?.(fullNumber, valid);\n\t};\n\n\t// Seleccionar país\n\tconst handleCountrySelect = (country: Country) => {\n\t\tsetSelectedCountry(country);\n\t\tsetIsDropdownOpen(false);\n\t\tsetSearchTerm(\"\");\n\n\t\tif (phoneValue) {\n\t\t\tconst formatter = new AsYouType(country.code as keyof typeof countryData);\n\t\t\tconst formatted = formatter.input(phoneValue);\n\t\t\tsetFormattedValue(formatted);\n\n\t\t\tconst fullNumber = country.callingCode + phoneValue;\n\t\t\tconst valid = isValidPhoneNumber(fullNumber);\n\t\t\tsetIsValid(valid);\n\n\t\t\tonPhoneChange?.(fullNumber, valid);\n\t\t}\n\n\t\tonCountryChange?.(country);\n\t\tsetTimeout(() => inputRef.current?.focus(), 100);\n\t};\n\n\tconst handleDropdownToggle = () => {\n\t\tsetIsDropdownOpen(!isDropdownOpen);\n\t\tif (!isDropdownOpen) {\n\t\t\tsetTimeout(() => searchInputRef.current?.focus(), 100);\n\t\t}\n\t};\n\n\t// Filtrar países en búsqueda\n\tuseEffect(() => {\n\t\tif (!searchTerm.trim()) {\n\t\t\tsetFilteredCountries(countries);\n\t\t} else {\n\t\t\tconst searchLower = searchTerm.toLowerCase();\n\t\t\tconst filtered = countries.filter(\n\t\t\t\t(country) =>\n\t\t\t\t\tcountry.name.toLowerCase().includes(searchLower) ||\n\t\t\t\t\tcountry.callingCode.includes(searchTerm) ||\n\t\t\t\t\tcountry.code.toLowerCase().includes(searchLower),\n\t\t\t);\n\t\t\tsetFilteredCountries(filtered);\n\t\t}\n\t}, [searchTerm, countries]);\n\n\tconst isTouched = externalTouched;\n\tconst currentError = externalError;\n\tconst hasError = isTouched && currentError;\n\n\tconst isInvalid = !disabled && !!externalError && externalTouched;\n\n\treturn (\n\t\t<div className={twMerge(\"w-full relative flex flex-col\", classNameContainer)}>\n\t\t\t{label && (\n\t\t\t\t<label\n\t\t\t\t\thtmlFor={resolvedId}\n\t\t\t\t\tclassName={cn(\"form-control-label block font-normal text-sm text-foreground mb-1\", {\n\t\t\t\t\t\t\"text-danger\": hasError,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{label} {required && <span className=\"text-danger\">*</span>}\n\t\t\t\t</label>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\"flex w-full min-w-0 transition-[color,box-shadow] outline-none rounded-md h-input-default\",\n\t\t\t\t\t\"bg-white border border-input\",\n\t\t\t\t\t\"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\thasError\n\t\t\t\t\t\t? \"border-danger aria-invalid:ring-danger/20\"\n\t\t\t\t\t\t: isValid && phoneValue\n\t\t\t\t\t\t? \"focus-within:border-primary focus-within:ring-primary/20\"\n\t\t\t\t\t\t: \"focus-within:border-primary focus-within:ring-primary/20\",\n\t\t\t\t\t\"focus-within:ring-[3px]\",\n\t\t\t\t)}\n\t\t\t\taria-invalid={isInvalid ? \"true\" : \"false\"}\n\t\t\t>\n\t\t\t\t{/* Country selector */}\n\t\t\t\t<div className=\"relative\" ref={dropdownRef}>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tonClick={handleDropdownToggle}\n\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\"flex items-center gap-2 px-3 border-r border-input h-input-default\",\n\t\t\t\t\t\t\t\"hover:bg-muted/20 focus:outline-none rounded-l-md\",\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"text-lg\">{selectedCountry.flag}</span>\n\t\t\t\t\t\t<span className=\"text-sm font-medium text-foreground\">{selectedCountry.callingCode}</span>\n\t\t\t\t\t\t<ChevronDown className={`w-4 h-4 text-muted-foreground transition-transform ${isDropdownOpen ? \"rotate-180\" : \"\"}`} />\n\t\t\t\t\t</button>\n\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{isDropdownOpen && (\n\t\t\t\t\t\t\t<LazyMotion features={domAnimation}>\n\t\t\t\t\t\t\t\t<m.div\n\t\t\t\t\t\t\t\t\tkey=\"country-dropdown\"\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0, y: -8, scale: 0.98 }}\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, y: 0, scale: 1, transition: { type: \"spring\", stiffness: 420, damping: 28 } }}\n\t\t\t\t\t\t\t\t\texit={{ opacity: 0, y: -6, scale: 0.98, transition: { duration: 0.15, ease: \"easeOut\" } }}\n\t\t\t\t\t\t\t\t\tstyle={{ transformOrigin: \"top center\" }}\n\t\t\t\t\t\t\t\t\tclassName=\"absolute top-full left-0 z-50 w-60 mt-1 bg-white border border-input rounded-md shadow-lg max-h-60 overflow-hidden\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"sticky top-0 bg-white border-b border-input p-3\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t\t\t\t\t\t\t<Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t\t\tref={searchInputRef}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={searchTerm}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => setSearchTerm(e.target.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Buscar país o código\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"w-full pl-10 pr-3 py-2 h-9 border border-input rounded-md text-sm focus:outline-none focus:border-primary focus:ring-[3px] focus:ring-primary/20\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<ScrollArea className=\"max-h-48 overflow-y-auto pb-5\">\n\t\t\t\t\t\t\t\t\t\t{filteredCountries.map((country) => (\n\t\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\t\tkey={country.code}\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleCountrySelect(country)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"w-full flex items-center gap-3 px-3 py-1 text-sm transition\",\n\t\t\t\t\t\t\t\t\t\t\t\t\tselectedCountry.code === country.code\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? \"bg-primary/5 border-l-2 border-primary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: \"hover:bg-muted/20\",\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-lg\">{country.flag}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex-1 text-left\">{country.name}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{country.callingCode}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{selectedCountry.code === country.code && <Check className=\"w-4 h-4 text-primary\" />}\n\t\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t</ScrollArea>\n\t\t\t\t\t\t\t\t</m.div>\n\t\t\t\t\t\t\t</LazyMotion>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Phone input */}\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tid={resolvedId}\n\t\t\t\t\ttype=\"tel\"\n\t\t\t\t\tname={name}\n\t\t\t\t\tvalue={formattedValue}\n\t\t\t\t\tonChange={(e) => handlePhoneChange(e.target.value, e)}\n\t\t\t\t\tonBlur={externalOnBlur}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...(!disabled ? { \"aria-invalid\": isInvalid } : {})}\n\t\t\t\t\tclassName={twMerge(\n\t\t\t\t\t\t\"flex-1 px-3 py-1 h-input-default border-0 rounded-r-md bg-transparent focus:outline-none text-foreground text-sm\",\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t)}\n\t\t\t\t\tautoComplete=\"tel\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t{!disabled && externalError && externalTouched && <LabelError text={externalError || currentError || \"\"} />}\n\t\t</div>\n\t);\n};\n"],"names":["countryData","PhoneInput","id","name","label","placeholder","required","className","classNameContainer","onCountryChange","onPhoneChange","externalTouched","externalOnBlur","externalError","externalValue","defaultCountry","disabled","selectedCountry","setSelectedCountry","useState","getCountryCallingCode","isDropdownOpen","setIsDropdownOpen","phoneValue","setPhoneValue","formattedValue","setFormattedValue","isValid","setIsValid","countries","setCountries","searchTerm","setSearchTerm","filteredCountries","setFilteredCountries","dropdownRef","useRef","inputRef","searchInputRef","inputId","useId","resolvedId","isControlled","useEffect","availableCountries","countryCode","data","handleClickOutside","event","value","country","c","raw","formatted","AsYouType","valid","isValidPhoneNumber","handlePhoneChange","cleanValue","fullNumber","handleCountrySelect","handleDropdownToggle","searchLower","filtered","isTouched","currentError","hasError","isInvalid","twMerge","jsxs","cn","jsx","ChevronDown","AnimatePresence","LazyMotion","domAnimation","m","Search","ScrollArea","Check","LabelError"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { j as t } from "../chunks/jsx-runtime-Dk9ExdSX.js";
|
|
2
2
|
import { useState as s, useRef as L, useId as ae, useEffect as C } from "react";
|
|
3
3
|
import { getCountryCallingCode as U, AsYouType as S, isValidPhoneNumber as k } from "libphonenumber-js";
|
|
4
|
-
import { ChevronDown as ie, Search as le, Check as ce } from "lucide-react";
|
|
5
4
|
import { twMerge as u } from "tailwind-merge";
|
|
6
|
-
import { c as
|
|
5
|
+
import { c as ie } from "../chunks/utils-B6yFEsav.js";
|
|
7
6
|
import "../chunks/textarea-COi5ngTN.js";
|
|
8
|
-
import { L as
|
|
7
|
+
import { L as le } from "../chunks/label-error-Dg6_L7YY.js";
|
|
9
8
|
import "clsx";
|
|
10
|
-
import { S as
|
|
9
|
+
import { S as ce, a as de } from "../chunks/scroll-area-DraFsZQz.js";
|
|
11
10
|
import "../chunks/button-COC4E-Qv.js";
|
|
12
|
-
import { AnimatePresence as
|
|
11
|
+
import { AnimatePresence as me, LazyMotion as fe, domAnimation as ue, m as pe } from "framer-motion";
|
|
12
|
+
import { C as ge, a as he } from "../chunks/index-BJ7LndVf.js";
|
|
13
13
|
const j = {
|
|
14
14
|
PE: { name: "Perú", flag: "🇵🇪" },
|
|
15
15
|
US: { name: "Estados Unidos", flag: "🇺🇸" },
|
|
@@ -115,7 +115,7 @@ const j = {
|
|
|
115
115
|
"label",
|
|
116
116
|
{
|
|
117
117
|
htmlFor: V,
|
|
118
|
-
className:
|
|
118
|
+
className: ie("form-control-label block font-normal text-sm text-foreground mb-1", {
|
|
119
119
|
"text-danger": z
|
|
120
120
|
}),
|
|
121
121
|
children: [
|
|
@@ -150,12 +150,12 @@ const j = {
|
|
|
150
150
|
children: [
|
|
151
151
|
/* @__PURE__ */ t.jsx("span", { className: "text-lg", children: r.flag }),
|
|
152
152
|
/* @__PURE__ */ t.jsx("span", { className: "text-sm font-medium text-foreground", children: r.callingCode }),
|
|
153
|
-
/* @__PURE__ */ t.jsx(
|
|
153
|
+
/* @__PURE__ */ t.jsx(ge, { className: `w-4 h-4 text-muted-foreground transition-transform ${x ? "rotate-180" : ""}` })
|
|
154
154
|
]
|
|
155
155
|
}
|
|
156
156
|
),
|
|
157
|
-
/* @__PURE__ */ t.jsx(
|
|
158
|
-
|
|
157
|
+
/* @__PURE__ */ t.jsx(me, { children: x && /* @__PURE__ */ t.jsx(fe, { features: ue, children: /* @__PURE__ */ t.jsxs(
|
|
158
|
+
pe.div,
|
|
159
159
|
{
|
|
160
160
|
initial: { opacity: 0, y: -8, scale: 0.98 },
|
|
161
161
|
animate: { opacity: 1, y: 0, scale: 1, transition: { type: "spring", stiffness: 420, damping: 28 } },
|
|
@@ -164,7 +164,7 @@ const j = {
|
|
|
164
164
|
className: "absolute top-full left-0 z-50 w-60 mt-1 bg-white border border-input rounded-md shadow-lg max-h-60 overflow-hidden",
|
|
165
165
|
children: [
|
|
166
166
|
/* @__PURE__ */ t.jsx("div", { className: "sticky top-0 bg-white border-b border-input p-3", children: /* @__PURE__ */ t.jsxs("div", { className: "relative", children: [
|
|
167
|
-
/* @__PURE__ */ t.jsx(
|
|
167
|
+
/* @__PURE__ */ t.jsx(ce, { className: "absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground" }),
|
|
168
168
|
/* @__PURE__ */ t.jsx(
|
|
169
169
|
"input",
|
|
170
170
|
{
|
|
@@ -177,7 +177,7 @@ const j = {
|
|
|
177
177
|
}
|
|
178
178
|
)
|
|
179
179
|
] }) }),
|
|
180
|
-
/* @__PURE__ */ t.jsx(
|
|
180
|
+
/* @__PURE__ */ t.jsx(de, { className: "max-h-48 overflow-y-auto pb-5", children: ee.map((e) => /* @__PURE__ */ t.jsxs(
|
|
181
181
|
"button",
|
|
182
182
|
{
|
|
183
183
|
type: "button",
|
|
@@ -190,7 +190,7 @@ const j = {
|
|
|
190
190
|
/* @__PURE__ */ t.jsx("span", { className: "text-lg", children: e.flag }),
|
|
191
191
|
/* @__PURE__ */ t.jsx("span", { className: "flex-1 text-left", children: e.name }),
|
|
192
192
|
/* @__PURE__ */ t.jsx("span", { className: "text-muted-foreground", children: e.callingCode }),
|
|
193
|
-
r.code === e.code && /* @__PURE__ */ t.jsx(
|
|
193
|
+
r.code === e.code && /* @__PURE__ */ t.jsx(he, { className: "w-4 h-4 text-primary" })
|
|
194
194
|
]
|
|
195
195
|
},
|
|
196
196
|
e.code
|
|
@@ -223,7 +223,7 @@ const j = {
|
|
|
223
223
|
]
|
|
224
224
|
}
|
|
225
225
|
),
|
|
226
|
-
!h && p && N && /* @__PURE__ */ t.jsx(
|
|
226
|
+
!h && p && N && /* @__PURE__ */ t.jsx(le, { text: p || M || "" })
|
|
227
227
|
] });
|
|
228
228
|
};
|
|
229
229
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/jsx-runtime-DZW6kfQG.js"),p=require("react"),Ke=require("react-dom"),pe=require("clsx"),l=require("../chunks/styled-components.browser.esm-CDXyhBVL.js"),Ge=require("../chunks/utils-IjLH3w2e.js");require("../chunks/textarea-99dejq_o.js");const Ue=require("../chunks/label-error-wbavGDVw.js");require("lucide-react");require("../chunks/button-CGIs6rx_.js");function Le(e){var t=e.angle,n=t===void 0?0:t,i=e.name,s=e.length,u=s===void 0?100:s,a=e.oppositeLength,c=a===void 0?10:a,d=e.width,h=d===void 0?1:d;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__hand react-clock__".concat(i,"-hand"),style:{transform:"rotate(".concat(n,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__hand__body react-clock__".concat(i,"-hand__body"),style:{width:"".concat(h,"px"),top:"".concat(50-u/2,"%"),bottom:"".concat(50-c/2,"%")}})})}var Ce=p.memo(function(t){var n=t.angle,i=n===void 0?0:n,s=t.length,u=s===void 0?10:s,a=t.name,c=t.width,d=c===void 0?1:c;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark react-clock__".concat(a,"-mark"),style:{transform:"rotate(".concat(i,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark__body react-clock__".concat(a,"-mark__body"),style:{width:"".concat(d,"px"),top:0,bottom:"".concat(100-u/2,"%")}})})}),Be=p.memo(function(t){var n=t.angle,i=n===void 0?0:n,s=t.length,u=s===void 0?10:s,a=t.name,c=t.number;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark react-clock__".concat(a,"-mark"),style:{transform:"rotate(".concat(i,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark__number",style:{transform:"rotate(-".concat(i,"deg)"),top:"".concat(u/2,"%")},children:c})})});function Te(e,t){return t.toLocaleString(e||l.getUserLocale()||void 0)}function Je(e){return e!==null&&e!==!1&&!Number.isNaN(Number(e))}function Qe(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Math.max.apply(Math,e.filter(Je))}function Xe(e){var t=e.className,n=e.formatHour,i=n===void 0?Te:n,s=e.hourHandLength,u=s===void 0?50:s,a=e.hourHandOppositeLength,c=e.hourHandWidth,d=c===void 0?4:c,h=e.hourMarksLength,v=h===void 0?10:h,x=e.hourMarksWidth,j=x===void 0?3:x,y=e.locale,w=e.minuteHandLength,M=w===void 0?70:w,b=e.minuteHandOppositeLength,H=e.minuteHandWidth,$=H===void 0?2:H,C=e.minuteMarksLength,A=C===void 0?6:C,T=e.minuteMarksWidth,J=T===void 0?1:T,K=e.renderHourMarks,O=K===void 0?!0:K,F=e.renderMinuteHand,G=F===void 0?!0:F,q=e.renderMinuteMarks,Q=q===void 0?!0:q,X=e.renderNumbers,re=e.renderSecondHand,Y=re===void 0?!0:re,z=e.secondHandLength,oe=z===void 0?90:z,se=e.secondHandOppositeLength,V=e.secondHandWidth,ee=V===void 0?1:V,U=e.size,L=U===void 0?150:U,W=e.useMillisecondPrecision,k=e.value;function ie(){if(!Q)return null;for(var E=[],_=1;_<=60;_+=1){var ne=O&&!(_%5);ne||E.push(o.jsxRuntimeExports.jsx(Ce,{angle:_*6,length:A,name:"minute",width:J},"minute_".concat(_)))}return E}function ue(){if(!O)return null;for(var E=[],_=1;_<=12;_+=1)E.push(o.jsxRuntimeExports.jsx(Ce,{angle:_*30,length:v,name:"hour",width:j},"hour_".concat(_)));return E}function P(){if(!X)return null;for(var E=[],_=1;_<=12;_+=1)E.push(o.jsxRuntimeExports.jsx(Be,{angle:_*30,length:Qe(O&&v,Q&&A,0),name:"number",number:i(y,_)},"number_".concat(_)));return E}function le(){return o.jsxRuntimeExports.jsxs("div",{className:"react-clock__face",children:[ie(),ue(),P()]})}function ae(){var E=k?l.getHours(k)*30+l.getMinutes(k)/2+l.getSeconds(k)/120+(W?l.getMilliseconds(k)/12e4:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:u,name:"hour",oppositeLength:a,width:d})}function de(){if(!G)return null;var E=k?l.getHours(k)*360+l.getMinutes(k)*6+l.getSeconds(k)/10+(W?l.getMilliseconds(k)/1e4:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:M,name:"minute",oppositeLength:b,width:$})}function te(){if(!Y)return null;var E=k?l.getMinutes(k)*360+l.getSeconds(k)*6+(W?l.getMilliseconds(k)*.006:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:oe,name:"second",oppositeLength:se,width:ee})}return o.jsxRuntimeExports.jsxs("time",{className:pe("react-clock",t),dateTime:k instanceof Date?k.toLocaleTimeString("en",{hourCycle:"h23",hour:"2-digit",minute:G?"2-digit":void 0,second:Y?"2-digit":void 0}):k||void 0,style:{width:L,height:L},children:[le(),ae(),de(),te()]})}function Ye({children:e}){return o.jsxRuntimeExports.jsx("span",{className:"react-time-picker__inputGroup__divider",children:e})}function Ie(e,t){let n=Number(e);return t==="am"&&n===12?n=0:t==="pm"&&n<12&&(n+=12),n}function ce(e){return[Number(e)%12||12,Number(e)<12?"am":"pm"]}const Re=new Map;function Ae(e){return function(n,i){const s=n||l.getUserLocale();Re.has(s)||Re.set(s,new Map);const u=Re.get(s);return u.has(e)||u.set(e,new Intl.DateTimeFormat(s||void 0,e).format),u.get(e)(i)}}const He=new Map;function et(e){return(t,n)=>{const i=t||l.getUserLocale();He.has(i)||He.set(i,new Map);const s=He.get(i);return s.has(e)||s.set(e,new Intl.NumberFormat(i||void 0,e).format),s.get(e)(n)}}const tt=["9","٩"],Me=new RegExp(`[${tt.join("")}]`),Fe=Ae({hour:"numeric"});function Oe(e){const t=Fe(e,new Date(2017,0,1,9)),n=Fe(e,new Date(2017,0,1,21)),[i,s]=t.split(Me),[u,a]=n.split(Me);if(a!==void 0){if(i!==u)return[i,u].map(c=>c.trim());if(s!==a)return[s,a].map(c=>c.trim())}return["AM","PM"]}function We(e){return e!==null&&e!==!1&&!Number.isNaN(Number(e))}function be(...e){return Math.min(...e.filter(We))}function ke(...e){return Math.max(...e.filter(We))}function nt({ariaLabel:e,autoFocus:t,className:n,disabled:i,inputRef:s,locale:u,maxTime:a,minTime:c,onChange:d,onKeyDown:h,required:v,value:x}){const j=c?ce(l.getHours(c))[1]==="pm":!1,y=a?ce(l.getHours(a))[1]==="am":!1,w="amPm",[M,b]=Oe(u);return o.jsxRuntimeExports.jsxs("select",{"aria-label":e,autoFocus:t,className:pe(`${n}__input`,`${n}__${w}`),"data-input":"true","data-select":"true",disabled:i,name:w,onChange:d,onKeyDown:h,ref:s,required:v,value:x!==null?x:"",children:[!x&&o.jsxRuntimeExports.jsx("option",{value:"",children:"--"}),o.jsxRuntimeExports.jsx("option",{disabled:j,value:"am",children:M}),o.jsxRuntimeExports.jsx("option",{disabled:y,value:"pm",children:b})]})}const Se=typeof window<"u",rt=Se?p.useLayoutEffect:p.useEffect,ot=Se&&/(MSIE|Trident\/|Edge\/)/.test(navigator.userAgent),st=Se&&/Firefox/.test(navigator.userAgent);function it(e){const{target:t}=e;ot?requestAnimationFrame(()=>t.select()):t.select()}function ut(e){if(document.readyState==="complete")return;function t(){l.updateInputWidth(e)}window.addEventListener("load",t)}function at(e){if(!document.fonts)return;const t=l.getFontShorthand(e);if(!t||document.fonts.check(t))return;function i(){l.updateInputWidth(e)}document.fonts.addEventListener("loadingdone",i)}function ct(e){if(e&&"selectionStart"in e&&e.selectionStart!==null&&"selectionEnd"in e&&e.selectionEnd!==null)return e.value.slice(e.selectionStart,e.selectionEnd);if("getSelection"in window){const t=window.getSelection();return t?.toString()}return null}function lt(e){if(e!==null)return function(n){if(st)return;const{key:i,target:s}=n,{value:u}=s,a=i.length===1&&/\d/.test(i),c=ct(s);(!a||!(c||u.length<e))&&n.preventDefault()}}function ve({ariaLabel:e,autoFocus:t,className:n,disabled:i,inputRef:s,max:u,min:a,name:c,nameForClass:d,onChange:h,onKeyDown:v,onKeyUp:x,placeholder:j="--",required:y,showLeadingZeros:w,step:M,value:b}){rt(()=>{!s||!s.current||(l.updateInputWidth(s.current),ut(s.current),at(s.current))},[s,b]);const H=w&&b&&Number(b)<10&&(b==="0"||!b.toString().startsWith("0")),$=u?u.toString().length:null;return o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[H?o.jsxRuntimeExports.jsx("span",{className:`${n}__leadingZero`,children:"0"}):null,o.jsxRuntimeExports.jsx("input",{"aria-label":e,autoComplete:"off",autoFocus:t,className:pe(`${n}__input`,`${n}__${d||c}`,H&&`${n}__input--hasLeadingZero`),"data-input":"true",disabled:i,inputMode:"numeric",max:u,min:a,name:c,onChange:h,onFocus:it,onKeyDown:v,onKeyPress:lt($),onKeyUp:C=>{l.updateInputWidth(C.target),x&&x(C)},placeholder:j,ref:s,required:y,step:M,type:"number",value:b!==null?b:""})]})}function dt({amPm:e,maxTime:t,minTime:n,value:i,...s}){const u=be(12,t&&(()=>{const[d,h]=ce(l.getHours(t));return h!==e?null:d})()),a=ke(1,n&&(()=>{const[d,h]=ce(l.getHours(n));return h!==e||d===12?null:d})()),c=i?ce(i)[0].toString():"";return o.jsxRuntimeExports.jsx(ve,{max:u,min:a,name:"hour12",nameForClass:"hour",value:c,...s})}function mt({maxTime:e,minTime:t,...n}){const i=be(23,e&&l.getHours(e)),s=ke(0,t&&l.getHours(t));return o.jsxRuntimeExports.jsx(ve,{max:i,min:s,name:"hour24",nameForClass:"hour",...n})}function pt({hour:e,maxTime:t,minTime:n,showLeadingZeros:i=!0,...s}){function u(d){return e===l.getHours(d).toString()}const a=be(59,t&&u(t)&&l.getMinutes(t)),c=ke(0,n&&u(n)&&l.getMinutes(n));return o.jsxRuntimeExports.jsx(ve,{max:a,min:c,name:"minute",showLeadingZeros:i,...s})}function ft({ariaLabel:e,disabled:t,maxTime:n,minTime:i,name:s,onChange:u,required:a,value:c,valueType:d}){const h=(()=>{switch(d){case"hour":return j=>`${l.getHours(j)}:00`;case"minute":return l.getHoursMinutes;case"second":return l.getHoursMinutesSeconds;default:throw new Error("Invalid valueType")}})(),v=(()=>{switch(d){case"hour":return 3600;case"minute":return 60;case"second":return 1;default:throw new Error("Invalid valueType")}})();function x(j){j.stopPropagation()}return o.jsxRuntimeExports.jsx("input",{"aria-label":e,disabled:t,hidden:!0,max:n?h(n):void 0,min:i?h(i):void 0,name:s,onChange:u,onFocus:x,required:a,step:v,style:{visibility:"hidden",position:"absolute",zIndex:"-999"},type:"time",value:c?h(c):""})}function ht({hour:e,maxTime:t,minTime:n,minute:i,showLeadingZeros:s=!0,...u}){function a(h){return e===l.getHours(h).toString()&&i===l.getMinutes(h).toString()}const c=be(59,t&&a(t)&&l.getSeconds(t)),d=ke(0,n&&a(n)&&l.getSeconds(n));return o.jsxRuntimeExports.jsx(ve,{max:c,min:d,name:"second",showLeadingZeros:s,...u})}const Pe={},gt=["hour","minute","second"];function xt(e){return e.dataset.input==="true"}function $e(e,t){let n=e;do n=n[t];while(n&&!xt(n));return n}function Ne(e){e&&e.focus()}function bt(e,t,n){const i=[],s=new RegExp(Object.keys(t).map(a=>`${a}+`).join("|"),"g"),u=e.match(s);return e.split(s).reduce((a,c,d)=>{const h=c&&o.jsxRuntimeExports.jsx(Ye,{children:c},`separator_${d}`);a.push(h);const v=u?.[d];if(v){const x=t[v]||t[Object.keys(t).find(j=>v.match(j))];if(!x)return a;!n&&i.includes(x)?a.push(v):(a.push(x(v,d)),i.push(x))}return a},[])}const xe=et({useGrouping:!1});function kt({amPmAriaLabel:e,autoFocus:t,className:n,disabled:i,format:s,hourAriaLabel:u,hourPlaceholder:a,isClockOpen:c=null,locale:d,maxDetail:h="minute",maxTime:v,minTime:x,minuteAriaLabel:j,minutePlaceholder:y,name:w="time",nativeInputAriaLabel:M,onChange:b,onInvalidChange:H,required:$,secondAriaLabel:C,secondPlaceholder:A,value:T}){const[J,K]=p.useState(null),[O,F]=p.useState(null),[G,q]=p.useState(null),[Q,X]=p.useState(null),[re,Y]=p.useState(null),z=p.useRef(null),oe=p.useRef(null),se=p.useRef(null),V=p.useRef(null),ee=p.useRef(null),[U,L]=p.useState(c),W=p.useRef(void 0);p.useEffect(()=>{L(c)},[c]),p.useEffect(()=>{const r=T;r?(K(ce(l.getHours(r))[1]),F(l.getHours(r).toString()),q(l.getMinutes(r).toString()),X(l.getSeconds(r).toString()),Y(r)):(K(null),F(null),q(null),X(null),Y(null))},[T,x,v,h,U]);const k=h,ie=(()=>{const r=gt.indexOf(h),m=Pe[r]||(()=>{const f={hour:"numeric"};return r>=1&&(f.minute="numeric"),r>=2&&(f.second="numeric"),Pe[r]=f,f})();return Ae(m)})();function ue(r){return(()=>{switch(k){case"hour":case"minute":return l.getHoursMinutes;case"second":return l.getHoursMinutesSeconds;default:throw new Error("Invalid valueType")}})()(r)}const P=s||(()=>{const Ee=new Date(2017,0,1,21,13,14);return ie(d,Ee).replace(xe(d,9),"h").replace(xe(d,21),"H").replace(xe(d,13),"mm").replace(xe(d,14),"ss").replace(new RegExp(Oe(d).join("|")),"a")})(),le=(()=>{const r=P.match(/[^0-9a-z]/i);return r?r[0]:null})();function ae(r){if(r.target===r.currentTarget){const m=r.target.children[1];Ne(m)}}function de(r){switch(W.current=r.key,r.key){case"ArrowLeft":case"ArrowRight":case le:{r.preventDefault();const{target:m}=r,f=r.key==="ArrowLeft"?"previousElementSibling":"nextElementSibling",I=$e(m,f);Ne(I);break}}}function te(r){const{key:m,target:f}=r;if(!(W.current===m)||!!Number.isNaN(Number(m)))return;const me=f.getAttribute("max");if(!me)return;const{value:ge}=f;if(Number(ge)*10>Number(me)||ge.length>=me.length){const we=$e(f,"nextElementSibling");Ne(we)}}function E(){if(!b)return;function r(R){return!!R}const m=[z.current,oe.current,se.current,V.current,ee.current].filter(r),f=m.slice(1),I={};for(const R of m)I[R.name]=R.type==="number"?R.valueAsNumber:R.value;if(f.every(R=>!R.value)){b(null,!1);return}const me=m.every(R=>R.value),ge=m.every(R=>R.validity.valid);if(me&&ge){const R=Number(I.hour24||I.hour12&&I.amPm&&Ie(I.hour12,I.amPm)||0),we=Number(I.minute||0),qe=Number(I.second||0),ye=Ze=>`0${Ze}`.slice(-2),ze=`${ye(R)}:${ye(we)}:${ye(qe)}`,Ve=ue(ze);b(Ve,!1);return}H&&H()}function _(r){const{name:m,value:f}=r.target;switch(m){case"amPm":K(f);break;case"hour12":F(f?Ie(f,J||"am").toString():"");break;case"hour24":F(f);break;case"minute":q(f);break;case"second":X(f);break}E()}function ne(r){const{value:m}=r.target;if(!b)return;b(m||null,!1)}const Z={className:n,disabled:i,maxTime:v,minTime:x,onChange:_,onKeyDown:de,onKeyUp:te,required:!!($||U)};function _e(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(dt,{...Z,amPm:J,ariaLabel:u,autoFocus:m===0&&t,inputRef:oe,placeholder:a,showLeadingZeros:f,value:O},"hour12")}function je(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(mt,{...Z,ariaLabel:u,autoFocus:m===0&&t,inputRef:se,placeholder:a,showLeadingZeros:f,value:O},"hour24")}function fe(r,m){return/h/.test(r)?_e(r,m):je(r,m)}function g(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(pt,{...Z,ariaLabel:j,autoFocus:m===0&&t,hour:O,inputRef:V,placeholder:y,showLeadingZeros:f,value:G},"minute")}function N(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!0;return o.jsxRuntimeExports.jsx(ht,{...Z,ariaLabel:C,autoFocus:m===0&&t,hour:O,inputRef:ee,minute:G,placeholder:A,showLeadingZeros:f,value:Q},"second")}function D(r,m){return o.jsxRuntimeExports.jsx(nt,{...Z,ariaLabel:e,autoFocus:m===0&&t,inputRef:z,locale:d,onChange:_,value:J},"ampm")}function B(){return bt(P,{h:fe,H:fe,m:g,s:N,a:D},typeof s<"u")}function he(){return o.jsxRuntimeExports.jsx(ft,{ariaLabel:M,disabled:i,maxTime:v,minTime:x,name:w,onChange:ne,required:$,value:re,valueType:k},"time")}return o.jsxRuntimeExports.jsxs("div",{className:n,onClick:ae,children:[he(),B()]})}const S="react-time-picker",vt=["mousedown","focusin","touchstart"],De={xmlns:"http://www.w3.org/2000/svg",width:19,height:19,viewBox:"0 0 19 19",stroke:"black",strokeWidth:2},_t=o.jsxRuntimeExports.jsxs("svg",{...De,"aria-hidden":"true",className:`${S}__clock-button__icon ${S}__button__icon`,fill:"none",children:[o.jsxRuntimeExports.jsx("circle",{cx:"9.5",cy:"9.5",r:"7.5"}),o.jsxRuntimeExports.jsx("path",{d:"M9.5 4.5 v5 h4"})]}),jt=o.jsxRuntimeExports.jsxs("svg",{...De,"aria-hidden":"true",className:`${S}__clear-button__icon ${S}__button__icon`,children:[o.jsxRuntimeExports.jsx("line",{x1:"4",x2:"15",y1:"4",y2:"15"}),o.jsxRuntimeExports.jsx("line",{x1:"15",x2:"4",y1:"4",y2:"15"})]});function Et(e){const{amPmAriaLabel:t,autoFocus:n,className:i,clearAriaLabel:s,clearIcon:u=jt,clockAriaLabel:a,clockIcon:c=_t,closeClock:d=!0,"data-testid":h,hourAriaLabel:v,hourPlaceholder:x,disableClock:j,disabled:y,format:w,id:M,isOpen:b=null,locale:H,maxTime:$,maxDetail:C="minute",minTime:A,minuteAriaLabel:T,minutePlaceholder:J,name:K="time",nativeInputAriaLabel:O,onClockClose:F,onClockOpen:G,onChange:q,onFocus:Q,onInvalidChange:X,openClockOnFocus:re=!0,required:Y,value:z,secondAriaLabel:oe,secondPlaceholder:se,shouldCloseClock:V,shouldOpenClock:ee,...U}=e,[L,W]=p.useState(b),k=p.useRef(null),ie=p.useRef(null);p.useEffect(()=>{W(b)},[b]);function ue({reason:g}){ee&&!ee({reason:g})||(W(!0),G&&G())}const P=p.useCallback(({reason:g})=>{V&&!V({reason:g})||(W(!1),F&&F())},[F,V]);function le(){L?P({reason:"buttonClick"}):ue({reason:"buttonClick"})}function ae(g,N=d){N&&P({reason:"select"}),q&&q(g)}function de(g){Q&&Q(g),!(y||L||!re||g.target.dataset.select==="true")&&ue({reason:"focus"})}const te=p.useCallback(g=>{g.key==="Escape"&&P({reason:"escape"})},[P]);function E(){ae(null)}function _(g){g.stopPropagation()}const ne=p.useCallback(g=>{const{current:N}=k,{current:D}=ie,B="composedPath"in g?g.composedPath()[0]:g.target;B&&N&&!N.contains(B)&&(!D||!D.contains(B))&&P({reason:"outsideAction"})},[P]),Z=p.useCallback((g=L)=>{for(const N of vt)g?document.addEventListener(N,ne):document.removeEventListener(N,ne);g?document.addEventListener("keydown",te):document.removeEventListener("keydown",te)},[L,ne,te]);p.useEffect(()=>(Z(),()=>{Z(!1)}),[Z]);function _e(){const[g]=Array.isArray(z)?z:[z],N={amPmAriaLabel:t,hourAriaLabel:v,minuteAriaLabel:T,nativeInputAriaLabel:O,secondAriaLabel:oe},D={hourPlaceholder:x,minutePlaceholder:J,secondPlaceholder:se};return o.jsxRuntimeExports.jsxs("div",{className:`${S}__wrapper`,children:[o.jsxRuntimeExports.jsx(kt,{...N,...D,autoFocus:n,className:`${S}__inputGroup`,disabled:y,format:w,isClockOpen:L,locale:H,maxDetail:C,maxTime:$,minTime:A,name:K,onChange:ae,onInvalidChange:X,required:Y,value:g}),u!==null&&o.jsxRuntimeExports.jsx("button",{"aria-label":s,className:`${S}__clear-button ${S}__button`,disabled:y,onClick:E,onFocus:_,type:"button",children:typeof u=="function"?p.createElement(u):u}),c!==null&&!j&&o.jsxRuntimeExports.jsx("button",{"aria-expanded":L||!1,"aria-label":a,className:`${S}__clock-button ${S}__button`,disabled:y,onClick:le,onFocus:_,type:"button",children:typeof c=="function"?p.createElement(c):c})]})}function je(){if(L===null||j)return null;const{clockProps:g,portalContainer:N,value:D}=e,B=`${S}__clock`,he=pe(B,`${B}--${L?"open":"closed"}`),[r]=Array.isArray(D)?D:[D],m=o.jsxRuntimeExports.jsx(Xe,{locale:H,value:r,...g});return N?Ke.createPortal(o.jsxRuntimeExports.jsx("div",{ref:ie,className:he,children:m}),N):o.jsxRuntimeExports.jsx(l.Fit,{children:o.jsxRuntimeExports.jsx("div",{ref:f=>{f&&!L&&f.removeAttribute("style")},className:he,children:m})})}const fe=p.useMemo(()=>l.makeEventProps(U),[U]);return o.jsxRuntimeExports.jsxs("div",{className:pe(S,`${S}--${L?"open":"closed"}`,`${S}--${y?"disabled":"enabled"}`,i),"data-testid":h,id:M,...fe,onFocus:de,ref:k,children:[_e(),je()]})}const wt=l.dt.div`
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../chunks/jsx-runtime-DZW6kfQG.js"),p=require("react"),Ke=require("react-dom"),pe=require("clsx"),l=require("../chunks/styled-components.browser.esm-CDXyhBVL.js"),Ge=require("../chunks/utils-IjLH3w2e.js");require("../chunks/textarea-99dejq_o.js");const Ue=require("../chunks/label-error-wbavGDVw.js");require("../chunks/button-CGIs6rx_.js");function Le(e){var t=e.angle,n=t===void 0?0:t,i=e.name,s=e.length,u=s===void 0?100:s,a=e.oppositeLength,c=a===void 0?10:a,d=e.width,h=d===void 0?1:d;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__hand react-clock__".concat(i,"-hand"),style:{transform:"rotate(".concat(n,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__hand__body react-clock__".concat(i,"-hand__body"),style:{width:"".concat(h,"px"),top:"".concat(50-u/2,"%"),bottom:"".concat(50-c/2,"%")}})})}var Ce=p.memo(function(t){var n=t.angle,i=n===void 0?0:n,s=t.length,u=s===void 0?10:s,a=t.name,c=t.width,d=c===void 0?1:c;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark react-clock__".concat(a,"-mark"),style:{transform:"rotate(".concat(i,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark__body react-clock__".concat(a,"-mark__body"),style:{width:"".concat(d,"px"),top:0,bottom:"".concat(100-u/2,"%")}})})}),Be=p.memo(function(t){var n=t.angle,i=n===void 0?0:n,s=t.length,u=s===void 0?10:s,a=t.name,c=t.number;return o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark react-clock__".concat(a,"-mark"),style:{transform:"rotate(".concat(i,"deg)")},children:o.jsxRuntimeExports.jsx("div",{className:"react-clock__mark__number",style:{transform:"rotate(-".concat(i,"deg)"),top:"".concat(u/2,"%")},children:c})})});function Te(e,t){return t.toLocaleString(e||l.getUserLocale()||void 0)}function Je(e){return e!==null&&e!==!1&&!Number.isNaN(Number(e))}function Qe(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Math.max.apply(Math,e.filter(Je))}function Xe(e){var t=e.className,n=e.formatHour,i=n===void 0?Te:n,s=e.hourHandLength,u=s===void 0?50:s,a=e.hourHandOppositeLength,c=e.hourHandWidth,d=c===void 0?4:c,h=e.hourMarksLength,v=h===void 0?10:h,x=e.hourMarksWidth,j=x===void 0?3:x,y=e.locale,w=e.minuteHandLength,M=w===void 0?70:w,b=e.minuteHandOppositeLength,H=e.minuteHandWidth,$=H===void 0?2:H,C=e.minuteMarksLength,A=C===void 0?6:C,T=e.minuteMarksWidth,J=T===void 0?1:T,K=e.renderHourMarks,O=K===void 0?!0:K,F=e.renderMinuteHand,G=F===void 0?!0:F,q=e.renderMinuteMarks,Q=q===void 0?!0:q,X=e.renderNumbers,re=e.renderSecondHand,Y=re===void 0?!0:re,z=e.secondHandLength,oe=z===void 0?90:z,se=e.secondHandOppositeLength,V=e.secondHandWidth,ee=V===void 0?1:V,U=e.size,L=U===void 0?150:U,W=e.useMillisecondPrecision,k=e.value;function ie(){if(!Q)return null;for(var E=[],_=1;_<=60;_+=1){var ne=O&&!(_%5);ne||E.push(o.jsxRuntimeExports.jsx(Ce,{angle:_*6,length:A,name:"minute",width:J},"minute_".concat(_)))}return E}function ue(){if(!O)return null;for(var E=[],_=1;_<=12;_+=1)E.push(o.jsxRuntimeExports.jsx(Ce,{angle:_*30,length:v,name:"hour",width:j},"hour_".concat(_)));return E}function P(){if(!X)return null;for(var E=[],_=1;_<=12;_+=1)E.push(o.jsxRuntimeExports.jsx(Be,{angle:_*30,length:Qe(O&&v,Q&&A,0),name:"number",number:i(y,_)},"number_".concat(_)));return E}function le(){return o.jsxRuntimeExports.jsxs("div",{className:"react-clock__face",children:[ie(),ue(),P()]})}function ae(){var E=k?l.getHours(k)*30+l.getMinutes(k)/2+l.getSeconds(k)/120+(W?l.getMilliseconds(k)/12e4:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:u,name:"hour",oppositeLength:a,width:d})}function de(){if(!G)return null;var E=k?l.getHours(k)*360+l.getMinutes(k)*6+l.getSeconds(k)/10+(W?l.getMilliseconds(k)/1e4:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:M,name:"minute",oppositeLength:b,width:$})}function te(){if(!Y)return null;var E=k?l.getMinutes(k)*360+l.getSeconds(k)*6+(W?l.getMilliseconds(k)*.006:0):0;return o.jsxRuntimeExports.jsx(Le,{angle:E,length:oe,name:"second",oppositeLength:se,width:ee})}return o.jsxRuntimeExports.jsxs("time",{className:pe("react-clock",t),dateTime:k instanceof Date?k.toLocaleTimeString("en",{hourCycle:"h23",hour:"2-digit",minute:G?"2-digit":void 0,second:Y?"2-digit":void 0}):k||void 0,style:{width:L,height:L},children:[le(),ae(),de(),te()]})}function Ye({children:e}){return o.jsxRuntimeExports.jsx("span",{className:"react-time-picker__inputGroup__divider",children:e})}function Ie(e,t){let n=Number(e);return t==="am"&&n===12?n=0:t==="pm"&&n<12&&(n+=12),n}function ce(e){return[Number(e)%12||12,Number(e)<12?"am":"pm"]}const Re=new Map;function Ae(e){return function(n,i){const s=n||l.getUserLocale();Re.has(s)||Re.set(s,new Map);const u=Re.get(s);return u.has(e)||u.set(e,new Intl.DateTimeFormat(s||void 0,e).format),u.get(e)(i)}}const He=new Map;function et(e){return(t,n)=>{const i=t||l.getUserLocale();He.has(i)||He.set(i,new Map);const s=He.get(i);return s.has(e)||s.set(e,new Intl.NumberFormat(i||void 0,e).format),s.get(e)(n)}}const tt=["9","٩"],Me=new RegExp(`[${tt.join("")}]`),Fe=Ae({hour:"numeric"});function Oe(e){const t=Fe(e,new Date(2017,0,1,9)),n=Fe(e,new Date(2017,0,1,21)),[i,s]=t.split(Me),[u,a]=n.split(Me);if(a!==void 0){if(i!==u)return[i,u].map(c=>c.trim());if(s!==a)return[s,a].map(c=>c.trim())}return["AM","PM"]}function We(e){return e!==null&&e!==!1&&!Number.isNaN(Number(e))}function be(...e){return Math.min(...e.filter(We))}function ke(...e){return Math.max(...e.filter(We))}function nt({ariaLabel:e,autoFocus:t,className:n,disabled:i,inputRef:s,locale:u,maxTime:a,minTime:c,onChange:d,onKeyDown:h,required:v,value:x}){const j=c?ce(l.getHours(c))[1]==="pm":!1,y=a?ce(l.getHours(a))[1]==="am":!1,w="amPm",[M,b]=Oe(u);return o.jsxRuntimeExports.jsxs("select",{"aria-label":e,autoFocus:t,className:pe(`${n}__input`,`${n}__${w}`),"data-input":"true","data-select":"true",disabled:i,name:w,onChange:d,onKeyDown:h,ref:s,required:v,value:x!==null?x:"",children:[!x&&o.jsxRuntimeExports.jsx("option",{value:"",children:"--"}),o.jsxRuntimeExports.jsx("option",{disabled:j,value:"am",children:M}),o.jsxRuntimeExports.jsx("option",{disabled:y,value:"pm",children:b})]})}const Se=typeof window<"u",rt=Se?p.useLayoutEffect:p.useEffect,ot=Se&&/(MSIE|Trident\/|Edge\/)/.test(navigator.userAgent),st=Se&&/Firefox/.test(navigator.userAgent);function it(e){const{target:t}=e;ot?requestAnimationFrame(()=>t.select()):t.select()}function ut(e){if(document.readyState==="complete")return;function t(){l.updateInputWidth(e)}window.addEventListener("load",t)}function at(e){if(!document.fonts)return;const t=l.getFontShorthand(e);if(!t||document.fonts.check(t))return;function i(){l.updateInputWidth(e)}document.fonts.addEventListener("loadingdone",i)}function ct(e){if(e&&"selectionStart"in e&&e.selectionStart!==null&&"selectionEnd"in e&&e.selectionEnd!==null)return e.value.slice(e.selectionStart,e.selectionEnd);if("getSelection"in window){const t=window.getSelection();return t?.toString()}return null}function lt(e){if(e!==null)return function(n){if(st)return;const{key:i,target:s}=n,{value:u}=s,a=i.length===1&&/\d/.test(i),c=ct(s);(!a||!(c||u.length<e))&&n.preventDefault()}}function ve({ariaLabel:e,autoFocus:t,className:n,disabled:i,inputRef:s,max:u,min:a,name:c,nameForClass:d,onChange:h,onKeyDown:v,onKeyUp:x,placeholder:j="--",required:y,showLeadingZeros:w,step:M,value:b}){rt(()=>{!s||!s.current||(l.updateInputWidth(s.current),ut(s.current),at(s.current))},[s,b]);const H=w&&b&&Number(b)<10&&(b==="0"||!b.toString().startsWith("0")),$=u?u.toString().length:null;return o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[H?o.jsxRuntimeExports.jsx("span",{className:`${n}__leadingZero`,children:"0"}):null,o.jsxRuntimeExports.jsx("input",{"aria-label":e,autoComplete:"off",autoFocus:t,className:pe(`${n}__input`,`${n}__${d||c}`,H&&`${n}__input--hasLeadingZero`),"data-input":"true",disabled:i,inputMode:"numeric",max:u,min:a,name:c,onChange:h,onFocus:it,onKeyDown:v,onKeyPress:lt($),onKeyUp:C=>{l.updateInputWidth(C.target),x&&x(C)},placeholder:j,ref:s,required:y,step:M,type:"number",value:b!==null?b:""})]})}function dt({amPm:e,maxTime:t,minTime:n,value:i,...s}){const u=be(12,t&&(()=>{const[d,h]=ce(l.getHours(t));return h!==e?null:d})()),a=ke(1,n&&(()=>{const[d,h]=ce(l.getHours(n));return h!==e||d===12?null:d})()),c=i?ce(i)[0].toString():"";return o.jsxRuntimeExports.jsx(ve,{max:u,min:a,name:"hour12",nameForClass:"hour",value:c,...s})}function mt({maxTime:e,minTime:t,...n}){const i=be(23,e&&l.getHours(e)),s=ke(0,t&&l.getHours(t));return o.jsxRuntimeExports.jsx(ve,{max:i,min:s,name:"hour24",nameForClass:"hour",...n})}function pt({hour:e,maxTime:t,minTime:n,showLeadingZeros:i=!0,...s}){function u(d){return e===l.getHours(d).toString()}const a=be(59,t&&u(t)&&l.getMinutes(t)),c=ke(0,n&&u(n)&&l.getMinutes(n));return o.jsxRuntimeExports.jsx(ve,{max:a,min:c,name:"minute",showLeadingZeros:i,...s})}function ft({ariaLabel:e,disabled:t,maxTime:n,minTime:i,name:s,onChange:u,required:a,value:c,valueType:d}){const h=(()=>{switch(d){case"hour":return j=>`${l.getHours(j)}:00`;case"minute":return l.getHoursMinutes;case"second":return l.getHoursMinutesSeconds;default:throw new Error("Invalid valueType")}})(),v=(()=>{switch(d){case"hour":return 3600;case"minute":return 60;case"second":return 1;default:throw new Error("Invalid valueType")}})();function x(j){j.stopPropagation()}return o.jsxRuntimeExports.jsx("input",{"aria-label":e,disabled:t,hidden:!0,max:n?h(n):void 0,min:i?h(i):void 0,name:s,onChange:u,onFocus:x,required:a,step:v,style:{visibility:"hidden",position:"absolute",zIndex:"-999"},type:"time",value:c?h(c):""})}function ht({hour:e,maxTime:t,minTime:n,minute:i,showLeadingZeros:s=!0,...u}){function a(h){return e===l.getHours(h).toString()&&i===l.getMinutes(h).toString()}const c=be(59,t&&a(t)&&l.getSeconds(t)),d=ke(0,n&&a(n)&&l.getSeconds(n));return o.jsxRuntimeExports.jsx(ve,{max:c,min:d,name:"second",showLeadingZeros:s,...u})}const Pe={},gt=["hour","minute","second"];function xt(e){return e.dataset.input==="true"}function $e(e,t){let n=e;do n=n[t];while(n&&!xt(n));return n}function Ne(e){e&&e.focus()}function bt(e,t,n){const i=[],s=new RegExp(Object.keys(t).map(a=>`${a}+`).join("|"),"g"),u=e.match(s);return e.split(s).reduce((a,c,d)=>{const h=c&&o.jsxRuntimeExports.jsx(Ye,{children:c},`separator_${d}`);a.push(h);const v=u?.[d];if(v){const x=t[v]||t[Object.keys(t).find(j=>v.match(j))];if(!x)return a;!n&&i.includes(x)?a.push(v):(a.push(x(v,d)),i.push(x))}return a},[])}const xe=et({useGrouping:!1});function kt({amPmAriaLabel:e,autoFocus:t,className:n,disabled:i,format:s,hourAriaLabel:u,hourPlaceholder:a,isClockOpen:c=null,locale:d,maxDetail:h="minute",maxTime:v,minTime:x,minuteAriaLabel:j,minutePlaceholder:y,name:w="time",nativeInputAriaLabel:M,onChange:b,onInvalidChange:H,required:$,secondAriaLabel:C,secondPlaceholder:A,value:T}){const[J,K]=p.useState(null),[O,F]=p.useState(null),[G,q]=p.useState(null),[Q,X]=p.useState(null),[re,Y]=p.useState(null),z=p.useRef(null),oe=p.useRef(null),se=p.useRef(null),V=p.useRef(null),ee=p.useRef(null),[U,L]=p.useState(c),W=p.useRef(void 0);p.useEffect(()=>{L(c)},[c]),p.useEffect(()=>{const r=T;r?(K(ce(l.getHours(r))[1]),F(l.getHours(r).toString()),q(l.getMinutes(r).toString()),X(l.getSeconds(r).toString()),Y(r)):(K(null),F(null),q(null),X(null),Y(null))},[T,x,v,h,U]);const k=h,ie=(()=>{const r=gt.indexOf(h),m=Pe[r]||(()=>{const f={hour:"numeric"};return r>=1&&(f.minute="numeric"),r>=2&&(f.second="numeric"),Pe[r]=f,f})();return Ae(m)})();function ue(r){return(()=>{switch(k){case"hour":case"minute":return l.getHoursMinutes;case"second":return l.getHoursMinutesSeconds;default:throw new Error("Invalid valueType")}})()(r)}const P=s||(()=>{const Ee=new Date(2017,0,1,21,13,14);return ie(d,Ee).replace(xe(d,9),"h").replace(xe(d,21),"H").replace(xe(d,13),"mm").replace(xe(d,14),"ss").replace(new RegExp(Oe(d).join("|")),"a")})(),le=(()=>{const r=P.match(/[^0-9a-z]/i);return r?r[0]:null})();function ae(r){if(r.target===r.currentTarget){const m=r.target.children[1];Ne(m)}}function de(r){switch(W.current=r.key,r.key){case"ArrowLeft":case"ArrowRight":case le:{r.preventDefault();const{target:m}=r,f=r.key==="ArrowLeft"?"previousElementSibling":"nextElementSibling",I=$e(m,f);Ne(I);break}}}function te(r){const{key:m,target:f}=r;if(!(W.current===m)||!!Number.isNaN(Number(m)))return;const me=f.getAttribute("max");if(!me)return;const{value:ge}=f;if(Number(ge)*10>Number(me)||ge.length>=me.length){const we=$e(f,"nextElementSibling");Ne(we)}}function E(){if(!b)return;function r(R){return!!R}const m=[z.current,oe.current,se.current,V.current,ee.current].filter(r),f=m.slice(1),I={};for(const R of m)I[R.name]=R.type==="number"?R.valueAsNumber:R.value;if(f.every(R=>!R.value)){b(null,!1);return}const me=m.every(R=>R.value),ge=m.every(R=>R.validity.valid);if(me&&ge){const R=Number(I.hour24||I.hour12&&I.amPm&&Ie(I.hour12,I.amPm)||0),we=Number(I.minute||0),qe=Number(I.second||0),ye=Ze=>`0${Ze}`.slice(-2),ze=`${ye(R)}:${ye(we)}:${ye(qe)}`,Ve=ue(ze);b(Ve,!1);return}H&&H()}function _(r){const{name:m,value:f}=r.target;switch(m){case"amPm":K(f);break;case"hour12":F(f?Ie(f,J||"am").toString():"");break;case"hour24":F(f);break;case"minute":q(f);break;case"second":X(f);break}E()}function ne(r){const{value:m}=r.target;if(!b)return;b(m||null,!1)}const Z={className:n,disabled:i,maxTime:v,minTime:x,onChange:_,onKeyDown:de,onKeyUp:te,required:!!($||U)};function _e(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(dt,{...Z,amPm:J,ariaLabel:u,autoFocus:m===0&&t,inputRef:oe,placeholder:a,showLeadingZeros:f,value:O},"hour12")}function je(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(mt,{...Z,ariaLabel:u,autoFocus:m===0&&t,inputRef:se,placeholder:a,showLeadingZeros:f,value:O},"hour24")}function fe(r,m){return/h/.test(r)?_e(r,m):je(r,m)}function g(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!1;return o.jsxRuntimeExports.jsx(pt,{...Z,ariaLabel:j,autoFocus:m===0&&t,hour:O,inputRef:V,placeholder:y,showLeadingZeros:f,value:G},"minute")}function N(r,m){if(r&&r.length>2)throw new Error(`Unsupported token: ${r}`);const f=r?r.length===2:!0;return o.jsxRuntimeExports.jsx(ht,{...Z,ariaLabel:C,autoFocus:m===0&&t,hour:O,inputRef:ee,minute:G,placeholder:A,showLeadingZeros:f,value:Q},"second")}function D(r,m){return o.jsxRuntimeExports.jsx(nt,{...Z,ariaLabel:e,autoFocus:m===0&&t,inputRef:z,locale:d,onChange:_,value:J},"ampm")}function B(){return bt(P,{h:fe,H:fe,m:g,s:N,a:D},typeof s<"u")}function he(){return o.jsxRuntimeExports.jsx(ft,{ariaLabel:M,disabled:i,maxTime:v,minTime:x,name:w,onChange:ne,required:$,value:re,valueType:k},"time")}return o.jsxRuntimeExports.jsxs("div",{className:n,onClick:ae,children:[he(),B()]})}const S="react-time-picker",vt=["mousedown","focusin","touchstart"],De={xmlns:"http://www.w3.org/2000/svg",width:19,height:19,viewBox:"0 0 19 19",stroke:"black",strokeWidth:2},_t=o.jsxRuntimeExports.jsxs("svg",{...De,"aria-hidden":"true",className:`${S}__clock-button__icon ${S}__button__icon`,fill:"none",children:[o.jsxRuntimeExports.jsx("circle",{cx:"9.5",cy:"9.5",r:"7.5"}),o.jsxRuntimeExports.jsx("path",{d:"M9.5 4.5 v5 h4"})]}),jt=o.jsxRuntimeExports.jsxs("svg",{...De,"aria-hidden":"true",className:`${S}__clear-button__icon ${S}__button__icon`,children:[o.jsxRuntimeExports.jsx("line",{x1:"4",x2:"15",y1:"4",y2:"15"}),o.jsxRuntimeExports.jsx("line",{x1:"15",x2:"4",y1:"4",y2:"15"})]});function Et(e){const{amPmAriaLabel:t,autoFocus:n,className:i,clearAriaLabel:s,clearIcon:u=jt,clockAriaLabel:a,clockIcon:c=_t,closeClock:d=!0,"data-testid":h,hourAriaLabel:v,hourPlaceholder:x,disableClock:j,disabled:y,format:w,id:M,isOpen:b=null,locale:H,maxTime:$,maxDetail:C="minute",minTime:A,minuteAriaLabel:T,minutePlaceholder:J,name:K="time",nativeInputAriaLabel:O,onClockClose:F,onClockOpen:G,onChange:q,onFocus:Q,onInvalidChange:X,openClockOnFocus:re=!0,required:Y,value:z,secondAriaLabel:oe,secondPlaceholder:se,shouldCloseClock:V,shouldOpenClock:ee,...U}=e,[L,W]=p.useState(b),k=p.useRef(null),ie=p.useRef(null);p.useEffect(()=>{W(b)},[b]);function ue({reason:g}){ee&&!ee({reason:g})||(W(!0),G&&G())}const P=p.useCallback(({reason:g})=>{V&&!V({reason:g})||(W(!1),F&&F())},[F,V]);function le(){L?P({reason:"buttonClick"}):ue({reason:"buttonClick"})}function ae(g,N=d){N&&P({reason:"select"}),q&&q(g)}function de(g){Q&&Q(g),!(y||L||!re||g.target.dataset.select==="true")&&ue({reason:"focus"})}const te=p.useCallback(g=>{g.key==="Escape"&&P({reason:"escape"})},[P]);function E(){ae(null)}function _(g){g.stopPropagation()}const ne=p.useCallback(g=>{const{current:N}=k,{current:D}=ie,B="composedPath"in g?g.composedPath()[0]:g.target;B&&N&&!N.contains(B)&&(!D||!D.contains(B))&&P({reason:"outsideAction"})},[P]),Z=p.useCallback((g=L)=>{for(const N of vt)g?document.addEventListener(N,ne):document.removeEventListener(N,ne);g?document.addEventListener("keydown",te):document.removeEventListener("keydown",te)},[L,ne,te]);p.useEffect(()=>(Z(),()=>{Z(!1)}),[Z]);function _e(){const[g]=Array.isArray(z)?z:[z],N={amPmAriaLabel:t,hourAriaLabel:v,minuteAriaLabel:T,nativeInputAriaLabel:O,secondAriaLabel:oe},D={hourPlaceholder:x,minutePlaceholder:J,secondPlaceholder:se};return o.jsxRuntimeExports.jsxs("div",{className:`${S}__wrapper`,children:[o.jsxRuntimeExports.jsx(kt,{...N,...D,autoFocus:n,className:`${S}__inputGroup`,disabled:y,format:w,isClockOpen:L,locale:H,maxDetail:C,maxTime:$,minTime:A,name:K,onChange:ae,onInvalidChange:X,required:Y,value:g}),u!==null&&o.jsxRuntimeExports.jsx("button",{"aria-label":s,className:`${S}__clear-button ${S}__button`,disabled:y,onClick:E,onFocus:_,type:"button",children:typeof u=="function"?p.createElement(u):u}),c!==null&&!j&&o.jsxRuntimeExports.jsx("button",{"aria-expanded":L||!1,"aria-label":a,className:`${S}__clock-button ${S}__button`,disabled:y,onClick:le,onFocus:_,type:"button",children:typeof c=="function"?p.createElement(c):c})]})}function je(){if(L===null||j)return null;const{clockProps:g,portalContainer:N,value:D}=e,B=`${S}__clock`,he=pe(B,`${B}--${L?"open":"closed"}`),[r]=Array.isArray(D)?D:[D],m=o.jsxRuntimeExports.jsx(Xe,{locale:H,value:r,...g});return N?Ke.createPortal(o.jsxRuntimeExports.jsx("div",{ref:ie,className:he,children:m}),N):o.jsxRuntimeExports.jsx(l.Fit,{children:o.jsxRuntimeExports.jsx("div",{ref:f=>{f&&!L&&f.removeAttribute("style")},className:he,children:m})})}const fe=p.useMemo(()=>l.makeEventProps(U),[U]);return o.jsxRuntimeExports.jsxs("div",{className:pe(S,`${S}--${L?"open":"closed"}`,`${S}--${y?"disabled":"enabled"}`,i),"data-testid":h,id:M,...fe,onFocus:de,ref:k,children:[_e(),je()]})}const wt=l.dt.div`
|
|
2
2
|
width: auto;
|
|
3
3
|
|
|
4
4
|
.react-time-picker {
|