@owp/core 2.5.17 → 2.5.19
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/_virtual/index10.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index16.js +4 -4
- package/dist/_virtual/index17.js +4 -4
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/components/OwpPageContent/OwpPageContent.js +14 -12
- package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
- package/dist/components/OwpPageTitle/OwpPageTitle.js +37 -35
- package/dist/components/OwpPageTitle/OwpPageTitle.js.map +1 -1
- package/dist/components/OwpPicker/OwpDatePicker.js +339 -102
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +87 -82
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +494 -220
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/constants/index.js +6 -5
- package/dist/components/OwpPicker/constants/index.js.map +1 -1
- package/dist/components/OwpPicker/internal/DatePickerInput.js +71 -47
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -1
- package/dist/components/OwpSection/OwpSection.js +84 -62
- package/dist/components/OwpSection/OwpSection.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +42 -40
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +273 -224
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js +476 -105
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +317 -245
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +315 -151
- package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
- package/dist/constants/gridTheme.js +9 -7
- package/dist/constants/gridTheme.js.map +1 -1
- package/dist/constants/treeGrid.js +37 -35
- package/dist/constants/treeGrid.js.map +1 -1
- package/dist/constants.js +25 -23
- package/dist/features/themePreview/configs/grid.js +3 -1
- package/dist/features/themePreview/configs/grid.js.map +1 -1
- package/dist/features/themePreview/utils/themePreviewDefinitions.js +10 -0
- package/dist/features/themePreview/utils/themePreviewDefinitions.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +1 -1
- package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +1 -1
- package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpPageContent/OwpPageContent.d.ts +3 -1
- package/dist/types/components/OwpPageTitle/OwpPageTitle.d.ts +3 -1
- package/dist/types/components/OwpPicker/OwpTimePicker.d.ts +3 -1
- package/dist/types/components/OwpPicker/constants/index.d.ts +1 -0
- package/dist/types/components/OwpPicker/internal/DatePickerInput.d.ts +7 -0
- package/dist/types/components/OwpSection/OwpSection.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +6 -6
- package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridDatePickerEditor.d.ts +3 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +33 -7
- package/dist/types/components/OwpTreeGrid/internal/treeGridTheme.d.ts +1 -1
- package/dist/types/constants/gridTheme.d.ts +4 -0
- package/dist/types/constants/treeGrid.d.ts +3 -1
- package/dist/types/features/themePreview/configs/grid.d.ts +2 -0
- package/dist/types/features/themePreview/configs/settings.d.ts +2 -0
- package/dist/types/types/OwpGridThemeTypes.d.ts +2 -0
- package/dist/types/utils/index.d.ts +0 -1
- package/dist/types/utils/treeGridUtil.d.ts +42 -3
- package/dist/utils/treeGridUtil.js +220 -119
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +90 -86
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +0 -84
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +0 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +0 -60
- package/dist/types/utils/normalizeTimeToHourMinute.d.ts +0 -11
- package/dist/utils/normalizeTimeToHourMinute.js +0 -34
- package/dist/utils/normalizeTimeToHourMinute.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n type InputAdornmentProps,\n TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport { LocalizationProvider, TimePicker, type TimePickerProps } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from 'dayjs';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { VALUE_TIME_FORMATTER } from './constants';\n\nensureDayjsBrowserSetup();\n\nconst EMPTY_TIME_SECTION = '––';\n\nconst SELECTED_TIME_ITEM_SX = {\n '&:hover': {\n backgroundColor: 'var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))',\n },\n '&.Mui-selected': {\n backgroundColor: 'var(--owp-datepicker-selected-bg, #039be5)',\n color: 'var(--owp-datepicker-selected-color, #fff)',\n '&:focus-visible, &:hover': {\n backgroundColor: 'var(--owp-datepicker-selected-hover-bg, #039be5)',\n },\n },\n};\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nconst TIME_PICKER_PAPER_SX = {\n border: 0,\n borderRadius: 1,\n boxShadow: 8,\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n border: 0,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: '#e0e0e0',\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n border: 0,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n border: 0,\n },\n '& .MuiMultiSectionDigitalClockSection-root:last-of-type': {\n overflowY: 'hidden',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n width: 0,\n },\n '@media (pointer: fine)': {\n '&:hover': {\n overflowY: 'hidden',\n },\n },\n '@media (pointer: none), (pointer: coarse)': {\n overflowY: 'hidden',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const normalizedValueFormat = VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem ? 'A hh:mm' : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n ...timePickerProps.timeSteps,\n };\n const [internalOpen, setInternalOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const skipNextOpenRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n onChange?.(nextValue?.isValid() ? nextValue.format(normalizedValueFormat) : undefined);\n };\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n onOpen?.();\n }, [isControlledOpen, onOpen]);\n\n const handleClose = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClear = () => {\n onChange?.('');\n };\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [handleClose, handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || !isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [handleClose, isOpen, textFieldProps],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClose, isOpen]);\n\n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={isOpen}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n }}\n slotProps={{\n popper: {\n placement: 'bottom-end',\n ref: (instance) => {\n popperRef.current = instance;\n },\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ],\n },\n desktopPaper: {\n sx: TIME_PICKER_PAPER_SX,\n },\n mobilePaper: {\n sx: TIME_PICKER_PAPER_SX,\n },\n actionBar: {\n actions: ['accept'],\n sx: {\n backgroundColor: '#f6f3f4',\n minHeight: 44,\n padding: '4px 8px',\n '& .MuiButton-root': {\n minHeight: 28,\n minWidth: 48,\n padding: '4px 8px',\n fontSize: '1.3rem',\n lineHeight: 1.2,\n },\n },\n },\n openPickerButton: {\n size: 'small',\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n fontSize: 'small',\n },\n inputAdornment: {\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n },\n digitalClockItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n digitalClockSectionItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["ensureDayjsBrowserSetup","EMPTY_TIME_SECTION","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_SX","TIME_PICKER_PAPER_SX","isValueEditingKey","__name","event","OwpTimePicker","label","variant","sx","value","format","VALUE_TIME_FORMATTER","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","internalOpen","setInternalOpen","useState","rootRef","useRef","popperRef","skipNextOpenRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","selectedValue","useMemo","dayjs","parsedValue","handleChange","nextValue","handleOpen","useCallback","handleClose","handleClear","handleTextFieldClick","_a","handleTextFieldKeyDown","useEffect","handleDocumentMouseDown","target","_b","jsx","LocalizationProvider","AdapterDayjs","TimePicker","position","children","restProps","jsxs","InputAdornment","IconButton","ClearIcon","instance","clsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OwpTimePicker.js","sources":["../../../src/components/OwpPicker/OwpTimePicker.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n IconButton,\n InputAdornment,\n type InputAdornmentProps,\n Paper,\n Popper,\n TextField,\n TextFieldProps,\n} from '@mui/material';\nimport type { SxProps, Theme } from '@mui/material/styles';\nimport {\n LocalizationProvider,\n MultiSectionDigitalClock,\n TimePicker,\n type TimePickerProps,\n} from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport clsx from 'clsx';\nimport dayjs, { type Dayjs } from 'dayjs';\nimport {\n type ChangeEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type Ref,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { PICKER_INVALID_INPUT_MESSAGE_KEY, VALUE_TIME_FORMATTER } from './constants';\n\nensureDayjsBrowserSetup();\n\nconst EMPTY_TIME_SECTION = '––';\nconst VALUE_TIME_SECOND_FORMATTER = 'HH:mm:ss';\nconst TIME_PICKER_EDITOR_SECTION_WIDTH = 64;\nconst TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH = 56;\n\nconst SELECTED_TIME_ITEM_SX = {\n '&:hover': {\n backgroundColor: 'var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))',\n },\n '&.Mui-selected': {\n backgroundColor: 'var(--owp-datepicker-selected-bg, #039be5)',\n color: 'var(--owp-datepicker-selected-color, #fff)',\n '&:focus-visible, &:hover': {\n backgroundColor: 'var(--owp-datepicker-selected-hover-bg, #039be5)',\n },\n },\n};\n\nconst TIME_PICKER_TEXT_FIELD_SX = {\n '& .MuiInputBase-root': {\n alignItems: 'center',\n },\n '& .MuiInputAdornment-positionEnd': {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n },\n '& .MuiInputAdornment-positionEnd > :not(style) + :not(style)': {\n marginLeft: 0,\n },\n '& .MuiInputAdornment-positionEnd .MuiIconButton-root': {\n margin: 0,\n padding: 0,\n },\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n '@media (pointer: fine)': {\n '& .clearButton': {\n opacity: 1,\n visibility: 'visible',\n },\n },\n};\n\nexport type OwpTimePickerValue = string | Date | Dayjs;\ntype OwpTimePickerTextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype OwpTimePickerTextFieldFocusEvent = Parameters<NonNullable<TextFieldProps['onFocus']>>[0];\ntype OwpTimePickerTextFieldKeyDownEvent = Parameters<NonNullable<TextFieldProps['onKeyDown']>>[0];\ntype OwpTimePickerTextFieldMouseDownEvent = Parameters<\n NonNullable<TextFieldProps['onMouseDown']>\n>[0];\n\nconst isValueEditingKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false;\n }\n\n return event.key.length === 1 || event.key === 'Backspace' || event.key === 'Delete';\n};\n\nconst isTimePickerOpenKey = (event: OwpTimePickerTextFieldKeyDownEvent) => {\n if (\n event.ctrlKey ||\n event.altKey ||\n event.metaKey ||\n event.key === 'Escape' ||\n event.key === 'Enter' ||\n event.key === 'Tab'\n ) {\n return false;\n }\n\n return event.key.length === 1 || event.key.startsWith('Arrow');\n};\n\n/** TimePicker 입력 문자열 마스크 */\nconst formatTimePickerInput = (value: string, hasSeconds: boolean) => {\n const digitLimit = hasSeconds ? 6 : 4;\n const digits = value.replace(/\\D/g, '').slice(0, digitLimit);\n\n return [digits.slice(0, 2), digits.slice(2, 4), digits.slice(4, 6)].filter(Boolean).join(':');\n};\n\n/** TimePicker 입력 값 파싱 */\nconst parseTimePickerInput = (value: string, hasSeconds: boolean) => {\n const normalizedValue = value.trim();\n const timePattern = hasSeconds ? '(\\\\d{2}):(\\\\d{2}):(\\\\d{2})' : '(\\\\d{2}):(\\\\d{2})';\n const match = normalizedValue.match(new RegExp(`^${timePattern}$`));\n\n if (!match) {\n return null;\n }\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n const second = hasSeconds ? Number(match[3]) : 0;\n\n if (minute > 59 || second > 59) {\n return null;\n }\n\n if (hour > 24 || (hour === 24 && (minute > 0 || second > 0))) {\n return null;\n }\n\n const valueText = [hour, minute, ...(hasSeconds ? [second] : [])]\n .map((part) => String(part).padStart(2, '0'))\n .join(':');\n\n return {\n dateValue:\n hour === 24\n ? dayjs('00:00:00', VALUE_TIME_SECOND_FORMATTER, true).add(1, 'day')\n : dayjs(valueText, hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER, true),\n valueText,\n };\n};\n\n/** TimePicker 상단 입력 표시 값 */\nconst formatTimePickerDisplayInput = (value: Dayjs, hasSeconds: boolean) =>\n value.format(hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER);\n\n/** focus 가능 요소 여부 */\nconst isFocusableElement = (element: Element): element is HTMLElement => {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n if (element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true') {\n return false;\n }\n\n if (element.tabIndex < 0 || !element.getClientRects().length) {\n return false;\n }\n\n return true;\n};\n\n/** 루트 기준 인접 focus 요소 */\nconst getAdjacentFocusableElement = (rootElement: HTMLElement, isBackward?: boolean) => {\n const focusableElements = Array.from(\n document.querySelectorAll(\n 'a[href],button,input,select,textarea,[tabindex]:not([tabindex=\"-1\"])',\n ),\n ).filter(\n (element): element is HTMLElement =>\n isFocusableElement(element) && !rootElement.contains(element),\n );\n\n if (isBackward) {\n return focusableElements\n .reverse()\n .find((element) =>\n Boolean(rootElement.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING),\n );\n }\n\n return focusableElements.find((element) =>\n Boolean(rootElement.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_FOLLOWING),\n );\n};\n\n/** input ref 값 할당 */\nconst assignInputRef = (\n inputRef: Ref<HTMLInputElement> | undefined,\n value: HTMLInputElement | null,\n) => {\n if (!inputRef) {\n return;\n }\n\n if (typeof inputRef === 'function') {\n inputRef(value);\n return;\n }\n\n (inputRef as { current: HTMLInputElement | null }).current = value;\n};\n\ninterface OwnProps {\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: OwpTimePickerValue;\n format?: string;\n useAmPm?: boolean;\n placeholder?: string;\n disabledClearButton?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: string) => void;\n slotProps?: TimePickerProps<false>['slotProps'];\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpTimePickerProps = OwnProps &\n Omit<\n TimePickerProps<false>,\n | 'value'\n | 'onChange'\n | 'label'\n | 'format'\n | 'ampm'\n | 'slotProps'\n | 'enableAccessibleFieldDOMStructure'\n >;\n\n/**\n * OwpTimePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값, clear 버튼 동작 대상 값\n * @param format 시간 포맷\n * @param useAmPm 오전/오후 포맷 사용 여부\n * @param disabledClearButton clear 버튼 비활성화 여부\n * @param fullWidth 전체 너비 사용 여부\n * @param onChange onChange 핸들러, clear 버튼 활성화 조건\n * @param slotProps TimePicker slot props\n * @param textFieldProps TextField props\n */\nconst OwpTimePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n format = VALUE_TIME_FORMATTER,\n useAmPm,\n placeholder,\n disabledClearButton,\n fullWidth,\n onChange,\n textFieldProps,\n localeText,\n open: openProp,\n onOpen,\n onClose,\n slots,\n slotProps,\n ...timePickerProps\n}: OwpTimePickerProps) => {\n const hasSeconds = /s/i.test(format);\n const normalizedValueFormat = hasSeconds ? VALUE_TIME_SECOND_FORMATTER : VALUE_TIME_FORMATTER;\n const useMeridiem = useAmPm ?? /a/i.test(format);\n const displayFormat = useMeridiem\n ? hasSeconds\n ? 'A hh:mm:ss'\n : 'A hh:mm'\n : normalizedValueFormat;\n const resolvedCloseOnSelect = timePickerProps.closeOnSelect ?? false;\n const resolvedTimeSteps = {\n minutes: 1,\n seconds: 1,\n ...timePickerProps.timeSteps,\n };\n const timePickerViews = useMemo(\n () =>\n hasSeconds ? (['hours', 'minutes', 'seconds'] as const) : (['hours', 'minutes'] as const),\n [hasSeconds],\n );\n const closeTimePickerSectionIndex = timePickerViews.length - 1;\n const timePickerEditorWidth =\n TIME_PICKER_EDITOR_SECTION_WIDTH * (timePickerViews.length + (useMeridiem ? 1 : 0));\n const [internalOpen, setInternalOpen] = useState(false);\n const [inputDraftValue, setInputDraftValue] = useState('');\n const [hasPickerInputCommitError, setHasPickerInputCommitError] = useState(false);\n const [pickerDraftValue, setPickerDraftValue] = useState<Dayjs | null>(null);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n const externalInputRef = useRef<HTMLInputElement | null>(null);\n const pickerInputRef = useRef<HTMLInputElement | null>(null);\n const isTextFieldMouseDownRef = useRef(false);\n const skipNextOpenRef = useRef(false);\n const suppressOpenUntilRef = useRef(0);\n const skipNextTextFieldClickRef = useRef(false);\n const { t, i18n } = useOwpTranslation();\n const languageId = i18n.resolvedLanguage ?? i18n.language ?? 'kr';\n const adapterLocale = languageId === 'kr' ? 'ko' : 'en';\n const resolvedLocaleText = {\n okButtonLabel: t('Button.확인'),\n clearButtonLabel: t('Button.초기화'),\n fieldHoursPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMinutesPlaceholder: () => EMPTY_TIME_SECTION,\n fieldMeridiemPlaceholder: () => EMPTY_TIME_SECTION,\n ...localeText,\n };\n const resolvedPlaceholder = placeholder ?? (useMeridiem ? '–– ––:––' : '––:––');\n const resolvedTextFieldSx = [TIME_PICKER_TEXT_FIELD_SX, sx, textFieldProps?.sx].filter(\n Boolean,\n ) as SxProps<Theme>;\n const isClearDisabled = Boolean(\n disabledClearButton || timePickerProps.disabled || timePickerProps.readOnly,\n );\n const canClear = Boolean(onChange) && !disabledClearButton;\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n const setPickerInputDraftValue = useCallback((nextValue: string) => {\n setInputDraftValue(nextValue);\n setHasPickerInputCommitError(false);\n }, []);\n\n const selectedValue = useMemo(() => {\n if (!value) {\n return null;\n }\n\n if (dayjs.isDayjs(value)) {\n return value;\n }\n\n if (typeof value === 'string') {\n const parsedInputValue = parseTimePickerInput(value, hasSeconds);\n\n if (parsedInputValue?.dateValue.isValid()) {\n return parsedInputValue.dateValue;\n }\n\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n return parsedValue.isValid() ? parsedValue : null;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? parsedValue : null;\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const selectedInputValue = useMemo(() => {\n if (!value) {\n return '';\n }\n\n if (typeof value === 'string') {\n const parsedValue = dayjs(value, normalizedValueFormat, true);\n\n if (parsedValue.isValid()) {\n return formatTimePickerDisplayInput(parsedValue, hasSeconds);\n }\n\n return value;\n }\n\n const parsedValue = dayjs(value);\n return parsedValue.isValid() ? formatTimePickerDisplayInput(parsedValue, hasSeconds) : '';\n }, [hasSeconds, normalizedValueFormat, value]);\n\n const handleChange = (nextValue: Dayjs | null) => {\n const nextValueText = nextValue?.isValid()\n ? nextValue.format(normalizedValueFormat)\n : undefined;\n setPickerInputDraftValue(\n nextValue?.isValid() ? formatTimePickerDisplayInput(nextValue, hasSeconds) : '',\n );\n onChange?.(nextValueText);\n };\n\n const commitInputDraftValue = useCallback(\n (showError?: boolean) => {\n if (!inputDraftValue) {\n setPickerInputDraftValue('');\n onChange?.('');\n\n return true;\n }\n\n const parsedInput = parseTimePickerInput(inputDraftValue, hasSeconds);\n\n if (!parsedInput?.dateValue.isValid()) {\n if (showError && inputDraftValue) {\n setHasPickerInputCommitError(true);\n }\n\n return false;\n }\n\n setPickerInputDraftValue(parsedInput.valueText);\n onChange?.(parsedInput.valueText);\n\n return true;\n },\n [hasSeconds, inputDraftValue, onChange, setPickerInputDraftValue],\n );\n\n const handleOpen = useCallback(() => {\n if (skipNextOpenRef.current || Date.now() < suppressOpenUntilRef.current) {\n skipNextOpenRef.current = false;\n return;\n }\n\n if (!isControlledOpen) {\n setInternalOpen(true);\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n onOpen?.();\n }, [isControlledOpen, onOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n const closePicker = useCallback(() => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n\n onClose?.();\n }, [isControlledOpen, onClose]);\n\n const handleClose = useCallback(() => {\n commitInputDraftValue();\n closePicker();\n }, [closePicker, commitInputDraftValue]);\n\n const handleClickAwayClose = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n handleClose();\n }, [handleClose]);\n\n const closePickerWithoutReopen = useCallback(() => {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n }, [closePicker]);\n\n const focusAdjacentElement = useCallback((isBackward?: boolean) => {\n const rootElement = rootRef.current;\n\n if (!rootElement) {\n return;\n }\n\n window.requestAnimationFrame(() => {\n getAdjacentFocusableElement(rootElement, isBackward)?.focus();\n });\n }, []);\n\n const focusExternalInput = useCallback(() => {\n window.requestAnimationFrame(() => {\n externalInputRef.current?.focus();\n });\n }, []);\n\n const handleTextFieldInputRef = useCallback(\n (input: HTMLInputElement | null) => {\n externalInputRef.current = input;\n assignInputRef(textFieldProps?.inputRef as Ref<HTMLInputElement> | undefined, input);\n },\n [textFieldProps?.inputRef],\n );\n\n const handleClear = () => {\n onChange?.('');\n setPickerInputDraftValue('');\n };\n\n const handlePickerInputChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextInputValue = formatTimePickerInput(event.target.value, hasSeconds);\n const parsedInput = parseTimePickerInput(nextInputValue, hasSeconds);\n\n setPickerInputDraftValue(nextInputValue);\n\n if (parsedInput?.dateValue.isValid()) {\n setPickerDraftValue(parsedInput.dateValue);\n }\n },\n [hasSeconds, setPickerInputDraftValue],\n );\n\n const stopPickerInputKeyboardEvent = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n event.nativeEvent.stopImmediatePropagation();\n },\n [],\n );\n\n const handlePickerInputKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLInputElement>) => {\n stopPickerInputKeyboardEvent(event);\n\n if (event.key === 'Escape') {\n event.preventDefault();\n suppressOpenUntilRef.current = Date.now() + 200;\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n closePicker();\n focusExternalInput();\n return;\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n\n if (!commitInputDraftValue(true)) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusAdjacentElement(event.shiftKey);\n return;\n }\n\n if (event.key !== 'Enter') {\n return;\n }\n\n event.preventDefault();\n if (commitInputDraftValue(true)) {\n suppressOpenUntilRef.current = Date.now() + 200;\n closePicker();\n focusExternalInput();\n }\n },\n [\n closePicker,\n commitInputDraftValue,\n focusAdjacentElement,\n focusExternalInput,\n selectedInputValue,\n selectedValue,\n setPickerInputDraftValue,\n stopPickerInputKeyboardEvent,\n ],\n );\n\n const handlePickerInputClear = useCallback(\n (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onChange?.('');\n setPickerInputDraftValue('');\n setPickerDraftValue(null);\n pickerInputRef.current?.focus();\n },\n [onChange, setPickerInputDraftValue],\n );\n\n const handlePickerClockChange = useCallback(\n (nextValue: Dayjs | null, selectedView?: string) => {\n if (!nextValue?.isValid()) {\n return;\n }\n\n const nextValueText = nextValue.format(normalizedValueFormat);\n\n setPickerDraftValue(nextValue);\n setPickerInputDraftValue(nextValueText);\n\n if (selectedView !== timePickerViews[closeTimePickerSectionIndex]) {\n return;\n }\n\n suppressOpenUntilRef.current = Date.now() + 200;\n onChange?.(nextValueText);\n closePickerWithoutReopen();\n focusExternalInput();\n },\n [\n closeTimePickerSectionIndex,\n closePickerWithoutReopen,\n focusExternalInput,\n normalizedValueFormat,\n onChange,\n setPickerInputDraftValue,\n timePickerViews,\n ],\n );\n\n const handleTextFieldMouseDown = useCallback(\n (event: OwpTimePickerTextFieldMouseDownEvent) => {\n textFieldProps?.onMouseDown?.(event);\n isTextFieldMouseDownRef.current = true;\n },\n [textFieldProps],\n );\n\n const handleTextFieldFocus = useCallback(\n (event: OwpTimePickerTextFieldFocusEvent) => {\n textFieldProps?.onFocus?.(event);\n\n if (\n event.defaultPrevented ||\n timePickerProps.disabled ||\n timePickerProps.readOnly ||\n isOpen\n ) {\n return;\n }\n\n skipNextTextFieldClickRef.current = isTextFieldMouseDownRef.current;\n handleOpen();\n },\n [handleOpen, isOpen, textFieldProps, timePickerProps.disabled, timePickerProps.readOnly],\n );\n\n const handleTextFieldClick = useCallback(\n (event: OwpTimePickerTextFieldClickEvent) => {\n textFieldProps?.onClick?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (skipNextTextFieldClickRef.current) {\n skipNextTextFieldClickRef.current = false;\n isTextFieldMouseDownRef.current = false;\n return;\n }\n\n isTextFieldMouseDownRef.current = false;\n\n if (isOpen) {\n skipNextOpenRef.current = true;\n handleClose();\n queueMicrotask(() => {\n skipNextOpenRef.current = false;\n });\n return;\n }\n\n handleOpen();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n const handleTextFieldKeyDown = useCallback(\n (event: OwpTimePickerTextFieldKeyDownEvent) => {\n textFieldProps?.onKeyDown?.(event);\n\n if (event.defaultPrevented || timePickerProps.disabled || timePickerProps.readOnly) {\n return;\n }\n\n if (!isOpen && isTimePickerOpenKey(event)) {\n event.preventDefault();\n handleOpen();\n return;\n }\n\n if (!isOpen || !isValueEditingKey(event)) {\n return;\n }\n\n handleClose();\n },\n [\n handleClose,\n handleOpen,\n isOpen,\n textFieldProps,\n timePickerProps.disabled,\n timePickerProps.readOnly,\n ],\n );\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n setPickerInputDraftValue(selectedInputValue);\n setPickerDraftValue(selectedValue);\n }, [isOpen, selectedInputValue, selectedValue, setPickerInputDraftValue]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const animationFrameId = window.requestAnimationFrame(() => {\n pickerInputRef.current?.focus();\n });\n\n return () => {\n window.cancelAnimationFrame(animationFrameId);\n };\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const handleDocumentMouseDown = (event: MouseEvent) => {\n const target = event.target;\n\n if (!(target instanceof Node)) {\n return;\n }\n\n if (rootRef.current?.contains(target) || popperRef.current?.contains(target)) {\n return;\n }\n\n handleClickAwayClose();\n };\n\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n\n return () => {\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleClickAwayClose, isOpen]);\n\n const TimePickerInputAdornment = ({ position, children, ...restProps }: InputAdornmentProps) => (\n <InputAdornment position={position} {...restProps}>\n {position === 'end' && canClear && (\n <IconButton\n className=\"clearButton\"\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={isClearDisabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n handleClear();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n {children}\n </InputAdornment>\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale={adapterLocale}>\n <div ref={rootRef}>\n <TimePicker\n {...timePickerProps}\n enableAccessibleFieldDOMStructure={false}\n ampm={useMeridiem}\n open={false}\n closeOnSelect={resolvedCloseOnSelect}\n timeSteps={resolvedTimeSteps}\n label={label}\n value={selectedValue}\n views={timePickerViews}\n format={displayFormat}\n localeText={resolvedLocaleText}\n onChange={handleChange}\n onOpen={handleOpen}\n onClose={handleClose}\n slots={{\n ...slots,\n inputAdornment: TimePickerInputAdornment,\n }}\n slotProps={{\n ...slotProps,\n openPickerButton: {\n ...(typeof slotProps?.openPickerButton === 'function'\n ? undefined\n : slotProps?.openPickerButton),\n size: 'small',\n tabIndex: -1,\n onClick: (event) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isOpen) {\n handleOpen();\n }\n },\n sx: {\n margin: 0,\n padding: 0,\n },\n },\n openPickerIcon: {\n ...(typeof slotProps?.openPickerIcon === 'function'\n ? undefined\n : slotProps?.openPickerIcon),\n fontSize: 'small',\n },\n inputAdornment: {\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment),\n sx: {\n marginBottom: 0,\n marginLeft: 0,\n gap: 0,\n ...(typeof slotProps?.inputAdornment === 'function'\n ? undefined\n : slotProps?.inputAdornment?.sx),\n },\n },\n textField: {\n variant,\n fullWidth,\n ...textFieldProps,\n className: clsx(\n !fullWidth && (useMeridiem ? 'w-[160px]' : 'w-[140px]'),\n textFieldProps?.className,\n ),\n onMouseDown: handleTextFieldMouseDown,\n onFocus: handleTextFieldFocus,\n onClick: handleTextFieldClick,\n onKeyDown: handleTextFieldKeyDown,\n inputRef: handleTextFieldInputRef,\n placeholder: resolvedPlaceholder,\n sx: resolvedTextFieldSx,\n },\n }}\n />\n <Popper\n open={isOpen}\n anchorEl={rootRef.current}\n placement=\"bottom-end\"\n ref={popperRef}\n modifiers={[\n {\n name: 'offset',\n options: {\n offset: [0, 7],\n },\n },\n ]}\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <Paper\n elevation={8}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n onKeyUp={(event) => {\n event.stopPropagation();\n }}\n onMouseDown={(event) => {\n event.stopPropagation();\n }}\n sx={{\n borderRadius: 1,\n lineHeight: 0,\n overflow: 'hidden',\n width: timePickerEditorWidth,\n }}\n >\n <TextField\n autoFocus\n inputRef={pickerInputRef}\n fullWidth\n size=\"small\"\n value={inputDraftValue}\n error={hasPickerInputCommitError}\n helperText={\n hasPickerInputCommitError ? t(PICKER_INVALID_INPUT_MESSAGE_KEY) : undefined\n }\n placeholder={normalizedValueFormat}\n onChange={handlePickerInputChange}\n onKeyDown={handlePickerInputKeyDown}\n slotProps={{\n htmlInput: {\n inputMode: 'numeric',\n 'aria-label': normalizedValueFormat,\n },\n input: {\n sx: {\n paddingRight: 0.5,\n },\n endAdornment: (\n <InputAdornment\n position=\"end\"\n sx={{\n marginLeft: 0,\n }}\n >\n <IconButton\n size=\"small\"\n tabIndex={-1}\n aria-label={resolvedLocaleText.clearButtonLabel}\n disabled={!inputDraftValue}\n onClick={handlePickerInputClear}\n onMouseDown={(event) => {\n event.preventDefault();\n event.stopPropagation();\n }}\n sx={{\n margin: 0,\n padding: 0.25,\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ),\n },\n }}\n sx={{\n boxSizing: 'border-box',\n width: timePickerEditorWidth,\n px: 1,\n py: 1,\n '& .MuiOutlinedInput-root': {\n borderRadius: 0.75,\n fontSize: 13,\n },\n }}\n />\n <MultiSectionDigitalClock\n ampm={useMeridiem}\n value={pickerDraftValue}\n views={timePickerViews}\n onChange={(nextValue, _selectionState, selectedView) =>\n handlePickerClockChange(nextValue, selectedView)\n }\n timeSteps={resolvedTimeSteps}\n slotProps={{\n digitalClockSectionItem: {\n sx: SELECTED_TIME_ITEM_SX,\n },\n }}\n sx={{\n border: 0,\n width: timePickerEditorWidth,\n '& .MuiMultiSectionDigitalClockSection-root': {\n border: 0,\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_WIDTH,\n flex: `0 0 ${TIME_PICKER_EDITOR_SECTION_WIDTH}px`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n },\n '& .MuiMultiSectionDigitalClockSection-item': {\n alignSelf: 'stretch',\n boxSizing: 'border-box',\n width: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n minWidth: TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH,\n justifyContent: 'center',\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n }}\n />\n </Paper>\n </Popper>\n </div>\n </LocalizationProvider>\n );\n};\n\nexport { OwpTimePicker };\n"],"names":["ensureDayjsBrowserSetup","EMPTY_TIME_SECTION","VALUE_TIME_SECOND_FORMATTER","TIME_PICKER_EDITOR_SECTION_WIDTH","TIME_PICKER_EDITOR_SECTION_ITEM_WIDTH","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_SX","isValueEditingKey","__name","event","isTimePickerOpenKey","formatTimePickerInput","value","hasSeconds","digitLimit","digits","parseTimePickerInput","normalizedValue","timePattern","match","hour","minute","second","valueText","part","dayjs","VALUE_TIME_FORMATTER","formatTimePickerDisplayInput","isFocusableElement","element","getAdjacentFocusableElement","rootElement","isBackward","focusableElements","assignInputRef","inputRef","OwpTimePicker","label","variant","sx","format","useAmPm","placeholder","disabledClearButton","fullWidth","onChange","textFieldProps","localeText","openProp","onOpen","onClose","slots","slotProps","timePickerProps","normalizedValueFormat","useMeridiem","displayFormat","resolvedCloseOnSelect","resolvedTimeSteps","timePickerViews","useMemo","closeTimePickerSectionIndex","timePickerEditorWidth","internalOpen","setInternalOpen","useState","inputDraftValue","setInputDraftValue","hasPickerInputCommitError","setHasPickerInputCommitError","pickerDraftValue","setPickerDraftValue","rootRef","useRef","popperRef","externalInputRef","pickerInputRef","isTextFieldMouseDownRef","skipNextOpenRef","suppressOpenUntilRef","skipNextTextFieldClickRef","t","i18n","useOwpTranslation","adapterLocale","resolvedLocaleText","resolvedPlaceholder","resolvedTextFieldSx","isClearDisabled","canClear","isControlledOpen","isOpen","setPickerInputDraftValue","useCallback","nextValue","selectedValue","parsedInputValue","parsedValue","selectedInputValue","handleChange","nextValueText","commitInputDraftValue","showError","parsedInput","handleOpen","closePicker","handleClose","handleClickAwayClose","closePickerWithoutReopen","focusAdjacentElement","_a","focusExternalInput","handleTextFieldInputRef","input","handleClear","handlePickerInputChange","nextInputValue","stopPickerInputKeyboardEvent","handlePickerInputKeyDown","handlePickerInputClear","handlePickerClockChange","selectedView","handleTextFieldMouseDown","handleTextFieldFocus","handleTextFieldClick","handleTextFieldKeyDown","useEffect","animationFrameId","handleDocumentMouseDown","target","_b","jsx","LocalizationProvider","AdapterDayjs","jsxs","TimePicker","position","children","restProps","InputAdornment","IconButton","ClearIcon","clsx","Popper","theme","Paper","TextField","PICKER_INVALID_INPUT_MESSAGE_KEY","MultiSectionDigitalClock","_selectionState"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
const
|
|
1
|
+
const E = "YYYY", Y = "YYYY-MM", A = "YYYY-MM-DD", M = "HH:mm", T = "Message.올바른 형식으로 입력해주세요.";
|
|
2
2
|
export {
|
|
3
|
-
T as
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
T as PICKER_INVALID_INPUT_MESSAGE_KEY,
|
|
4
|
+
A as VALUE_DATE_FORMATTER,
|
|
5
|
+
Y as VALUE_MONTH_FORMATTER,
|
|
6
|
+
M as VALUE_TIME_FORMATTER,
|
|
7
|
+
E as VALUE_YEAR_FORMATTER
|
|
7
8
|
};
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/OwpPicker/constants/index.ts"],"sourcesContent":["export const VALUE_YEAR_FORMATTER = 'YYYY';\nexport const VALUE_MONTH_FORMATTER = 'YYYY-MM';\nexport const VALUE_DATE_FORMATTER = 'YYYY-MM-DD';\nexport const VALUE_TIME_FORMATTER = 'HH:mm';\n"],"names":["VALUE_YEAR_FORMATTER","VALUE_MONTH_FORMATTER","VALUE_DATE_FORMATTER","VALUE_TIME_FORMATTER"],"mappings":"AAAO,MAAMA,IAAuB,QACvBC,IAAwB,WACxBC,IAAuB,cACvBC,IAAuB;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/OwpPicker/constants/index.ts"],"sourcesContent":["export const VALUE_YEAR_FORMATTER = 'YYYY';\nexport const VALUE_MONTH_FORMATTER = 'YYYY-MM';\nexport const VALUE_DATE_FORMATTER = 'YYYY-MM-DD';\nexport const VALUE_TIME_FORMATTER = 'HH:mm';\nexport const PICKER_INVALID_INPUT_MESSAGE_KEY = 'Message.올바른 형식으로 입력해주세요.';\n"],"names":["VALUE_YEAR_FORMATTER","VALUE_MONTH_FORMATTER","VALUE_DATE_FORMATTER","VALUE_TIME_FORMATTER","PICKER_INVALID_INPUT_MESSAGE_KEY"],"mappings":"AAAO,MAAMA,IAAuB,QACvBC,IAAwB,WACxBC,IAAuB,cACvBC,IAAuB,SACvBC,IAAmC;"}
|
|
@@ -1,68 +1,92 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { jsx as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { IconButton as
|
|
8
|
-
import
|
|
9
|
-
import { forwardRef as
|
|
10
|
-
const
|
|
1
|
+
var H = Object.defineProperty;
|
|
2
|
+
var a = (t, m) => H(t, "name", { value: m, configurable: !0 });
|
|
3
|
+
import { jsx as s, jsxs as J } from "../../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
|
+
import L from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/AccessTime.js";
|
|
5
|
+
import Q from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/CalendarMonth.js";
|
|
6
|
+
import U from "../../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Clear.js";
|
|
7
|
+
import { IconButton as b, InputAdornment as W, TextField as X } from "@mui/material";
|
|
8
|
+
import z from "dayjs";
|
|
9
|
+
import { forwardRef as Y } from "react";
|
|
10
|
+
const P = /* @__PURE__ */ a((t, m) => {
|
|
11
|
+
if (t) {
|
|
12
|
+
if (typeof t == "function") {
|
|
13
|
+
t(m);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
t.current = m;
|
|
17
|
+
}
|
|
18
|
+
}, "assignInputRef"), D = Y(
|
|
11
19
|
({
|
|
12
|
-
value:
|
|
13
|
-
valueFormatter:
|
|
14
|
-
useRange:
|
|
15
|
-
showTimeSelect:
|
|
16
|
-
showTimeSelectOnly:
|
|
17
|
-
disabledClearButton:
|
|
18
|
-
reset:
|
|
19
|
-
onInputAreaClick:
|
|
20
|
-
onIconClick:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
value: t,
|
|
21
|
+
valueFormatter: m,
|
|
22
|
+
useRange: M,
|
|
23
|
+
showTimeSelect: N,
|
|
24
|
+
showTimeSelectOnly: d,
|
|
25
|
+
disabledClearButton: c,
|
|
26
|
+
reset: f,
|
|
27
|
+
onInputAreaClick: p,
|
|
28
|
+
onIconClick: e,
|
|
29
|
+
inputElementRef: B,
|
|
30
|
+
onClick: i,
|
|
31
|
+
onFocus: g,
|
|
32
|
+
onKeyDown: l,
|
|
33
|
+
onInputFocus: o,
|
|
34
|
+
onInputKeyDown: h,
|
|
35
|
+
inputRef: R,
|
|
36
|
+
...x
|
|
37
|
+
}, S) => {
|
|
38
|
+
var j;
|
|
39
|
+
const T = N || d, V = /* @__PURE__ */ a((r) => {
|
|
40
|
+
p == null || p(), i == null || i(r);
|
|
41
|
+
}, "handleInputClick"), q = /* @__PURE__ */ a((r) => {
|
|
42
|
+
o == null || o(r), g == null || g(r);
|
|
43
|
+
}, "handleInputFocus"), E = /* @__PURE__ */ a((r) => {
|
|
44
|
+
h == null || h(r), l == null || l(r);
|
|
45
|
+
}, "handleInputKeyDown"), G = /* @__PURE__ */ a((r) => {
|
|
46
|
+
r.stopPropagation(), e == null || e(), i == null || i(r);
|
|
29
47
|
}, "handleIconClick");
|
|
30
|
-
return /* @__PURE__ */
|
|
31
|
-
|
|
48
|
+
return /* @__PURE__ */ s(
|
|
49
|
+
X,
|
|
32
50
|
{
|
|
33
|
-
inputRef: j,
|
|
34
51
|
variant: "standard",
|
|
35
|
-
...
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
...x,
|
|
53
|
+
inputRef: /* @__PURE__ */ a((r) => {
|
|
54
|
+
P(S, r), P(B, r), P(R, r);
|
|
55
|
+
}, "inputRef"),
|
|
56
|
+
onClick: V,
|
|
57
|
+
onFocus: q,
|
|
58
|
+
onKeyDown: E,
|
|
59
|
+
value: t ? M ? typeof t == "string" ? t.split(" - ").map((r) => z(r).isValid() ? z(r).format(m) : "").join(" ~ ") : "" : d && typeof t == "string" ? t : z(t).format(m) : "",
|
|
38
60
|
slotProps: {
|
|
39
|
-
...
|
|
61
|
+
...x.slotProps,
|
|
40
62
|
input: {
|
|
41
63
|
readOnly: !0,
|
|
42
|
-
endAdornment: /* @__PURE__ */
|
|
43
|
-
!
|
|
44
|
-
|
|
64
|
+
endAdornment: /* @__PURE__ */ J(W, { position: "end", children: [
|
|
65
|
+
!c && /* @__PURE__ */ s(
|
|
66
|
+
b,
|
|
45
67
|
{
|
|
46
68
|
className: "m-0 p-0",
|
|
47
69
|
size: "small",
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
tabIndex: -1,
|
|
71
|
+
onClick: /* @__PURE__ */ a((r) => {
|
|
72
|
+
r.stopPropagation(), f == null || f();
|
|
50
73
|
}, "onClick"),
|
|
51
|
-
children: /* @__PURE__ */
|
|
74
|
+
children: /* @__PURE__ */ s(U, { fontSize: "small" })
|
|
52
75
|
}
|
|
53
76
|
),
|
|
54
|
-
/* @__PURE__ */
|
|
55
|
-
|
|
77
|
+
/* @__PURE__ */ s(
|
|
78
|
+
b,
|
|
56
79
|
{
|
|
57
80
|
className: "m-0 p-0",
|
|
58
81
|
size: "small",
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
82
|
+
tabIndex: -1,
|
|
83
|
+
"aria-label": T ? "time-picker-trigger" : "date-picker-trigger",
|
|
84
|
+
onClick: G,
|
|
85
|
+
children: d ? /* @__PURE__ */ s(L, { fontSize: "small" }) : /* @__PURE__ */ s(Q, { fontSize: "small" })
|
|
62
86
|
}
|
|
63
87
|
)
|
|
64
88
|
] }),
|
|
65
|
-
...(
|
|
89
|
+
...(j = x.slotProps) == null ? void 0 : j.input
|
|
66
90
|
}
|
|
67
91
|
}
|
|
68
92
|
}
|
|
@@ -70,6 +94,6 @@ const J = T(
|
|
|
70
94
|
}
|
|
71
95
|
);
|
|
72
96
|
export {
|
|
73
|
-
|
|
97
|
+
D as DatePickerInput
|
|
74
98
|
};
|
|
75
99
|
//# sourceMappingURL=DatePickerInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.js","sources":["../../../../src/components/OwpPicker/internal/DatePickerInput.tsx"],"sourcesContent":["import AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { IconButton, InputAdornment, TextField, TextFieldProps } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { type MouseEventHandler, forwardRef } from 'react';\n\ntype DatePickerValue = string | Date;\ntype TextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\n\ninterface OwnProps {\n valueFormatter?: string;\n value?: DatePickerValue;\n useRange?: boolean;\n showTimeSelect?: boolean;\n showTimeSelectOnly?: boolean;\n disabledClearButton?: boolean;\n reset?: () => void;\n onInputAreaClick?: VoidFunction;\n onIconClick?: VoidFunction;\n}\n\n/**\n * DatePickerInput 컴포넌트\n * @param value 현재 값\n * @param valueFormatter valueFormatter 값\n * @param useRange useRange 값\n * @param showTimeSelect showTimeSelect 값\n * @param showTimeSelectOnly showTimeSelectOnly 값\n * @param disabledClearButton disabledClearButton 값\n * @param reset reset 값\n * @param onInputAreaClick 입력 영역 클릭 핸들러\n * @param onIconClick 아이콘 클릭 핸들러\n * @param ref forwardRef 참조\n */\nexport const DatePickerInput = forwardRef(\n (\n {\n value,\n valueFormatter,\n useRange,\n showTimeSelect,\n showTimeSelectOnly,\n disabledClearButton,\n reset,\n onInputAreaClick,\n onIconClick,\n onClick,\n ...restProps\n }: TextFieldProps & OwnProps,\n ref,\n ) => {\n const isTimePickerMode = showTimeSelect || showTimeSelectOnly;\n\n const handleInputClick: MouseEventHandler<HTMLDivElement> = (event) => {\n onInputAreaClick?.();\n onClick?.(event);\n };\n\n const handleIconClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation();\n onIconClick?.();\n onClick?.(event as unknown as TextFieldClickEvent);\n };\n\n return (\n <TextField\n
|
|
1
|
+
{"version":3,"file":"DatePickerInput.js","sources":["../../../../src/components/OwpPicker/internal/DatePickerInput.tsx"],"sourcesContent":["import AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { IconButton, InputAdornment, TextField, TextFieldProps } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { type MouseEventHandler, type Ref, forwardRef } from 'react';\n\ntype DatePickerValue = string | Date;\ntype TextFieldClickEvent = Parameters<NonNullable<TextFieldProps['onClick']>>[0];\ntype TextFieldFocusEventHandler = NonNullable<TextFieldProps['onFocus']>;\ntype TextFieldKeyDownEventHandler = NonNullable<TextFieldProps['onKeyDown']>;\n\ninterface OwnProps {\n valueFormatter?: string;\n value?: DatePickerValue;\n useRange?: boolean;\n showTimeSelect?: boolean;\n showTimeSelectOnly?: boolean;\n disabledClearButton?: boolean;\n reset?: () => void;\n onInputAreaClick?: VoidFunction;\n onIconClick?: VoidFunction;\n inputElementRef?: Ref<HTMLInputElement>;\n onInputFocus?: TextFieldFocusEventHandler;\n onInputKeyDown?: TextFieldKeyDownEventHandler;\n}\n\n/** input ref 값 할당 */\nconst assignInputRef = (\n inputRef: Ref<HTMLInputElement> | undefined,\n value: HTMLInputElement | null,\n) => {\n if (!inputRef) {\n return;\n }\n\n if (typeof inputRef === 'function') {\n inputRef(value);\n return;\n }\n\n (inputRef as { current: HTMLInputElement | null }).current = value;\n};\n\n/**\n * DatePickerInput 컴포넌트\n * @param value 현재 값\n * @param valueFormatter valueFormatter 값\n * @param useRange useRange 값\n * @param showTimeSelect showTimeSelect 값\n * @param showTimeSelectOnly showTimeSelectOnly 값\n * @param disabledClearButton disabledClearButton 값\n * @param reset reset 값\n * @param onInputAreaClick 입력 영역 클릭 핸들러\n * @param onIconClick 아이콘 클릭 핸들러\n * @param ref forwardRef 참조\n */\nexport const DatePickerInput = forwardRef(\n (\n {\n value,\n valueFormatter,\n useRange,\n showTimeSelect,\n showTimeSelectOnly,\n disabledClearButton,\n reset,\n onInputAreaClick,\n onIconClick,\n inputElementRef,\n onClick,\n onFocus,\n onKeyDown,\n onInputFocus,\n onInputKeyDown,\n inputRef: inputRefProp,\n ...restProps\n }: TextFieldProps & OwnProps,\n ref,\n ) => {\n const isTimePickerMode = showTimeSelect || showTimeSelectOnly;\n\n const handleInputClick: MouseEventHandler<HTMLDivElement> = (event) => {\n onInputAreaClick?.();\n onClick?.(event);\n };\n\n const handleInputFocus: TextFieldFocusEventHandler = (event) => {\n onInputFocus?.(event);\n onFocus?.(event);\n };\n\n const handleInputKeyDown: TextFieldKeyDownEventHandler = (event) => {\n onInputKeyDown?.(event);\n onKeyDown?.(event);\n };\n\n const handleIconClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation();\n onIconClick?.();\n onClick?.(event as unknown as TextFieldClickEvent);\n };\n\n return (\n <TextField\n variant=\"standard\"\n {...restProps}\n inputRef={(input) => {\n assignInputRef(ref as Ref<HTMLInputElement>, input);\n assignInputRef(inputElementRef, input);\n assignInputRef(inputRefProp, input);\n }}\n onClick={handleInputClick}\n onFocus={handleInputFocus}\n onKeyDown={handleInputKeyDown}\n value={\n value\n ? useRange\n ? typeof value === 'string'\n ? value\n .split(' - ')\n .map((v: string) => (dayjs(v).isValid() ? dayjs(v).format(valueFormatter) : ''))\n .join(' ~ ')\n : ''\n : showTimeSelectOnly && typeof value === 'string'\n ? value\n : dayjs(value).format(valueFormatter)\n : ''\n }\n slotProps={{\n ...restProps.slotProps,\n input: {\n readOnly: true,\n endAdornment: (\n <InputAdornment position=\"end\">\n {!disabledClearButton && (\n <IconButton\n className=\"m-0 p-0\"\n size=\"small\"\n tabIndex={-1}\n onClick={(evt) => {\n evt.stopPropagation();\n reset?.();\n }}\n >\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n )}\n <IconButton\n className=\"m-0 p-0\"\n size=\"small\"\n tabIndex={-1}\n aria-label={isTimePickerMode ? 'time-picker-trigger' : 'date-picker-trigger'}\n onClick={handleIconClick}\n >\n {showTimeSelectOnly ? (\n <AccessTimeIcon fontSize=\"small\" />\n ) : (\n <CalendarMonthIcon fontSize=\"small\" />\n )}\n </IconButton>\n </InputAdornment>\n ),\n ...restProps.slotProps?.input,\n },\n }}\n />\n );\n },\n);\n"],"names":["assignInputRef","__name","inputRef","value","DatePickerInput","forwardRef","valueFormatter","useRange","showTimeSelect","showTimeSelectOnly","disabledClearButton","reset","onInputAreaClick","onIconClick","inputElementRef","onClick","onFocus","onKeyDown","onInputFocus","onInputKeyDown","inputRefProp","restProps","ref","isTimePickerMode","handleInputClick","event","handleInputFocus","handleInputKeyDown","handleIconClick","jsx","TextField","input","v","dayjs","jsxs","InputAdornment","IconButton","evt","ClearIcon","AccessTimeIcon","CalendarMonthIcon","_a"],"mappings":"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"}
|
|
@@ -1,116 +1,138 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { jsxs as
|
|
4
|
-
import
|
|
5
|
-
import { Divider as
|
|
6
|
-
import { useHeaderWrapState as
|
|
7
|
-
import { clsx as
|
|
8
|
-
import { OwpPageTitle as
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
var R = Object.defineProperty;
|
|
2
|
+
var t = (m, s) => R(m, "name", { value: s, configurable: !0 });
|
|
3
|
+
import { jsxs as f, jsx as e } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
|
+
import k from "../../node_modules/.pnpm/@mui_icons-material@7.3.9_@mui_material@7.3.9_@emotion_react@11.14.0_@types_react@19.2._dc2be6bc014bebdac88a574e3e02c144/node_modules/@mui/icons-material/esm/Fitbit.js";
|
|
5
|
+
import { CircularProgress as B, Divider as b } from "@mui/material";
|
|
6
|
+
import { useHeaderWrapState as H } from "../../hooks/useHeaderWrapState.js";
|
|
7
|
+
import { clsx as i } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
8
|
+
import { OwpPageTitle as W } from "../OwpPageTitle/OwpPageTitle.js";
|
|
9
|
+
const h = /* @__PURE__ */ t((m) => {
|
|
10
|
+
switch (m) {
|
|
11
|
+
case "inherit":
|
|
12
|
+
return "1em";
|
|
13
|
+
case "small":
|
|
14
|
+
return "1.25rem";
|
|
15
|
+
case "large":
|
|
16
|
+
return "2.1875rem";
|
|
17
|
+
case "medium":
|
|
18
|
+
return "1.5rem";
|
|
19
|
+
default:
|
|
20
|
+
return 24;
|
|
21
|
+
}
|
|
22
|
+
}, "getTitleIconSize"), q = /* @__PURE__ */ t(({
|
|
23
|
+
className: m,
|
|
24
|
+
title: s,
|
|
25
|
+
disableTitleIcon: u,
|
|
26
|
+
headerProps: l,
|
|
14
27
|
usePageTitle: x,
|
|
15
|
-
actions:
|
|
28
|
+
actions: c,
|
|
16
29
|
leftSlot: a,
|
|
17
|
-
centerSlot:
|
|
18
|
-
children:
|
|
19
|
-
iconSize: d
|
|
30
|
+
centerSlot: r,
|
|
31
|
+
children: N,
|
|
32
|
+
iconSize: d,
|
|
33
|
+
loading: o
|
|
20
34
|
}) => {
|
|
21
|
-
const
|
|
22
|
-
|
|
35
|
+
const w = s != null && s !== "", p = !!(a || r), { containerRef: v, titleRef: y, slotsRef: g, actionsRef: j, isWrapped: n } = H([
|
|
36
|
+
s,
|
|
23
37
|
a,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
d
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
r,
|
|
39
|
+
c,
|
|
40
|
+
u,
|
|
41
|
+
d,
|
|
42
|
+
o
|
|
43
|
+
]), O = !!(w || c || a || r);
|
|
44
|
+
return /* @__PURE__ */ f("div", { className: i("OwpSection-root flex h-full w-full flex-col", m), children: [
|
|
45
|
+
O && (x ? /* @__PURE__ */ f("div", { className: "OwpSection-header", children: [
|
|
46
|
+
/* @__PURE__ */ e("div", { ...l, className: i("w-full", l == null ? void 0 : l.className), children: /* @__PURE__ */ e(
|
|
47
|
+
W,
|
|
33
48
|
{
|
|
34
|
-
title:
|
|
49
|
+
title: s,
|
|
35
50
|
leftSlot: a,
|
|
36
|
-
centerSlot:
|
|
37
|
-
actions:
|
|
51
|
+
centerSlot: r,
|
|
52
|
+
actions: c,
|
|
53
|
+
loading: o
|
|
38
54
|
}
|
|
39
55
|
) }),
|
|
40
|
-
/* @__PURE__ */ e(
|
|
41
|
-
] }) : /* @__PURE__ */ e("div", { className: "OwpSection-header mb-12 min-h-36 w-full", children: /* @__PURE__ */
|
|
56
|
+
/* @__PURE__ */ e(b, { className: "my-12" })
|
|
57
|
+
] }) : /* @__PURE__ */ e("div", { className: "OwpSection-header mb-12 min-h-36 w-full", children: /* @__PURE__ */ f(
|
|
42
58
|
"div",
|
|
43
59
|
{
|
|
44
|
-
ref:
|
|
45
|
-
...
|
|
46
|
-
className:
|
|
60
|
+
ref: v,
|
|
61
|
+
...l,
|
|
62
|
+
className: i(
|
|
47
63
|
"min-h-36 w-full",
|
|
48
|
-
|
|
49
|
-
|
|
64
|
+
n ? "flex flex-col gap-8" : "grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-x-8 gap-y-8",
|
|
65
|
+
l == null ? void 0 : l.className
|
|
50
66
|
),
|
|
51
67
|
children: [
|
|
52
|
-
|
|
68
|
+
s && /* @__PURE__ */ f(
|
|
53
69
|
"div",
|
|
54
70
|
{
|
|
55
|
-
ref:
|
|
56
|
-
className:
|
|
71
|
+
ref: y,
|
|
72
|
+
className: i(
|
|
57
73
|
"flex shrink-0 items-center gap-8 whitespace-nowrap",
|
|
58
|
-
|
|
74
|
+
n ? "order-1 self-start" : "col-start-1"
|
|
59
75
|
),
|
|
60
76
|
children: [
|
|
61
|
-
!
|
|
62
|
-
|
|
77
|
+
!u && (o ? /* @__PURE__ */ e(
|
|
78
|
+
B,
|
|
63
79
|
{
|
|
64
80
|
className: "shrink-0",
|
|
65
|
-
|
|
66
|
-
sx: {
|
|
81
|
+
size: h(d),
|
|
82
|
+
sx: { color: "secondary.main" }
|
|
67
83
|
}
|
|
68
|
-
)
|
|
69
|
-
|
|
84
|
+
) : /* @__PURE__ */ e(
|
|
85
|
+
k,
|
|
86
|
+
{
|
|
87
|
+
className: "shrink-0",
|
|
88
|
+
sx: { fontSize: h(d), color: "secondary.main" }
|
|
89
|
+
}
|
|
90
|
+
)),
|
|
91
|
+
/* @__PURE__ */ e("h6", { className: "shrink-0 whitespace-nowrap text-2xl font-medium", children: s })
|
|
70
92
|
]
|
|
71
93
|
}
|
|
72
94
|
),
|
|
73
95
|
p && /* @__PURE__ */ e(
|
|
74
96
|
"div",
|
|
75
97
|
{
|
|
76
|
-
ref:
|
|
77
|
-
className:
|
|
98
|
+
ref: g,
|
|
99
|
+
className: i(
|
|
78
100
|
"flex max-w-full",
|
|
79
|
-
|
|
101
|
+
n ? "order-2 self-end justify-end" : "col-start-2 justify-self-center"
|
|
80
102
|
),
|
|
81
|
-
children: /* @__PURE__ */
|
|
103
|
+
children: /* @__PURE__ */ f(
|
|
82
104
|
"div",
|
|
83
105
|
{
|
|
84
|
-
className:
|
|
106
|
+
className: i(
|
|
85
107
|
"flex max-w-full items-center gap-8",
|
|
86
|
-
|
|
108
|
+
n ? "flex-wrap justify-end" : "flex-nowrap justify-center"
|
|
87
109
|
),
|
|
88
110
|
children: [
|
|
89
111
|
a && /* @__PURE__ */ e("div", { className: "max-w-full", children: a }),
|
|
90
|
-
|
|
112
|
+
r && /* @__PURE__ */ e("div", { className: "max-w-full", children: r })
|
|
91
113
|
]
|
|
92
114
|
}
|
|
93
115
|
)
|
|
94
116
|
}
|
|
95
117
|
),
|
|
96
|
-
|
|
118
|
+
c && /* @__PURE__ */ e(
|
|
97
119
|
"div",
|
|
98
120
|
{
|
|
99
|
-
ref:
|
|
100
|
-
className:
|
|
121
|
+
ref: j,
|
|
122
|
+
className: i(
|
|
101
123
|
"flex max-w-full justify-end",
|
|
102
|
-
|
|
124
|
+
n ? "order-3 self-end" : "col-start-3 justify-self-end"
|
|
103
125
|
),
|
|
104
|
-
children: /* @__PURE__ */ e("div", { className: "flex max-w-full flex-wrap items-center gap-8", children:
|
|
126
|
+
children: /* @__PURE__ */ e("div", { className: "flex max-w-full flex-wrap items-center gap-8", children: c })
|
|
105
127
|
}
|
|
106
128
|
)
|
|
107
129
|
]
|
|
108
130
|
}
|
|
109
131
|
) })),
|
|
110
|
-
/* @__PURE__ */ e("div", { className: "OwpSection-body flex min-h-0 flex-1 flex-col", children:
|
|
132
|
+
/* @__PURE__ */ e("div", { className: "OwpSection-body flex min-h-0 flex-1 flex-col", children: N })
|
|
111
133
|
] });
|
|
112
134
|
}, "OwpSection");
|
|
113
135
|
export {
|
|
114
|
-
|
|
136
|
+
q as OwpSection
|
|
115
137
|
};
|
|
116
138
|
//# sourceMappingURL=OwpSection.js.map
|