@owp/core 2.2.5 → 2.3.0
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/index11.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 +5 -2
- package/dist/_virtual/index16.js.map +1 -1
- package/dist/_virtual/index17.js +2 -2
- package/dist/_virtual/index5.js +2 -5
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +2 -2
- package/dist/_virtual/index7.js +2 -2
- package/dist/components/OwpDialog/OwpDialog.js +48 -46
- package/dist/components/OwpDialog/OwpDialog.js.map +1 -1
- package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js +24 -24
- package/dist/components/OwpErrorStatusPage/OwpErrorStatusPage.js.map +1 -1
- package/dist/components/OwpLayout/OwpLayout.js +29 -30
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpMrtTable/OwpMrtTable.js +2 -2
- package/dist/components/OwpMrtTable/OwpMrtTable.js.map +1 -1
- package/dist/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.js → internal/OwpMrtTableNoDataOverlay.js} +1 -1
- package/dist/components/OwpMrtTable/internal/OwpMrtTableNoDataOverlay.js.map +1 -0
- package/dist/components/OwpMrtTable/{OwpMrtTableTopToolbar.js → internal/OwpMrtTableTopToolbar.js} +3 -3
- package/dist/components/OwpMrtTable/internal/OwpMrtTableTopToolbar.js.map +1 -0
- package/dist/components/OwpPageCarded/OwpPageCarded.js +81 -77
- package/dist/components/OwpPageCarded/OwpPageCarded.js.map +1 -1
- package/dist/components/OwpPageCarded/{OwpPageCardedHeader.js → internal/OwpPageCardedHeader.js} +2 -2
- package/dist/components/OwpPageCarded/internal/OwpPageCardedHeader.js.map +1 -0
- package/dist/components/OwpPageCarded/{OwpPageCardedSidebar.js → internal/OwpPageCardedSidebar.js} +3 -3
- package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebar.js.map +1 -0
- package/dist/components/OwpPageCarded/{OwpPageCardedSidebarContent.js → internal/OwpPageCardedSidebarContent.js} +2 -2
- package/dist/components/OwpPageCarded/internal/OwpPageCardedSidebarContent.js.map +1 -0
- package/dist/components/OwpPicker/OwpDatePicker.js +90 -83
- package/dist/components/OwpPicker/OwpDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpDateRangePicker.js +57 -50
- package/dist/components/OwpPicker/OwpDateRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpTimePicker.js +65 -61
- package/dist/components/OwpPicker/OwpTimePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpWeekDatePicker.js +58 -52
- package/dist/components/OwpPicker/OwpWeekDatePicker.js.map +1 -1
- package/dist/components/OwpPicker/OwpYearRangePicker.js +68 -62
- package/dist/components/OwpPicker/OwpYearRangePicker.js.map +1 -1
- package/dist/components/OwpPicker/{constants.js → constants/index.js} +1 -1
- package/dist/components/OwpPicker/constants/index.js.map +1 -0
- package/dist/components/OwpPicker/{AnimatedCalendarContainer.js → internal/AnimatedCalendarContainer.js} +2 -2
- package/dist/components/OwpPicker/internal/AnimatedCalendarContainer.js.map +1 -0
- package/dist/components/OwpPicker/{CalendarContainer.js → internal/CalendarContainer.js} +2 -2
- package/dist/components/OwpPicker/internal/CalendarContainer.js.map +1 -0
- package/dist/components/OwpPicker/{DatePickerInput.js → internal/DatePickerInput.js} +4 -4
- package/dist/components/OwpPicker/internal/DatePickerInput.js.map +1 -0
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js +205 -171
- package/dist/components/OwpQuerySelector/OwpQuerySelector.js.map +1 -1
- package/dist/components/OwpScrollbars/OwpScrollbars.js +16 -17
- package/dist/components/OwpScrollbars/OwpScrollbars.js.map +1 -1
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +112 -103
- package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
- package/dist/components/OwpStyleProvider/OwpStyleProvider.js +86 -39
- package/dist/components/OwpStyleProvider/OwpStyleProvider.js.map +1 -1
- package/dist/components/OwpSuspense/OwpSuspense.js.map +1 -1
- package/dist/components/OwpTable/OwpTable.js +50 -51
- package/dist/components/OwpTable/OwpTable.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +163 -308
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js +1 -1
- package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +1 -1
- package/dist/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.js → internal/OwpTreeGridLoadingOverlay.js} +2 -2
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -0
- package/dist/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.js → internal/OwpTreeGridNoDataOverlay.js} +2 -2
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -0
- package/dist/components/OwpTreeGrid/{utils/index.js → internal/treeGridLayout.js} +1 -1
- package/dist/components/OwpTreeGrid/internal/treeGridLayout.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +182 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -0
- package/dist/components/OwpTreeGrid/utils/perf.js.map +1 -0
- package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js +1 -1
- package/dist/components/OwpZoomImageSlider/OwpZoomImageSlider.js.map +1 -1
- package/dist/components/OwpZoomImageSlider/{ZoomImage.js → internal/ZoomImage.js} +1 -1
- package/dist/components/OwpZoomImageSlider/internal/ZoomImage.js.map +1 -0
- package/dist/contexts/OwpCoreProvider.js +22 -36
- package/dist/contexts/OwpCoreProvider.js.map +1 -1
- package/dist/contexts/OwpStoreProvider.js +9 -9
- package/dist/contexts/OwpStoreProvider.js.map +1 -1
- package/dist/hooks/useNavbar.js +24 -0
- package/dist/hooks/useNavbar.js.map +1 -0
- package/dist/hooks/useOwpSettings.js +21 -0
- package/dist/hooks/useOwpSettings.js.map +1 -0
- package/dist/hooks.js +75 -62
- package/dist/hooks.js.map +1 -1
- package/dist/index.js +98 -104
- package/dist/index.js.map +1 -1
- package/dist/layout/Layout.js +28 -29
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/layouts/FooterLayout.js +15 -16
- package/dist/layout/components/layouts/FooterLayout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js +21 -18
- package/dist/layout/components/layouts/NavbarToggleFabLayout.js.map +1 -1
- package/dist/layout/components/layouts/NavbarWrapperLayout.js +20 -21
- package/dist/layout/components/layouts/NavbarWrapperLayout.js.map +1 -1
- package/dist/layout/components/navbar/NavbarPinToggleButton.js +10 -11
- package/dist/layout/components/navbar/NavbarPinToggleButton.js.map +1 -1
- package/dist/layout/components/navbar/NavbarToggleButton.js +31 -32
- package/dist/layout/components/navbar/NavbarToggleButton.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyle.js +36 -37
- package/dist/layout/components/navbar/style/NavbarStyle.js.map +1 -1
- package/dist/layout/components/navbar/style/NavbarStyleContent.js +29 -30
- package/dist/layout/components/navbar/style/NavbarStyleContent.js.map +1 -1
- package/dist/layout/components/navigation/Navigation.js +18 -22
- package/dist/layout/components/navigation/Navigation.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +55 -60
- package/dist/layout/components/toggles/NavigationSearchToggle.js.map +1 -1
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js +44 -49
- package/dist/layout/components/toggles/NavigationShortcutsToggle.js.map +1 -1
- package/dist/layout/components/toolbar/ToolbarLayout.js +26 -27
- package/dist/layout/components/toolbar/ToolbarLayout.js.map +1 -1
- 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/constants.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/prop-types@15.8.1/node_modules/prop-types/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-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.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/store/atoms/navbarAtoms.js +84 -0
- package/dist/store/atoms/navbarAtoms.js.map +1 -0
- package/dist/store/atoms/owpSettingsAtoms.js +140 -0
- package/dist/store/atoms/owpSettingsAtoms.js.map +1 -0
- package/dist/store/atoms/owpStore.js +29 -0
- package/dist/store/atoms/owpStore.js.map +1 -0
- package/dist/store.js +44 -39
- package/dist/store.js.map +1 -1
- package/dist/types/components/OwpPageCarded/OwpPageCarded.d.ts +12 -41
- package/dist/types/components/OwpPageSkeleton/index.d.ts +1 -0
- package/dist/types/components/OwpPicker/OwpWeekDatePicker.d.ts +0 -1
- package/dist/types/components/OwpPicker/OwpYearRangePicker.d.ts +0 -1
- package/dist/types/components/OwpPicker/{DatePickerInput.d.ts → internal/DatePickerInput.d.ts} +1 -1
- package/dist/types/components/OwpQuerySelector/OwpQuerySelector.d.ts +1 -1
- package/dist/types/components/OwpQuerySelector/types/types.d.ts +2 -0
- package/dist/types/components/OwpTable/OwpTable.d.ts +1 -1
- package/dist/types/components/OwpTabs/OwpTab.d.ts +1 -1
- package/dist/types/components/OwpTabs/OwpTabs.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +3 -1
- package/dist/types/components/OwpTreeGrid/{OwpTreeGridLoadingOverlay.d.ts → internal/OwpTreeGridLoadingOverlay.d.ts} +1 -1
- package/dist/types/components/OwpTreeGrid/{OwpTreeGridNoDataOverlay.d.ts → internal/OwpTreeGridNoDataOverlay.d.ts} +1 -1
- package/dist/types/components/OwpTreeGrid/{utils/index.d.ts → internal/treeGridLayout.d.ts} +0 -2
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +75 -0
- package/dist/types/contexts/OwpCoreProvider.d.ts +2 -2
- package/dist/types/contexts/OwpStoreProvider.d.ts +4 -4
- package/dist/types/hooks/index.d.ts +2 -1
- package/dist/types/hooks/useNavbar.d.ts +19 -0
- package/dist/types/hooks/useOwpSettings.d.ts +79 -0
- package/dist/types/index.d.ts +1 -4
- package/dist/types/layout/components/navigation/Navigation.d.ts +6 -2
- package/dist/types/layout/components/toggles/NavigationSearchToggle.d.ts +5 -2
- package/dist/types/layout/components/toggles/NavigationShortcutsToggle.d.ts +5 -2
- package/dist/types/store/atoms/index.d.ts +3 -0
- package/dist/types/store/atoms/internal/types.d.ts +29 -0
- package/dist/types/store/atoms/navbarAtoms.d.ts +48 -0
- package/dist/types/store/atoms/owpSettingsAtoms.d.ts +89 -0
- package/dist/types/store/atoms/owpStore.d.ts +13 -0
- package/dist/types/store/index.d.ts +1 -3
- package/dist/types/types/OwpNavigationTypes.d.ts +14 -0
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/navigationUtils.d.ts +6 -2
- package/dist/types/utils/normalizeTimeToHourMinute.d.ts +11 -0
- package/dist/utils/navigationUtils.js.map +1 -1
- package/dist/utils/normalizeTimeToHourMinute.js +34 -0
- package/dist/utils/normalizeTimeToHourMinute.js.map +1 -0
- package/dist/utils/treeGridUtil.js +1 -1
- package/dist/utils/treeGridUtil.js.map +1 -1
- package/dist/utils.js +78 -75
- package/dist/utils.js.map +1 -1
- package/package.json +2 -6
- package/dist/components/OwpMrtTable/OwpMrtTableNoDataOverlay.js.map +0 -1
- package/dist/components/OwpMrtTable/OwpMrtTableTopToolbar.js.map +0 -1
- package/dist/components/OwpPageCarded/OwpPageCardedHeader.js.map +0 -1
- package/dist/components/OwpPageCarded/OwpPageCardedSidebar.js.map +0 -1
- package/dist/components/OwpPageCarded/OwpPageCardedSidebarContent.js.map +0 -1
- package/dist/components/OwpPicker/AnimatedCalendarContainer.js.map +0 -1
- package/dist/components/OwpPicker/CalendarContainer.js.map +0 -1
- package/dist/components/OwpPicker/DatePickerInput.js.map +0 -1
- package/dist/components/OwpPicker/constants.js.map +0 -1
- package/dist/components/OwpTreeGrid/OwpTreeGridLoadingOverlay.js.map +0 -1
- package/dist/components/OwpTreeGrid/OwpTreeGridNoDataOverlay.js.map +0 -1
- package/dist/components/OwpTreeGrid/perf.js.map +0 -1
- package/dist/components/OwpTreeGrid/utils/index.js.map +0 -1
- package/dist/components/OwpZoomImageSlider/ZoomImage.js.map +0 -1
- package/dist/hooks/useAppStore.js +0 -8
- package/dist/hooks/useAppStore.js.map +0 -1
- package/dist/node_modules/.pnpm/react-datepicker@8.7.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-datepicker/dist/react-datepicker.css +0 -1
- package/dist/store/generateReducersFromSlices.js +0 -18
- package/dist/store/generateReducersFromSlices.js.map +0 -1
- package/dist/store/lazyLoadedSlices.js +0 -16
- package/dist/store/lazyLoadedSlices.js.map +0 -1
- package/dist/store/middleware.js +0 -9
- package/dist/store/middleware.js.map +0 -1
- package/dist/store/navbarSlice.js +0 -71
- package/dist/store/navbarSlice.js.map +0 -1
- package/dist/store/navigationSlice.js +0 -46
- package/dist/store/navigationSlice.js.map +0 -1
- package/dist/store/owpSettingsSlice.js +0 -195
- package/dist/store/owpSettingsSlice.js.map +0 -1
- package/dist/store/store.js +0 -17
- package/dist/store/store.js.map +0 -1
- package/dist/store/withSlices.js +0 -27
- package/dist/store/withSlices.js.map +0 -1
- package/dist/types/hooks/useAppStore.d.ts +0 -7
- package/dist/types/store/generateReducersFromSlices.d.ts +0 -6
- package/dist/types/store/lazyLoadedSlices.d.ts +0 -9
- package/dist/types/store/middleware.d.ts +0 -17
- package/dist/types/store/navbarSlice.d.ts +0 -22
- package/dist/types/store/navigationSlice.d.ts +0 -92
- package/dist/types/store/owpSettingsSlice.d.ts +0 -112
- package/dist/types/store/store.d.ts +0 -13
- package/dist/types/store/withSlices.d.ts +0 -11
- /package/dist/components/OwpTreeGrid/{perf.js → utils/perf.js} +0 -0
- /package/dist/types/components/OwpMrtTable/{OwpMrtTableNoDataOverlay.d.ts → internal/OwpMrtTableNoDataOverlay.d.ts} +0 -0
- /package/dist/types/components/OwpMrtTable/{OwpMrtTableTopToolbar.d.ts → internal/OwpMrtTableTopToolbar.d.ts} +0 -0
- /package/dist/types/components/OwpPageCarded/{OwpPageCardedHeader.d.ts → internal/OwpPageCardedHeader.d.ts} +0 -0
- /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebar.d.ts → internal/OwpPageCardedSidebar.d.ts} +0 -0
- /package/dist/types/components/OwpPageCarded/{OwpPageCardedSidebarContent.d.ts → internal/OwpPageCardedSidebarContent.d.ts} +0 -0
- /package/dist/types/components/OwpPicker/{constants.d.ts → constants/index.d.ts} +0 -0
- /package/dist/types/components/OwpPicker/{AnimatedCalendarContainer.d.ts → internal/AnimatedCalendarContainer.d.ts} +0 -0
- /package/dist/types/components/OwpPicker/{CalendarContainer.d.ts → internal/CalendarContainer.d.ts} +0 -0
- /package/dist/types/components/OwpTreeGrid/{perf.d.ts → utils/perf.d.ts} +0 -0
- /package/dist/types/components/OwpZoomImageSlider/{ZoomImage.d.ts → internal/ZoomImage.d.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var to = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var r = (t, S) => to(t, "name", { value: S, configurable: !0 });
|
|
3
3
|
import { jsx as p, jsxs as io } 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
4
|
import { useOwpTranslation as ao } from "../../hooks/useOwpTranslation.js";
|
|
5
5
|
import { ensureDayjsBrowserSetup as lo } from "../../utils/dayjsBrowser.js";
|
|
@@ -8,19 +8,22 @@ import { IconButton as so, InputAdornment as uo } from "@mui/material";
|
|
|
8
8
|
import { TimePicker as mo, LocalizationProvider as fo } from "@mui/x-date-pickers";
|
|
9
9
|
import { AdapterDayjs as po } from "@mui/x-date-pickers/AdapterDayjs";
|
|
10
10
|
import { clsx as bo } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
11
|
-
import
|
|
12
|
-
import { useState as go, useRef as
|
|
13
|
-
import { VALUE_TIME_FORMATTER as z } from "./constants.js";
|
|
11
|
+
import w from "dayjs";
|
|
12
|
+
import { useState as go, useRef as I, useMemo as ko, useCallback as C, useEffect as Mo } from "react";
|
|
13
|
+
import { VALUE_TIME_FORMATTER as z } from "./constants/index.js";
|
|
14
14
|
lo();
|
|
15
|
-
const
|
|
15
|
+
const v = "––", i = "#aeaeae", Y = {
|
|
16
|
+
"&:hover": {
|
|
17
|
+
backgroundColor: "var(--owp-datepicker-hover-bg, rgba(3, 155, 229, 0.14))"
|
|
18
|
+
},
|
|
16
19
|
"&.Mui-selected": {
|
|
17
|
-
backgroundColor: "#039be5",
|
|
18
|
-
color: "#fff",
|
|
20
|
+
backgroundColor: "var(--owp-datepicker-selected-bg, #039be5)",
|
|
21
|
+
color: "var(--owp-datepicker-selected-color, #fff)",
|
|
19
22
|
"&:focus-visible, &:hover": {
|
|
20
|
-
backgroundColor: "#039be5"
|
|
23
|
+
backgroundColor: "var(--owp-datepicker-selected-hover-bg, #039be5)"
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
|
-
},
|
|
26
|
+
}, ho = {
|
|
24
27
|
"& .MuiInputBase-root": {
|
|
25
28
|
alignItems: "center"
|
|
26
29
|
},
|
|
@@ -46,7 +49,7 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
46
49
|
visibility: "visible"
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
|
-
},
|
|
52
|
+
}, yo = /* @__PURE__ */ r((t) => t.ctrlKey || t.altKey || t.metaKey ? !1 : t.key.length === 1 || t.key === "Backspace" || t.key === "Delete", "isValueEditingKey"), Ko = /* @__PURE__ */ r(({
|
|
50
53
|
label: t,
|
|
51
54
|
variant: S = "standard",
|
|
52
55
|
sx: j,
|
|
@@ -54,12 +57,12 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
54
57
|
format: N = z,
|
|
55
58
|
useAmPm: H,
|
|
56
59
|
placeholder: V,
|
|
57
|
-
disabledClearButton:
|
|
58
|
-
fullWidth:
|
|
59
|
-
onChange:
|
|
60
|
+
disabledClearButton: T,
|
|
61
|
+
fullWidth: D,
|
|
62
|
+
onChange: d,
|
|
60
63
|
textFieldProps: e,
|
|
61
64
|
localeText: W,
|
|
62
|
-
open:
|
|
65
|
+
open: E,
|
|
63
66
|
onOpen: b,
|
|
64
67
|
onClose: g,
|
|
65
68
|
slots: X,
|
|
@@ -68,71 +71,71 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
68
71
|
const k = z, M = H ?? /a/i.test(N), q = M ? "A hh:mm" : k, U = a.closeOnSelect ?? !1, G = {
|
|
69
72
|
minutes: 1,
|
|
70
73
|
...a.timeSteps
|
|
71
|
-
}, [J,
|
|
74
|
+
}, [J, B] = go(!1), L = I(null), O = I(null), h = I(!1), { t: A, i18n: R } = ao(), Q = (R.resolvedLanguage ?? R.language ?? "kr") === "kr" ? "ko" : "en", _ = {
|
|
72
75
|
okButtonLabel: A("Button.확인"),
|
|
73
76
|
clearButtonLabel: A("Button.초기화"),
|
|
74
|
-
fieldHoursPlaceholder: /* @__PURE__ */
|
|
75
|
-
fieldMinutesPlaceholder: /* @__PURE__ */
|
|
76
|
-
fieldMeridiemPlaceholder: /* @__PURE__ */
|
|
77
|
+
fieldHoursPlaceholder: /* @__PURE__ */ r(() => v, "fieldHoursPlaceholder"),
|
|
78
|
+
fieldMinutesPlaceholder: /* @__PURE__ */ r(() => v, "fieldMinutesPlaceholder"),
|
|
79
|
+
fieldMeridiemPlaceholder: /* @__PURE__ */ r(() => v, "fieldMeridiemPlaceholder"),
|
|
77
80
|
...W
|
|
78
|
-
}, Z = V ?? (M ? "–– ––:––" : "––:––"), $ = [
|
|
81
|
+
}, Z = V ?? (M ? "–– ––:––" : "––:––"), $ = [ho, j, e == null ? void 0 : e.sx].filter(
|
|
79
82
|
Boolean
|
|
80
|
-
), x = !!(
|
|
83
|
+
), x = !!(T || a.disabled || a.readOnly), F = !!d && !T, u = E !== void 0, l = u ? E : J, P = ko(() => {
|
|
81
84
|
if (!c)
|
|
82
85
|
return null;
|
|
83
|
-
if (
|
|
86
|
+
if (w.isDayjs(c))
|
|
84
87
|
return c;
|
|
85
88
|
if (typeof c == "string") {
|
|
86
|
-
const
|
|
87
|
-
return
|
|
89
|
+
const n = w(c, k, !0);
|
|
90
|
+
return n.isValid() ? n : null;
|
|
88
91
|
}
|
|
89
|
-
const o =
|
|
92
|
+
const o = w(c);
|
|
90
93
|
return o.isValid() ? o : null;
|
|
91
|
-
}, [k, c]), oo = /* @__PURE__ */
|
|
92
|
-
|
|
93
|
-
}, "handleChange"),
|
|
94
|
-
if (
|
|
95
|
-
|
|
94
|
+
}, [k, c]), oo = /* @__PURE__ */ r((o) => {
|
|
95
|
+
d == null || d(o != null && o.isValid() ? o.format(k) : void 0);
|
|
96
|
+
}, "handleChange"), y = C(() => {
|
|
97
|
+
if (h.current) {
|
|
98
|
+
h.current = !1;
|
|
96
99
|
return;
|
|
97
100
|
}
|
|
98
|
-
u ||
|
|
99
|
-
}, [u, b]),
|
|
100
|
-
u ||
|
|
101
|
-
}, [u, g]), eo = /* @__PURE__ */
|
|
102
|
-
|
|
103
|
-
}, "handleClear"),
|
|
101
|
+
u || B(!0), b == null || b();
|
|
102
|
+
}, [u, b]), s = C(() => {
|
|
103
|
+
u || B(!1), g == null || g();
|
|
104
|
+
}, [u, g]), eo = /* @__PURE__ */ r(() => {
|
|
105
|
+
d == null || d("");
|
|
106
|
+
}, "handleClear"), ro = C(
|
|
104
107
|
(o) => {
|
|
105
|
-
var
|
|
106
|
-
if ((
|
|
108
|
+
var n;
|
|
109
|
+
if ((n = e == null ? void 0 : e.onClick) == null || n.call(e, o), !(o.defaultPrevented || a.disabled || a.readOnly)) {
|
|
107
110
|
if (l) {
|
|
108
|
-
|
|
109
|
-
|
|
111
|
+
h.current = !0, s(), queueMicrotask(() => {
|
|
112
|
+
h.current = !1;
|
|
110
113
|
});
|
|
111
114
|
return;
|
|
112
115
|
}
|
|
113
|
-
|
|
116
|
+
y();
|
|
114
117
|
}
|
|
115
118
|
},
|
|
116
|
-
[
|
|
117
|
-
),
|
|
119
|
+
[s, y, l, e, a.disabled, a.readOnly]
|
|
120
|
+
), no = C(
|
|
118
121
|
(o) => {
|
|
119
|
-
var
|
|
120
|
-
(
|
|
122
|
+
var n;
|
|
123
|
+
(n = e == null ? void 0 : e.onKeyDown) == null || n.call(e, o), !(o.defaultPrevented || !l || !yo(o)) && s();
|
|
121
124
|
},
|
|
122
|
-
[
|
|
125
|
+
[s, l, e]
|
|
123
126
|
);
|
|
124
127
|
return Mo(() => {
|
|
125
128
|
if (!l)
|
|
126
129
|
return;
|
|
127
|
-
const o = /* @__PURE__ */
|
|
130
|
+
const o = /* @__PURE__ */ r((n) => {
|
|
128
131
|
var f, K;
|
|
129
|
-
const m =
|
|
130
|
-
m instanceof Node && ((f =
|
|
132
|
+
const m = n.target;
|
|
133
|
+
m instanceof Node && ((f = L.current) != null && f.contains(m) || (K = O.current) != null && K.contains(m) || s());
|
|
131
134
|
}, "handleDocumentMouseDown");
|
|
132
135
|
return document.addEventListener("mousedown", o, !0), () => {
|
|
133
136
|
document.removeEventListener("mousedown", o, !0);
|
|
134
137
|
};
|
|
135
|
-
}, [
|
|
138
|
+
}, [s, l]), /* @__PURE__ */ p(fo, { dateAdapter: po, adapterLocale: Q, children: /* @__PURE__ */ p("div", { ref: L, children: /* @__PURE__ */ p(
|
|
136
139
|
mo,
|
|
137
140
|
{
|
|
138
141
|
...a,
|
|
@@ -146,11 +149,11 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
146
149
|
format: q,
|
|
147
150
|
localeText: _,
|
|
148
151
|
onChange: oo,
|
|
149
|
-
onOpen:
|
|
150
|
-
onClose:
|
|
152
|
+
onOpen: y,
|
|
153
|
+
onClose: s,
|
|
151
154
|
slots: {
|
|
152
155
|
...X,
|
|
153
|
-
inputAdornment: /* @__PURE__ */
|
|
156
|
+
inputAdornment: /* @__PURE__ */ r(({ position: o, children: n, ...m }) => /* @__PURE__ */ io(uo, { position: o, ...m, children: [
|
|
154
157
|
o === "end" && F && /* @__PURE__ */ p(
|
|
155
158
|
so,
|
|
156
159
|
{
|
|
@@ -158,19 +161,19 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
158
161
|
size: "small",
|
|
159
162
|
"aria-label": _.clearButtonLabel,
|
|
160
163
|
disabled: x,
|
|
161
|
-
onClick: /* @__PURE__ */
|
|
164
|
+
onClick: /* @__PURE__ */ r((f) => {
|
|
162
165
|
f.preventDefault(), f.stopPropagation(), eo();
|
|
163
166
|
}, "onClick"),
|
|
164
167
|
children: /* @__PURE__ */ p(co, { fontSize: "small" })
|
|
165
168
|
}
|
|
166
169
|
),
|
|
167
|
-
|
|
170
|
+
n
|
|
168
171
|
] }), "TimePickerInputAdornment")
|
|
169
172
|
},
|
|
170
173
|
slotProps: {
|
|
171
174
|
popper: {
|
|
172
175
|
placement: "bottom-end",
|
|
173
|
-
ref: /* @__PURE__ */
|
|
176
|
+
ref: /* @__PURE__ */ r((o) => {
|
|
174
177
|
O.current = o;
|
|
175
178
|
}, "ref"),
|
|
176
179
|
modifiers: [
|
|
@@ -263,6 +266,7 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
263
266
|
}
|
|
264
267
|
},
|
|
265
268
|
actionBar: {
|
|
269
|
+
actions: ["accept"],
|
|
266
270
|
sx: {
|
|
267
271
|
backgroundColor: "#f6f3f4",
|
|
268
272
|
minHeight: 44,
|
|
@@ -278,8 +282,8 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
278
282
|
},
|
|
279
283
|
openPickerButton: {
|
|
280
284
|
size: "small",
|
|
281
|
-
onClick: /* @__PURE__ */
|
|
282
|
-
o.preventDefault(), o.stopPropagation(), l ||
|
|
285
|
+
onClick: /* @__PURE__ */ r((o) => {
|
|
286
|
+
o.preventDefault(), o.stopPropagation(), l || y();
|
|
283
287
|
}, "onClick"),
|
|
284
288
|
sx: {
|
|
285
289
|
margin: 0,
|
|
@@ -304,14 +308,14 @@ const T = "––", i = "#aeaeae", Y = {
|
|
|
304
308
|
},
|
|
305
309
|
textField: {
|
|
306
310
|
variant: S,
|
|
307
|
-
fullWidth:
|
|
311
|
+
fullWidth: D,
|
|
308
312
|
...e,
|
|
309
313
|
className: bo(
|
|
310
|
-
!
|
|
314
|
+
!D && (M ? "w-[160px]" : "w-[140px]"),
|
|
311
315
|
e == null ? void 0 : e.className
|
|
312
316
|
),
|
|
313
|
-
onClick:
|
|
314
|
-
onKeyDown:
|
|
317
|
+
onClick: ro,
|
|
318
|
+
onKeyDown: no,
|
|
315
319
|
placeholder: Z,
|
|
316
320
|
sx: $
|
|
317
321
|
}
|
|
@@ -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 { 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 = '––';\nconst PICKER_BORDER_COLOR = '#aeaeae';\n\nconst SELECTED_TIME_ITEM_SX = {\n '&.Mui-selected': {\n backgroundColor: '#039be5',\n color: '#fff',\n '&:focus-visible, &:hover': {\n backgroundColor: '#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 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 any;\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 \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: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\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 },\n mobilePaper: {\n sx: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\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 },\n actionBar: {\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","PICKER_BORDER_COLOR","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_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 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 = '––';\nconst PICKER_BORDER_COLOR = '#aeaeae';\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 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 \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: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\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 },\n mobilePaper: {\n sx: {\n border: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n borderRadius: 1,\n boxShadow: 'none',\n backgroundImage: 'none',\n backgroundColor: 'background.paper',\n overflow: 'hidden',\n '& .MuiPickersLayout-contentWrapper': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiPickersLayout-actionBar': {\n borderTop: '1px solid',\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClock-root, & .MuiDigitalClock-root': {\n borderColor: PICKER_BORDER_COLOR,\n },\n '& .MuiMultiSectionDigitalClockSection-root': {\n borderColor: PICKER_BORDER_COLOR,\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 },\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","PICKER_BORDER_COLOR","SELECTED_TIME_ITEM_SX","TIME_PICKER_TEXT_FIELD_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,69 +1,75 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
import { jsx as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
value: r,
|
|
1
|
+
var W = Object.defineProperty;
|
|
2
|
+
var o = (m, c) => W(m, "name", { value: c, configurable: !0 });
|
|
3
|
+
import { jsx as l } 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 { ensureDayjsBrowserSetup as b } from "../../utils/dayjsBrowser.js";
|
|
5
|
+
import { clsx as x } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
6
|
+
import d from "dayjs";
|
|
7
|
+
import { useMemo as y } from "react";
|
|
8
|
+
import { DatePicker as F } from "../../node_modules/.pnpm/react-datepicker@8.7.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-datepicker/dist/index.es.js";
|
|
9
|
+
import { CalendarContainer as N } from "./internal/CalendarContainer.js";
|
|
10
|
+
import { DatePickerInput as O } from "./internal/DatePickerInput.js";
|
|
11
|
+
import { VALUE_DATE_FORMATTER as u } from "./constants/index.js";
|
|
12
|
+
b();
|
|
13
|
+
const a = "ᵗʰ ", H = /* @__PURE__ */ o(({
|
|
14
|
+
label: m,
|
|
15
|
+
variant: c = "standard",
|
|
16
|
+
sx: D,
|
|
17
|
+
value: e,
|
|
19
18
|
onChange: t,
|
|
20
|
-
fullWidth:
|
|
21
|
-
showWeekNumbers:
|
|
22
|
-
textFieldProps:
|
|
23
|
-
disabledClearButton:
|
|
24
|
-
|
|
19
|
+
fullWidth: k,
|
|
20
|
+
showWeekNumbers: f,
|
|
21
|
+
textFieldProps: n,
|
|
22
|
+
disabledClearButton: S,
|
|
23
|
+
...$
|
|
25
24
|
}) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
const {
|
|
26
|
+
selectsMultiple: j,
|
|
27
|
+
selectsRange: A,
|
|
28
|
+
selected: I,
|
|
29
|
+
startDate: M,
|
|
30
|
+
endDate: R,
|
|
31
|
+
...w
|
|
32
|
+
} = $, [P, E] = y(() => {
|
|
33
|
+
var r, s;
|
|
34
|
+
if (!e) return [null, ""];
|
|
35
|
+
if (typeof e == "string") {
|
|
36
|
+
const [i, p] = e.split(a);
|
|
37
|
+
return [new Date(p || e), i ? `${i}${a}` : ""];
|
|
32
38
|
}
|
|
33
|
-
return [(
|
|
34
|
-
}, [
|
|
35
|
-
return /* @__PURE__ */
|
|
36
|
-
|
|
39
|
+
return [(s = (r = d(e)) == null ? void 0 : r.startOf("isoWeek")) == null ? void 0 : s.toDate(), ""];
|
|
40
|
+
}, [e]);
|
|
41
|
+
return /* @__PURE__ */ l(
|
|
42
|
+
F,
|
|
37
43
|
{
|
|
38
44
|
popperPlacement: "bottom-start",
|
|
39
|
-
popperContainer:
|
|
45
|
+
popperContainer: N,
|
|
40
46
|
...w,
|
|
41
|
-
selected:
|
|
42
|
-
onChange: /* @__PURE__ */
|
|
43
|
-
if (!
|
|
44
|
-
const
|
|
45
|
-
t == null || t(
|
|
47
|
+
selected: P,
|
|
48
|
+
onChange: /* @__PURE__ */ o((r) => {
|
|
49
|
+
if (!r) return t == null ? void 0 : t(void 0);
|
|
50
|
+
const s = d(r), p = `${s.startOf("isoWeek").isoWeek()}${a}${s.format(u)}`;
|
|
51
|
+
t == null || t(p);
|
|
46
52
|
}, "handleSelect"),
|
|
47
|
-
showWeekNumbers:
|
|
53
|
+
showWeekNumbers: f,
|
|
48
54
|
calendarStartDay: 1,
|
|
49
|
-
customInput: /* @__PURE__ */
|
|
50
|
-
|
|
55
|
+
customInput: /* @__PURE__ */ l(
|
|
56
|
+
O,
|
|
51
57
|
{
|
|
52
|
-
className:
|
|
53
|
-
label:
|
|
54
|
-
variant:
|
|
55
|
-
sx:
|
|
56
|
-
...
|
|
57
|
-
fullWidth:
|
|
58
|
-
disabledClearButton:
|
|
59
|
-
reset: /* @__PURE__ */
|
|
60
|
-
valueFormatter: `${
|
|
58
|
+
className: x(f && "w-[184px]"),
|
|
59
|
+
label: m,
|
|
60
|
+
variant: c,
|
|
61
|
+
sx: D,
|
|
62
|
+
...n,
|
|
63
|
+
fullWidth: k,
|
|
64
|
+
disabledClearButton: S,
|
|
65
|
+
reset: /* @__PURE__ */ o(() => t == null ? void 0 : t(""), "reset"),
|
|
66
|
+
valueFormatter: `${E}${u}`
|
|
61
67
|
}
|
|
62
68
|
)
|
|
63
69
|
}
|
|
64
70
|
);
|
|
65
71
|
}, "OwpWeekDatePicker");
|
|
66
72
|
export {
|
|
67
|
-
|
|
73
|
+
H as OwpWeekDatePicker
|
|
68
74
|
};
|
|
69
75
|
//# sourceMappingURL=OwpWeekDatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwpWeekDatePicker.js","sources":["../../../src/components/OwpPicker/OwpWeekDatePicker.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"OwpWeekDatePicker.js","sources":["../../../src/components/OwpPicker/OwpWeekDatePicker.tsx"],"sourcesContent":["import { DatePickerValue } from '@/components/OwpPicker/OwpDatePicker';\nimport { ensureDayjsBrowserSetup } from '@/utils/dayjsBrowser';\nimport { TextFieldProps } from '@mui/material';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { useMemo } from 'react';\nimport ReactDatePicker, { DatePickerProps } from 'react-datepicker';\nimport { CalendarContainer } from './internal/CalendarContainer';\nimport { DatePickerInput } from './internal/DatePickerInput';\nimport { VALUE_DATE_FORMATTER } from './constants';\n\nensureDayjsBrowserSetup();\n\nconst WEEK_SUFFIX = 'ᵗʰ ';\n\ninterface WeekPickerProps {\n className?: string;\n label?: string;\n variant?: TextFieldProps['variant'];\n sx?: TextFieldProps['sx'];\n value?: DatePickerValue;\n disabledClearButton?: boolean;\n disabledFutureDates?: boolean;\n showMonthPicker?: boolean;\n fullWidth?: boolean;\n onChange?: (value?: DatePickerValue) => void;\n textFieldProps?: Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'>;\n}\n\ntype OwpDatePickerProps = WeekPickerProps & DatePickerProps;\n\n/**\n * OwpWeekDatePicker 컴포넌트\n * @param label 입력 라벨\n * @param variant variant 값\n * @param sx sx 값\n * @param value 현재 값\n * @param onChange onChange 핸들러\n * @param fullWidth 전체 너비 사용 여부\n */\nexport const OwpWeekDatePicker = ({\n label,\n variant = 'standard',\n sx,\n value,\n onChange,\n fullWidth,\n showWeekNumbers,\n textFieldProps,\n disabledClearButton,\n ...datePickerProps\n}: OwpDatePickerProps) => {\n const {\n selectsMultiple,\n selectsRange,\n selected,\n startDate,\n endDate,\n ...resolvedDatePickerProps\n } = datePickerProps;\n void [selectsMultiple, selectsRange, selected, startDate, endDate];\n const [selectedDate, selectedWeekNumberStr] = useMemo(() => {\n if (!value) return [null, ''];\n\n if (typeof value === 'string') {\n const [weekNumber, dateStr] = value.split(WEEK_SUFFIX);\n return [new Date(dateStr || value), weekNumber ? `${weekNumber}${WEEK_SUFFIX}` : ''];\n }\n\n return [dayjs(value)?.startOf('isoWeek')?.toDate(), ''];\n }, [value]);\n\n const handleSelect = (date: Date | null) => {\n if (!date) return onChange?.(undefined);\n\n const currentDate = dayjs(date);\n const weekNumber = currentDate.startOf('isoWeek').isoWeek();\n const formatted = `${weekNumber}${WEEK_SUFFIX}${currentDate.format(VALUE_DATE_FORMATTER)}`;\n\n onChange?.(formatted);\n };\n\n return (\n <ReactDatePicker\n popperPlacement=\"bottom-start\"\n popperContainer={CalendarContainer}\n {...resolvedDatePickerProps}\n selected={selectedDate}\n onChange={handleSelect}\n showWeekNumbers={showWeekNumbers}\n calendarStartDay={1}\n customInput={\n <DatePickerInput\n className={clsx(showWeekNumbers && 'w-[184px]')}\n label={label}\n variant={variant}\n sx={sx}\n {...textFieldProps}\n fullWidth={fullWidth}\n disabledClearButton={disabledClearButton}\n reset={() => onChange?.('')}\n valueFormatter={`${selectedWeekNumberStr}${VALUE_DATE_FORMATTER}`}\n />\n }\n />\n );\n};\n"],"names":["ensureDayjsBrowserSetup","WEEK_SUFFIX","OwpWeekDatePicker","__name","label","variant","sx","value","onChange","fullWidth","showWeekNumbers","textFieldProps","disabledClearButton","datePickerProps","selectsMultiple","selectsRange","selected","startDate","endDate","resolvedDatePickerProps","selectedDate","selectedWeekNumberStr","useMemo","weekNumber","dateStr","_b","_a","dayjs","jsx","ReactDatePicker","CalendarContainer","date","currentDate","formatted","VALUE_DATE_FORMATTER","DatePickerInput","clsx"],"mappings":";;;;;;;;;;;AAWAA,EAAA;AAEA,MAAMC,IAAc,OA2BPC,IAAoB,gBAAAC,EAAA,CAAC;AAAA,EAChC,OAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,IAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,GAAGC;AACL,MAA0B;AACxB,QAAM;AAAA,IACJ,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDN,GAEE,CAACO,GAAcC,CAAqB,IAAIC,EAAQ,MAAM;;AAC1D,QAAI,CAACf,EAAO,QAAO,CAAC,MAAM,EAAE;AAE5B,QAAI,OAAOA,KAAU,UAAU;AAC7B,YAAM,CAACgB,GAAYC,CAAO,IAAIjB,EAAM,MAAMN,CAAW;AACrD,aAAO,CAAC,IAAI,KAAKuB,KAAWjB,CAAK,GAAGgB,IAAa,GAAGA,CAAU,GAAGtB,CAAW,KAAK,EAAE;AAAA,IACrF;AAEA,WAAO,EAACwB,KAAAC,IAAAC,EAAMpB,CAAK,MAAX,gBAAAmB,EAAc,QAAQ,eAAtB,gBAAAD,EAAkC,UAAU,EAAE;AAAA,EACxD,GAAG,CAAClB,CAAK,CAAC;AAYV,SACE,gBAAAqB;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,iBAAgB;AAAA,MAChB,iBAAiBC;AAAA,MAChB,GAAGX;AAAA,MACJ,UAAUC;AAAA,MACV,UAhBiB,gBAAAjB,EAAA,CAAC4B,MAAsB;AAC1C,YAAI,CAACA,EAAM,QAAOvB,KAAA,gBAAAA,EAAW;AAE7B,cAAMwB,IAAcL,EAAMI,CAAI,GAExBE,IAAY,GADCD,EAAY,QAAQ,SAAS,EAAE,QAAA,CACnB,GAAG/B,CAAW,GAAG+B,EAAY,OAAOE,CAAoB,CAAC;AAExF,QAAA1B,KAAA,QAAAA,EAAWyB;AAAA,MACb,GARqB;AAAA,MAiBjB,iBAAAvB;AAAA,MACA,kBAAkB;AAAA,MAClB,aACE,gBAAAkB;AAAA,QAACO;AAAA,QAAA;AAAA,UACC,WAAWC,EAAK1B,KAAmB,WAAW;AAAA,UAC9C,OAAAN;AAAA,UACA,SAAAC;AAAA,UACA,IAAAC;AAAA,UACC,GAAGK;AAAA,UACJ,WAAAF;AAAA,UACA,qBAAAG;AAAA,UACA,OAAO,gBAAAT,EAAA,MAAMK,KAAA,gBAAAA,EAAW,KAAjB;AAAA,UACP,gBAAgB,GAAGa,CAAqB,GAAGa,CAAoB;AAAA,QAAA;AAAA,MAAA;AAAA,IACjE;AAAA,EAAA;AAIR,GAlEiC;"}
|