@bigbinary/neeto-atoms 1.0.38 → 1.0.40
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/DatePicker-CnPsCG5l.js +634 -0
- package/dist/DatePicker-CnPsCG5l.js.map +1 -0
- package/dist/{TimePicker-BzlF3JWj.js → TimePicker-2hJ7E5zm.js} +11 -7
- package/dist/TimePicker-2hJ7E5zm.js.map +1 -0
- package/dist/{TimePickerPanel-CgEbjExH.js → TimePickerPanel-wPsuht-Q.js} +18 -7
- package/dist/TimePickerPanel-wPsuht-Q.js.map +1 -0
- package/dist/cjs/DatePicker-f0ohDdTp.js +640 -0
- package/dist/cjs/DatePicker-f0ohDdTp.js.map +1 -0
- package/dist/cjs/{TimePicker-Cwwa1DD8.js → TimePicker-D8O_x2Sj.js} +11 -7
- package/dist/cjs/TimePicker-D8O_x2Sj.js.map +1 -0
- package/dist/cjs/{TimePickerPanel-CAdLD7qW.js → TimePickerPanel-DxcH6uJN.js} +22 -6
- package/dist/cjs/TimePickerPanel-DxcH6uJN.js.map +1 -0
- package/dist/cjs/components/DatePicker.js +4 -3
- package/dist/cjs/components/DatePicker.js.map +1 -1
- package/dist/cjs/components/TimePicker.js +3 -2
- package/dist/cjs/components/TimePicker.js.map +1 -1
- package/dist/cjs/components/index.js +5 -4
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/index.js +12 -244
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/primitives/Calendar.js +8129 -10
- package/dist/cjs/primitives/Calendar.js.map +1 -1
- package/dist/cjs/primitives/index.js +1 -1
- package/dist/components/DatePicker/constants.d.ts +0 -1
- package/dist/components/DatePicker/types.d.ts +7 -5
- package/dist/components/DatePicker/utils.d.ts +16 -5
- package/dist/components/DatePicker.js +4 -3
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/TimePicker/types.d.ts +3 -3
- package/dist/components/TimePicker/utils.d.ts +12 -1
- package/dist/components/TimePicker.js +3 -2
- package/dist/components/TimePicker.js.map +1 -1
- package/dist/components/index.js +5 -4
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +9 -239
- package/dist/index.js.map +1 -1
- package/dist/primitives/Calendar.js +8112 -8
- package/dist/primitives/Calendar.js.map +1 -1
- package/dist/primitives/index.js +1 -1
- package/dist/stubs/dayjs.d.ts +2 -0
- package/dist/utils/timezone.d.ts +7 -0
- package/package.json +2 -1
- package/dist/Calendar-CjOBwDbx.js +0 -8134
- package/dist/Calendar-CjOBwDbx.js.map +0 -1
- package/dist/DatePicker-IrQUHqdL.js +0 -3233
- package/dist/DatePicker-IrQUHqdL.js.map +0 -1
- package/dist/TimePicker-BzlF3JWj.js.map +0 -1
- package/dist/TimePickerPanel-CgEbjExH.js.map +0 -1
- package/dist/cjs/Calendar-02KiUZTT.js +0 -8175
- package/dist/cjs/Calendar-02KiUZTT.js.map +0 -1
- package/dist/cjs/DatePicker-DdTclP8E.js +0 -3235
- package/dist/cjs/DatePicker-DdTclP8E.js.map +0 -1
- package/dist/cjs/TimePicker-Cwwa1DD8.js.map +0 -1
- package/dist/cjs/TimePickerPanel-CAdLD7qW.js.map +0 -1
- package/dist/utils/dayjs/index.d.ts +0 -4
- package/dist/utils/dayjs/timezonePlugin.d.ts +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker-f0ohDdTp.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calendar.js","../../src/components/DatePicker/constants.ts","../../src/components/DatePicker/utils.ts","../../src/components/DatePicker/TimezoneSelect.tsx","../../src/components/DatePicker/DatePickerFooter.tsx","../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n];\nconst Calendar = createLucideIcon(\"calendar\", __iconNode);\n\nexport { __iconNode, Calendar as default };\n//# sourceMappingURL=calendar.js.map\n","export const DEFAULT_DATE_FORMAT = \"dd/MM/yyyy\";\nexport const DEFAULT_TIME_FORMAT = \"HH:mm:ss\";\n\nexport const SIZE_CONFIG = {\n small: { trigger: \"h-7 text-xs\", icon: \"size-3.5\" },\n medium: { trigger: \"h-8 text-sm\", icon: \"size-4\" },\n large: { trigger: \"h-10 text-sm\", icon: \"size-4\" },\n} as const;\n","import type { Dayjs } from \"dayjs\";\nimport dayjs from \"@bigbinary/neeto-commons-frontend/utils/dayjs\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\n\n// neetocommons' dayjs wrapper accepts a format string at runtime (via ...args)\n// but its TypeScript signature doesn't declare it. This typed alias avoids `as any` casts.\nconst dayjsParse = dayjs as unknown as (input: string, format: string) => Dayjs;\n\nconst toNativeDate = (value: unknown): Date | null => {\n if (value == null) return null;\n if (value instanceof Date) return value;\n if (typeof (value as { toDate?: () => Date }).toDate === \"function\") {\n return (value as { toDate: () => Date }).toDate();\n }\n if (typeof value === \"string\") {\n const parsed = new Date(value);\n if (!isNaN(parsed.getTime())) return parsed;\n }\n\n return null;\n};\n\n/** Coerce a single or range value to native Date(s). */\nexport const coerceDateValue = (\n value: unknown,\n type: \"date\" | \"range\"\n): Date | [Date | null, Date | null] | null => {\n if (value == null) return null;\n if (type === \"range\" && Array.isArray(value)) {\n return [toNativeDate(value[0]), toNativeDate(value[1])];\n }\n\n return toNativeDate(value);\n};\n\n/**\n * Normalize format tokens to dayjs style (DD/MM/YYYY).\n * Handles date-fns lowercase tokens (dd/yyyy) → dayjs uppercase (DD/YYYY).\n * MM, HH, mm, ss are the same in both systems.\n */\nconst normalizeToDayjsFormat = (fmt: string): string =>\n fmt\n .replace(/\\byyyy\\b/g, \"YYYY\")\n .replace(/\\byy\\b/g, \"YY\")\n .replace(/\\bdd\\b/g, \"DD\")\n .replace(/\\bd\\b/g, \"D\");\n\n/**\n * Normalize format tokens to date-fns style (dd/MM/yyyy).\n * Used by the input mask which expects lowercase tokens.\n */\nconst normalizeToDateFnsFormat = (fmt: string): string =>\n fmt\n .replace(/YYYY/g, \"yyyy\")\n .replace(/YY/g, \"yy\")\n .replace(/DD/g, \"dd\")\n .replace(/\\bD\\b/g, \"d\");\n\n/**\n * Format a date using the timezone-aware dayjs wrapper.\n * Respects the configured timezone (set via dayjs.tz.setDefault).\n */\nexport const formatDate = (date: Date | null, formatStr: string): string => {\n if (!date) return \"\";\n\n try {\n return dayjs(date).format(normalizeToDayjsFormat(formatStr));\n } catch {\n return \"\";\n }\n};\n\nexport const parseDate = (str: string, formatStr: string): Date | null => {\n if (!str) return null;\n\n const dayjsFmt = normalizeToDayjsFormat(formatStr);\n const parsed = dayjsParse(str, dayjsFmt);\n if (parsed.isValid()) return parsed.toDate();\n\n const fallbackFormats = [\n \"DD/MM/YYYY\",\n \"MM/DD/YYYY\",\n \"YYYY-MM-DD\",\n \"DD-MM-YYYY\",\n \"DD/MM/YYYY HH:mm:ss\",\n \"DD/MM/YYYY HH:mm\",\n ];\n\n for (const fmt of fallbackFormats) {\n if (fmt === dayjsFmt) continue;\n\n const attempt = dayjsParse(str, fmt);\n if (attempt.isValid()) return attempt.toDate();\n }\n\n return null;\n};\n\nexport const applyTimeToDate = (date: Date, time: TimeValue): Date => {\n const result = new Date(date);\n result.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);\n\n return result;\n};\n\n/**\n * Reinterpret a native Date's local time values in the user's configured timezone.\n * Matches neetoUI's getTimezoneAppliedDateTime behavior.\n * No-op if no timezone is configured (user timezone === browser timezone).\n */\nexport const applyTimezone = (date: Date): Date => {\n const dateStr = dayjs(date).format(\"YYYY-MM-DD HH:mm:ss\");\n\n return dayjs(dateStr).toDate();\n};\n\nexport const toDayjs = (date: Date): Dayjs => dayjs(date);\n\n/**\n * Build the display format string, normalized to date-fns style (lowercase dd/yyyy)\n * for the input mask, which uses lowercase tokens in FORMAT_CHARS.\n */\nexport const getDisplayFormat = (\n dateFormat: string,\n timeFormat: string,\n showTime: boolean\n): string => {\n const fmt = showTime ? `${dateFormat} ${timeFormat}` : dateFormat;\n\n return normalizeToDateFnsFormat(fmt);\n};\n\nexport const isDatePartComplete = (\n part: string,\n maskEnabled: boolean,\n singleDateLen: number\n): boolean => (maskEnabled ? part.length >= singleDateLen : part.length > 0);\n\nexport const parseRangeText = (\n text: string,\n displayFormat: string,\n maskEnabled: boolean,\n singleDateLen: number\n): [Date, Date] | null => {\n const parts = text.split(\" - \");\n if (parts.length !== 2) return null;\n\n if (\n !isDatePartComplete(parts[0], maskEnabled, singleDateLen) ||\n !isDatePartComplete(parts[1], maskEnabled, singleDateLen)\n )\n return null;\n\n const from = parseDate(parts[0], displayFormat);\n const to = parseDate(parts[1], displayFormat);\n\n return from && to ? [from, to] : null;\n};\n","import React from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface TimezoneSelectProps {\n value?: string;\n onChange: (tz: string | undefined) => void;\n className?: string;\n}\n\nconst TIMEZONE_OPTIONS = [\n { label: \"Local\", value: \"\" },\n { label: \"UTC\", value: \"utc\" },\n] as const;\n\nconst TimezoneSelect: React.FC<TimezoneSelectProps> = ({\n value,\n onChange,\n className,\n}) => (\n <div className={cn(\"flex items-center gap-1.5 text-sm\", className)}>\n <span className=\"text-muted-foreground text-xs\">Timezone</span>\n <select\n value={value ?? \"\"}\n onChange={e => onChange(e.target.value || undefined)}\n className={cn(\n \"rounded-md border border-input bg-background px-2 py-0.5 text-xs\",\n \"focus:outline-none focus:ring-1 focus:ring-ring\"\n )}\n aria-label=\"Select timezone\"\n >\n {TIMEZONE_OPTIONS.map(opt => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n);\n\nTimezoneSelect.displayName = \"TimezoneSelect\";\n\nexport { TimezoneSelect };\n","import React from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { TimezoneSelect } from \"./TimezoneSelect\";\n\ninterface DatePickerFooterProps {\n showTime?: boolean;\n needConfirm?: boolean;\n timezone?: string;\n onTimezoneChange?: (tz: string | undefined) => void;\n onNow: () => void;\n onOk: () => void;\n className?: string;\n}\n\nconst DatePickerFooter: React.FC<DatePickerFooterProps> = ({\n showTime,\n needConfirm,\n timezone,\n onTimezoneChange,\n onNow,\n onOk,\n className,\n}) => {\n const showOkButton = showTime || needConfirm;\n\n return (\n <div\n className={cn(\n \"flex items-center border-t border-border px-3 py-2\",\n className\n )}\n >\n <Button variant=\"ghost\" size=\"sm\" onClick={onNow} className=\"text-xs\">\n Now\n </Button>\n <div className=\"flex-1\" />\n {onTimezoneChange && (\n <TimezoneSelect\n value={timezone}\n onChange={onTimezoneChange}\n className=\"me-2\"\n />\n )}\n {showOkButton && (\n <Button size=\"sm\" onClick={onOk} className=\"text-xs\">\n OK\n </Button>\n )}\n </div>\n );\n};\n\nDatePickerFooter.displayName = \"DatePickerFooter\";\n\nexport { DatePickerFooter };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { CalendarIcon, X } from \"lucide-react\";\nimport { Calendar } from \"src/primitives/Calendar\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport type { DatePickerProps } from \"./types\";\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_TIME_FORMAT,\n SIZE_CONFIG,\n} from \"./constants\";\nimport dayjs from \"@bigbinary/neeto-commons-frontend/utils/dayjs\";\n\nimport {\n applyTimeToDate,\n applyTimezone,\n coerceDateValue,\n formatDate,\n getDisplayFormat,\n isDatePartComplete,\n parseDate,\n parseRangeText,\n toDayjs,\n} from \"./utils\";\nimport {\n applyMask,\n buildMaskTemplate,\n buildRangeMaskTemplate,\n isFixedWidthFormat,\n} from \"src/utils/inputMask\";\nimport { DatePickerFooter } from \"./DatePickerFooter\";\nimport { TimePickerPanel } from \"../TimePicker/TimePickerPanel\";\nimport type { TimeValue } from \"../TimePicker/types\";\nimport { dateToTimeValue } from \"../TimePicker/utils\";\n\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n type = \"date\",\n dateFormat = DEFAULT_DATE_FORMAT,\n timeFormat = DEFAULT_TIME_FORMAT,\n showTime = false,\n timePickerFormat = \"24\",\n showSeconds = false,\n minDate,\n maxDate,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n disabled = false,\n allowClear = true,\n required = false,\n timezone,\n onTimezoneChange,\n onOk,\n needConfirm = false,\n onOpenChange,\n className,\n labelProps,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPosRef = useRef<number | null>(null);\n const popoverContentId = useRef(\n `datepicker-popover-${generatedId}`\n ).current;\n\n const [open, setOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<\n Date | [Date | null, Date | null] | null\n >(coerceDateValue(defaultValue, type) ?? null);\n\n const currentValue =\n value !== undefined ? coerceDateValue(value, type) : internalValue;\n\n const [calendarMonth, setCalendarMonth] = useState<Date>(\n (type === \"date\"\n ? ((value as Date | null) ?? (defaultValue as Date | null))\n : null) ?? new Date()\n );\n const [rangeSelectionStep, setRangeSelectionStep] = useState<\"from\" | \"to\">(\n \"from\"\n );\n const [pendingDate, setPendingDate] = useState<Date | null>(null);\n const [pendingTime, setPendingTime] = useState<TimeValue>({\n hours: 0,\n minutes: 0,\n seconds: 0,\n });\n\n const displayFormat = getDisplayFormat(dateFormat, timeFormat, showTime);\n const sizeConfig = SIZE_CONFIG[size];\n\n const maskEnabled = isFixedWidthFormat(displayFormat);\n const maskTemplate = useMemo(\n () =>\n maskEnabled\n ? type === \"range\"\n ? buildRangeMaskTemplate(displayFormat)\n : buildMaskTemplate(displayFormat)\n : null,\n [displayFormat, type, maskEnabled]\n );\n\n const singlePlaceholder = showTime\n ? `${dateFormat.toUpperCase()} ${timeFormat}`\n : dateFormat.toUpperCase();\n\n const defaultPlaceholder =\n type === \"range\"\n ? `${singlePlaceholder} - ${singlePlaceholder}`\n : singlePlaceholder;\n\n const getDisplayText = useCallback((): string => {\n if (type === \"range\") {\n const rangeValue = currentValue as [Date | null, Date | null] | null;\n if (!rangeValue || (!rangeValue[0] && !rangeValue[1])) return \"\";\n const from = rangeValue[0]\n ? formatDate(rangeValue[0], displayFormat)\n : \"\";\n const to = rangeValue[1]\n ? formatDate(rangeValue[1], displayFormat)\n : \"\";\n\n return `${from} - ${to}`;\n }\n\n return formatDate(currentValue as Date | null, displayFormat);\n }, [currentValue, displayFormat, type]);\n\n const [inputText, setInputText] = useState(() => getDisplayText());\n\n useEffect(() => {\n if (!open) setInputText(getDisplayText());\n }, [getDisplayText, open]);\n\n const closePopover = useCallback(() => {\n setOpen(false);\n onOpenChange?.(false);\n setInputText(getDisplayText());\n }, [onOpenChange, getDisplayText]);\n\n const openPopover = useCallback(() => {\n setOpen(true);\n onOpenChange?.(true);\n setRangeSelectionStep(\"from\");\n\n const dateVal = type === \"date\" ? (currentValue as Date | null) : null;\n if (dateVal) {\n setCalendarMonth(dateVal);\n setPendingDate(dateVal);\n setPendingTime(dateToTimeValue(dateVal));\n } else {\n setPendingDate(null);\n setPendingTime({ hours: 0, minutes: 0, seconds: 0 });\n }\n }, [type, currentValue, onOpenChange]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n\n const handlePointerDown = (e: PointerEvent) => {\n const target = e.target as HTMLElement;\n if (containerRef.current?.contains(target)) return;\n\n const popoverEl = document.getElementById(popoverContentId);\n if (popoverEl?.contains(target)) return;\n\n closePopover();\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n\n return () =>\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [open, closePopover]);\n\n const commitValue = (date: Date | [Date, Date] | null) => {\n if (date === null) {\n setInternalValue(null);\n onChange?.(null, \"\");\n setInputText(\"\");\n\n return;\n }\n\n if (Array.isArray(date)) {\n const converted: [Date, Date] = [\n applyTimezone(date[0]),\n applyTimezone(date[1]),\n ];\n setInternalValue(converted);\n const formatted: [string, string] = [\n formatDate(converted[0], displayFormat),\n formatDate(converted[1], displayFormat),\n ];\n onChange?.([toDayjs(converted[0]), toDayjs(converted[1])], formatted);\n setInputText(`${formatted[0]} - ${formatted[1]}`);\n\n return;\n }\n\n const converted = applyTimezone(date);\n setInternalValue(converted);\n const formatted = formatDate(converted, displayFormat);\n onChange?.(toDayjs(converted), formatted);\n setInputText(formatted);\n };\n\n const handleDateSelect = (selected: Date | undefined) => {\n if (!selected) return;\n\n setCalendarMonth(selected);\n\n if (showTime || needConfirm) {\n setPendingDate(selected);\n } else {\n commitValue(selected);\n setOpen(false);\n onOpenChange?.(false);\n }\n };\n\n const handleRangeSelect = (\n range: { from?: Date; to?: Date } | undefined\n ) => {\n if (!range) return;\n\n const from = range.from ?? null;\n const to = range.to ?? null;\n\n if (rangeSelectionStep === \"from\") {\n // First click: store the \"from\" date, wait for \"to\"\n setInternalValue([from, null]);\n setRangeSelectionStep(\"to\");\n } else {\n // Second click: we have both dates\n if (from && to) {\n if (showTime || needConfirm) {\n setPendingDate(from);\n } else {\n commitValue([from, to]);\n setOpen(false);\n onOpenChange?.(false);\n }\n } else if (from) {\n // Clicked the same date again or reset — treat as new \"from\"\n setInternalValue([from, null]);\n }\n setRangeSelectionStep(\"from\");\n }\n };\n\n const handleTimeChange = (time: TimeValue) => {\n setPendingTime(time);\n };\n\n const handleNow = () => {\n const now = new Date();\n if (showTime || needConfirm) {\n setPendingDate(now);\n setPendingTime(dateToTimeValue(now));\n } else {\n commitValue(now);\n setOpen(false);\n onOpenChange?.(false);\n }\n };\n\n const handleOk = () => {\n if (pendingDate) {\n const finalDate = showTime\n ? applyTimeToDate(pendingDate, pendingTime)\n : pendingDate;\n commitValue(finalDate);\n onOk?.(finalDate);\n }\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n commitValue(null);\n };\n\n useLayoutEffect(() => {\n if (\n cursorPosRef.current !== null &&\n inputRef.current &&\n document.activeElement === inputRef.current\n ) {\n inputRef.current.setSelectionRange(\n cursorPosRef.current,\n cursorPosRef.current\n );\n cursorPosRef.current = null;\n }\n });\n\n const singleDateLen = useMemo(\n () => buildMaskTemplate(displayFormat).pattern.length,\n [displayFormat]\n );\n\n const parseAndApplyRange = (text: string) => {\n const parts = text.split(\" - \");\n if (!isDatePartComplete(parts[0] ?? \"\", maskEnabled, singleDateLen))\n return;\n\n const from = parseDate(parts[0], displayFormat);\n if (from) setCalendarMonth(from);\n\n const range = parseRangeText(\n text,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n if (range) commitValue(range);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n inputText,\n e.target.selectionStart\n );\n text = masked.text;\n cursorPosRef.current = masked.cursorPosition;\n }\n\n setInputText(text);\n\n if (type === \"range\") {\n parseAndApplyRange(text);\n\n return;\n }\n\n const isComplete = maskTemplate\n ? text.length >= maskTemplate.pattern.length\n : true;\n\n if (!isComplete) return;\n\n const parsed = parseDate(text, displayFormat);\n if (!parsed) return;\n\n setCalendarMonth(parsed);\n if (showTime || needConfirm) {\n setPendingDate(parsed);\n setPendingTime(dateToTimeValue(parsed));\n } else {\n commitValue(parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") return closePopover();\n\n if (e.key !== \"Enter\") return;\n\n if (type === \"range\") {\n const range = parseRangeText(\n inputText,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n if (range) commitValue(range);\n } else {\n const parsed = parseDate(inputText, displayFormat);\n if (parsed) commitValue(parsed);\n }\n\n setOpen(false);\n onOpenChange?.(false);\n };\n\n const handleInputFocus = () => {\n if (!open) openPopover();\n };\n\n const hasField = !!(label || error || helpText);\n const showFooter = showTime || needConfirm || !!onTimezoneChange;\n\n // neetocommons' dayjs() respects the configured timezone (via dayjs.tz.setDefault).\n const todayDayjs = dayjs(new Date());\n const todayDate = new Date(\n todayDayjs.year(),\n todayDayjs.month(),\n todayDayjs.date()\n );\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const calendarDisabled = useCallback(\n (date: Date) => {\n if (minDate && date < new Date(minDate.setHours(0, 0, 0, 0)))\n return true;\n if (maxDate && date > new Date(maxDate.setHours(23, 59, 59, 999)))\n return true;\n\n return false;\n },\n [minDate, maxDate]\n );\n\n const calendarSelected = useCallback(() => {\n if (showTime || needConfirm) return pendingDate ?? undefined;\n\n return (currentValue as Date | undefined) ?? undefined;\n }, [showTime, needConfirm, pendingDate, currentValue]);\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full items-center gap-2 rounded-md border border-input bg-background pe-8 ps-3\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n sizeConfig.trigger,\n !hasField && className\n )}\n >\n <CalendarIcon\n className={cn(\"shrink-0 text-muted-foreground\", sizeConfig.icon)}\n />\n <input\n ref={inputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label || \"Pick a date\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? defaultPlaceholder}\n value={inputText}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n onFocus={handleInputFocus}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.trigger.split(\" \").find(c => c.startsWith(\"text-\"))\n )}\n />\n {timezone && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {timezone.toUpperCase()}\n </span>\n )}\n {allowClear && (\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(inputText && !disabled) && \"invisible\"\n )}\n aria-label=\"Clear date\"\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n )}\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <div className={cn(\"flex\", showTime && \"flex-row\")}>\n {type === \"date\" ? (\n <Calendar\n mode=\"single\"\n captionLayout=\"dropdown\"\n today={todayDate}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={calendarSelected()}\n onSelect={handleDateSelect}\n disabled={calendarDisabled}\n {...(minDate && { fromDate: minDate })}\n {...(maxDate && { toDate: maxDate })}\n />\n ) : (\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n captionLayout=\"dropdown\"\n today={todayDate}\n className=\"[&_[data-outside][data-selected=true]]:!bg-transparent [&_[data-outside][data-selected=true]]:after:!bg-transparent [&_[data-outside]_button]:!bg-transparent [&_[data-outside]_button]:!text-muted-foreground\"\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={\n currentValue\n ? {\n from:\n (currentValue as [Date | null, Date | null])[0] ??\n undefined,\n to:\n (currentValue as [Date | null, Date | null])[1] ??\n undefined,\n }\n : undefined\n }\n onSelect={handleRangeSelect}\n disabled={calendarDisabled}\n {...(minDate && { fromDate: minDate })}\n {...(maxDate && { toDate: maxDate })}\n />\n )}\n {showTime && (\n <div className=\"border-inline-start border-border\">\n <TimePickerPanel\n value={pendingTime}\n onChange={handleTimeChange}\n format={timePickerFormat}\n showSeconds={showSeconds}\n disabled={disabled}\n />\n </div>\n )}\n </div>\n {showFooter && (\n <DatePickerFooter\n showTime={showTime}\n needConfirm={needConfirm}\n timezone={timezone}\n onTimezoneChange={onTimezoneChange}\n onNow={handleNow}\n onOk={handleOk}\n />\n )}\n </PopoverContent>\n )}\n </Popover>\n );\n\n if (!hasField) {\n return (\n <div ref={ref} className={className}>\n {triggerContent}\n </div>\n );\n }\n\n return (\n <Field\n ref={ref}\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {label && (\n <FieldLabel\n {...(labelProps as React.ComponentProps<typeof FieldLabel>)}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <FieldContent>\n {triggerContent}\n {!!error && <FieldError id={errorId}>{error}</FieldError>}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n"],"names":["createLucideIcon","dayjs","cn","jsx","jsxs","Button","forwardRef","useId","useRef","useState","isFixedWidthFormat","useMemo","buildRangeMaskTemplate","buildMaskTemplate","useCallback","useEffect","dateToTimeValue","converted","formatted","useLayoutEffect","applyMask","Popover","PopoverAnchor","CalendarIcon","X","PopoverContent","Calendar","TimePickerPanel","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -5,7 +5,7 @@ var React = require('react');
|
|
|
5
5
|
var primitives_Popover = require('./primitives/Popover.js');
|
|
6
6
|
var primitives_Field = require('./primitives/Field.js');
|
|
7
7
|
var utils = require('./utils-BhM0B89p.js');
|
|
8
|
-
var TimePickerPanel = require('./TimePickerPanel-
|
|
8
|
+
var TimePickerPanel = require('./TimePickerPanel-DxcH6uJN.js');
|
|
9
9
|
var createLucideIcon = require('./createLucideIcon-D0tRgV6l.js');
|
|
10
10
|
var x = require('./x-Brw3FJst.js');
|
|
11
11
|
|
|
@@ -82,8 +82,8 @@ const TimePicker = React.forwardRef(
|
|
|
82
82
|
React.useEffect(() => {
|
|
83
83
|
const newTime = getInitialTime();
|
|
84
84
|
setInternalTime(newTime);
|
|
85
|
-
setInputText(displayTime(newTime));
|
|
86
|
-
}, [getInitialTime, displayTime]);
|
|
85
|
+
if (!open) setInputText(displayTime(newTime));
|
|
86
|
+
}, [getInitialTime, displayTime, open]);
|
|
87
87
|
React.useEffect(() => {
|
|
88
88
|
if (!open) return;
|
|
89
89
|
const handlePointerDown = (e) => {
|
|
@@ -108,10 +108,13 @@ const TimePicker = React.forwardRef(
|
|
|
108
108
|
[maskFormatStr]
|
|
109
109
|
);
|
|
110
110
|
const defaultPlaceholder = showSeconds ? format === "12" ? "hh:mm:ss AA" : "HH:mm:ss" : format === "12" ? "hh:mm AA" : "HH:mm";
|
|
111
|
+
const emitChange = (time) => {
|
|
112
|
+
onChange?.(TimePickerPanel.timeValueToDayjs(time), displayTime(time));
|
|
113
|
+
};
|
|
111
114
|
const handlePanelChange = (time) => {
|
|
112
115
|
setInternalTime(time);
|
|
113
116
|
setInputText(displayTime(time));
|
|
114
|
-
|
|
117
|
+
emitChange(time);
|
|
115
118
|
};
|
|
116
119
|
React.useLayoutEffect(() => {
|
|
117
120
|
if (cursorPosRef.current !== null && inputRef.current && document.activeElement === inputRef.current) {
|
|
@@ -135,7 +138,7 @@ const TimePicker = React.forwardRef(
|
|
|
135
138
|
const parsed = TimePickerPanel.parseTimeString(text, format);
|
|
136
139
|
if (parsed) {
|
|
137
140
|
setInternalTime(parsed);
|
|
138
|
-
|
|
141
|
+
emitChange(parsed);
|
|
139
142
|
}
|
|
140
143
|
};
|
|
141
144
|
const handleInputKeyDown = (e) => {
|
|
@@ -149,9 +152,10 @@ const TimePicker = React.forwardRef(
|
|
|
149
152
|
const handleClear = (e) => {
|
|
150
153
|
e.stopPropagation();
|
|
151
154
|
e.preventDefault();
|
|
155
|
+
const cleared = { hours: 0, minutes: 0, seconds: 0 };
|
|
152
156
|
setInternalTime(null);
|
|
153
157
|
setInputText("");
|
|
154
|
-
|
|
158
|
+
emitChange(cleared);
|
|
155
159
|
};
|
|
156
160
|
const hasField = !!(label || error || helpText);
|
|
157
161
|
const sizeConfig = SIZE_CONFIG[size];
|
|
@@ -277,4 +281,4 @@ const TimePicker = React.forwardRef(
|
|
|
277
281
|
TimePicker.displayName = "TimePicker";
|
|
278
282
|
|
|
279
283
|
exports.TimePicker = TimePicker;
|
|
280
|
-
//# sourceMappingURL=TimePicker-
|
|
284
|
+
//# sourceMappingURL=TimePicker-D8O_x2Sj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker-D8O_x2Sj.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clock.js","../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 6v6l4 2\", key: \"mmk7yg\" }]\n];\nconst Clock = createLucideIcon(\"clock\", __iconNode);\n\nexport { __iconNode, Clock as default };\n//# sourceMappingURL=clock.js.map\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport {\n dateToTimeValue,\n formatTimeDisplay,\n parseTimeString,\n timeValueToDayjs,\n} from \"./utils\";\nimport { applyMask, buildMaskTemplate } from \"src/utils/inputMask\";\n\nconst SIZE_CONFIG = {\n small: { trigger: \"h-7 text-xs\", icon: \"size-3.5\" },\n medium: { trigger: \"h-8 text-sm\", icon: \"size-4\" },\n large: { trigger: \"h-10 text-sm\", icon: \"size-4\" },\n} as const;\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n labelProps,\n className,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPosRef = useRef<number | null>(null);\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const [open, setOpen] = useState(false);\n\n const getInitialTime = useCallback((): TimeValue | null => {\n if (!value) return null;\n if (value instanceof Date) return dateToTimeValue(value);\n\n const dateLikeValue = value as { toDate?: () => Date };\n if (typeof dateLikeValue.toDate === \"function\") {\n return dateToTimeValue(dateLikeValue.toDate());\n }\n\n const timeValue = value as TimeValue;\n\n return {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n seconds: timeValue.seconds ?? 0,\n };\n }, [value]);\n\n const [internalTime, setInternalTime] = useState<TimeValue | null>(\n getInitialTime\n );\n const [inputText, setInputText] = useState(\"\");\n\n const displayTime = useCallback(\n (time: TimeValue | null) => formatTimeDisplay(time, format, showSeconds),\n [format, showSeconds]\n );\n\n useEffect(() => {\n const newTime = getInitialTime();\n setInternalTime(newTime);\n if (!open) setInputText(displayTime(newTime));\n }, [getInitialTime, displayTime, open]);\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n\n const handlePointerDown = (e: PointerEvent) => {\n const target = e.target as HTMLElement;\n if (containerRef.current?.contains(target)) return;\n\n const popoverEl = document.getElementById(popoverContentId);\n if (popoverEl?.contains(target)) return;\n\n setOpen(false);\n setInputText(displayTime(internalTime));\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n\n return () =>\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n }, [open, internalTime, displayTime]);\n\n const maskFormatStr = useMemo(() => {\n if (format === \"12\") {\n return showSeconds ? \"hh:mm:ss AA\" : \"hh:mm AA\";\n }\n\n return showSeconds ? \"HH:mm:ss\" : \"HH:mm\";\n }, [format, showSeconds]);\n\n const maskTemplate = useMemo(\n () => buildMaskTemplate(maskFormatStr),\n [maskFormatStr]\n );\n\n const defaultPlaceholder = showSeconds\n ? format === \"12\"\n ? \"hh:mm:ss AA\"\n : \"HH:mm:ss\"\n : format === \"12\"\n ? \"hh:mm AA\"\n : \"HH:mm\";\n\n const emitChange = (time: TimeValue) => {\n onChange?.(timeValueToDayjs(time), displayTime(time));\n };\n\n const handlePanelChange = (time: TimeValue) => {\n setInternalTime(time);\n setInputText(displayTime(time));\n emitChange(time);\n };\n\n useLayoutEffect(() => {\n if (\n cursorPosRef.current !== null &&\n inputRef.current &&\n document.activeElement === inputRef.current\n ) {\n inputRef.current.setSelectionRange(\n cursorPosRef.current,\n cursorPosRef.current\n );\n cursorPosRef.current = null;\n }\n });\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const masked = applyMask(\n e.target.value,\n maskTemplate,\n inputText,\n e.target.selectionStart\n );\n const text = masked.text;\n cursorPosRef.current = masked.cursorPosition;\n\n setInputText(text);\n\n const parsed = parseTimeString(text, format);\n if (parsed) {\n setInternalTime(parsed);\n emitChange(parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key !== \"Enter\" && e.key !== \"Escape\") return;\n\n setInputText(displayTime(internalTime));\n setOpen(false);\n };\n\n const handleInputFocus = () => {\n if (!open) setOpen(true);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const cleared = { hours: 0, minutes: 0, seconds: 0 };\n setInternalTime(null);\n setInputText(\"\");\n emitChange(cleared);\n };\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full items-center gap-2 rounded-md border border-input bg-background pe-8 ps-3\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n sizeConfig.trigger,\n !hasField && className\n )}\n >\n {timezone ? (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {timezone.toUpperCase()}\n </span>\n ) : (\n <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n <input\n ref={inputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? defaultPlaceholder}\n value={inputText}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n onFocus={handleInputFocus}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none placeholder:text-muted-foreground\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.trigger.split(\" \").find(c => c.startsWith(\"text-\"))\n )}\n />\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(inputText && !disabled) && \"invisible\"\n )}\n aria-label=\"Clear time\"\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={internalTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n </PopoverContent>\n )}\n </Popover>\n );\n\n if (!hasField) {\n return (\n <div ref={ref} className={className}>\n {triggerContent}\n </div>\n );\n }\n\n return (\n <Field\n ref={ref}\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {label && (\n <FieldLabel\n {...(labelProps as React.ComponentProps<typeof FieldLabel>)}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <FieldContent>\n {triggerContent}\n {!!error && <FieldError id={errorId}>{error}</FieldError>}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":["createLucideIcon","forwardRef","useId","useRef","useState","useCallback","dateToTimeValue","formatTimeDisplay","useEffect","useMemo","buildMaskTemplate","timeValueToDayjs","useLayoutEffect","applyMask","parseTimeString","jsxs","Popover","jsx","PopoverAnchor","cn","X","PopoverContent","TimePickerPanel","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -5,6 +5,11 @@ var React = require('react');
|
|
|
5
5
|
var utils = require('./utils-BhM0B89p.js');
|
|
6
6
|
var primitives_Button = require('./primitives/Button.js');
|
|
7
7
|
var primitives_ScrollArea = require('./primitives/ScrollArea.js');
|
|
8
|
+
var dayjs = require('@bigbinary/neeto-commons-frontend/utils/dayjs');
|
|
9
|
+
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
|
|
8
13
|
|
|
9
14
|
const FORMAT_CHARS = /* @__PURE__ */ new Set(["d", "M", "y", "H", "h", "m", "s"]);
|
|
10
15
|
const DIGIT = /\d/;
|
|
@@ -214,11 +219,14 @@ const to24Hour = (hour12, period) => {
|
|
|
214
219
|
}
|
|
215
220
|
return hour12 === 12 ? 12 : hour12 + 12;
|
|
216
221
|
};
|
|
217
|
-
const dateToTimeValue = (date) =>
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
+
const dateToTimeValue = (date) => {
|
|
223
|
+
const d = dayjs__default.default(date);
|
|
224
|
+
return {
|
|
225
|
+
hours: d.hour(),
|
|
226
|
+
minutes: d.minute(),
|
|
227
|
+
seconds: d.second()
|
|
228
|
+
};
|
|
229
|
+
};
|
|
222
230
|
const padNumber = (num, length = 2) => String(num).padStart(length, "0");
|
|
223
231
|
const formatTimeDisplay = (time, format, showSeconds) => {
|
|
224
232
|
if (!time) return "";
|
|
@@ -255,6 +263,13 @@ const parseTimeString = (input, format) => {
|
|
|
255
263
|
if (hours > 23 || minutes > 59 || seconds > 59) return null;
|
|
256
264
|
return { hours, minutes, seconds };
|
|
257
265
|
};
|
|
266
|
+
const timeValueToDayjs = (time) => {
|
|
267
|
+
const h = padNumber(time.hours);
|
|
268
|
+
const m = padNumber(time.minutes);
|
|
269
|
+
const s = padNumber(time.seconds ?? 0);
|
|
270
|
+
const today = dayjs__default.default(/* @__PURE__ */ new Date()).format("YYYY-MM-DD");
|
|
271
|
+
return dayjs__default.default(`${today} ${h}:${m}:${s}`);
|
|
272
|
+
};
|
|
258
273
|
|
|
259
274
|
const TimeColumn = ({
|
|
260
275
|
items,
|
|
@@ -431,4 +446,5 @@ exports.dateToTimeValue = dateToTimeValue;
|
|
|
431
446
|
exports.formatTimeDisplay = formatTimeDisplay;
|
|
432
447
|
exports.isFixedWidthFormat = isFixedWidthFormat;
|
|
433
448
|
exports.parseTimeString = parseTimeString;
|
|
434
|
-
|
|
449
|
+
exports.timeValueToDayjs = timeValueToDayjs;
|
|
450
|
+
//# sourceMappingURL=TimePickerPanel-DxcH6uJN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePickerPanel-DxcH6uJN.js","sources":["../../src/utils/inputMask.ts","../../src/components/TimePicker/constants.ts","../../src/components/TimePicker/utils.ts","../../src/components/TimePicker/TimeColumn.tsx","../../src/components/TimePicker/TimePickerPanel.tsx"],"sourcesContent":["export interface MaskTemplate {\n pattern: string;\n hasAmPm: boolean;\n}\n\nconst FORMAT_CHARS = new Set([\"d\", \"M\", \"y\", \"H\", \"h\", \"m\", \"s\"]);\n\nconst DIGIT = /\\d/;\nconst AMPM_CHAR = /[APM]/;\nconst VALID_CHAR = /[\\dAPM]/i;\n\nconst isSlot = (ch: string) => ch === \"#\" || ch === \"@\";\n\nconst isValidChar = (ch: string, hasAmPm: boolean) =>\n DIGIT.test(ch) || (hasAmPm && AMPM_CHAR.test(ch));\n\n/**\n * Convert a display format string into a mask template.\n *\n * Format chars (d, M, y, H, h, m, s) → digit slots (#).\n * A (from AA) → ampm letter slots (@).\n * Everything else → literal separators.\n *\n * Examples:\n * \"dd/MM/yyyy\" → \"##/##/####\"\n * \"hh:mm AA\" → \"##:## @@\"\n */\nexport const buildMaskTemplate = (format: string): MaskTemplate => {\n let pattern = \"\";\n let hasAmPm = false;\n\n for (const char of format) {\n if (FORMAT_CHARS.has(char)) {\n pattern += \"#\";\n } else if (char === \"A\") {\n pattern += \"@\";\n hasAmPm = true;\n } else {\n pattern += char;\n }\n }\n\n return { pattern, hasAmPm };\n};\n\n/**\n * Build a range mask template: two single-date templates joined by \" - \".\n */\nexport const buildRangeMaskTemplate = (format: string): MaskTemplate => {\n const single = buildMaskTemplate(format);\n\n return {\n pattern: `${single.pattern} - ${single.pattern}`,\n hasAmPm: single.hasAmPm,\n };\n};\n\n// Tokens like MMM/MMMM produce textual output (month names), not digits.\nconst TEXTUAL_WHEN_LONG = new Set([\"M\", \"d\"]);\n\n/**\n * Check if a format string uses only fixed-width numeric tokens (dd, MM, yyyy, etc).\n * Returns false for single-char tokens (d, M) and textual tokens (MMM, MMMM).\n */\nexport const isFixedWidthFormat = (format: string): boolean => {\n let i = 0;\n while (i < format.length) {\n const char = format[i];\n if (!FORMAT_CHARS.has(char)) {\n i++;\n continue;\n }\n\n let count = 0;\n while (i + count < format.length && format[i + count] === char) count++;\n\n if (count === 1) return false;\n if (count >= 3 && TEXTUAL_WHEN_LONG.has(char)) return false;\n\n i += count;\n }\n\n return true;\n};\n\nconst findDeletionPoint = (prev: string, input: string): number => {\n for (let i = 0; i < prev.length; i++) {\n if (i >= input.length || input[i] !== prev[i]) return i;\n }\n\n return prev.length - 1;\n};\n\nconst hasDigitsAfter = (\n text: string,\n pos: number,\n pattern: string\n): boolean => {\n for (let i = pos + 1; i < text.length && i < pattern.length; i++) {\n if (isSlot(pattern[i]) && text[i] !== \"_\") return true;\n }\n\n return false;\n};\n\nconst countValidBefore = (\n text: string,\n pos: number,\n hasAmPm: boolean\n): number => {\n let count = 0;\n for (let i = 0; i < pos && i < text.length; i++) {\n if (isValidChar(text[i].toUpperCase(), hasAmPm)) count++;\n }\n\n return count;\n};\n\nconst extractWithPattern = (text: string, pattern: string): string[] => {\n const chars: string[] = [];\n const upper = text.toUpperCase();\n let pIdx = 0;\n\n for (let i = 0; i < upper.length; i++) {\n const ch = upper[i];\n while (pIdx < pattern.length && !isSlot(pattern[pIdx])) pIdx++;\n if (pIdx >= pattern.length) break;\n\n if (pattern[pIdx] === \"#\" && DIGIT.test(ch)) {\n chars.push(ch);\n pIdx++;\n } else if (pattern[pIdx] === \"@\" && AMPM_CHAR.test(ch)) {\n chars.push(ch);\n pIdx++;\n }\n }\n\n return chars;\n};\n\nconst rebuildFromChars = (validChars: string[], pattern: string): string => {\n let result = \"\";\n let charIdx = 0;\n\n for (let i = 0; i < pattern.length && charIdx < validChars.length; i++) {\n if (!isSlot(pattern[i])) continue;\n\n result += validChars[charIdx];\n charIdx++;\n\n let nextSlot = i + 1;\n while (nextSlot < pattern.length && !isSlot(pattern[nextSlot])) nextSlot++;\n\n const hasMoreChars = charIdx < validChars.length;\n const hasMoreSlots = nextSlot < pattern.length;\n\n if (hasMoreChars || hasMoreSlots) {\n for (let s = i + 1; s < nextSlot; s++) result += pattern[s];\n }\n\n if (hasMoreChars) i = nextSlot - 1;\n }\n\n return result;\n};\n\nconst stripTrailingSeparators = (text: string): string => {\n let end = text.length;\n while (end > 0 && !VALID_CHAR.test(text[end - 1])) end--;\n\n return text.slice(0, end);\n};\n\nconst cursorSlotToDisplayPos = (\n result: string,\n cursorSlot: number,\n pattern: string,\n skipSeparators: boolean\n): number => {\n if (cursorSlot <= 0) return 0;\n\n let slotsFound = 0;\n for (let i = 0; i < result.length; i++) {\n if (!VALID_CHAR.test(result[i])) continue;\n\n slotsFound++;\n if (slotsFound !== cursorSlot) continue;\n\n let pos = i + 1;\n if (skipSeparators) {\n while (\n pos < result.length &&\n pos < pattern.length &&\n !isSlot(pattern[pos])\n ) {\n pos++;\n }\n }\n\n return pos;\n }\n\n return result.length;\n};\n\nconst isValidForSlot = (ch: string, slotChar: string): boolean =>\n slotChar === \"#\"\n ? DIGIT.test(ch)\n : slotChar === \"@\"\n ? AMPM_CHAR.test(ch)\n : false;\n\n/**\n * Apply the mask template to raw input text.\n *\n * - Auto-inserts separators as the user types.\n * - When the mask is full, typing in the middle replaces the digit at cursor.\n * - Backspacing in the middle replaces the digit with '_' placeholder\n * instead of shifting subsequent digits.\n * - AM/PM auto-completes: typing \"A\" or \"P\" expands to \"AM\" or \"PM\".\n */\nexport const applyMask = (\n inputText: string,\n template: MaskTemplate,\n previousText = \"\",\n nativeCursorPos?: number | null\n): { text: string; cursorPosition: number } => {\n const { pattern, hasAmPm } = template;\n\n if (!inputText) return { text: \"\", cursorPosition: 0 };\n\n const isDeleting = inputText.length < previousText.length;\n\n // When backspacing from a full mask, replace the deleted digit with '_'\n // instead of shifting. This keeps other fields (day/month/year) intact.\n if (isDeleting && previousText.length >= pattern.length) {\n const delPos = findDeletionPoint(previousText, inputText);\n\n if (\n !hasDigitsAfter(previousText, delPos, pattern) ||\n delPos >= pattern.length\n ) {\n // Deletion at or near the end — fall through to normal rebuild\n } else if (isSlot(pattern[delPos])) {\n return {\n text:\n previousText.substring(0, delPos) +\n \"_\" +\n previousText.substring(delPos + 1),\n cursorPosition: delPos,\n };\n } else {\n // Separator deleted — restore it\n return { text: previousText, cursorPosition: delPos };\n }\n }\n\n const totalSlots = [...pattern].filter(isSlot).length;\n const slotPatternPositions = [...pattern].reduce<number[]>(\n (acc, ch, i) => (isSlot(ch) ? [...acc, i] : acc),\n []\n );\n\n const cursorInInput = nativeCursorPos ?? inputText.length;\n const cursorSlot = countValidBefore(inputText, cursorInInput, hasAmPm);\n const prevChars = extractWithPattern(previousText, pattern);\n let validChars: string[];\n\n // Replace mode: single char typed on a full mask replaces the digit at cursor.\n const isSingleCharInsert =\n !isDeleting &&\n prevChars.length >= totalSlots &&\n inputText.length - previousText.length === 1;\n\n if (isSingleCharInsert) {\n const insertSlot = cursorSlot - 1;\n const typedChar = inputText[cursorInInput - 1]?.toUpperCase() ?? \"\";\n const slotChar =\n slotPatternPositions[insertSlot] != null\n ? pattern[slotPatternPositions[insertSlot]]\n : null;\n\n if (!slotChar || !isValidForSlot(typedChar, slotChar)) {\n return {\n text: previousText,\n cursorPosition: Math.min(cursorInInput, previousText.length),\n };\n }\n\n validChars = [...prevChars];\n validChars[insertSlot] = typedChar;\n } else {\n validChars = extractWithPattern(inputText, pattern).slice(0, totalSlots);\n }\n\n let result = rebuildFromChars(validChars, pattern);\n\n if (isDeleting) {\n result = stripTrailingSeparators(result);\n }\n\n if (hasAmPm && !isDeleting) {\n const ampmStart = pattern.indexOf(\"@\");\n if (ampmStart >= 0 && result.length > ampmStart) {\n const ampmPortion = result.slice(ampmStart);\n if (ampmPortion === \"A\") result = result.slice(0, ampmStart) + \"AM\";\n else if (ampmPortion === \"P\") result = result.slice(0, ampmStart) + \"PM\";\n }\n }\n\n return {\n text: result,\n cursorPosition: cursorSlotToDisplayPos(\n result,\n cursorSlot,\n pattern,\n !isDeleting\n ),\n };\n};\n","export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\n","import type { Dayjs } from \"dayjs\";\nimport dayjs from \"@bigbinary/neeto-commons-frontend/utils/dayjs\";\n\nimport type { TimeValue } from \"./types\";\n\nexport const generateRange = (\n start: number,\n end: number,\n step = 1\n): number[] => {\n const result: number[] = [];\n for (let i = start; i <= end; i += step) {\n result.push(i);\n }\n\n return result;\n};\n\nexport const to12Hour = (\n hour24: number\n): { hour12: number; period: \"AM\" | \"PM\" } => {\n const period = hour24 >= 12 ? \"PM\" : \"AM\";\n const hour12 = hour24 % 12 || 12;\n\n return { hour12, period };\n};\n\nexport const to24Hour = (hour12: number, period: \"AM\" | \"PM\"): number => {\n if (period === \"AM\") {\n return hour12 === 12 ? 0 : hour12;\n }\n\n return hour12 === 12 ? 12 : hour12 + 12;\n};\n\n/**\n * Extract time values from a Date using the timezone-aware dayjs wrapper.\n * Uses dayjs().hour() instead of native date.getHours() to respect\n * the configured timezone (set via dayjs.tz.setDefault).\n */\nexport const dateToTimeValue = (date: Date): TimeValue => {\n const d = dayjs(date);\n\n return {\n hours: d.hour(),\n minutes: d.minute(),\n seconds: d.second(),\n };\n};\n\nexport const padNumber = (num: number, length = 2): string =>\n String(num).padStart(length, \"0\");\n\nexport const formatTimeDisplay = (\n time: TimeValue | null,\n format: \"12\" | \"24\",\n showSeconds: boolean\n): string => {\n if (!time) return \"\";\n\n if (format === \"12\") {\n const { hour12, period } = to12Hour(time.hours);\n const parts = [padNumber(hour12), padNumber(time.minutes)];\n if (showSeconds) parts.push(padNumber(time.seconds ?? 0));\n\n return `${parts.join(\":\")} ${period}`;\n }\n\n const parts = [padNumber(time.hours), padNumber(time.minutes)];\n if (showSeconds) parts.push(padNumber(time.seconds ?? 0));\n\n return parts.join(\":\");\n};\n\nexport const parseTimeString = (\n input: string,\n format: \"12\" | \"24\"\n): TimeValue | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (format === \"12\") {\n // Accept: \"2:30 PM\", \"02:30 PM\", \"2:3 PM\", \"2:30:15 PM\"\n const match = trimmed.match(\n /^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?\\s*(AM|PM)$/i\n );\n if (!match) return null;\n\n const hour12 = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n const period = match[4].toUpperCase() as \"AM\" | \"PM\";\n\n if (hour12 < 1 || hour12 > 12 || minutes > 59 || seconds > 59) return null;\n\n return { hours: to24Hour(hour12, period), minutes, seconds };\n }\n\n // Accept: \"14:3\", \"14:30\", \"2:5\", \"14:30:05\"\n const match = trimmed.match(/^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?$/);\n if (!match) return null;\n\n const hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n\n if (hours > 23 || minutes > 59 || seconds > 59) return null;\n\n return { hours, minutes, seconds };\n};\n\n/**\n * Convert TimeValue to a timezone-aware Dayjs.\n * Matches neetoUI's getTimezoneAppliedDateTime behavior by formatting\n * to string and reparsing through the timezone-aware dayjs wrapper.\n */\nexport const timeValueToDayjs = (time: TimeValue): Dayjs => {\n const h = padNumber(time.hours);\n const m = padNumber(time.minutes);\n const s = padNumber(time.seconds ?? 0);\n const today = dayjs(new Date()).format(\"YYYY-MM-DD\");\n\n return dayjs(`${today} ${h}:${m}:${s}`);\n};\n","import React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n"],"names":["dayjs","parts","match","minutes","seconds","useRef","useEffect","jsx","ScrollArea","cn","Button","forwardRef","useCallback","useState","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var DatePicker = require('../DatePicker-
|
|
3
|
+
var DatePicker = require('../DatePicker-f0ohDdTp.js');
|
|
4
4
|
require('react/jsx-runtime');
|
|
5
5
|
require('react');
|
|
6
|
-
require('../Calendar
|
|
6
|
+
require('../primitives/Calendar.js');
|
|
7
7
|
require('../utils-BhM0B89p.js');
|
|
8
8
|
require('../button-CMl9rLXi.js');
|
|
9
9
|
require('../index-vioSzJOw.js');
|
|
@@ -32,7 +32,8 @@ require('../index-CyrAgb4H.js');
|
|
|
32
32
|
require('../primitives/Field.js');
|
|
33
33
|
require('../label-DJ7KkKYy.js');
|
|
34
34
|
require('../separator-DSL-aG1J.js');
|
|
35
|
-
require('
|
|
35
|
+
require('@bigbinary/neeto-commons-frontend/utils/dayjs');
|
|
36
|
+
require('../TimePickerPanel-DxcH6uJN.js');
|
|
36
37
|
require('../primitives/Button.js');
|
|
37
38
|
require('../primitives/ScrollArea.js');
|
|
38
39
|
require('../index-BY6wgiQV.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var TimePicker = require('../TimePicker-
|
|
4
|
-
var TimePickerPanel = require('../TimePickerPanel-
|
|
3
|
+
var TimePicker = require('../TimePicker-D8O_x2Sj.js');
|
|
4
|
+
var TimePickerPanel = require('../TimePickerPanel-DxcH6uJN.js');
|
|
5
5
|
require('react/jsx-runtime');
|
|
6
6
|
require('react');
|
|
7
7
|
require('../primitives/Popover.js');
|
|
@@ -34,6 +34,7 @@ require('../index-DuNgWCXZ.js');
|
|
|
34
34
|
require('../primitives/ScrollArea.js');
|
|
35
35
|
require('../index-BY6wgiQV.js');
|
|
36
36
|
require('../index-EyWRfsCG.js');
|
|
37
|
+
require('@bigbinary/neeto-commons-frontend/utils/dayjs');
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimePicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimePicker.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -10,7 +10,7 @@ var Callout = require('../Callout-_XBx1JHL.js');
|
|
|
10
10
|
var Checkbox = require('../Checkbox-CxqWOvFN.js');
|
|
11
11
|
var ColorPicker = require('../ColorPicker-Co1Gffsu.js');
|
|
12
12
|
var DataTable = require('../DataTable-DRGW8JVP.js');
|
|
13
|
-
var DatePicker = require('../DatePicker-
|
|
13
|
+
var DatePicker = require('../DatePicker-f0ohDdTp.js');
|
|
14
14
|
var Dialog = require('../Dialog-CBSuKeu_.js');
|
|
15
15
|
var Empty = require('../Empty-DqmmPlPJ.js');
|
|
16
16
|
var Input = require('../Input-CpuJXazH.js');
|
|
@@ -29,8 +29,8 @@ var Stepper = require('../Stepper-DZb25oBH.js');
|
|
|
29
29
|
var Switch = require('../Switch-BTkncHw2.js');
|
|
30
30
|
var Tabs = require('../Tabs-YPRmLtUM.js');
|
|
31
31
|
var Textarea = require('../Textarea-yWv-66yX.js');
|
|
32
|
-
var TimePicker = require('../TimePicker-
|
|
33
|
-
var TimePickerPanel = require('../TimePickerPanel-
|
|
32
|
+
var TimePicker = require('../TimePicker-D8O_x2Sj.js');
|
|
33
|
+
var TimePickerPanel = require('../TimePickerPanel-DxcH6uJN.js');
|
|
34
34
|
var Toastr = require('../Toastr-DYWd66L7.js');
|
|
35
35
|
var Tooltip = require('../Tooltip-Dph_R3Ct.js');
|
|
36
36
|
var TranslationProvider = require('../TranslationProvider-Dh5_Fzzk.js');
|
|
@@ -103,7 +103,8 @@ require('../primitives/Table.js');
|
|
|
103
103
|
require('../primitives/Pagination.js');
|
|
104
104
|
require('../chevron-left-BldoOh5p.js');
|
|
105
105
|
require('../ellipsis-4aubOI2n.js');
|
|
106
|
-
require('../Calendar
|
|
106
|
+
require('../primitives/Calendar.js');
|
|
107
|
+
require('@bigbinary/neeto-commons-frontend/utils/dayjs');
|
|
107
108
|
require('../primitives/Empty.js');
|
|
108
109
|
require('../primitives/InputGroup.js');
|
|
109
110
|
require('../input-group-8TZFHzVl.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|