@egose/shadcn-theme 0.0.15 → 0.0.17
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/{chunk-2QPFMTGQ.js → chunk-EQWIZ4DC.js} +41 -15
- package/chunk-EQWIZ4DC.js.map +1 -0
- package/{chunk-2NSYAQFL.mjs → chunk-V7HAO7KE.mjs} +41 -15
- package/chunk-V7HAO7KE.mjs.map +1 -0
- package/components/form/date-picker.d.mts +3 -1
- package/components/form/date-picker.d.ts +3 -1
- package/components/form/date-picker.js +2 -2
- package/components/form/date-picker.mjs +1 -1
- package/components/form/date-range-picker.d.mts +1 -0
- package/components/form/date-range-picker.d.ts +1 -0
- package/components/form/date-range-picker.js +1 -1
- package/components/form/date-range-picker.js.map +1 -1
- package/components/form/date-range-picker.mjs +1 -1
- package/components/form/date-range-picker.mjs.map +1 -1
- package/components/form/hook-date-picker.js +2 -2
- package/components/form/hook-date-picker.mjs +1 -1
- package/package.json +1 -1
- package/chunk-2NSYAQFL.mjs.map +0 -1
- package/chunk-2QPFMTGQ.js.map +0 -1
|
@@ -24,46 +24,72 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
|
24
24
|
var _datefns = require('date-fns');
|
|
25
25
|
var _lucidereact = require('lucide-react');
|
|
26
26
|
var _kebabCase2 = require('lodash-es/kebabCase'); var _kebabCase3 = _interopRequireDefault(_kebabCase2);
|
|
27
|
-
var
|
|
27
|
+
var _isUndefined2 = require('lodash-es/isUndefined'); var _isUndefined3 = _interopRequireDefault(_isUndefined2);
|
|
28
28
|
var _isString2 = require('lodash-es/isString'); var _isString3 = _interopRequireDefault(_isString2);
|
|
29
29
|
function formatDate(date) {
|
|
30
30
|
return _datefns.format.call(void 0, date, "LLL dd, y");
|
|
31
31
|
}
|
|
32
|
+
function getStartOfDay(date) {
|
|
33
|
+
const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
34
|
+
return startOfDay;
|
|
35
|
+
}
|
|
32
36
|
function FormDatePicker({
|
|
33
37
|
id,
|
|
34
38
|
name,
|
|
35
39
|
label,
|
|
36
40
|
required = false,
|
|
37
41
|
disabled = false,
|
|
38
|
-
|
|
42
|
+
initialValue,
|
|
43
|
+
value,
|
|
39
44
|
onChange,
|
|
40
45
|
classNames
|
|
41
46
|
}) {
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
47
|
+
const [date, setDate] = _react.useState.call(void 0, void 0);
|
|
48
|
+
const [initialized, setInitialized] = _react.useState.call(void 0, false);
|
|
49
|
+
_react.useEffect.call(void 0, () => {
|
|
50
|
+
if (!initialized) {
|
|
51
|
+
const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(/* @__PURE__ */ new Date());
|
|
52
|
+
setDate(dt);
|
|
53
|
+
setInitialized(true);
|
|
54
|
+
}
|
|
55
|
+
}, [initialized, initialValue]);
|
|
45
56
|
_react.useEffect.call(void 0, () => {
|
|
46
|
-
|
|
57
|
+
if (_isUndefined3.default.call(void 0, value)) {
|
|
58
|
+
if (!_isUndefined3.default.call(void 0, date)) {
|
|
59
|
+
setDate(void 0);
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
const dt = _isString3.default.call(void 0, value) ? new Date(value) : value;
|
|
63
|
+
if (!_chunkAIRT3G2Fjs.isEqualDate.call(void 0, date, dt)) {
|
|
64
|
+
setDate(getStartOfDay(dt));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
47
67
|
}, [value]);
|
|
68
|
+
_react.useEffect.call(void 0, () => {
|
|
69
|
+
if (initialized) {
|
|
70
|
+
onChange(date);
|
|
71
|
+
}
|
|
72
|
+
}, [date, initialized]);
|
|
48
73
|
if (!id) id = _kebabCase3.default.call(void 0, name);
|
|
74
|
+
const display = !initialized ? /* @__PURE__ */ _react2.default.createElement("span", null) : date ? /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, formatDate(date)) : /* @__PURE__ */ _react2.default.createElement("span", null, "Pick a date");
|
|
49
75
|
return /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkB2G2EZ4Pjs.cn.call(void 0, "date-picker", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ _react2.default.createElement(_chunkAXZDZXCYjs.Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ _react2.default.createElement("div", { className: _chunkB2G2EZ4Pjs.cn.call(void 0, "grid gap-2") }, /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.Popover, null, /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.PopoverTrigger, { asChild: true }, /* @__PURE__ */ _react2.default.createElement(
|
|
50
76
|
_chunkY2EVJJLMjs.Button,
|
|
51
77
|
{
|
|
52
|
-
variant:
|
|
78
|
+
variant: date ? "secondary" : "muted",
|
|
53
79
|
outline: true,
|
|
54
|
-
className: _chunkB2G2EZ4Pjs.cn.call(void 0, "w-[
|
|
80
|
+
className: _chunkB2G2EZ4Pjs.cn.call(void 0, "min-w-[145px] justify-start text-left font-normal", classNames == null ? void 0 : classNames.button)
|
|
55
81
|
},
|
|
56
82
|
/* @__PURE__ */ _react2.default.createElement(_lucidereact.CalendarIcon, null),
|
|
57
|
-
|
|
83
|
+
display
|
|
58
84
|
)), /* @__PURE__ */ _react2.default.createElement(_chunkZ33UILCVjs.PopoverContent, { className: "w-auto p-0", align: "start" }, /* @__PURE__ */ _react2.default.createElement(
|
|
59
85
|
_chunk73AY2MAQjs.Calendar,
|
|
60
86
|
{
|
|
61
87
|
mode: "single",
|
|
62
|
-
defaultMonth:
|
|
63
|
-
selected:
|
|
64
|
-
onSelect: (
|
|
65
|
-
if (!_chunkAIRT3G2Fjs.isEqualDate.call(void 0,
|
|
66
|
-
|
|
88
|
+
defaultMonth: date,
|
|
89
|
+
selected: date,
|
|
90
|
+
onSelect: (newdate) => {
|
|
91
|
+
if (!_chunkAIRT3G2Fjs.isEqualDate.call(void 0, date, newdate)) {
|
|
92
|
+
setDate(newdate);
|
|
67
93
|
}
|
|
68
94
|
}
|
|
69
95
|
}
|
|
@@ -73,4 +99,4 @@ function FormDatePicker({
|
|
|
73
99
|
|
|
74
100
|
|
|
75
101
|
exports.FormDatePicker = FormDatePicker;
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-EQWIZ4DC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-EQWIZ4DC.js","../components/form/date-picker.tsx"],"names":[],"mappings":"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","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-EQWIZ4DC.js","sourcesContent":[null,"'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isUndefined from 'lodash-es/isUndefined';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nfunction getStartOfDay(date: Date) {\n const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return startOfDay;\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: Date | string;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n initialValue,\n value,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const [date, setDate] = useState<Date | undefined>(undefined);\n const [initialized, setInitialized] = useState(false);\n\n useEffect(() => {\n if (!initialized) {\n const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(new Date());\n\n setDate(dt);\n setInitialized(true);\n }\n }, [initialized, initialValue]);\n\n useEffect(() => {\n if (_isUndefined(value)) {\n if (!_isUndefined(date)) {\n setDate(undefined);\n }\n } else {\n const dt = _isString(value) ? new Date(value) : value;\n if (!isEqualDate(date, dt)) {\n setDate(getStartOfDay(dt));\n }\n }\n }, [value]);\n\n useEffect(() => {\n if (initialized) {\n onChange(date);\n }\n }, [date, initialized]);\n\n if (!id) id = _kebabCase(name);\n\n const display = !initialized ? <span></span> : date ? <>{formatDate(date)}</> : <span>Pick a date</span>;\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={date ? 'secondary' : 'muted'}\n outline\n className={cn('min-w-[145px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {display}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={(newdate) => {\n if (!isEqualDate(date, newdate)) {\n setDate(newdate);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -24,46 +24,72 @@ import React, { useEffect, useState } from "react";
|
|
|
24
24
|
import { format } from "date-fns";
|
|
25
25
|
import { CalendarIcon } from "lucide-react";
|
|
26
26
|
import _kebabCase from "lodash-es/kebabCase";
|
|
27
|
-
import
|
|
27
|
+
import _isUndefined from "lodash-es/isUndefined";
|
|
28
28
|
import _isString from "lodash-es/isString";
|
|
29
29
|
function formatDate(date) {
|
|
30
30
|
return format(date, "LLL dd, y");
|
|
31
31
|
}
|
|
32
|
+
function getStartOfDay(date) {
|
|
33
|
+
const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
34
|
+
return startOfDay;
|
|
35
|
+
}
|
|
32
36
|
function FormDatePicker({
|
|
33
37
|
id,
|
|
34
38
|
name,
|
|
35
39
|
label,
|
|
36
40
|
required = false,
|
|
37
41
|
disabled = false,
|
|
38
|
-
|
|
42
|
+
initialValue,
|
|
43
|
+
value,
|
|
39
44
|
onChange,
|
|
40
45
|
classNames
|
|
41
46
|
}) {
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
|
|
47
|
+
const [date, setDate] = useState(void 0);
|
|
48
|
+
const [initialized, setInitialized] = useState(false);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (!initialized) {
|
|
51
|
+
const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(/* @__PURE__ */ new Date());
|
|
52
|
+
setDate(dt);
|
|
53
|
+
setInitialized(true);
|
|
54
|
+
}
|
|
55
|
+
}, [initialized, initialValue]);
|
|
45
56
|
useEffect(() => {
|
|
46
|
-
|
|
57
|
+
if (_isUndefined(value)) {
|
|
58
|
+
if (!_isUndefined(date)) {
|
|
59
|
+
setDate(void 0);
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
const dt = _isString(value) ? new Date(value) : value;
|
|
63
|
+
if (!isEqualDate(date, dt)) {
|
|
64
|
+
setDate(getStartOfDay(dt));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
47
67
|
}, [value]);
|
|
68
|
+
useEffect(() => {
|
|
69
|
+
if (initialized) {
|
|
70
|
+
onChange(date);
|
|
71
|
+
}
|
|
72
|
+
}, [date, initialized]);
|
|
48
73
|
if (!id) id = _kebabCase(name);
|
|
74
|
+
const display = !initialized ? /* @__PURE__ */ React.createElement("span", null) : date ? /* @__PURE__ */ React.createElement(React.Fragment, null, formatDate(date)) : /* @__PURE__ */ React.createElement("span", null, "Pick a date");
|
|
49
75
|
return /* @__PURE__ */ React.createElement("div", { className: cn("date-picker", classNames == null ? void 0 : classNames.wrapper) }, label && /* @__PURE__ */ React.createElement(Label, { htmlFor: id, className: classNames == null ? void 0 : classNames.label, required }, label), /* @__PURE__ */ React.createElement("div", { className: cn("grid gap-2") }, /* @__PURE__ */ React.createElement(Popover, null, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
|
|
50
76
|
Button,
|
|
51
77
|
{
|
|
52
|
-
variant:
|
|
78
|
+
variant: date ? "secondary" : "muted",
|
|
53
79
|
outline: true,
|
|
54
|
-
className: cn("w-[
|
|
80
|
+
className: cn("min-w-[145px] justify-start text-left font-normal", classNames == null ? void 0 : classNames.button)
|
|
55
81
|
},
|
|
56
82
|
/* @__PURE__ */ React.createElement(CalendarIcon, null),
|
|
57
|
-
|
|
83
|
+
display
|
|
58
84
|
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "w-auto p-0", align: "start" }, /* @__PURE__ */ React.createElement(
|
|
59
85
|
Calendar,
|
|
60
86
|
{
|
|
61
87
|
mode: "single",
|
|
62
|
-
defaultMonth:
|
|
63
|
-
selected:
|
|
64
|
-
onSelect: (
|
|
65
|
-
if (!isEqualDate(
|
|
66
|
-
|
|
88
|
+
defaultMonth: date,
|
|
89
|
+
selected: date,
|
|
90
|
+
onSelect: (newdate) => {
|
|
91
|
+
if (!isEqualDate(date, newdate)) {
|
|
92
|
+
setDate(newdate);
|
|
67
93
|
}
|
|
68
94
|
}
|
|
69
95
|
}
|
|
@@ -73,4 +99,4 @@ function FormDatePicker({
|
|
|
73
99
|
export {
|
|
74
100
|
FormDatePicker
|
|
75
101
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
102
|
+
//# sourceMappingURL=chunk-V7HAO7KE.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/form/date-picker.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isUndefined from 'lodash-es/isUndefined';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nfunction getStartOfDay(date: Date) {\n const startOfDay = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return startOfDay;\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n initialValue?: Date | string;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n initialValue,\n value,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const [date, setDate] = useState<Date | undefined>(undefined);\n const [initialized, setInitialized] = useState(false);\n\n useEffect(() => {\n if (!initialized) {\n const dt = initialValue ? getStartOfDay(new Date(initialValue)) : getStartOfDay(new Date());\n\n setDate(dt);\n setInitialized(true);\n }\n }, [initialized, initialValue]);\n\n useEffect(() => {\n if (_isUndefined(value)) {\n if (!_isUndefined(date)) {\n setDate(undefined);\n }\n } else {\n const dt = _isString(value) ? new Date(value) : value;\n if (!isEqualDate(date, dt)) {\n setDate(getStartOfDay(dt));\n }\n }\n }, [value]);\n\n useEffect(() => {\n if (initialized) {\n onChange(date);\n }\n }, [date, initialized]);\n\n if (!id) id = _kebabCase(name);\n\n const display = !initialized ? <span></span> : date ? <>{formatDate(date)}</> : <span>Pick a date</span>;\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={date ? 'secondary' : 'muted'}\n outline\n className={cn('min-w-[145px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {display}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={date}\n selected={date}\n onSelect={(newdate) => {\n if (!isEqualDate(date, newdate)) {\n setDate(newdate);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAS,WAAW,gBAAgB;AAC3C,SAAkB,cAAuB;AACzC,SAAS,oBAAoB;AAC7B,OAAO,gBAAgB;AAEvB,OAAO,kBAAkB;AACzB,OAAO,eAAe;AAStB,SAAS,WAAW,MAAY;AAC9B,SAAO,OAAO,MAAM,WAAW;AACjC;AAEA,SAAS,cAAc,MAAY;AACjC,QAAM,aAAa,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AAC/E,SAAO;AACT;AAkBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,CAAC,MAAM,OAAO,IAAI,SAA2B,MAAS;AAC5D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,YAAM,KAAK,eAAe,cAAc,IAAI,KAAK,YAAY,CAAC,IAAI,cAAc,oBAAI,KAAK,CAAC;AAE1F,cAAQ,EAAE;AACV,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,aAAa,YAAY,CAAC;AAE9B,YAAU,MAAM;AACd,QAAI,aAAa,KAAK,GAAG;AACvB,UAAI,CAAC,aAAa,IAAI,GAAG;AACvB,gBAAQ,MAAS;AAAA,MACnB;AAAA,IACF,OAAO;AACL,YAAM,KAAK,UAAU,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAChD,UAAI,CAAC,YAAY,MAAM,EAAE,GAAG;AAC1B,gBAAQ,cAAc,EAAE,CAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,YAAU,MAAM;AACd,QAAI,aAAa;AACf,eAAS,IAAI;AAAA,IACf;AAAA,EACF,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,QAAM,UAAU,CAAC,cAAc,oCAAC,YAAK,IAAU,OAAO,0DAAG,WAAW,IAAI,CAAE,IAAM,oCAAC,cAAK,aAAW;AAEjG,SACE,oCAAC,SAAI,WAAW,GAAG,eAAe,yCAAY,OAAO,KAClD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAEF,oCAAC,SAAI,WAAW,GAAG,YAAY,KAC7B,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,OAAO,cAAc;AAAA,MAC9B,SAAO;AAAA,MACP,WAAW,GAAG,qDAAqD,yCAAY,MAAM;AAAA;AAAA,IAErF,oCAAC,kBAAa;AAAA,IACb;AAAA,EACH,CACF,GACA,oCAAC,kBAAe,WAAU,cAAa,OAAM,WAC3C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAU,CAAC,YAAY;AACrB,YAAI,CAAC,YAAY,MAAM,OAAO,GAAG;AAC/B,kBAAQ,OAAO;AAAA,QACjB;AAAA,MACF;AAAA;AAAA,EACF,CACF,CACF,CACF,CACF;AAEJ;","names":[]}
|
|
@@ -6,13 +6,15 @@ interface FormDatePickerProps {
|
|
|
6
6
|
label?: string;
|
|
7
7
|
required?: boolean;
|
|
8
8
|
disabled?: boolean;
|
|
9
|
+
initialValue?: Date | string;
|
|
9
10
|
value?: Date | string;
|
|
10
11
|
onChange: (value?: Date) => void;
|
|
11
12
|
classNames?: {
|
|
12
13
|
wrapper?: string;
|
|
13
14
|
label?: string;
|
|
15
|
+
button?: string;
|
|
14
16
|
};
|
|
15
17
|
}
|
|
16
|
-
declare function FormDatePicker({ id, name, label, required, disabled,
|
|
18
|
+
declare function FormDatePicker({ id, name, label, required, disabled, initialValue, value, onChange, classNames, }: FormDatePickerProps): React__default.JSX.Element;
|
|
17
19
|
|
|
18
20
|
export { FormDatePicker, type FormDatePickerProps };
|
|
@@ -6,13 +6,15 @@ interface FormDatePickerProps {
|
|
|
6
6
|
label?: string;
|
|
7
7
|
required?: boolean;
|
|
8
8
|
disabled?: boolean;
|
|
9
|
+
initialValue?: Date | string;
|
|
9
10
|
value?: Date | string;
|
|
10
11
|
onChange: (value?: Date) => void;
|
|
11
12
|
classNames?: {
|
|
12
13
|
wrapper?: string;
|
|
13
14
|
label?: string;
|
|
15
|
+
button?: string;
|
|
14
16
|
};
|
|
15
17
|
}
|
|
16
|
-
declare function FormDatePicker({ id, name, label, required, disabled,
|
|
18
|
+
declare function FormDatePicker({ id, name, label, required, disabled, initialValue, value, onChange, classNames, }: FormDatePickerProps): React__default.JSX.Element;
|
|
17
19
|
|
|
18
20
|
export { FormDatePicker, type FormDatePickerProps };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkEQWIZ4DCjs = require('../../chunk-EQWIZ4DC.js');
|
|
5
5
|
require('../../chunk-Z33UILCV.js');
|
|
6
6
|
require('../../chunk-73AY2MAQ.js');
|
|
7
7
|
require('../../chunk-Y2EVJJLM.js');
|
|
@@ -12,5 +12,5 @@ require('../../chunk-B2G2EZ4P.js');
|
|
|
12
12
|
require('../../chunk-2NMEKWO5.js');
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
exports.FormDatePicker =
|
|
15
|
+
exports.FormDatePicker = _chunkEQWIZ4DCjs.FormDatePicker;
|
|
16
16
|
//# sourceMappingURL=date-picker.js.map
|
|
@@ -11,6 +11,7 @@ interface FormDateRangePickerProps {
|
|
|
11
11
|
classNames?: {
|
|
12
12
|
wrapper?: string;
|
|
13
13
|
label?: string;
|
|
14
|
+
button?: string;
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
declare function FormDateRangePicker({ id, name, label, required, value: initialValue, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
|
|
@@ -11,6 +11,7 @@ interface FormDateRangePickerProps {
|
|
|
11
11
|
classNames?: {
|
|
12
12
|
wrapper?: string;
|
|
13
13
|
label?: string;
|
|
14
|
+
button?: string;
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
declare function FormDateRangePicker({ id, name, label, required, value: initialValue, onChange, classNames, }: FormDateRangePickerProps): React__default.JSX.Element;
|
|
@@ -66,7 +66,7 @@ function FormDateRangePicker({
|
|
|
66
66
|
{
|
|
67
67
|
variant: value ? "secondary" : "muted",
|
|
68
68
|
outline: true,
|
|
69
|
-
className: _chunkB2G2EZ4Pjs.cn.call(void 0, "w-[
|
|
69
|
+
className: _chunkB2G2EZ4Pjs.cn.call(void 0, "min-w-[240px] justify-start text-left font-normal", classNames == null ? void 0 : classNames.button)
|
|
70
70
|
},
|
|
71
71
|
/* @__PURE__ */ _react2.default.createElement(_lucidereact.CalendarIcon, null),
|
|
72
72
|
(value == null ? void 0 : value.from) ? value.to ? /* @__PURE__ */ _react2.default.createElement(_react2.default.Fragment, null, formatDate(value.from), " - ", formatDate(value.to)) : formatDate(value.from) : /* @__PURE__ */ _react2.default.createElement("span", null, "Pick a date")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","../../../components/form/date-range-picker.tsx"],"names":[],"mappings":"AAAA,qLAAY;AACZ;AACE;AACA;AACA;AACF,0DAAgC;AAChC;AACE;AACF,0DAAgC;AAChC;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC;AACE;AACF,0DAAgC;AAChC;AACE;AACF,0DAAgC;AAChC;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC;AACA;ACtBA,4EAA2D;AAC3D,mCAAyC;AACzC,2CAA6B;AAE7B,wGAAuB;AAUvB,SAAS,UAAA,CAAW,IAAA,EAAY;AAC9B,EAAA,OAAO,6BAAA,IAAO,EAAM,WAAW,CAAA;AACjC;
|
|
1
|
+
{"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","../../../components/form/date-range-picker.tsx"],"names":[],"mappings":"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","file":"/home/ahnjun/projects/egose-shadcn/package/dist/components/form/date-range-picker.js","sourcesContent":[null,"'use client';\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { DateRange } from 'react-day-picker';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDates } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDateRangePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n value?: DateRange;\n onChange: (value: DateRange | undefined) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDateRangePicker({\n id,\n name,\n label,\n required = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDateRangePickerProps) {\n let initialFrom!: Date;\n let initialTo!: Date;\n\n if (initialValue) {\n const from = initialValue.from ?? new Date();\n const to = initialValue.to ?? new Date();\n initialFrom = new Date(from.getFullYear(), from.getMonth(), from.getDate());\n initialTo = new Date(to.getFullYear(), to.getMonth(), to.getDate());\n } else {\n const now = new Date();\n const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n initialFrom = startOfDay;\n initialTo = startOfDay;\n }\n\n const [value, setValue] = useState<DateRange | undefined>({\n from: initialFrom,\n to: initialTo,\n });\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-range-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('min-w-[240px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {value?.from ? (\n value.to ? (\n <>\n {formatDate(value.from)} - {formatDate(value.to)}\n </>\n ) : (\n formatDate(value.from)\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={(dateRange) => {\n if (!isEqualDates([value?.from, value?.to], [dateRange?.from, dateRange?.to])) {\n setValue(dateRange);\n }\n }}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -66,7 +66,7 @@ function FormDateRangePicker({
|
|
|
66
66
|
{
|
|
67
67
|
variant: value ? "secondary" : "muted",
|
|
68
68
|
outline: true,
|
|
69
|
-
className: cn("w-[
|
|
69
|
+
className: cn("min-w-[240px] justify-start text-left font-normal", classNames == null ? void 0 : classNames.button)
|
|
70
70
|
},
|
|
71
71
|
/* @__PURE__ */ React.createElement(CalendarIcon, null),
|
|
72
72
|
(value == null ? void 0 : value.from) ? value.to ? /* @__PURE__ */ React.createElement(React.Fragment, null, formatDate(value.from), " - ", formatDate(value.to)) : formatDate(value.from) : /* @__PURE__ */ React.createElement("span", null, "Pick a date")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../components/form/date-range-picker.tsx"],"sourcesContent":["'use client';\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { DateRange } from 'react-day-picker';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDates } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDateRangePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n value?: DateRange;\n onChange: (value: DateRange | undefined) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDateRangePicker({\n id,\n name,\n label,\n required = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDateRangePickerProps) {\n let initialFrom!: Date;\n let initialTo!: Date;\n\n if (initialValue) {\n const from = initialValue.from ?? new Date();\n const to = initialValue.to ?? new Date();\n initialFrom = new Date(from.getFullYear(), from.getMonth(), from.getDate());\n initialTo = new Date(to.getFullYear(), to.getMonth(), to.getDate());\n } else {\n const now = new Date();\n const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n initialFrom = startOfDay;\n initialTo = startOfDay;\n }\n\n const [value, setValue] = useState<DateRange | undefined>({\n from: initialFrom,\n to: initialTo,\n });\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-range-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[
|
|
1
|
+
{"version":3,"sources":["../../../components/form/date-range-picker.tsx"],"sourcesContent":["'use client';\n\nimport React, { HTMLAttributes, useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport { DateRange } from 'react-day-picker';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\n\nimport { isEqualDates } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDateRangePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n value?: DateRange;\n onChange: (value: DateRange | undefined) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n button?: string;\n };\n}\n\nexport function FormDateRangePicker({\n id,\n name,\n label,\n required = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDateRangePickerProps) {\n let initialFrom!: Date;\n let initialTo!: Date;\n\n if (initialValue) {\n const from = initialValue.from ?? new Date();\n const to = initialValue.to ?? new Date();\n initialFrom = new Date(from.getFullYear(), from.getMonth(), from.getDate());\n initialTo = new Date(to.getFullYear(), to.getMonth(), to.getDate());\n } else {\n const now = new Date();\n const startOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n initialFrom = startOfDay;\n initialTo = startOfDay;\n }\n\n const [value, setValue] = useState<DateRange | undefined>({\n from: initialFrom,\n to: initialTo,\n });\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-range-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('min-w-[240px] justify-start text-left font-normal', classNames?.button)}\n >\n <CalendarIcon />\n {value?.from ? (\n value.to ? (\n <>\n {formatDate(value.from)} - {formatDate(value.to)}\n </>\n ) : (\n formatDate(value.from)\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"range\"\n defaultMonth={value?.from}\n selected={value}\n onSelect={(dateRange) => {\n if (!isEqualDates([value?.from, value?.to], [dateRange?.from, dateRange?.to])) {\n setValue(dateRange);\n }\n }}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAyB,WAAW,gBAAgB;AAC3D,SAAkB,cAAuB;AACzC,SAAS,oBAAoB;AAE7B,OAAO,gBAAgB;AAUvB,SAAS,WAAW,MAAY;AAC9B,SAAO,OAAO,MAAM,WAAW;AACjC;AAgBO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAA6B;AA1C7B;AA2CE,MAAI;AACJ,MAAI;AAEJ,MAAI,cAAc;AAChB,UAAM,QAAO,kBAAa,SAAb,YAAqB,oBAAI,KAAK;AAC3C,UAAM,MAAK,kBAAa,OAAb,YAAmB,oBAAI,KAAK;AACvC,kBAAc,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,KAAK,QAAQ,CAAC;AAC1E,gBAAY,IAAI,KAAK,GAAG,YAAY,GAAG,GAAG,SAAS,GAAG,GAAG,QAAQ,CAAC;AAAA,EACpE,OAAO;AACL,UAAM,MAAM,oBAAI,KAAK;AACrB,UAAM,aAAa,IAAI,KAAK,IAAI,YAAY,GAAG,IAAI,SAAS,GAAG,IAAI,QAAQ,CAAC;AAC5E,kBAAc;AACd,gBAAY;AAAA,EACd;AAEA,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgC;AAAA,IACxD,MAAM;AAAA,IACN,IAAI;AAAA,EACN,CAAC;AAED,YAAU,MAAM;AACd,aAAS,KAAK;AAAA,EAChB,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,qBAAqB,yCAAY,OAAO,KACxD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAEF,oCAAC,SAAI,WAAW,GAAG,YAAY,KAC7B,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,QAAQ,cAAc;AAAA,MAC/B,SAAO;AAAA,MACP,WAAW,GAAG,qDAAqD,yCAAY,MAAM;AAAA;AAAA,IAErF,oCAAC,kBAAa;AAAA,KACb,+BAAO,QACN,MAAM,KACJ,0DACG,WAAW,MAAM,IAAI,GAAE,OAAI,WAAW,MAAM,EAAE,CACjD,IAEA,WAAW,MAAM,IAAI,IAGvB,oCAAC,cAAK,aAAW;AAAA,EAErB,CACF,GACA,oCAAC,kBAAe,WAAU,cAAa,OAAM,WAC3C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAc,+BAAO;AAAA,MACrB,UAAU;AAAA,MACV,UAAU,CAAC,cAAc;AACvB,YAAI,CAAC,aAAa,CAAC,+BAAO,MAAM,+BAAO,EAAE,GAAG,CAAC,uCAAW,MAAM,uCAAW,EAAE,CAAC,GAAG;AAC7E,mBAAS,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA;AAAA,EAClB,CACF,CACF,CACF,CACF;AAEJ;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkEQWIZ4DCjs = require('../../chunk-EQWIZ4DC.js');
|
|
5
5
|
require('../../chunk-Z33UILCV.js');
|
|
6
6
|
require('../../chunk-73AY2MAQ.js');
|
|
7
7
|
require('../../chunk-Y2EVJJLM.js');
|
|
@@ -51,7 +51,7 @@ function HookFormDatePicker(_a) {
|
|
|
51
51
|
rules,
|
|
52
52
|
render: ({ field: { onChange, onBlur, value } }) => {
|
|
53
53
|
return /* @__PURE__ */ _react2.default.createElement(
|
|
54
|
-
|
|
54
|
+
_chunkEQWIZ4DCjs.FormDatePicker,
|
|
55
55
|
_chunk2NMEKWO5js.__spreadProps.call(void 0, _chunk2NMEKWO5js.__spreadValues.call(void 0, {
|
|
56
56
|
id,
|
|
57
57
|
name,
|
package/package.json
CHANGED
package/chunk-2NSYAQFL.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/form/date-picker.tsx"],"sourcesContent":["'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const dt = _isNil(initialValue) ? new Date() : _isString(initialValue) ? new Date(initialValue) : initialValue;\n const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());\n const [value, setValue] = useState<Date | undefined>(startOfDay);\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value ? <>{formatDate(value)}</> : <span>Pick a date</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={value}\n selected={value}\n onSelect={(date) => {\n if (!isEqualDate(value, date)) {\n setValue(date);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,SAAS,WAAW,gBAAgB;AAC3C,SAAkB,cAAuB;AACzC,SAAS,oBAAoB;AAC7B,OAAO,gBAAgB;AACvB,OAAO,YAAY;AACnB,OAAO,eAAe;AAStB,SAAS,WAAW,MAAY;AAC9B,SAAO,OAAO,MAAM,WAAW;AACjC;AAgBO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,KAAK,OAAO,YAAY,IAAI,oBAAI,KAAK,IAAI,UAAU,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI;AAClG,QAAM,aAAa,IAAI,KAAK,GAAG,YAAY,GAAG,GAAG,SAAS,GAAG,GAAG,QAAQ,CAAC;AACzE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAA2B,UAAU;AAE/D,YAAU,MAAM;AACd,aAAS,KAAK;AAAA,EAChB,GAAG,CAAC,KAAK,CAAC;AAEV,MAAI,CAAC,GAAI,MAAK,WAAW,IAAI;AAE7B,SACE,oCAAC,SAAI,WAAW,GAAG,eAAe,yCAAY,OAAO,KAClD,SACC,oCAAC,SAAM,SAAS,IAAI,WAAW,yCAAY,OAAO,YAC/C,KACH,GAEF,oCAAC,SAAI,WAAW,GAAG,YAAY,KAC7B,oCAAC,eACC,oCAAC,kBAAe,SAAO,QACrB;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,QAAQ,cAAc;AAAA,MAC/B,SAAO;AAAA,MACP,WAAW,GAAG,+CAA+C;AAAA;AAAA,IAE7D,oCAAC,kBAAa;AAAA,IACb,QAAQ,0DAAG,WAAW,KAAK,CAAE,IAAM,oCAAC,cAAK,aAAW;AAAA,EACvD,CACF,GACA,oCAAC,kBAAe,WAAU,cAAa,OAAM,WAC3C;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAU,CAAC,SAAS;AAClB,YAAI,CAAC,YAAY,OAAO,IAAI,GAAG;AAC7B,mBAAS,IAAI;AAAA,QACf;AAAA,MACF;AAAA;AAAA,EACF,CACF,CACF,CACF,CACF;AAEJ;","names":[]}
|
package/chunk-2QPFMTGQ.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/ahnjun/projects/egose-shadcn/package/dist/chunk-2QPFMTGQ.js","../components/form/date-picker.tsx"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACnBA,4EAA2C;AAC3C,mCAAyC;AACzC,2CAA6B;AAC7B,wGAAuB;AACvB,wFAAmB;AACnB,oGAAsB;AAStB,SAAS,UAAA,CAAW,IAAA,EAAY;AAC9B,EAAA,OAAO,6BAAA,IAAO,EAAM,WAAW,CAAA;AACjC;AAgBO,SAAS,cAAA,CAAe;AAAA,EAC7B,EAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,EAAW,KAAA;AAAA,EACX,SAAA,EAAW,KAAA;AAAA,EACX,KAAA,EAAO,YAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,EAAwB;AACtB,EAAA,MAAM,GAAA,EAAK,6BAAA,YAAmB,EAAA,kBAAI,IAAI,IAAA,CAAK,EAAA,EAAI,gCAAA,YAAsB,EAAA,EAAI,IAAI,IAAA,CAAK,YAAY,EAAA,EAAI,YAAA;AAClG,EAAA,MAAM,WAAA,EAAa,IAAI,IAAA,CAAK,EAAA,CAAG,WAAA,CAAY,CAAA,EAAG,EAAA,CAAG,QAAA,CAAS,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAA;AACzE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,EAAA,EAAI,6BAAA,UAAqC,CAAA;AAE/D,EAAA,8BAAA,CAAU,EAAA,GAAM;AACd,IAAA,QAAA,CAAS,KAAK,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAA,GAAA,CAAI,CAAC,EAAA,EAAI,GAAA,EAAK,iCAAA,IAAe,CAAA;AAE7B,EAAA,uBACE,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,aAAG,EAAe,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,OAAO,EAAA,CAAA,EAClD,MAAA,mBACC,eAAA,CAAA,aAAA,CAAC,sBAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EAAI,SAAA,EAAW,WAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,UAAA,CAAY,KAAA,EAAO,SAAA,CAAA,EAC/C,KACH,CAAA,kBAEF,eAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iCAAA,YAAe,EAAA,CAAA,kBAC7B,eAAA,CAAA,aAAA,CAAC,wBAAA,EAAA,IAAA,kBACC,eAAA,CAAA,aAAA,CAAC,+BAAA,EAAA,EAAe,OAAA,EAAO,KAAA,CAAA,kBACrB,eAAA,CAAA,aAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,MAAA,EAAQ,YAAA,EAAc,OAAA;AAAA,MAC/B,OAAA,EAAO,IAAA;AAAA,MACP,SAAA,EAAW,iCAAA,+CAAkD;AAAA,IAAA,CAAA;AAAA,oBAE7D,eAAA,CAAA,aAAA,CAAC,yBAAA,EAAA,IAAa,CAAA;AAAA,IACb,MAAA,kBAAQ,eAAA,CAAA,aAAA,CAAA,eAAA,CAAA,QAAA,EAAA,IAAA,EAAG,UAAA,CAAW,KAAK,CAAE,EAAA,kBAAM,eAAA,CAAA,aAAA,CAAC,MAAA,EAAA,IAAA,EAAK,aAAW;AAAA,EACvD,CACF,CAAA,kBACA,eAAA,CAAA,aAAA,CAAC,+BAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,KAAA,EAAM,QAAA,CAAA,kBAC3C,eAAA,CAAA,aAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAc,KAAA;AAAA,MACd,QAAA,EAAU,KAAA;AAAA,MACV,QAAA,EAAU,CAAC,IAAA,EAAA,GAAS;AAClB,QAAA,GAAA,CAAI,CAAC,0CAAA,KAAY,EAAO,IAAI,CAAA,EAAG;AAC7B,UAAA,QAAA,CAAS,IAAI,CAAA;AAAA,QACf;AAAA,MACF;AAAA,IAAA;AAAA,EACF,CACF,CACF,CACF,CACF,CAAA;AAEJ;ADlBA;AACA;AACE;AACF,wCAAC","file":"/home/ahnjun/projects/egose-shadcn/package/dist/chunk-2QPFMTGQ.js","sourcesContent":[null,"'use client';\n\nimport React, { useEffect, useState } from 'react';\nimport { addDays, format, isEqual } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport _kebabCase from 'lodash-es/kebabCase';\nimport _isNil from 'lodash-es/isNil';\nimport _isString from 'lodash-es/isString';\n\nimport { isEqualDate } from '../../lib/date';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Calendar } from '../ui/calendar';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\n\nfunction formatDate(date: Date) {\n return format(date, 'LLL dd, y');\n}\n\nexport interface FormDatePickerProps {\n id?: string;\n name: string;\n label?: string;\n required?: boolean;\n disabled?: boolean;\n value?: Date | string;\n onChange: (value?: Date) => void;\n classNames?: {\n wrapper?: string;\n label?: string;\n };\n}\n\nexport function FormDatePicker({\n id,\n name,\n label,\n required = false,\n disabled = false,\n value: initialValue,\n onChange,\n classNames,\n}: FormDatePickerProps) {\n const dt = _isNil(initialValue) ? new Date() : _isString(initialValue) ? new Date(initialValue) : initialValue;\n const startOfDay = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());\n const [value, setValue] = useState<Date | undefined>(startOfDay);\n\n useEffect(() => {\n onChange(value);\n }, [value]);\n\n if (!id) id = _kebabCase(name);\n\n return (\n <div className={cn('date-picker', classNames?.wrapper)}>\n {label && (\n <Label htmlFor={id} className={classNames?.label} required={required}>\n {label}\n </Label>\n )}\n <div className={cn('grid gap-2')}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={value ? 'secondary' : 'muted'}\n outline\n className={cn('w-[300px] justify-start text-left font-normal')}\n >\n <CalendarIcon />\n {value ? <>{formatDate(value)}</> : <span>Pick a date</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n defaultMonth={value}\n selected={value}\n onSelect={(date) => {\n if (!isEqualDate(value, date)) {\n setValue(date);\n }\n }}\n />\n </PopoverContent>\n </Popover>\n </div>\n </div>\n );\n}\n"]}
|