dgz-ui-shared 1.2.46 → 1.2.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/DateRangePicker-C2ZYbgXb.es.js +178 -0
- package/dist/chunks/DateRangePicker-C2ZYbgXb.es.js.map +1 -0
- package/dist/chunks/DateRangePicker-VYbOLs-w.cjs.js +2 -0
- package/dist/chunks/DateRangePicker-VYbOLs-w.cjs.js.map +1 -0
- package/dist/components/datepicker/index.cjs.js +1 -1
- package/dist/components/datepicker/index.es.js +1 -1
- package/dist/components/form/index.cjs.js +1 -1
- package/dist/components/form/index.es.js +1 -1
- package/dist/types/components/datepicker/DateRangePicker.d.ts +14 -1
- package/dist/types/components/datepicker/DateRangePicker.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/DateRangePicker-CUv-qznZ.cjs.js +0 -2
- package/dist/chunks/DateRangePicker-CUv-qznZ.cjs.js.map +0 -1
- package/dist/chunks/DateRangePicker-DeoV3xqL.es.js +0 -177
- package/dist/chunks/DateRangePicker-DeoV3xqL.es.js.map +0 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { jsxs as c, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Button as w } from "dgz-ui/button";
|
|
3
|
+
import { DATE as A, Calendar as d } from "dgz-ui/calendar";
|
|
4
|
+
import { Input as M } from "dgz-ui/form";
|
|
5
|
+
import { Popover as P, PopoverTrigger as z, PopoverContent as E } from "dgz-ui/popover";
|
|
6
|
+
import { dayjs as l, cn as h } from "dgz-ui/utils";
|
|
7
|
+
import { XIcon as F, Calendar1 as I } from "lucide-react";
|
|
8
|
+
import { useState as T, useEffect as Z, useMemo as $ } from "react";
|
|
9
|
+
import { useTranslation as g } from "react-i18next";
|
|
10
|
+
const V = ({
|
|
11
|
+
className: x,
|
|
12
|
+
format: n = A,
|
|
13
|
+
selected: r,
|
|
14
|
+
timezone: p,
|
|
15
|
+
onRangeSelected: m = () => {
|
|
16
|
+
},
|
|
17
|
+
placeholder: N,
|
|
18
|
+
defaultPresets: D,
|
|
19
|
+
disabled: i,
|
|
20
|
+
error: C,
|
|
21
|
+
inputProps: k,
|
|
22
|
+
...b
|
|
23
|
+
}) => {
|
|
24
|
+
const { t: a } = g(), [L, u] = T(!1), [o, f] = T();
|
|
25
|
+
Z(() => {
|
|
26
|
+
f(r);
|
|
27
|
+
}, [r]);
|
|
28
|
+
const j = $(() => {
|
|
29
|
+
const t = l().endOf("day");
|
|
30
|
+
return (D ?? [
|
|
31
|
+
{
|
|
32
|
+
from: t.startOf("week").toDate(),
|
|
33
|
+
to: t.endOf("week").toDate(),
|
|
34
|
+
label: a("This week")
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
from: t.startOf("month").toDate(),
|
|
38
|
+
to: t.endOf("month").toDate(),
|
|
39
|
+
label: a("This month")
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
from: t.startOf("year").toDate(),
|
|
43
|
+
to: t.endOf("year").toDate(),
|
|
44
|
+
label: a("This year")
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
from: t.subtract(7, "day").startOf("day").toDate(),
|
|
48
|
+
to: t.toDate(),
|
|
49
|
+
label: a("Last 7 days")
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
from: t.subtract(30, "day").startOf("day").toDate(),
|
|
53
|
+
to: t.toDate(),
|
|
54
|
+
label: a("Last 30 days")
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
from: t.subtract(3, "month").startOf("day").toDate(),
|
|
58
|
+
to: t.toDate(),
|
|
59
|
+
label: a("Last 3 months")
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
from: t.subtract(6, "month").startOf("day").toDate(),
|
|
63
|
+
to: t.toDate(),
|
|
64
|
+
label: a("Last 6 months")
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
from: t.subtract(12, "month").startOf("day").toDate(),
|
|
68
|
+
to: t.toDate(),
|
|
69
|
+
label: a("Last 12 months")
|
|
70
|
+
}
|
|
71
|
+
]).map((s) => {
|
|
72
|
+
var v, O;
|
|
73
|
+
return {
|
|
74
|
+
...s,
|
|
75
|
+
isActive: ((v = r == null ? void 0 : r.from) == null ? void 0 : v.getTime()) === s.from.getTime() && ((O = r == null ? void 0 : r.to) == null ? void 0 : O.getTime()) === s.to.getTime()
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}, [a, r, D]), y = (t) => {
|
|
79
|
+
f(t), t != null && t.from && (t != null && t.to) && (m(t), u(!1));
|
|
80
|
+
};
|
|
81
|
+
return /* @__PURE__ */ c(P, { open: L, onOpenChange: u, children: [
|
|
82
|
+
/* @__PURE__ */ e(z, { asChild: !0, className: "m-0!", disabled: i, children: /* @__PURE__ */ c("div", { className: "relative", children: [
|
|
83
|
+
/* @__PURE__ */ e(
|
|
84
|
+
M,
|
|
85
|
+
{
|
|
86
|
+
variant: C ? "failure" : "default",
|
|
87
|
+
...k,
|
|
88
|
+
readOnly: !0,
|
|
89
|
+
value: o != null && o.from ? o.to ? `${l(o.from).format(n)}-${l(o.to).format(n)}` : l(o.from).format(n) : "",
|
|
90
|
+
placeholder: N,
|
|
91
|
+
disabled: i,
|
|
92
|
+
className: h(x)
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
o && /* @__PURE__ */ e(
|
|
96
|
+
F,
|
|
97
|
+
{
|
|
98
|
+
onClick: () => {
|
|
99
|
+
f(void 0), m == null || m(void 0);
|
|
100
|
+
},
|
|
101
|
+
className: h(
|
|
102
|
+
"text-secondary absolute top-3 right-8 size-4 cursor-pointer",
|
|
103
|
+
i && "pointer-events-none opacity-50"
|
|
104
|
+
)
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
/* @__PURE__ */ e(
|
|
108
|
+
I,
|
|
109
|
+
{
|
|
110
|
+
className: h(
|
|
111
|
+
"text-secondary absolute top-2.5 right-2 size-5",
|
|
112
|
+
i && "pointer-events-none opacity-50"
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
] }) }),
|
|
117
|
+
/* @__PURE__ */ c(E, { className: "flex w-auto p-0", align: "end", side: "bottom", children: [
|
|
118
|
+
/* @__PURE__ */ e(
|
|
119
|
+
"div",
|
|
120
|
+
{
|
|
121
|
+
className: "border-border-alpha-light flex flex-col space-y-1 border-e p-2",
|
|
122
|
+
children: j.map((t, s) => /* @__PURE__ */ e(
|
|
123
|
+
w,
|
|
124
|
+
{
|
|
125
|
+
size: "xs",
|
|
126
|
+
variant: t.isActive ? "default" : "ghost",
|
|
127
|
+
className: "justify-start",
|
|
128
|
+
onClick: () => y(t),
|
|
129
|
+
children: t.label
|
|
130
|
+
},
|
|
131
|
+
s
|
|
132
|
+
))
|
|
133
|
+
}
|
|
134
|
+
),
|
|
135
|
+
/* @__PURE__ */ e(
|
|
136
|
+
d,
|
|
137
|
+
{
|
|
138
|
+
...b,
|
|
139
|
+
className: "border-border-alpha-light border-e",
|
|
140
|
+
mode: "single",
|
|
141
|
+
endMonth: o == null ? void 0 : o.to,
|
|
142
|
+
selected: o == null ? void 0 : o.from,
|
|
143
|
+
selectedToDate: o == null ? void 0 : o.to,
|
|
144
|
+
selectedFromDate: o == null ? void 0 : o.from,
|
|
145
|
+
timeZone: p,
|
|
146
|
+
disabled: o != null && o.to ? {
|
|
147
|
+
after: o.to
|
|
148
|
+
} : void 0,
|
|
149
|
+
onSelect: (t) => {
|
|
150
|
+
f({ ...o, from: t });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
/* @__PURE__ */ e(
|
|
155
|
+
d,
|
|
156
|
+
{
|
|
157
|
+
...b,
|
|
158
|
+
mode: "single",
|
|
159
|
+
startMonth: o == null ? void 0 : o.from,
|
|
160
|
+
selected: o == null ? void 0 : o.to,
|
|
161
|
+
timeZone: p,
|
|
162
|
+
disabled: o != null && o.from ? {
|
|
163
|
+
before: o.from
|
|
164
|
+
} : void 0,
|
|
165
|
+
selectedToDate: o == null ? void 0 : o.to,
|
|
166
|
+
selectedFromDate: o == null ? void 0 : o.from,
|
|
167
|
+
onSelect: (t) => {
|
|
168
|
+
o && y({ ...o, to: t });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
)
|
|
172
|
+
] })
|
|
173
|
+
] });
|
|
174
|
+
};
|
|
175
|
+
export {
|
|
176
|
+
V as D
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=DateRangePicker-C2ZYbgXb.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker-C2ZYbgXb.es.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport { Calendar, type CalendarProps, DATE } from 'dgz-ui/calendar';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { Popover, PopoverContent, PopoverTrigger } from 'dgz-ui/popover';\nimport { cn, dayjs } from 'dgz-ui/utils';\nimport { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Type definition for a date range preset configuration.\n */\nexport type PresetType = {\n from: Date;\n to: Date;\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n defaultPresets?: PresetType[];\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @param props.defaultPresets - dafault presets list for the picker.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n defaultPresets,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return (\n defaultPresets ?? [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ]\n ).map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected, defaultPresets]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","defaultPresets","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),L=require("dgz-ui/button"),u=require("dgz-ui/calendar"),w=require("dgz-ui/form"),h=require("dgz-ui/popover"),a=require("dgz-ui/utils"),j=require("lucide-react"),c=require("react"),P=require("react-i18next"),A=({className:O,format:f=u.DATE,selected:s,timezone:y,onRangeSelected:i=()=>{},placeholder:T,defaultPresets:b,disabled:l,error:q,inputProps:N,...D})=>{const{t:r}=P.useTranslation(),[C,p]=c.useState(!1),[t,m]=c.useState();c.useEffect(()=>{m(s)},[s]);const k=c.useMemo(()=>{const o=a.dayjs().endOf("day");return(b??[{from:o.startOf("week").toDate(),to:o.endOf("week").toDate(),label:r("This week")},{from:o.startOf("month").toDate(),to:o.endOf("month").toDate(),label:r("This month")},{from:o.startOf("year").toDate(),to:o.endOf("year").toDate(),label:r("This year")},{from:o.subtract(7,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 7 days")},{from:o.subtract(30,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 30 days")},{from:o.subtract(3,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 3 months")},{from:o.subtract(6,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 6 months")},{from:o.subtract(12,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 12 months")}]).map(n=>{var x,v;return{...n,isActive:((x=s==null?void 0:s.from)==null?void 0:x.getTime())===n.from.getTime()&&((v=s==null?void 0:s.to)==null?void 0:v.getTime())===n.to.getTime()}})},[r,s,b]),d=o=>{m(o),o!=null&&o.from&&(o!=null&&o.to)&&(i(o),p(!1))};return e.jsxs(h.Popover,{open:C,onOpenChange:p,children:[e.jsx(h.PopoverTrigger,{asChild:!0,className:"m-0!",disabled:l,children:e.jsxs("div",{className:"relative",children:[e.jsx(w.Input,{variant:q?"failure":"default",...N,readOnly:!0,value:t!=null&&t.from?t.to?`${a.dayjs(t.from).format(f)}-${a.dayjs(t.to).format(f)}`:a.dayjs(t.from).format(f):"",placeholder:T,disabled:l,className:a.cn(O)}),t&&e.jsx(j.XIcon,{onClick:()=>{m(void 0),i==null||i(void 0)},className:a.cn("text-secondary absolute top-3 right-8 size-4 cursor-pointer",l&&"pointer-events-none opacity-50")}),e.jsx(j.Calendar1,{className:a.cn("text-secondary absolute top-2.5 right-2 size-5",l&&"pointer-events-none opacity-50")})]})}),e.jsxs(h.PopoverContent,{className:"flex w-auto p-0",align:"end",side:"bottom",children:[e.jsx("div",{className:"border-border-alpha-light flex flex-col space-y-1 border-e p-2",children:k.map((o,n)=>e.jsx(L.Button,{size:"xs",variant:o.isActive?"default":"ghost",className:"justify-start",onClick:()=>d(o),children:o.label},n))}),e.jsx(u.Calendar,{...D,className:"border-border-alpha-light border-e",mode:"single",endMonth:t==null?void 0:t.to,selected:t==null?void 0:t.from,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,timeZone:y,disabled:t!=null&&t.to?{after:t.to}:void 0,onSelect:o=>{m({...t,from:o})}}),e.jsx(u.Calendar,{...D,mode:"single",startMonth:t==null?void 0:t.from,selected:t==null?void 0:t.to,timeZone:y,disabled:t!=null&&t.from?{before:t.from}:void 0,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,onSelect:o=>{t&&d({...t,to:o})}})]})]})};exports.DateRangePicker=A;
|
|
2
|
+
//# sourceMappingURL=DateRangePicker-VYbOLs-w.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker-VYbOLs-w.cjs.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport { Calendar, type CalendarProps, DATE } from 'dgz-ui/calendar';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { Popover, PopoverContent, PopoverTrigger } from 'dgz-ui/popover';\nimport { cn, dayjs } from 'dgz-ui/utils';\nimport { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Type definition for a date range preset configuration.\n */\nexport type PresetType = {\n from: Date;\n to: Date;\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n defaultPresets?: PresetType[];\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @param props.defaultPresets - dafault presets list for the picker.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n defaultPresets,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return (\n defaultPresets ?? [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ]\n ).map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected, defaultPresets]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","defaultPresets","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/DateRangePicker-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../chunks/DateRangePicker-VYbOLs-w.cjs.js");exports.DateRangePicker=e.DateRangePicker;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("dgz-ui/form"),e=require("react/jsx-runtime"),b=require("react"),g=require("dgz-ui/calendar"),M=require("dgz-ui/popover"),x=require("dgz-ui/utils"),F=require("../../chunks/MyInput-mL2G5h2s.cjs.js"),S=require("lucide-react"),I=require("../../chunks/DateRangePicker-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("dgz-ui/form"),e=require("react/jsx-runtime"),b=require("react"),g=require("dgz-ui/calendar"),M=require("dgz-ui/popover"),x=require("dgz-ui/utils"),F=require("../../chunks/MyInput-mL2G5h2s.cjs.js"),S=require("lucide-react"),I=require("../../chunks/DateRangePicker-VYbOLs-w.cjs.js"),P=require("../../chunks/MySelect-CmLxmNJz.cjs.js"),T=({control:r,name:t,label:a,rules:o,...c})=>{const l=b.useId();return t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:o,render:({field:n})=>e.jsx(s.FormLabel,{className:"block",htmlFor:c.id||l,children:e.jsxs(s.FormItem,{className:"flex flex-row items-start gap-3",children:[e.jsx(s.FormControl,{children:e.jsx(s.Checkbox,{id:c.id||l,checked:n.value,onCheckedChange:n.onChange,...c})}),a&&e.jsx("div",{className:"mt-0.5",children:a})]})})})||null},f=({control:r,name:t,label:a,required:o,rules:c,format:l=g.DATE,floatingError:n,placeholder:i,disabled:m,register:j,className:u,showTime:N,inputProps:y,...v})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:c,render:({field:d,formState:h})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",o&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs(M.Popover,{children:[e.jsx(M.PopoverTrigger,{asChild:!0,children:e.jsxs("div",{className:"relative",children:[e.jsx(s.FormControl,{children:e.jsx(s.Input,{...y,variant:F.get(h.errors,`${t}.message`)?"failure":"default",disabled:m,...d,readOnly:!0,placeholder:i||"Pick a date",value:d.value?x.dayjs(d.value).format(l):void 0,className:x.cn("m-0 text-start",u)})}),e.jsx(S.Calendar1,{className:x.cn("text-secondary absolute top-2.5 right-2 size-5",m&&"pointer-events-none opacity-50")}),e.jsx(s.FormMessage,{className:x.cn(n&&"absolute -bottom-5")})]})}),!m&&e.jsxs(M.PopoverContent,{className:"w-auto p-0",align:"start",children:[e.jsx(g.Calendar,{...v,mode:"single",selected:d.value,onSelect:d.onChange}),N&&e.jsx("div",{className:"px-4 pb-3",children:e.jsx(g.TimePicker,{value:x.dayjs(d.value).format("HH:mm"),onChange:k=>{const[C,p]=k.split(":");d.onChange(x.dayjs(d.value).set("hour",Number(C)).set("minute",Number(p)).toDate())}})})]})]})]})})||null,q=({control:r,name:t,label:a,required:o,rules:c,placeholder:l,floatingError:n,...i})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:c,render:({field:m,formState:j})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",o&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsx(I.DateRangePicker,{...i,error:`${F.get(j.errors,t,"")}`,selected:m.value,onRangeSelected:m.onChange,placeholder:l})}),e.jsx(s.FormMessage,{className:x.cn(n&&"absolute -bottom-5")})]})]})})||null,L=({control:r,name:t,label:a,rules:o,required:c,floatingError:l,...n})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:o,render:({field:i})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",c&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsx(s.HtmlEditor,{...i,...n})}),e.jsx(s.FormMessage,{className:x.cn(l&&"absolute -bottom-5")})]})]})})||null,R=({control:r,name:t,label:a,rules:o,required:c,floatingError:l,...n})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:o,render:({field:i,formState:m})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",c&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsx(s.MaskInput,{thousandsSeparator:" ",lazy:!1,placeholderChar:"_",unmask:!0,...i,...n,variant:F.get(m.errors,`${t}.message`)?"failure":"default",onAccept:j=>i.onChange(j)})}),e.jsx(s.FormMessage,{className:x.cn(l&&"absolute -bottom-5")})]})]})})||null,w=({control:r,name:t,label:a,rules:o,value:c,...l})=>{const n=b.useId();return t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:o,render:({field:i})=>e.jsx(s.FormLabel,{className:"block",htmlFor:l.id||n,children:e.jsxs(s.FormItem,{className:"flex flex-row items-start gap-3",children:[e.jsx(s.FormControl,{children:e.jsx(s.RadioGroupItem,{id:l.id||n,value:c,checked:i.value===c,onClick:()=>{i.value!==c&&i.onChange(c)},...l})}),a&&e.jsx("div",{className:"mt-0.5",children:a})]})})})||null},D=({control:r,name:t,label:a,required:o,className:c,rules:l,options:n=[],placeholder:i="Select an option",disabled:m,onChange:j})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:l,render:({field:u,formState:N})=>{const y=!!F.get(N.errors,`${t}`),v=d=>{const h=Number(d)?Number(d):d;h&&u.value!==h&&(u.onChange(h),j==null||j(h))};return e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{children:[a," ",o&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsxs(s.Select,{value:`${u.value||""}`,onValueChange:v,disabled:m,children:[e.jsx(s.SelectTrigger,{ref:u.ref,variant:y?"failure":"default",className:x.cn(c),children:e.jsx(s.SelectValue,{placeholder:i})}),e.jsx(s.SelectContent,{children:n.map(d=>e.jsx(s.SelectItem,{value:String(d.value),children:d.label},String(d.value)))})]})}),e.jsx(s.FormMessage,{})]})]})}}),E=({control:r,name:t,label:a,rules:o,...c})=>{const l=b.useId();return t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:o,render:({field:n})=>e.jsx(s.FormLabel,{className:"block",htmlFor:c.id||l,children:e.jsxs(s.FormItem,{className:"flex flex-row items-start gap-3",children:[e.jsx(s.FormControl,{children:e.jsx(s.Switch,{id:c.id||l,className:"m-0",checked:n.value,onCheckedChange:n.onChange,...c})}),a&&e.jsx("div",{className:"mt-0.5",children:a})]})})})||null},O=({control:r,name:t,label:a,required:o,rules:c,className:l,floatingError:n,...i})=>t&&r&&e.jsx(s.FormField,{control:r,name:t,rules:c,render:({field:m,formState:j})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",o&&e.jsx("span",{className:"text-red-600",children:"*"})]}),e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsx(s.Textarea,{variant:F.get(j.errors,`${t}.message`)?"failure":"default",...i,...m,className:x.cn(l)})}),e.jsx(s.FormMessage,{className:x.cn(n&&"absolute -bottom-5")})]})]})})||null,$=({control:r,name:t,label:a,required:o,className:c,rules:l,floatingError:n,...i})=>t&&r?e.jsx(s.FormField,{control:r,name:t,rules:l,render:({field:m})=>e.jsxs(s.FormItem,{children:[a&&e.jsxs(s.FormLabel,{className:"block",children:[a," ",o&&e.jsx("span",{className:"text-red-600",children:"*"})]})," ",e.jsxs("div",{children:[e.jsx(s.FormControl,{children:e.jsx(g.TimePicker,{...m,...i})}),e.jsx(s.FormMessage,{className:x.cn(n&&"absolute -bottom-5")})]})]})}):e.jsx(g.TimePicker,{className:"mt-2",...i});exports.MyInput=F.MyInput;exports.MySelect=P.MySelect;exports.MyCheckbox=T;exports.MyDatePicker=f;exports.MyDateRangePicker=q;exports.MyHtmlEditor=L;exports.MyMaskInput=R;exports.MyRadio=w;exports.MyShadcnSelect=D;exports.MySwitch=E;exports.MyTextarea=O;exports.MyTimePicker=$;Object.keys(s).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>s[r]})});
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -8,7 +8,7 @@ import { cn as u, dayjs as S } from "dgz-ui/utils";
|
|
|
8
8
|
import { g as b } from "../../chunks/MyInput-ByJ5vTAN.es.js";
|
|
9
9
|
import { M as ke } from "../../chunks/MyInput-ByJ5vTAN.es.js";
|
|
10
10
|
import { Calendar1 as Q } from "lucide-react";
|
|
11
|
-
import { D as U } from "../../chunks/DateRangePicker-
|
|
11
|
+
import { D as U } from "../../chunks/DateRangePicker-C2ZYbgXb.es.js";
|
|
12
12
|
import { M as Ce } from "../../chunks/MySelect-CRXtMlbf.es.js";
|
|
13
13
|
const se = ({
|
|
14
14
|
control: a,
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { CalendarProps } from 'dgz-ui/calendar';
|
|
2
2
|
import { InputProps } from 'dgz-ui/form';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
3
4
|
import { DateRange } from 'react-day-picker';
|
|
5
|
+
/**
|
|
6
|
+
* Type definition for a date range preset configuration.
|
|
7
|
+
*/
|
|
8
|
+
export type PresetType = {
|
|
9
|
+
from: Date;
|
|
10
|
+
to: Date;
|
|
11
|
+
/** Label for the preset (e.g., "Last 7 days"). */
|
|
12
|
+
label: ReactNode;
|
|
13
|
+
isActive?: boolean;
|
|
14
|
+
};
|
|
4
15
|
/**
|
|
5
16
|
* Props for the DateRangePicker component.
|
|
6
17
|
*/
|
|
@@ -19,6 +30,7 @@ export type DateRangePickerProps = Omit<CalendarProps, 'mode' | 'disabled' | 'se
|
|
|
19
30
|
onRangeSelected?: (value?: DateRange) => void;
|
|
20
31
|
inputProps?: InputProps;
|
|
21
32
|
disabled?: boolean;
|
|
33
|
+
defaultPresets?: PresetType[];
|
|
22
34
|
};
|
|
23
35
|
/**
|
|
24
36
|
* DateRangePicker displays a two-month range picker with helpful presets.
|
|
@@ -31,7 +43,8 @@ export type DateRangePickerProps = Omit<CalendarProps, 'mode' | 'disabled' | 'se
|
|
|
31
43
|
* @param props.error - Optional error message that adjusts styling.
|
|
32
44
|
* @param props.inputProps - Props passed to the underlying Input component.
|
|
33
45
|
* @param props.disabled - Whether the date range picker is disabled.
|
|
46
|
+
* @param props.defaultPresets - dafault presets list for the picker.
|
|
34
47
|
* @returns A date range picker component.
|
|
35
48
|
*/
|
|
36
|
-
export declare const DateRangePicker: ({ className, format, selected, timezone, onRangeSelected, placeholder, disabled, error, inputProps, ...props }: DateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export declare const DateRangePicker: ({ className, format, selected, timezone, onRangeSelected, placeholder, defaultPresets, disabled, error, inputProps, ...props }: DateRangePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
37
50
|
//# sourceMappingURL=DateRangePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/datepicker/DateRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,aAAa,EAAQ,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/datepicker/DateRangePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,aAAa,EAAQ,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,KAAK,SAAS,EAAgC,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,kDAAkD;IAClD,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,aAAa,EACb,MAAM,GAAG,UAAU,GAAG,UAAU,CACjC,GAAG;IACF,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAAI,gIAY7B,oBAAoB,4CA2KtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),k=require("dgz-ui/button"),u=require("dgz-ui/calendar"),L=require("dgz-ui/form"),h=require("dgz-ui/popover"),a=require("dgz-ui/utils"),v=require("lucide-react"),c=require("react"),P=require("react-i18next"),w=({className:j,format:f=u.DATE,selected:s,timezone:y,onRangeSelected:i=()=>{},placeholder:O,disabled:l,error:T,inputProps:q,...b})=>{const{t:r}=P.useTranslation(),[N,D]=c.useState(!1),[t,m]=c.useState();c.useEffect(()=>{m(s)},[s]);const C=c.useMemo(()=>{const o=a.dayjs().endOf("day");return[{from:o.startOf("week").toDate(),to:o.endOf("week").toDate(),label:r("This week")},{from:o.startOf("month").toDate(),to:o.endOf("month").toDate(),label:r("This month")},{from:o.startOf("year").toDate(),to:o.endOf("year").toDate(),label:r("This year")},{from:o.subtract(7,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 7 days")},{from:o.subtract(30,"day").startOf("day").toDate(),to:o.toDate(),label:r("Last 30 days")},{from:o.subtract(3,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 3 months")},{from:o.subtract(6,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 6 months")},{from:o.subtract(12,"month").startOf("day").toDate(),to:o.toDate(),label:r("Last 12 months")}].map(n=>{var p,x;return{...n,isActive:((p=s==null?void 0:s.from)==null?void 0:p.getTime())===n.from.getTime()&&((x=s==null?void 0:s.to)==null?void 0:x.getTime())===n.to.getTime()}})},[r,s]),d=o=>{m(o),o!=null&&o.from&&(o!=null&&o.to)&&(i(o),D(!1))};return e.jsxs(h.Popover,{open:N,onOpenChange:D,children:[e.jsx(h.PopoverTrigger,{asChild:!0,className:"m-0!",disabled:l,children:e.jsxs("div",{className:"relative",children:[e.jsx(L.Input,{variant:T?"failure":"default",...q,readOnly:!0,value:t!=null&&t.from?t.to?`${a.dayjs(t.from).format(f)}-${a.dayjs(t.to).format(f)}`:a.dayjs(t.from).format(f):"",placeholder:O,disabled:l,className:a.cn(j)}),t&&e.jsx(v.XIcon,{onClick:()=>{m(void 0),i==null||i(void 0)},className:a.cn("text-secondary absolute top-3 right-8 size-4 cursor-pointer",l&&"pointer-events-none opacity-50")}),e.jsx(v.Calendar1,{className:a.cn("text-secondary absolute top-2.5 right-2 size-5",l&&"pointer-events-none opacity-50")})]})}),e.jsxs(h.PopoverContent,{className:"flex w-auto p-0",align:"end",side:"bottom",children:[e.jsx("div",{className:"border-border-alpha-light flex flex-col space-y-1 border-e p-2",children:C.map((o,n)=>e.jsx(k.Button,{size:"xs",variant:o.isActive?"default":"ghost",className:"justify-start",onClick:()=>d(o),children:o.label},n))}),e.jsx(u.Calendar,{...b,className:"border-border-alpha-light border-e",mode:"single",endMonth:t==null?void 0:t.to,selected:t==null?void 0:t.from,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,timeZone:y,disabled:t!=null&&t.to?{after:t.to}:void 0,onSelect:o=>{m({...t,from:o})}}),e.jsx(u.Calendar,{...b,mode:"single",startMonth:t==null?void 0:t.from,selected:t==null?void 0:t.to,timeZone:y,disabled:t!=null&&t.from?{before:t.from}:void 0,selectedToDate:t==null?void 0:t.to,selectedFromDate:t==null?void 0:t.from,onSelect:o=>{t&&d({...t,to:o})}})]})]})};exports.DateRangePicker=w;
|
|
2
|
-
//# sourceMappingURL=DateRangePicker-CUv-qznZ.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker-CUv-qznZ.cjs.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport { Calendar, type CalendarProps, DATE } from 'dgz-ui/calendar';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { Popover, PopoverContent, PopoverTrigger } from 'dgz-ui/popover';\nimport { cn, dayjs } from 'dgz-ui/utils';\nimport { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n};\n\n/**\n * Type definition for a date range preset configuration.\n */\ntype PresetType = DateRange & {\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ].map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"iQAuDaA,EAAkB,CAAC,CAC9B,UAAAC,EACA,OAAAC,EAASC,EAAAA,KACT,SAAAC,EACA,SAAAC,EACA,gBAAAC,EAAkB,IAAM,CAAC,EACzB,YAAAC,EACA,SAAAC,EACA,MAAAC,EACA,WAAAC,EACA,GAAGC,CACL,IAA4B,CAC1B,KAAM,CAAA,EAAEC,CAAA,EAAMC,iBAAA,EACR,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAS,EAAK,EAChC,CAACC,EAAMC,CAAO,EAAIF,WAAA,EAExBG,EAAAA,UAAU,IAAM,CACdD,EAAQd,CAAQ,CAClB,EAAG,CAACA,CAAQ,CAAC,EAEb,MAAMgB,EAAwBC,EAAAA,QAAQ,IAAM,CAC1C,MAAMC,EAAQC,EAAAA,QAAQ,MAAM,KAAK,EACjC,MAAO,CACL,CACE,KAAMD,EAAM,QAAQ,MAAM,EAAE,OAAA,EAC5B,GAAIA,EAAM,MAAM,MAAM,EAAE,OAAA,EACxB,MAAOV,EAAE,WAAW,CAAA,EAEtB,CACE,KAAMU,EAAM,QAAQ,OAAO,EAAE,OAAA,EAC7B,GAAIA,EAAM,MAAM,OAAO,EAAE,OAAA,EACzB,MAAOV,EAAE,YAAY,CAAA,EAEvB,CACE,KAAMU,EAAM,QAAQ,MAAM,EAAE,OAAA,EAC5B,GAAIA,EAAM,MAAM,MAAM,EAAE,OAAA,EACxB,MAAOV,EAAE,WAAW,CAAA,EAEtB,CACE,KAAMU,EAAM,SAAS,EAAG,KAAK,EAAE,QAAQ,KAAK,EAAE,OAAA,EAC9C,GAAIA,EAAM,OAAA,EACV,MAAOV,EAAE,aAAa,CAAA,EAExB,CACE,KAAMU,EAAM,SAAS,GAAI,KAAK,EAAE,QAAQ,KAAK,EAAE,OAAA,EAC/C,GAAIA,EAAM,OAAA,EACV,MAAOV,EAAE,cAAc,CAAA,EAEzB,CACE,KAAMU,EAAM,SAAS,EAAG,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAA,EAChD,GAAIA,EAAM,OAAA,EACV,MAAOV,EAAE,eAAe,CAAA,EAE1B,CACE,KAAMU,EAAM,SAAS,EAAG,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAA,EAChD,GAAIA,EAAM,OAAA,EACV,MAAOV,EAAE,eAAe,CAAA,EAE1B,CACE,KAAMU,EAAM,SAAS,GAAI,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAA,EACjD,GAAIA,EAAM,OAAA,EACV,MAAOV,EAAE,gBAAgB,CAAA,CAC3B,EACA,IAAKY,GAAA,SAAU,OACf,GAAGA,EACH,WACEC,EAAArB,GAAA,YAAAA,EAAU,OAAV,YAAAqB,EAAgB,aAAcD,EAAK,KAAK,QAAA,KACxCE,EAAAtB,GAAA,YAAAA,EAAU,KAAV,YAAAsB,EAAc,aAAcF,EAAK,GAAG,QAAA,CAAQ,EAC9C,CACJ,EAAG,CAACZ,EAAGR,CAAQ,CAAC,EAEVuB,EAAqBC,GAAqB,CAC9CV,EAAQU,CAAK,EACTA,GAAA,MAAAA,EAAO,OAAQA,GAAA,MAAAA,EAAO,MACxBtB,EAAgBsB,CAAK,EACrBb,EAAQ,EAAK,EAEjB,EAEA,OACEc,EAAAA,KAACC,EAAAA,QAAA,CAAQ,KAAAhB,EAAY,aAAcC,EACjC,SAAA,CAAAgB,EAAAA,IAACC,EAAAA,eAAA,CAAe,QAAO,GAAC,UAAW,OAAQ,SAAAxB,EACzC,SAAAqB,EAAAA,KAAC,MAAA,CAAI,UAAW,WACd,SAAA,CAAAE,EAAAA,IAACE,EAAAA,MAAA,CACC,QAASxB,EAAQ,UAAY,UAC5B,GAAGC,EACJ,SAAQ,GACR,MACEO,GAAA,MAAAA,EAAM,KACFA,EAAK,GACH,GAAGM,QAAMN,EAAK,IAAI,EAAE,OAAOf,CAAM,CAAC,IAAIqB,QAAMN,EAAK,EAAE,EAAE,OAAOf,CAAM,CAAC,GACnEqB,QAAMN,EAAK,IAAI,EAAE,OAAOf,CAAM,EAChC,GAEN,YAAAK,EACA,SAAAC,EACA,UAAW0B,EAAAA,GAAGjC,CAAS,CAAA,CAAA,EAExBgB,GACCc,EAAAA,IAACI,EAAAA,MAAA,CACC,QAAS,IAAM,CACbjB,EAAQ,MAAS,EACjBZ,GAAA,MAAAA,EAAkB,OACpB,EACA,UAAW4B,EAAAA,GACT,8DACA1B,GAAY,gCAAA,CACd,CAAA,EAGJuB,EAAAA,IAACK,EAAAA,UAAA,CACC,UAAWF,EAAAA,GACT,iDACA1B,GAAY,gCAAA,CACd,CAAA,CACF,CAAA,CACF,CAAA,CACF,SACC6B,EAAAA,eAAA,CAAe,UAAU,kBAAkB,MAAM,MAAM,KAAM,SAC5D,SAAA,CAAAN,EAAAA,IAAC,MAAA,CACC,UACE,iEAGD,SAAAX,EAAQ,IAAI,CAACkB,EAAQC,IACpBR,EAAAA,IAACS,EAAAA,OAAA,CACC,KAAM,KAEN,QAASF,EAAO,SAAW,UAAY,QACvC,UAAW,gBACX,QAAS,IAAMX,EAAkBW,CAAM,EAEtC,SAAAA,EAAO,KAAA,EALHC,CAAA,CAOR,CAAA,CAAA,EAEHR,EAAAA,IAACU,EAAAA,SAAA,CACE,GAAG9B,EACJ,UAAW,qCACX,KAAK,SACL,SAAUM,GAAA,YAAAA,EAAM,GAChB,SAAUA,GAAA,YAAAA,EAAM,KAChB,eAAgBA,GAAA,YAAAA,EAAM,GACtB,iBAAkBA,GAAA,YAAAA,EAAM,KACxB,SAAUZ,EACV,SACEY,GAAA,MAAAA,EAAM,GACF,CACE,MAAOA,EAAK,EAAA,EAEd,OAEN,SAAWyB,GAAS,CAClBxB,EAAQ,CAAE,GAAGD,EAAM,KAAAyB,EAAgC,CACrD,CAAA,CAAA,EAEFX,EAAAA,IAACU,EAAAA,SAAA,CACE,GAAG9B,EACJ,KAAK,SACL,WAAYM,GAAA,YAAAA,EAAM,KAClB,SAAUA,GAAA,YAAAA,EAAM,GAChB,SAAUZ,EACV,SACEY,GAAA,MAAAA,EAAM,KACF,CACE,OAAQA,EAAK,IAAA,EAEf,OAEN,eAAgBA,GAAA,YAAAA,EAAM,GACtB,iBAAkBA,GAAA,YAAAA,EAAM,KACxB,SAAW0B,GAAO,CACZ1B,GACFU,EAAkB,CAAE,GAAGV,EAAM,GAAA0B,EAA4B,CAE7D,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EACF,CAEJ"}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { jsxs as c, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { Button as j } from "dgz-ui/button";
|
|
3
|
-
import { DATE as w, Calendar as O } from "dgz-ui/calendar";
|
|
4
|
-
import { Input as P } from "dgz-ui/form";
|
|
5
|
-
import { Popover as A, PopoverTrigger as M, PopoverContent as z } from "dgz-ui/popover";
|
|
6
|
-
import { dayjs as l, cn as h } from "dgz-ui/utils";
|
|
7
|
-
import { XIcon as E, Calendar1 as F } from "lucide-react";
|
|
8
|
-
import { useState as d, useEffect as I, useMemo as Z } from "react";
|
|
9
|
-
import { useTranslation as $ } from "react-i18next";
|
|
10
|
-
const U = ({
|
|
11
|
-
className: T,
|
|
12
|
-
format: n = w,
|
|
13
|
-
selected: r,
|
|
14
|
-
timezone: p,
|
|
15
|
-
onRangeSelected: m = () => {
|
|
16
|
-
},
|
|
17
|
-
placeholder: x,
|
|
18
|
-
disabled: i,
|
|
19
|
-
error: N,
|
|
20
|
-
inputProps: C,
|
|
21
|
-
...u
|
|
22
|
-
}) => {
|
|
23
|
-
const { t: a } = $(), [k, D] = d(!1), [t, f] = d();
|
|
24
|
-
I(() => {
|
|
25
|
-
f(r);
|
|
26
|
-
}, [r]);
|
|
27
|
-
const L = Z(() => {
|
|
28
|
-
const o = l().endOf("day");
|
|
29
|
-
return [
|
|
30
|
-
{
|
|
31
|
-
from: o.startOf("week").toDate(),
|
|
32
|
-
to: o.endOf("week").toDate(),
|
|
33
|
-
label: a("This week")
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
from: o.startOf("month").toDate(),
|
|
37
|
-
to: o.endOf("month").toDate(),
|
|
38
|
-
label: a("This month")
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
from: o.startOf("year").toDate(),
|
|
42
|
-
to: o.endOf("year").toDate(),
|
|
43
|
-
label: a("This year")
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
from: o.subtract(7, "day").startOf("day").toDate(),
|
|
47
|
-
to: o.toDate(),
|
|
48
|
-
label: a("Last 7 days")
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
from: o.subtract(30, "day").startOf("day").toDate(),
|
|
52
|
-
to: o.toDate(),
|
|
53
|
-
label: a("Last 30 days")
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
from: o.subtract(3, "month").startOf("day").toDate(),
|
|
57
|
-
to: o.toDate(),
|
|
58
|
-
label: a("Last 3 months")
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
from: o.subtract(6, "month").startOf("day").toDate(),
|
|
62
|
-
to: o.toDate(),
|
|
63
|
-
label: a("Last 6 months")
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
from: o.subtract(12, "month").startOf("day").toDate(),
|
|
67
|
-
to: o.toDate(),
|
|
68
|
-
label: a("Last 12 months")
|
|
69
|
-
}
|
|
70
|
-
].map((s) => {
|
|
71
|
-
var y, v;
|
|
72
|
-
return {
|
|
73
|
-
...s,
|
|
74
|
-
isActive: ((y = r == null ? void 0 : r.from) == null ? void 0 : y.getTime()) === s.from.getTime() && ((v = r == null ? void 0 : r.to) == null ? void 0 : v.getTime()) === s.to.getTime()
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
}, [a, r]), b = (o) => {
|
|
78
|
-
f(o), o != null && o.from && (o != null && o.to) && (m(o), D(!1));
|
|
79
|
-
};
|
|
80
|
-
return /* @__PURE__ */ c(A, { open: k, onOpenChange: D, children: [
|
|
81
|
-
/* @__PURE__ */ e(M, { asChild: !0, className: "m-0!", disabled: i, children: /* @__PURE__ */ c("div", { className: "relative", children: [
|
|
82
|
-
/* @__PURE__ */ e(
|
|
83
|
-
P,
|
|
84
|
-
{
|
|
85
|
-
variant: N ? "failure" : "default",
|
|
86
|
-
...C,
|
|
87
|
-
readOnly: !0,
|
|
88
|
-
value: t != null && t.from ? t.to ? `${l(t.from).format(n)}-${l(t.to).format(n)}` : l(t.from).format(n) : "",
|
|
89
|
-
placeholder: x,
|
|
90
|
-
disabled: i,
|
|
91
|
-
className: h(T)
|
|
92
|
-
}
|
|
93
|
-
),
|
|
94
|
-
t && /* @__PURE__ */ e(
|
|
95
|
-
E,
|
|
96
|
-
{
|
|
97
|
-
onClick: () => {
|
|
98
|
-
f(void 0), m == null || m(void 0);
|
|
99
|
-
},
|
|
100
|
-
className: h(
|
|
101
|
-
"text-secondary absolute top-3 right-8 size-4 cursor-pointer",
|
|
102
|
-
i && "pointer-events-none opacity-50"
|
|
103
|
-
)
|
|
104
|
-
}
|
|
105
|
-
),
|
|
106
|
-
/* @__PURE__ */ e(
|
|
107
|
-
F,
|
|
108
|
-
{
|
|
109
|
-
className: h(
|
|
110
|
-
"text-secondary absolute top-2.5 right-2 size-5",
|
|
111
|
-
i && "pointer-events-none opacity-50"
|
|
112
|
-
)
|
|
113
|
-
}
|
|
114
|
-
)
|
|
115
|
-
] }) }),
|
|
116
|
-
/* @__PURE__ */ c(z, { className: "flex w-auto p-0", align: "end", side: "bottom", children: [
|
|
117
|
-
/* @__PURE__ */ e(
|
|
118
|
-
"div",
|
|
119
|
-
{
|
|
120
|
-
className: "border-border-alpha-light flex flex-col space-y-1 border-e p-2",
|
|
121
|
-
children: L.map((o, s) => /* @__PURE__ */ e(
|
|
122
|
-
j,
|
|
123
|
-
{
|
|
124
|
-
size: "xs",
|
|
125
|
-
variant: o.isActive ? "default" : "ghost",
|
|
126
|
-
className: "justify-start",
|
|
127
|
-
onClick: () => b(o),
|
|
128
|
-
children: o.label
|
|
129
|
-
},
|
|
130
|
-
s
|
|
131
|
-
))
|
|
132
|
-
}
|
|
133
|
-
),
|
|
134
|
-
/* @__PURE__ */ e(
|
|
135
|
-
O,
|
|
136
|
-
{
|
|
137
|
-
...u,
|
|
138
|
-
className: "border-border-alpha-light border-e",
|
|
139
|
-
mode: "single",
|
|
140
|
-
endMonth: t == null ? void 0 : t.to,
|
|
141
|
-
selected: t == null ? void 0 : t.from,
|
|
142
|
-
selectedToDate: t == null ? void 0 : t.to,
|
|
143
|
-
selectedFromDate: t == null ? void 0 : t.from,
|
|
144
|
-
timeZone: p,
|
|
145
|
-
disabled: t != null && t.to ? {
|
|
146
|
-
after: t.to
|
|
147
|
-
} : void 0,
|
|
148
|
-
onSelect: (o) => {
|
|
149
|
-
f({ ...t, from: o });
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
),
|
|
153
|
-
/* @__PURE__ */ e(
|
|
154
|
-
O,
|
|
155
|
-
{
|
|
156
|
-
...u,
|
|
157
|
-
mode: "single",
|
|
158
|
-
startMonth: t == null ? void 0 : t.from,
|
|
159
|
-
selected: t == null ? void 0 : t.to,
|
|
160
|
-
timeZone: p,
|
|
161
|
-
disabled: t != null && t.from ? {
|
|
162
|
-
before: t.from
|
|
163
|
-
} : void 0,
|
|
164
|
-
selectedToDate: t == null ? void 0 : t.to,
|
|
165
|
-
selectedFromDate: t == null ? void 0 : t.from,
|
|
166
|
-
onSelect: (o) => {
|
|
167
|
-
t && b({ ...t, to: o });
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
)
|
|
171
|
-
] })
|
|
172
|
-
] });
|
|
173
|
-
};
|
|
174
|
-
export {
|
|
175
|
-
U as D
|
|
176
|
-
};
|
|
177
|
-
//# sourceMappingURL=DateRangePicker-DeoV3xqL.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker-DeoV3xqL.es.js","sources":["../../src/components/datepicker/DateRangePicker.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport { Calendar, type CalendarProps, DATE } from 'dgz-ui/calendar';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { Popover, PopoverContent, PopoverTrigger } from 'dgz-ui/popover';\nimport { cn, dayjs } from 'dgz-ui/utils';\nimport { Calendar1, XIcon } from 'lucide-react';\nimport { type ReactNode, useEffect, useMemo, useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Props for the DateRangePicker component.\n */\nexport type DateRangePickerProps = Omit<\n CalendarProps,\n 'mode' | 'disabled' | 'selected'\n> & {\n /** The date format string (e.g., 'YYYY-MM-DD'). */\n format?: string;\n /** Placeholder text when no date is selected. */\n placeholder?: string;\n /** The currently selected date range. */\n selected?: DateRange;\n /** Timezone for date calculations. */\n timezone?: string;\n /** Error message to display (modifies styling). */\n error?: string;\n /** Callback function when a date range is selected. */\n onRangeSelected?: (value?: DateRange) => void;\n inputProps?: InputProps;\n disabled?: boolean;\n};\n\n/**\n * Type definition for a date range preset configuration.\n */\ntype PresetType = DateRange & {\n /** Label for the preset (e.g., \"Last 7 days\"). */\n label: ReactNode;\n isActive?: boolean;\n};\n\n/**\n * DateRangePicker displays a two-month range picker with helpful presets.\n *\n * @param props.format - Display date format.\n * @param props.selected - Currently selected date range.\n * @param props.timezone - Time zone for date calculations.\n * @param props.onRangeSelected - Callback when a full range is selected.\n * @param props.placeholder - Placeholder when no date selected.\n * @param props.error - Optional error message that adjusts styling.\n * @param props.inputProps - Props passed to the underlying Input component.\n * @param props.disabled - Whether the date range picker is disabled.\n * @returns A date range picker component.\n */\nexport const DateRangePicker = ({\n className,\n format = DATE,\n selected,\n timezone,\n onRangeSelected = () => {},\n placeholder,\n disabled,\n error,\n inputProps,\n ...props\n}: DateRangePickerProps) => {\n const { t } = useTranslation();\n const [open, setOpen] = useState(false);\n const [date, setDate] = useState<DateRange | undefined>();\n\n useEffect(() => {\n setDate(selected);\n }, [selected]);\n\n const presets: PresetType[] = useMemo(() => {\n const today = dayjs().endOf('day');\n return [\n {\n from: today.startOf('week').toDate(),\n to: today.endOf('week').toDate(),\n label: t('This week'),\n },\n {\n from: today.startOf('month').toDate(),\n to: today.endOf('month').toDate(),\n label: t('This month'),\n },\n {\n from: today.startOf('year').toDate(),\n to: today.endOf('year').toDate(),\n label: t('This year'),\n },\n {\n from: today.subtract(7, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 7 days'),\n },\n {\n from: today.subtract(30, 'day').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 30 days'),\n },\n {\n from: today.subtract(3, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 3 months'),\n },\n {\n from: today.subtract(6, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 6 months'),\n },\n {\n from: today.subtract(12, 'month').startOf('day').toDate(),\n to: today.toDate(),\n label: t('Last 12 months'),\n },\n ].map((item) => ({\n ...item,\n isActive:\n selected?.from?.getTime() === item.from.getTime() &&\n selected?.to?.getTime() === item.to.getTime(),\n }));\n }, [t, selected]);\n\n const handleRangeSelect = (range: DateRange) => {\n setDate(range);\n if (range?.from && range?.to) {\n onRangeSelected(range);\n setOpen(false);\n }\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild className={'m-0!'} disabled={disabled}>\n <div className={'relative'}>\n <Input\n variant={error ? 'failure' : 'default'}\n {...inputProps}\n readOnly\n value={\n date?.from\n ? date.to\n ? `${dayjs(date.from).format(format)}-${dayjs(date.to).format(format)}`\n : dayjs(date.from).format(format)\n : ''\n }\n placeholder={placeholder}\n disabled={disabled}\n className={cn(className)}\n />\n {date && (\n <XIcon\n onClick={() => {\n setDate(undefined);\n onRangeSelected?.(undefined);\n }}\n className={cn(\n 'text-secondary absolute top-3 right-8 size-4 cursor-pointer',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n )}\n <Calendar1\n className={cn(\n 'text-secondary absolute top-2.5 right-2 size-5',\n disabled && 'pointer-events-none opacity-50'\n )}\n />\n </div>\n </PopoverTrigger>\n <PopoverContent className=\"flex w-auto p-0\" align=\"end\" side={'bottom'}>\n <div\n className={\n 'border-border-alpha-light flex flex-col space-y-1 border-e p-2'\n }\n >\n {presets.map((preset, index) => (\n <Button\n size={'xs'}\n key={index}\n variant={preset.isActive ? 'default' : 'ghost'}\n className={'justify-start'}\n onClick={() => handleRangeSelect(preset)}\n >\n {preset.label}\n </Button>\n ))}\n </div>\n <Calendar\n {...props}\n className={'border-border-alpha-light border-e'}\n mode=\"single\"\n endMonth={date?.to}\n selected={date?.from}\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n timeZone={timezone}\n disabled={\n date?.to\n ? {\n after: date.to,\n }\n : undefined\n }\n onSelect={(from) => {\n setDate({ ...date, from: from as Date | undefined });\n }}\n />\n <Calendar\n {...props}\n mode=\"single\"\n startMonth={date?.from}\n selected={date?.to}\n timeZone={timezone}\n disabled={\n date?.from\n ? {\n before: date.from,\n }\n : undefined\n }\n selectedToDate={date?.to}\n selectedFromDate={date?.from}\n onSelect={(to) => {\n if (date) {\n handleRangeSelect({ ...date, to: to as Date | undefined });\n }\n }}\n />\n </PopoverContent>\n </Popover>\n );\n};\n"],"names":["DateRangePicker","className","format","DATE","selected","timezone","onRangeSelected","placeholder","disabled","error","inputProps","props","t","useTranslation","open","setOpen","useState","date","setDate","useEffect","presets","useMemo","today","dayjs","item","_a","_b","handleRangeSelect","range","jsxs","Popover","jsx","PopoverTrigger","Input","cn","XIcon","Calendar1","PopoverContent","preset","index","Button","Calendar","from","to"],"mappings":"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"}
|