@archpublicwebsite/rangepicker 1.2.6 → 1.2.7
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/Rangepicker.vue.d.ts.map +1 -1
- package/dist/RangepickerConstraints.stories.js +1 -1
- package/dist/RangepickerFormatting.stories.js +1 -1
- package/dist/RangepickerInput.stories.d.ts +5 -1
- package/dist/RangepickerInput.stories.d.ts.map +1 -1
- package/dist/RangepickerInput.stories.js +48 -7
- package/dist/RangepickerModes.stories.js +1 -1
- package/dist/RangepickerSpecialDates.stories.js +1 -1
- package/dist/RangepickerTheming.stories.js +1 -1
- package/dist/rangepicker.js +15 -14
- package/dist/rangepicker.js.map +1 -1
- package/dist/rangepicker.umd.cjs +1 -1
- package/dist/rangepicker.umd.cjs.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rangepicker.vue.d.ts","sourceRoot":"","sources":["../src/Rangepicker.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Rangepicker.vue.d.ts","sourceRoot":"","sources":["../src/Rangepicker.vue"],"names":[],"mappings":"AAikBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,SAAS,CAAC;;;mBAiBjB,MAAM;iBAAW,MAAM;;;;;;;mBAAvB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;AAomBnE,wBAUG"}
|
|
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
|
|
|
5
5
|
* for the Rangepicker component.
|
|
6
6
|
*/
|
|
7
7
|
const meta = {
|
|
8
|
-
title: "Components/Rangepicker/
|
|
8
|
+
title: "Components/Rangepicker/Examples",
|
|
9
9
|
component: RangepickerInput,
|
|
10
10
|
tags: ['autodocs'],
|
|
11
11
|
parameters: {
|
|
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
|
|
|
5
5
|
* for the Rangepicker component.
|
|
6
6
|
*/
|
|
7
7
|
const meta = {
|
|
8
|
-
title: "Components/Rangepicker/
|
|
8
|
+
title: "Components/Rangepicker/Examples",
|
|
9
9
|
component: RangepickerInput,
|
|
10
10
|
tags: ['autodocs'],
|
|
11
11
|
parameters: {
|
|
@@ -49,5 +49,9 @@ type Story = StoryObj<typeof RangepickerInput>;
|
|
|
49
49
|
* - **Theming** - Color and visual customization
|
|
50
50
|
* - **Special Dates** - Holidays and disabled dates
|
|
51
51
|
*/
|
|
52
|
-
export declare const
|
|
52
|
+
export declare const QuickStart: Story;
|
|
53
|
+
/**
|
|
54
|
+
* Props API overview to explore all supported props and options.
|
|
55
|
+
*/
|
|
56
|
+
export declare const PropsApi: Story;
|
|
53
57
|
//# sourceMappingURL=RangepickerInput.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RangepickerInput.stories.d.ts","sourceRoot":"","sources":["../src/RangepickerInput.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAyIvC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"RangepickerInput.stories.d.ts","sourceRoot":"","sources":["../src/RangepickerInput.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,gBAAgB,CAyIvC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,EAAE,KAmBxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,KAuCtB,CAAC"}
|
|
@@ -36,17 +36,17 @@ import RangepickerInput from "./RangepickerInput.vue";
|
|
|
36
36
|
* - **Special Dates** - Holidays and disabled dates
|
|
37
37
|
*/
|
|
38
38
|
const meta = {
|
|
39
|
-
title: "Components/Rangepicker/
|
|
39
|
+
title: "Components/Rangepicker/How to use it",
|
|
40
40
|
component: RangepickerInput,
|
|
41
41
|
tags: ['autodocs'],
|
|
42
42
|
parameters: {
|
|
43
43
|
docs: {
|
|
44
44
|
description: {
|
|
45
45
|
component: `
|
|
46
|
-
A flexible date range picker component with responsive design,
|
|
47
|
-
customizable theming, and comprehensive date constraints.
|
|
46
|
+
A flexible date range picker component with responsive design,
|
|
47
|
+
customizable theming, and comprehensive date constraints.
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
Use **Quick Start** to get going fast, then review **Props API** for configuration details.
|
|
50
50
|
`,
|
|
51
51
|
},
|
|
52
52
|
},
|
|
@@ -180,12 +180,12 @@ export default meta;
|
|
|
180
180
|
* - **Theming** - Color and visual customization
|
|
181
181
|
* - **Special Dates** - Holidays and disabled dates
|
|
182
182
|
*/
|
|
183
|
-
export const
|
|
183
|
+
export const QuickStart = {
|
|
184
184
|
parameters: {
|
|
185
185
|
docs: {
|
|
186
186
|
description: {
|
|
187
187
|
story: `
|
|
188
|
-
###
|
|
188
|
+
### Quick Start
|
|
189
189
|
|
|
190
190
|
The default rangepicker setup with:
|
|
191
191
|
- Desktop variant (dropdown calendar)
|
|
@@ -195,8 +195,49 @@ The default rangepicker setup with:
|
|
|
195
195
|
- Min date: Today
|
|
196
196
|
|
|
197
197
|
Click the input field to open the calendar.
|
|
198
|
+
`,
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Props API overview to explore all supported props and options.
|
|
205
|
+
*/
|
|
206
|
+
export const PropsApi = {
|
|
207
|
+
args: {
|
|
208
|
+
modelValue: "",
|
|
209
|
+
placeholder: "Select dates",
|
|
210
|
+
id: "dates",
|
|
211
|
+
name: "dates",
|
|
212
|
+
variant: "desktop",
|
|
213
|
+
options: {
|
|
214
|
+
autoApply: false,
|
|
215
|
+
allowRepick: true,
|
|
216
|
+
dropdowns: {
|
|
217
|
+
minYear: new Date().getFullYear(),
|
|
218
|
+
maxYear: new Date().getFullYear() + 2,
|
|
219
|
+
months: true,
|
|
220
|
+
years: true,
|
|
221
|
+
},
|
|
222
|
+
format: 'DD MMM YYYY',
|
|
223
|
+
numberOfColumns: 2,
|
|
224
|
+
numberOfMonths: 2,
|
|
225
|
+
singleMode: false,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
parameters: {
|
|
229
|
+
docs: {
|
|
230
|
+
description: {
|
|
231
|
+
story: `
|
|
232
|
+
### Props API
|
|
233
|
+
|
|
234
|
+
Use the **Controls** panel to explore all supported props and options.
|
|
198
235
|
|
|
199
|
-
|
|
236
|
+
Common props:
|
|
237
|
+
- **modelValue** - Formatted range string
|
|
238
|
+
- **placeholder** - Input placeholder text
|
|
239
|
+
- **variant** - Desktop or mobile display
|
|
240
|
+
- **options** - Litepicker configuration (dates, formatting, constraints)
|
|
200
241
|
`,
|
|
201
242
|
},
|
|
202
243
|
},
|
|
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
|
|
|
5
5
|
* for the Rangepicker component.
|
|
6
6
|
*/
|
|
7
7
|
const meta = {
|
|
8
|
-
title: "Components/Rangepicker/
|
|
8
|
+
title: "Components/Rangepicker/Examples",
|
|
9
9
|
component: RangepickerInput,
|
|
10
10
|
tags: ['autodocs'],
|
|
11
11
|
parameters: {
|
|
@@ -32,7 +32,7 @@ const generateHolidays = () => {
|
|
|
32
32
|
* including holidays and disabled dates.
|
|
33
33
|
*/
|
|
34
34
|
const meta = {
|
|
35
|
-
title: "Components/Rangepicker/
|
|
35
|
+
title: "Components/Rangepicker/Examples",
|
|
36
36
|
component: Rangepicker,
|
|
37
37
|
tags: ['autodocs'],
|
|
38
38
|
parameters: {
|
|
@@ -5,7 +5,7 @@ import RangepickerInput from "./RangepickerInput.vue";
|
|
|
5
5
|
* for the Rangepicker component.
|
|
6
6
|
*/
|
|
7
7
|
const meta = {
|
|
8
|
-
title: "Components/Rangepicker/
|
|
8
|
+
title: "Components/Rangepicker/Examples",
|
|
9
9
|
component: RangepickerInput,
|
|
10
10
|
tags: ['autodocs'],
|
|
11
11
|
parameters: {
|
package/dist/rangepicker.js
CHANGED
|
@@ -327,14 +327,13 @@ const _hoisted_14 = {
|
|
|
327
327
|
class: "arch-w-8"
|
|
328
328
|
};
|
|
329
329
|
const _hoisted_15 = { class: "rangepicker-weekdays" };
|
|
330
|
-
const _hoisted_16 =
|
|
331
|
-
const _hoisted_17 =
|
|
332
|
-
const _hoisted_18 = {
|
|
330
|
+
const _hoisted_16 = ["disabled", "aria-label", "onClick", "onMouseenter"];
|
|
331
|
+
const _hoisted_17 = {
|
|
333
332
|
key: 0,
|
|
334
333
|
class: "arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4"
|
|
335
334
|
};
|
|
336
|
-
const
|
|
337
|
-
const
|
|
335
|
+
const _hoisted_18 = ["disabled"];
|
|
336
|
+
const _hoisted_19 = { class: "arch-flex arch-items-center arch-gap-1" };
|
|
338
337
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
339
338
|
__name: "Rangepicker",
|
|
340
339
|
props: {
|
|
@@ -705,7 +704,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
705
704
|
}, toDisplayString(weekday), 1);
|
|
706
705
|
}), 128))
|
|
707
706
|
]),
|
|
708
|
-
createElementVNode("div",
|
|
707
|
+
createElementVNode("div", {
|
|
708
|
+
class: "rangepicker-grid",
|
|
709
|
+
onMouseleave: handleDayLeave
|
|
710
|
+
}, [
|
|
709
711
|
(openBlock(true), createElementBlock(Fragment, null, renderList(monthData.days, (day) => {
|
|
710
712
|
return openBlock(), createElementBlock("button", {
|
|
711
713
|
key: day.date.unix(),
|
|
@@ -713,17 +715,16 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
713
715
|
disabled: day.isDisabled,
|
|
714
716
|
"aria-label": day.date.format("MMMM D, YYYY"),
|
|
715
717
|
onClick: (e) => selectDate(day, e),
|
|
716
|
-
onMouseenter: (e) => handleDayHover(day, e)
|
|
717
|
-
onMouseleave: handleDayLeave
|
|
718
|
+
onMouseenter: (e) => handleDayHover(day, e)
|
|
718
719
|
}, [
|
|
719
720
|
createElementVNode("span", null, toDisplayString(day.date.date()), 1)
|
|
720
|
-
], 42,
|
|
721
|
+
], 42, _hoisted_16);
|
|
721
722
|
}), 128))
|
|
722
|
-
])
|
|
723
|
+
], 32)
|
|
723
724
|
]);
|
|
724
725
|
}), 128))
|
|
725
726
|
]),
|
|
726
|
-
!__props.autoApply ? (openBlock(), createElementBlock("div",
|
|
727
|
+
!__props.autoApply ? (openBlock(), createElementBlock("div", _hoisted_17, [
|
|
727
728
|
createElementVNode("button", {
|
|
728
729
|
class: "arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors",
|
|
729
730
|
onClick: cancel
|
|
@@ -735,7 +736,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
735
736
|
}),
|
|
736
737
|
disabled: !localStartDate.value || !localEndDate.value,
|
|
737
738
|
onClick: apply
|
|
738
|
-
}, " Apply ", 12,
|
|
739
|
+
}, " Apply ", 12, _hoisted_18)
|
|
739
740
|
])) : createCommentVNode("", true)
|
|
740
741
|
]),
|
|
741
742
|
showTooltipComputed.value ? (openBlock(), createElementBlock("div", {
|
|
@@ -743,7 +744,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
743
744
|
class: "rangepicker-tooltip",
|
|
744
745
|
style: normalizeStyle(tooltipStyle.value)
|
|
745
746
|
}, [
|
|
746
|
-
createElementVNode("div",
|
|
747
|
+
createElementVNode("div", _hoisted_19, toDisplayString(tooltipText.value), 1)
|
|
747
748
|
], 4)) : createCommentVNode("", true)
|
|
748
749
|
], 6)
|
|
749
750
|
])) : createCommentVNode("", true)
|
|
@@ -762,7 +763,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
762
763
|
}
|
|
763
764
|
return target;
|
|
764
765
|
};
|
|
765
|
-
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
766
|
+
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-7627e61d"]]);
|
|
766
767
|
const _hoisted_1 = { class: "rangepicker-input-container" };
|
|
767
768
|
const _hoisted_2 = ["id", "value", "placeholder", "readonly", "name"];
|
|
768
769
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
package/dist/rangepicker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rangepicker.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isBetween.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js","../src/utils/date.ts","../src/utils/calendar.ts","../src/utils/position.ts","../src/Rangepicker.vue","../src/RangepickerInput.vue","../src/index.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(isBetween)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\ndayjs.extend(customParseFormat)\n\nexport { dayjs }\nexport type { Dayjs }\n\nexport function parseDate(date: string | Date | Dayjs, format?: string): Dayjs {\n if (dayjs.isDayjs(date))\n return date\n return format ? dayjs(date, format) : dayjs(date)\n}\n\nexport function formatDate(date: Dayjs, format: string = 'YYYY-MM-DD'): string {\n return date.format(format)\n}\n\nexport function isDateInRange(date: Dayjs, start: Dayjs, end: Dayjs): boolean {\n return date.isBetween(start, end, 'day', '[]')\n}\n\nexport function getDaysBetween(start: Dayjs, end: Dayjs): number {\n return end.diff(start, 'day')\n}\n\nexport function isWeekend(date: Dayjs): boolean {\n const day = date.day()\n return day === 0 || day === 6 // Sunday or Saturday\n}\n\nexport function isToday(date: Dayjs): boolean {\n return date.isSame(dayjs(), 'day')\n}\n","import type { CalendarDay, CalendarMonth } from '../types'\nimport { type Dayjs, dayjs } from './date'\n\nexport function getMonthDays(\n monthOffset: number,\n currentDate: Dayjs = dayjs(),\n): {\n month: Dayjs\n days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }>\n } {\n const month = currentDate.add(monthOffset, 'month').startOf('month')\n const firstDayOfMonth = month.day()\n const daysInMonth = month.daysInMonth()\n const daysInPrevMonth = month.subtract(1, 'month').daysInMonth()\n\n const days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }> = []\n\n // Previous month days\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const date = month.subtract(1, 'month').date(daysInPrevMonth - i)\n days.push({\n date,\n isPrevMonth: true,\n isCurrentMonth: false,\n isNextMonth: false,\n })\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = month.date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: true,\n isNextMonth: false,\n })\n }\n\n // Next month days to complete the grid\n const remainingDays = 42 - days.length // 6 weeks * 7 days\n for (let i = 1; i <= remainingDays; i++) {\n const date = month.add(1, 'month').date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: false,\n isNextMonth: true,\n })\n }\n\n return { month, days }\n}\n\nexport function createCalendarDay(\n date: Dayjs,\n isPrevMonth: boolean,\n isCurrentMonth: boolean,\n isNextMonth: boolean,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarDay {\n const {\n startDate = null,\n endDate = null,\n minDate = null,\n maxDate = null,\n disabledDates = [],\n holidays = [],\n } = options\n\n const isDisabled\n = (minDate && date.isBefore(minDate, 'day'))\n || (maxDate && date.isAfter(maxDate, 'day'))\n || disabledDates.some(d => d.isSame(date, 'day'))\n\n const isHoliday = holidays.some(h => h.isSame(date, 'day'))\n\n const isSelected\n = (startDate && date.isSame(startDate, 'day'))\n || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange\n = startDate\n && endDate\n && date.isAfter(startDate, 'day')\n && date.isBefore(endDate, 'day')\n\n const isToday = date.isSame(dayjs(), 'day')\n\n const isWeekend = date.day() === 0 || date.day() === 6\n\n return {\n date,\n isPrevMonth,\n isCurrentMonth,\n isNextMonth,\n isDisabled,\n isHoliday,\n isWeekend,\n isSelected,\n isInRange,\n isToday,\n }\n}\n\nexport function generateCalendarMonths(\n numberOfMonths: number,\n startOffset: number = 0,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarMonth[] {\n const months: CalendarMonth[] = []\n\n for (let i = 0; i < numberOfMonths; i++) {\n const { month, days } = getMonthDays(startOffset + i)\n\n const calendarDays = days.map(day =>\n createCalendarDay(\n day.date,\n day.isPrevMonth,\n day.isCurrentMonth,\n day.isNextMonth,\n options,\n ),\n )\n\n months.push({\n month,\n days: calendarDays,\n })\n }\n\n return months\n}\n\nexport function getWeekDays(locale: string = 'en', format: 'short' | 'narrow' = 'short'): string[] {\n const weekStart = dayjs().startOf('week')\n const days: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const day = weekStart.add(i, 'day')\n days.push(format === 'short' ? day.format('ddd') : day.format('dd'))\n }\n\n return days\n}\n","export interface PositionResult {\n top?: number\n bottom?: number\n left: number\n transform?: string\n}\n\nexport function calculatePosition(\n triggerElement: HTMLElement | null,\n calendarElement: HTMLElement | null,\n preferredPosition: 'auto' | 'top' | 'bottom' = 'auto',\n): PositionResult {\n if (!triggerElement || !calendarElement)\n return { left: 0 }\n\n const triggerRect = triggerElement.getBoundingClientRect()\n const calendarRect = calendarElement.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n const viewportWidth = window.innerWidth\n\n // Calculate available space\n const spaceAbove = triggerRect.top\n const spaceBelow = viewportHeight - triggerRect.bottom\n\n // Determine vertical position\n const position: PositionResult = { left: triggerRect.left }\n\n if (preferredPosition === 'auto') {\n if (spaceBelow >= calendarRect.height || spaceBelow > spaceAbove) {\n // Position below\n position.top = triggerRect.bottom + 8\n }\n else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n }\n else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n else {\n position.top = triggerRect.bottom + 8\n }\n\n // Adjust horizontal position to keep within viewport\n if (position.left + calendarRect.width > viewportWidth)\n position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16)\n position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport {\n breakpointsTailwind,\n onClickOutside,\n useBreakpoints,\n useWindowSize,\n} from \"@vueuse/core\";\nimport type { Dayjs } from \"dayjs\";\nimport { dayjs } from \"./utils/date\";\nimport { generateCalendarMonths, getWeekDays } from \"./utils/calendar\";\nimport { calculatePosition } from \"./utils/position\";\nimport type { CalendarDay, RangepickerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<RangepickerProps>(), {\n isOpen: false,\n variant: \"desktop\",\n valueOfMonths: 2,\n valueOfColumns: 2,\n format: \"YYYY-MM-DD\",\n delimiter: \" - \",\n showTooltip: true,\n autoApply: false,\n position: \"auto\",\n borderRadius: \"0.75rem\",\n});\n\nconst emit = defineEmits<{\n \"update:modelValue\": [value: { startDate: string; endDate: string }];\n \"update:isOpen\": [value: boolean];\n dateSelected: [date: Dayjs];\n rangeSelected: [start: Dayjs, end: Dayjs];\n}>();\nconst breakpoints = useBreakpoints(breakpointsTailwind);\nconst isMobile = breakpoints.smallerOrEqual(\"lg\");\nconst numberOfMonths = computed(() =>\n isMobile.value ? 1 : props.valueOfMonths,\n);\nconst numberOfColumns = computed(() =>\n isMobile.value ? 1 : props.valueOfColumns,\n);\n\n// Refs\nconst calendarRef = ref<HTMLElement | null>(null);\nconst isFadingOut = ref(false);\nconst hoveredDay = ref<CalendarDay | null>(null);\nconst monthOffset = ref(0);\n\n// Local state\nconst localIsOpen = ref(props.isOpen);\nconst localStartDate = ref<Dayjs | null>(null);\nconst localEndDate = ref<Dayjs | null>(null);\n\n// Parse dates from props\nconst parsedMinDate = computed(() =>\n props.minDate ? dayjs(props.minDate) : null,\n);\nconst parsedMaxDate = computed(() =>\n props.maxDate ? dayjs(props.maxDate) : null,\n);\nconst parsedDisabledDates = computed(\n () => props.disabledDates?.map((d) => dayjs(d)) || [],\n);\nconst parsedHolidays = computed(\n () => props.holidays?.map((h) => dayjs(h)) || [],\n);\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays(\"en\", \"narrow\"));\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() =>\n props.variant === \"mobile\" ? 1 : numberOfMonths.value,\n);\n\nconst calendarMonths = computed(() =>\n generateCalendarMonths(effectiveNumberOfMonths.value, monthOffset.value, {\n startDate: localStartDate.value,\n endDate: localEndDate.value,\n minDate: parsedMinDate.value,\n maxDate: parsedMaxDate.value,\n disabledDates: parsedDisabledDates.value,\n holidays: parsedHolidays.value,\n }),\n);\n\nconst nightCount = computed(() => {\n if (!localStartDate.value || !localEndDate.value) return 0;\n return localEndDate.value.diff(localStartDate.value, \"day\");\n});\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value) return \"\";\n else if (localStartDate.value && !localEndDate.value)\n return localStartDate.value.format(props.format);\n else if (localStartDate.value && localEndDate.value)\n return `${localStartDate.value.format(props.format)}${props.delimiter}${localEndDate.value.format(props.format)}`;\n else return \"\";\n});\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value) return true;\n const firstMonth = dayjs().add(monthOffset.value, \"month\").startOf(\"month\");\n return firstMonth.isAfter(parsedMinDate.value, \"month\");\n});\n\nconst canNavigateNext = computed(() => {\n if (!parsedMaxDate.value) return true;\n const lastMonth = dayjs()\n .add(monthOffset.value + effectiveNumberOfMonths.value - 1, \"month\")\n .endOf(\"month\");\n return lastMonth.isBefore(parsedMaxDate.value, \"month\");\n});\n\n// Positioning\nconst { width: windowWidth } = useWindowSize();\nconst calendarStyle = ref<Record<string, string>>({});\n\nfunction updatePosition() {\n if (props.variant === \"mobile\") {\n calendarStyle.value = {\n '--border-radius-day': props.borderRadius,\n };\n return;\n }\n\n nextTick(() => {\n const position = calculatePosition(\n props.triggerElement,\n calendarRef.value,\n props.position,\n );\n\n calendarStyle.value = {\n left: `${position.left}px`,\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && { bottom: `${position.bottom}px` }),\n ...(position.transform && { transform: position.transform }),\n '--border-radius-day': props.borderRadius,\n };\n });\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({});\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value) return \"\";\n const nights = hoveredDay.value.date.diff(localStartDate.value, \"day\");\n if (nights <= 0) return \"\";\n return `${nights} ${nights === 1 ? \"night\" : \"nights\"}`;\n});\n\nconst showTooltipComputed = computed(() => {\n return (\n props.showTooltip &&\n hoveredDay.value &&\n localStartDate.value &&\n !localEndDate.value &&\n hoveredDay.value.date.isAfter(localStartDate.value, \"day\")\n );\n});\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = [\"rangepicker-day\"];\n\n if (!day.isCurrentMonth) classes.push(\"rangepicker-day-other-month\");\n\n if (day.isDisabled) classes.push(\"rangepicker-day-disabled\");\n\n if (day.isToday) classes.push(\"rangepicker-day-today\");\n\n if (day.isWeekend && !day.isSelected) classes.push(\"rangepicker-day-weekend\");\n\n if (day.isHoliday) classes.push(\"rangepicker-day-holiday\");\n\n if (day.isSelected) {\n if (\n localStartDate.value &&\n localEndDate.value &&\n day.date.isSame(localStartDate.value, \"day\") &&\n day.date.isSame(localEndDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-single\");\n else if (\n localStartDate.value &&\n day.date.isSame(localStartDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-start\");\n else if (localEndDate.value && day.date.isSame(localEndDate.value, \"day\"))\n classes.push(\"rangepicker-day-selected-end\");\n else classes.push(\"rangepicker-day-selected\");\n }\n\n if (day.isInRange) classes.push(\"rangepicker-day-in-range\");\n\n // Add hover effect for potential range\n if (localStartDate.value && !localEndDate.value && hoveredDay.value) {\n const start = localStartDate.value;\n const hovered = hoveredDay.value.date;\n if (day.date.isAfter(start, \"day\") && day.date.isBefore(hovered, \"day\"))\n classes.push(\"rangepicker-day-hover-range\");\n else if (day.date.isSame(hovered, \"day\") && hovered.isAfter(start, \"day\"))\n classes.push(\"rangepicker-day-hover-end\");\n }\n\n return classes;\n}\n\nfunction selectDate(day: CalendarDay, event: MouseEvent) {\n event.preventDefault();\n if (day.isDisabled) return;\n\n emit(\"dateSelected\", day.date);\n\n // Range selection logic\n if (!localStartDate.value || (localStartDate.value && localEndDate.value)) {\n // Start new range\n localStartDate.value = day.date;\n localEndDate.value = null;\n } else {\n // Complete range\n if (day.date.isBefore(localStartDate.value, \"day\")) {\n // Swap if end is before start\n localEndDate.value = localStartDate.value;\n localStartDate.value = day.date;\n } else {\n localEndDate.value = day.date;\n }\n\n // Validate min/max days\n if (props.minDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days < props.minDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n if (props.maxDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days > props.maxDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n emit(\"rangeSelected\", localStartDate.value, localEndDate.value);\n\n if (props.autoApply) apply();\n }\n}\n\nfunction handleDayHover(day: CalendarDay, event: MouseEvent) {\n hoveredDay.value = day;\n\n if (props.showTooltip && localStartDate.value && !localEndDate.value)\n updateTooltipPosition(event);\n}\n\nfunction updateTooltipPosition(event: MouseEvent) {\n const rect = (event.target as HTMLElement).getBoundingClientRect();\n tooltipStyle.value = {\n left: `${rect.left + rect.width / 2}px`,\n top: `${rect.top - 10}px`,\n transform: \"translateX(-50%) translateY(-100%)\",\n };\n}\n\nfunction handleDayLeave() {\n hoveredDay.value = null;\n}\n\nfunction previousMonth() {\n if (canNavigatePrevious.value) monthOffset.value--;\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value) monthOffset.value++;\n}\n\nfunction close() {\n if (isFadingOut.value) return;\n isFadingOut.value = true;\n setTimeout(() => {\n localIsOpen.value = false;\n emit(\"update:isOpen\", false);\n isFadingOut.value = false;\n }, 200); // match fade-leave-active duration\n}\n\nfunction apply() {\n if (localStartDate.value && localEndDate.value) {\n emit(\"update:modelValue\", {\n startDate: localStartDate.value.format(props.format),\n endDate: localEndDate.value.format(props.format),\n });\n }\n close();\n}\n\nfunction cancel() {\n // Reset to initial values\n if (props.modelValue?.startDate)\n localStartDate.value = dayjs(props.modelValue.startDate);\n else localStartDate.value = null;\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate);\n else localEndDate.value = null;\n\n close();\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal;\n if (newVal) updatePosition();\n },\n);\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal) close();\n },\n);\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate) localStartDate.value = dayjs(newVal.startDate);\n else localStartDate.value = null;\n\n if (newVal?.endDate) localEndDate.value = dayjs(newVal.endDate);\n else localEndDate.value = null;\n },\n { immediate: true, deep: true },\n);\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value) updatePosition();\n});\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== \"mobile\") close();\n});\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value) return;\n\n if (e.key === \"Escape\") close();\n}\n\nonMounted(() => {\n document.addEventListener(\"keydown\", handleKeydown);\n if (props.isOpen) updatePosition();\n});\n\nonUnmounted(() => {\n document.removeEventListener(\"keydown\", handleKeydown);\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition :name=\"variant === 'mobile' ? 'slide-up' : 'fade'\">\n <div v-if=\"localIsOpen || isFadingOut\" class=\"rangepicker-overlay\">\n <!-- Backdrop -->\n <div class=\"rangepicker-backdrop\" @click=\"close\" />\n\n <!-- Calendar Container -->\n <div\n ref=\"calendarRef\"\n class=\"rangepicker-container\"\n :class=\"[variant === 'mobile' ? 'rangepicker-mobile' : '']\"\n :style=\"{ ...calendarStyle, ...colorStyles, borderRadius: props.borderRadius }\"\n >\n <!-- Header -->\n <div class=\"rangepicker-header\">\n <div class=\"arch-flex arch-items-center arch-justify-between\">\n <div>\n <p\n v-if=\"label\"\n class=\"arch-text-xs arch-font-medium arch-text-gray-500 arch-mb-1\"\n >\n {{ label }}\n </p>\n <p\n class=\"arch-text-sm arch-font-semibold arch-text-gray-900\"\n >\n {{ formattedDateRange || placeholder || \"Select dates\" }}\n </p>\n </div>\n <p\n v-if=\"nightCount > 0\"\n class=\"arch-text-xs arch-text-gray-500 arch-mt-1\"\n >\n {{ nightCount }} {{ nightCount === 1 ? \"night\" : \"nights\" }}\n </p>\n <!-- <button\n class=\"rangepicker-nav-button\"\n aria-label=\"Close\"\n @click=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button> -->\n </div>\n </div>\n\n <!-- Calendar Body -->\n <div class=\"rangepicker-body\">\n <div\n class=\"rangepicker-month-grid\"\n >\n <div\n v-for=\"(monthData, index) in calendarMonths\"\n :key=\"monthData.month.format('YYYY-MM')\"\n class=\"rangepicker-month\"\n >\n <!-- Month Header -->\n <div class=\"rangepicker-month-header\">\n <button\n v-if=\"variant === 'mobile' || index === 0\"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigatePrevious\"\n aria-label=\"Previous month\"\n @click=\"previousMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n\n <span class=\"rangepicker-month-title\">\n {{ monthData.month.format(\"MMMM YYYY\") }}\n </span>\n\n <button\n v-if=\"\n variant === 'mobile' ||\n index === calendarMonths.length - 1\n \"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigateNext\"\n aria-label=\"Next month\"\n @click=\"nextMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"rangepicker-weekdays\">\n <div\n v-for=\"weekday in weekdays\"\n :key=\"weekday\"\n class=\"rangepicker-weekday\"\n >\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"rangepicker-grid\">\n <button\n v-for=\"day in monthData.days\"\n :key=\"day.date.unix()\"\n :class=\"getDayClasses(day)\"\n :disabled=\"day.isDisabled\"\n :aria-label=\"day.date.format('MMMM D, YYYY')\"\n @click=\"(e) => selectDate(day, e)\"\n @mouseenter=\"(e) => handleDayHover(day, e)\"\n @mouseleave=\"handleDayLeave\"\n >\n <span>{{ day.date.date() }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Apply/Cancel Buttons (if not autoApply) -->\n <div\n v-if=\"!autoApply\"\n class=\"arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4\"\n >\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-rounded-lg arch-transition-colors disabled:arch-opacity-50 disabled:arch-cursor-not-allowed\"\n :style=\"{\n backgroundColor: colorStyles?.['--color-primary'] \n ? `rgb(${colorStyles['--color-primary']})` \n : 'rgb(37 99 235)',\n }\"\n :disabled=\"!localStartDate || !localEndDate\"\n @click=\"apply\"\n >\n Apply\n </button>\n </div>\n </div>\n\n <!-- Tooltip -->\n <div\n v-if=\"showTooltipComputed\"\n class=\"rangepicker-tooltip\"\n :style=\"tooltipStyle\"\n >\n <div class=\"arch-flex arch-items-center arch-gap-1\">\n {{ tooltipText }}\n </div>\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<style lang=\"scss\" scoped>\n@use \"./styles/rangepicker.scss\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Helper function to convert HEX to RGB\nfunction hexToRgb(hex: string): string | null {\n // Remove # if present\n hex = hex.replace(/^#/, '')\n\n // Handle 3-digit hex\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return null\n }\n\n return `${r} ${g} ${b}`\n}\n\nconst props = withDefaults(defineProps<RangepickerInputProps>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\n showClearButton: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'focusin': []\n}>()\n\n// Refs\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value)\n return { startDate: '', endDate: '' }\n\n const parts = value.split(' - ')\n if (parts.length === 2) {\n return {\n startDate: parts[0].trim(),\n endDate: parts[1].trim(),\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nwatch(() => props?.close, (cur) => {\n if (cur)\n inputRef.value.blur()\n})\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\nconst inputClass = computed(() => {\n return props.class || 'arch-w-full arch-px-3 arch-py-2 arch-border arch-border-gray-300 arch-rounded-lg arch-text-sm arch-text-gray-900 focus:arch-outline-none focus:arch-ring-2 focus:arch-ring-blue-500 focus:arch-border-blue-500'\n})\n\nfunction openPicker() {\n isOpen.value = true\n}\n\nfunction onFocus() {\n emit('focusin')\n openPicker()\n}\n\nfunction handleUpdate(value: { startDate: string; endDate: string }) {\n localValue.value = value\n const formatted = `${value.startDate} - ${value.endDate}`\n emit('update:modelValue', formatted)\n}\n\nfunction clearValue() {\n localValue.value = { startDate: '', endDate: '' }\n emit('update:modelValue', '')\n isOpen.value = false\n}\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = parseValue(newVal)\n})\n\n// Compute CSS variables for scoped styling\nconst colorStyles = computed(() => {\n const styles: Record<string, string> = {}\n\n if (props.primaryColor) {\n const rgb = hexToRgb(props.primaryColor)\n if (rgb) {\n styles['--color-primary'] = rgb\n }\n }\n\n if (props.secondaryColor) {\n const rgb = hexToRgb(props.secondaryColor)\n if (rgb) {\n styles['--color-secondary'] = rgb\n }\n }\n\n if (props.fontFamily) {\n styles['--rangepicker-font-family'] = props.fontFamily\n }\n\n return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input :id=\"id\" ref=\"inputRef\" type=\"text\" :value=\"displayValue\" :placeholder=\"placeholder\" :readonly=\"readonly\"\n :name=\"name\" :class=\"inputClass\" @click=\"openPicker\" @focus=\"onFocus\" />\n \n <button v-if=\"showClearButton && displayValue\" type=\"button\" class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\" aria-label=\"Clear dates\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-4 arch-w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n\n <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"minDate\"\n :max-date=\"maxDate\" :min-days=\"minDays\" :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\" :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\" :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\" @update:model-value=\"handleUpdate\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@use './styles/rangepicker.scss';\n\n.rangepicker-input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n font-family: var(--rangepicker-font-family, inherit);\n}\n\n.rangepicker-input-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\ninput {\n cursor: pointer;\n font-family: inherit;\n flex: 1;\n padding-right: 2.5rem;\n}\n\n.rangepicker-clear-button {\n position: absolute;\n right: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n background: transparent;\n border: none;\n border-radius: 0.375rem;\n color: #6b7280;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n\n &:hover {\n color: #374151;\n background: #f3f4f6;\n }\n\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);\n }\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { \n DateRange, \n RangepickerProps, \n RangepickerEmits, \n CalendarDay, \n CalendarMonth,\n RangepickerInputProps\n} from './types'\n\n// Default export - RangepickerInput (Litepicker-compatible wrapper)\nexport default RangepickerInput\n\n// Named exports\nexport { Rangepicker, RangepickerInput }\n\n// Type exports\nexport type { \n RangepickerProps, \n RangepickerInputProps,\n RangepickerEmits, \n DateRange, \n CalendarDay, \n CalendarMonth \n}\n\n// Vue 3 composable for easy integration\nexport function useRangepicker(triggerRef: any, options: Partial<RangepickerProps> = {}) {\n const isOpen = ref(false)\n const dateRange = ref<DateRange>({ startDate: '', endDate: '' })\n\n const open = () => { isOpen.value = true }\n const close = () => { isOpen.value = false }\n const toggle = () => { isOpen.value = !isOpen.value }\n\n return {\n isOpen,\n dateRange,\n open,\n close,\n toggle,\n options,\n }\n}\n"],"names":["this","e","i","t","n","r","o","a","f","h","u","d","l","s","c","m","M","_createBlock","_Teleport","_createVNode","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
1
|
+
{"version":3,"file":"rangepicker.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isBetween.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrAfter.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/isSameOrBefore.js","../../../node_modules/.pnpm/dayjs@1.11.19/node_modules/dayjs/plugin/customParseFormat.js","../src/utils/date.ts","../src/utils/calendar.ts","../src/utils/position.ts","../src/Rangepicker.vue","../src/RangepickerInput.vue","../src/index.ts"],"sourcesContent":["!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import type { Dayjs } from 'dayjs'\nimport dayjs from 'dayjs'\nimport isBetween from 'dayjs/plugin/isBetween'\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter'\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(isBetween)\ndayjs.extend(isSameOrAfter)\ndayjs.extend(isSameOrBefore)\ndayjs.extend(customParseFormat)\n\nexport { dayjs }\nexport type { Dayjs }\n\nexport function parseDate(date: string | Date | Dayjs, format?: string): Dayjs {\n if (dayjs.isDayjs(date))\n return date\n return format ? dayjs(date, format) : dayjs(date)\n}\n\nexport function formatDate(date: Dayjs, format: string = 'YYYY-MM-DD'): string {\n return date.format(format)\n}\n\nexport function isDateInRange(date: Dayjs, start: Dayjs, end: Dayjs): boolean {\n return date.isBetween(start, end, 'day', '[]')\n}\n\nexport function getDaysBetween(start: Dayjs, end: Dayjs): number {\n return end.diff(start, 'day')\n}\n\nexport function isWeekend(date: Dayjs): boolean {\n const day = date.day()\n return day === 0 || day === 6 // Sunday or Saturday\n}\n\nexport function isToday(date: Dayjs): boolean {\n return date.isSame(dayjs(), 'day')\n}\n","import type { CalendarDay, CalendarMonth } from '../types'\nimport { type Dayjs, dayjs } from './date'\n\nexport function getMonthDays(\n monthOffset: number,\n currentDate: Dayjs = dayjs(),\n): {\n month: Dayjs\n days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }>\n } {\n const month = currentDate.add(monthOffset, 'month').startOf('month')\n const firstDayOfMonth = month.day()\n const daysInMonth = month.daysInMonth()\n const daysInPrevMonth = month.subtract(1, 'month').daysInMonth()\n\n const days: Array<{\n date: Dayjs\n isPrevMonth: boolean\n isCurrentMonth: boolean\n isNextMonth: boolean\n }> = []\n\n // Previous month days\n for (let i = firstDayOfMonth - 1; i >= 0; i--) {\n const date = month.subtract(1, 'month').date(daysInPrevMonth - i)\n days.push({\n date,\n isPrevMonth: true,\n isCurrentMonth: false,\n isNextMonth: false,\n })\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = month.date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: true,\n isNextMonth: false,\n })\n }\n\n // Next month days to complete the grid\n const remainingDays = 42 - days.length // 6 weeks * 7 days\n for (let i = 1; i <= remainingDays; i++) {\n const date = month.add(1, 'month').date(i)\n days.push({\n date,\n isPrevMonth: false,\n isCurrentMonth: false,\n isNextMonth: true,\n })\n }\n\n return { month, days }\n}\n\nexport function createCalendarDay(\n date: Dayjs,\n isPrevMonth: boolean,\n isCurrentMonth: boolean,\n isNextMonth: boolean,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarDay {\n const {\n startDate = null,\n endDate = null,\n minDate = null,\n maxDate = null,\n disabledDates = [],\n holidays = [],\n } = options\n\n const isDisabled\n = (minDate && date.isBefore(minDate, 'day'))\n || (maxDate && date.isAfter(maxDate, 'day'))\n || disabledDates.some(d => d.isSame(date, 'day'))\n\n const isHoliday = holidays.some(h => h.isSame(date, 'day'))\n\n const isSelected\n = (startDate && date.isSame(startDate, 'day'))\n || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange\n = startDate\n && endDate\n && date.isAfter(startDate, 'day')\n && date.isBefore(endDate, 'day')\n\n const isToday = date.isSame(dayjs(), 'day')\n\n const isWeekend = date.day() === 0 || date.day() === 6\n\n return {\n date,\n isPrevMonth,\n isCurrentMonth,\n isNextMonth,\n isDisabled,\n isHoliday,\n isWeekend,\n isSelected,\n isInRange,\n isToday,\n }\n}\n\nexport function generateCalendarMonths(\n numberOfMonths: number,\n startOffset: number = 0,\n options: {\n startDate?: Dayjs | null\n endDate?: Dayjs | null\n minDate?: Dayjs | null\n maxDate?: Dayjs | null\n disabledDates?: Dayjs[]\n holidays?: Dayjs[]\n } = {},\n): CalendarMonth[] {\n const months: CalendarMonth[] = []\n\n for (let i = 0; i < numberOfMonths; i++) {\n const { month, days } = getMonthDays(startOffset + i)\n\n const calendarDays = days.map(day =>\n createCalendarDay(\n day.date,\n day.isPrevMonth,\n day.isCurrentMonth,\n day.isNextMonth,\n options,\n ),\n )\n\n months.push({\n month,\n days: calendarDays,\n })\n }\n\n return months\n}\n\nexport function getWeekDays(locale: string = 'en', format: 'short' | 'narrow' = 'short'): string[] {\n const weekStart = dayjs().startOf('week')\n const days: string[] = []\n\n for (let i = 0; i < 7; i++) {\n const day = weekStart.add(i, 'day')\n days.push(format === 'short' ? day.format('ddd') : day.format('dd'))\n }\n\n return days\n}\n","export interface PositionResult {\n top?: number\n bottom?: number\n left: number\n transform?: string\n}\n\nexport function calculatePosition(\n triggerElement: HTMLElement | null,\n calendarElement: HTMLElement | null,\n preferredPosition: 'auto' | 'top' | 'bottom' = 'auto',\n): PositionResult {\n if (!triggerElement || !calendarElement)\n return { left: 0 }\n\n const triggerRect = triggerElement.getBoundingClientRect()\n const calendarRect = calendarElement.getBoundingClientRect()\n const viewportHeight = window.innerHeight\n const viewportWidth = window.innerWidth\n\n // Calculate available space\n const spaceAbove = triggerRect.top\n const spaceBelow = viewportHeight - triggerRect.bottom\n\n // Determine vertical position\n const position: PositionResult = { left: triggerRect.left }\n\n if (preferredPosition === 'auto') {\n if (spaceBelow >= calendarRect.height || spaceBelow > spaceAbove) {\n // Position below\n position.top = triggerRect.bottom + 8\n }\n else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n }\n else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n else {\n position.top = triggerRect.bottom + 8\n }\n\n // Adjust horizontal position to keep within viewport\n if (position.left + calendarRect.width > viewportWidth)\n position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16)\n position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from \"vue\";\nimport {\n breakpointsTailwind,\n onClickOutside,\n useBreakpoints,\n useWindowSize,\n} from \"@vueuse/core\";\nimport type { Dayjs } from \"dayjs\";\nimport { dayjs } from \"./utils/date\";\nimport { generateCalendarMonths, getWeekDays } from \"./utils/calendar\";\nimport { calculatePosition } from \"./utils/position\";\nimport type { CalendarDay, RangepickerProps } from \"./types\";\n\nconst props = withDefaults(defineProps<RangepickerProps>(), {\n isOpen: false,\n variant: \"desktop\",\n valueOfMonths: 2,\n valueOfColumns: 2,\n format: \"YYYY-MM-DD\",\n delimiter: \" - \",\n showTooltip: true,\n autoApply: false,\n position: \"auto\",\n borderRadius: \"0.75rem\",\n});\n\nconst emit = defineEmits<{\n \"update:modelValue\": [value: { startDate: string; endDate: string }];\n \"update:isOpen\": [value: boolean];\n dateSelected: [date: Dayjs];\n rangeSelected: [start: Dayjs, end: Dayjs];\n}>();\nconst breakpoints = useBreakpoints(breakpointsTailwind);\nconst isMobile = breakpoints.smallerOrEqual(\"lg\");\nconst numberOfMonths = computed(() =>\n isMobile.value ? 1 : props.valueOfMonths,\n);\nconst numberOfColumns = computed(() =>\n isMobile.value ? 1 : props.valueOfColumns,\n);\n\n// Refs\nconst calendarRef = ref<HTMLElement | null>(null);\nconst isFadingOut = ref(false);\nconst hoveredDay = ref<CalendarDay | null>(null);\nconst monthOffset = ref(0);\n\n// Local state\nconst localIsOpen = ref(props.isOpen);\nconst localStartDate = ref<Dayjs | null>(null);\nconst localEndDate = ref<Dayjs | null>(null);\n\n// Parse dates from props\nconst parsedMinDate = computed(() =>\n props.minDate ? dayjs(props.minDate) : null,\n);\nconst parsedMaxDate = computed(() =>\n props.maxDate ? dayjs(props.maxDate) : null,\n);\nconst parsedDisabledDates = computed(\n () => props.disabledDates?.map((d) => dayjs(d)) || [],\n);\nconst parsedHolidays = computed(\n () => props.holidays?.map((h) => dayjs(h)) || [],\n);\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays(\"en\", \"narrow\"));\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() =>\n props.variant === \"mobile\" ? 1 : numberOfMonths.value,\n);\n\nconst calendarMonths = computed(() =>\n generateCalendarMonths(effectiveNumberOfMonths.value, monthOffset.value, {\n startDate: localStartDate.value,\n endDate: localEndDate.value,\n minDate: parsedMinDate.value,\n maxDate: parsedMaxDate.value,\n disabledDates: parsedDisabledDates.value,\n holidays: parsedHolidays.value,\n }),\n);\n\nconst nightCount = computed(() => {\n if (!localStartDate.value || !localEndDate.value) return 0;\n return localEndDate.value.diff(localStartDate.value, \"day\");\n});\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value) return \"\";\n else if (localStartDate.value && !localEndDate.value)\n return localStartDate.value.format(props.format);\n else if (localStartDate.value && localEndDate.value)\n return `${localStartDate.value.format(props.format)}${props.delimiter}${localEndDate.value.format(props.format)}`;\n else return \"\";\n});\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value) return true;\n const firstMonth = dayjs().add(monthOffset.value, \"month\").startOf(\"month\");\n return firstMonth.isAfter(parsedMinDate.value, \"month\");\n});\n\nconst canNavigateNext = computed(() => {\n if (!parsedMaxDate.value) return true;\n const lastMonth = dayjs()\n .add(monthOffset.value + effectiveNumberOfMonths.value - 1, \"month\")\n .endOf(\"month\");\n return lastMonth.isBefore(parsedMaxDate.value, \"month\");\n});\n\n// Positioning\nconst { width: windowWidth } = useWindowSize();\nconst calendarStyle = ref<Record<string, string>>({});\n\nfunction updatePosition() {\n if (props.variant === \"mobile\") {\n calendarStyle.value = {\n '--border-radius-day': props.borderRadius,\n };\n return;\n }\n\n nextTick(() => {\n const position = calculatePosition(\n props.triggerElement,\n calendarRef.value,\n props.position,\n );\n\n calendarStyle.value = {\n left: `${position.left}px`,\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && { bottom: `${position.bottom}px` }),\n ...(position.transform && { transform: position.transform }),\n '--border-radius-day': props.borderRadius,\n };\n });\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({});\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value) return \"\";\n const nights = hoveredDay.value.date.diff(localStartDate.value, \"day\");\n if (nights <= 0) return \"\";\n return `${nights} ${nights === 1 ? \"night\" : \"nights\"}`;\n});\n\nconst showTooltipComputed = computed(() => {\n return (\n props.showTooltip &&\n hoveredDay.value &&\n localStartDate.value &&\n !localEndDate.value &&\n hoveredDay.value.date.isAfter(localStartDate.value, \"day\")\n );\n});\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = [\"rangepicker-day\"];\n\n if (!day.isCurrentMonth) classes.push(\"rangepicker-day-other-month\");\n\n if (day.isDisabled) classes.push(\"rangepicker-day-disabled\");\n\n if (day.isToday) classes.push(\"rangepicker-day-today\");\n\n if (day.isWeekend && !day.isSelected) classes.push(\"rangepicker-day-weekend\");\n\n if (day.isHoliday) classes.push(\"rangepicker-day-holiday\");\n\n if (day.isSelected) {\n if (\n localStartDate.value &&\n localEndDate.value &&\n day.date.isSame(localStartDate.value, \"day\") &&\n day.date.isSame(localEndDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-single\");\n else if (\n localStartDate.value &&\n day.date.isSame(localStartDate.value, \"day\")\n )\n classes.push(\"rangepicker-day-selected-start\");\n else if (localEndDate.value && day.date.isSame(localEndDate.value, \"day\"))\n classes.push(\"rangepicker-day-selected-end\");\n else classes.push(\"rangepicker-day-selected\");\n }\n\n if (day.isInRange) classes.push(\"rangepicker-day-in-range\");\n\n // Add hover effect for potential range\n if (localStartDate.value && !localEndDate.value && hoveredDay.value) {\n const start = localStartDate.value;\n const hovered = hoveredDay.value.date;\n if (day.date.isAfter(start, \"day\") && day.date.isBefore(hovered, \"day\"))\n classes.push(\"rangepicker-day-hover-range\");\n else if (day.date.isSame(hovered, \"day\") && hovered.isAfter(start, \"day\"))\n classes.push(\"rangepicker-day-hover-end\");\n }\n\n return classes;\n}\n\nfunction selectDate(day: CalendarDay, event: MouseEvent) {\n event.preventDefault();\n if (day.isDisabled) return;\n\n emit(\"dateSelected\", day.date);\n\n // Range selection logic\n if (!localStartDate.value || (localStartDate.value && localEndDate.value)) {\n // Start new range\n localStartDate.value = day.date;\n localEndDate.value = null;\n } else {\n // Complete range\n if (day.date.isBefore(localStartDate.value, \"day\")) {\n // Swap if end is before start\n localEndDate.value = localStartDate.value;\n localStartDate.value = day.date;\n } else {\n localEndDate.value = day.date;\n }\n\n // Validate min/max days\n if (props.minDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days < props.minDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n if (props.maxDays) {\n const days = localEndDate.value.diff(localStartDate.value, \"day\");\n if (days > props.maxDays) {\n // Invalid range, reset\n localStartDate.value = day.date;\n localEndDate.value = null;\n return;\n }\n }\n\n emit(\"rangeSelected\", localStartDate.value, localEndDate.value);\n\n if (props.autoApply) apply();\n }\n}\n\nfunction handleDayHover(day: CalendarDay, event: MouseEvent) {\n hoveredDay.value = day;\n\n if (props.showTooltip && localStartDate.value && !localEndDate.value)\n updateTooltipPosition(event);\n}\n\nfunction updateTooltipPosition(event: MouseEvent) {\n const rect = (event.target as HTMLElement).getBoundingClientRect();\n tooltipStyle.value = {\n left: `${rect.left + rect.width / 2}px`,\n top: `${rect.top - 10}px`,\n transform: \"translateX(-50%) translateY(-100%)\",\n };\n}\n\nfunction handleDayLeave() {\n hoveredDay.value = null;\n}\n\nfunction previousMonth() {\n if (canNavigatePrevious.value) monthOffset.value--;\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value) monthOffset.value++;\n}\n\nfunction close() {\n if (isFadingOut.value) return;\n isFadingOut.value = true;\n setTimeout(() => {\n localIsOpen.value = false;\n emit(\"update:isOpen\", false);\n isFadingOut.value = false;\n }, 200); // match fade-leave-active duration\n}\n\nfunction apply() {\n if (localStartDate.value && localEndDate.value) {\n emit(\"update:modelValue\", {\n startDate: localStartDate.value.format(props.format),\n endDate: localEndDate.value.format(props.format),\n });\n }\n close();\n}\n\nfunction cancel() {\n // Reset to initial values\n if (props.modelValue?.startDate)\n localStartDate.value = dayjs(props.modelValue.startDate);\n else localStartDate.value = null;\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate);\n else localEndDate.value = null;\n\n close();\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal;\n if (newVal) updatePosition();\n },\n);\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal) close();\n },\n);\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate) localStartDate.value = dayjs(newVal.startDate);\n else localStartDate.value = null;\n\n if (newVal?.endDate) localEndDate.value = dayjs(newVal.endDate);\n else localEndDate.value = null;\n },\n { immediate: true, deep: true },\n);\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value) updatePosition();\n});\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== \"mobile\") close();\n});\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value) return;\n\n if (e.key === \"Escape\") close();\n}\n\nonMounted(() => {\n document.addEventListener(\"keydown\", handleKeydown);\n if (props.isOpen) updatePosition();\n});\n\nonUnmounted(() => {\n document.removeEventListener(\"keydown\", handleKeydown);\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <Transition :name=\"variant === 'mobile' ? 'slide-up' : 'fade'\">\n <div v-if=\"localIsOpen || isFadingOut\" class=\"rangepicker-overlay\">\n <!-- Backdrop -->\n <div class=\"rangepicker-backdrop\" @click=\"close\" />\n\n <!-- Calendar Container -->\n <div\n ref=\"calendarRef\"\n class=\"rangepicker-container\"\n :class=\"[variant === 'mobile' ? 'rangepicker-mobile' : '']\"\n :style=\"{ ...calendarStyle, ...colorStyles, borderRadius: props.borderRadius }\"\n >\n <!-- Header -->\n <div class=\"rangepicker-header\">\n <div class=\"arch-flex arch-items-center arch-justify-between\">\n <div>\n <p\n v-if=\"label\"\n class=\"arch-text-xs arch-font-medium arch-text-gray-500 arch-mb-1\"\n >\n {{ label }}\n </p>\n <p\n class=\"arch-text-sm arch-font-semibold arch-text-gray-900\"\n >\n {{ formattedDateRange || placeholder || \"Select dates\" }}\n </p>\n </div>\n <p\n v-if=\"nightCount > 0\"\n class=\"arch-text-xs arch-text-gray-500 arch-mt-1\"\n >\n {{ nightCount }} {{ nightCount === 1 ? \"night\" : \"nights\" }}\n </p>\n <!-- <button\n class=\"rangepicker-nav-button\"\n aria-label=\"Close\"\n @click=\"close\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button> -->\n </div>\n </div>\n\n <!-- Calendar Body -->\n <div class=\"rangepicker-body\">\n <div\n class=\"rangepicker-month-grid\"\n >\n <div\n v-for=\"(monthData, index) in calendarMonths\"\n :key=\"monthData.month.format('YYYY-MM')\"\n class=\"rangepicker-month\"\n >\n <!-- Month Header -->\n <div class=\"rangepicker-month-header\">\n <button\n v-if=\"variant === 'mobile' || index === 0\"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigatePrevious\"\n aria-label=\"Previous month\"\n @click=\"previousMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n\n <span class=\"rangepicker-month-title\">\n {{ monthData.month.format(\"MMMM YYYY\") }}\n </span>\n\n <button\n v-if=\"\n variant === 'mobile' ||\n index === calendarMonths.length - 1\n \"\n class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigateNext\"\n aria-label=\"Next month\"\n @click=\"nextMonth\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"arch-h-5 arch-w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n </div>\n\n <!-- Weekday Headers -->\n <div class=\"rangepicker-weekdays\">\n <div\n v-for=\"weekday in weekdays\"\n :key=\"weekday\"\n class=\"rangepicker-weekday\"\n >\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"rangepicker-grid\" @mouseleave=\"handleDayLeave\">\n <button\n v-for=\"day in monthData.days\"\n :key=\"day.date.unix()\"\n :class=\"getDayClasses(day)\"\n :disabled=\"day.isDisabled\"\n :aria-label=\"day.date.format('MMMM D, YYYY')\"\n @click=\"(e) => selectDate(day, e)\"\n @mouseenter=\"(e) => handleDayHover(day, e)\"\n >\n <span>{{ day.date.date() }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Apply/Cancel Buttons (if not autoApply) -->\n <div\n v-if=\"!autoApply\"\n class=\"arch-mt-4 arch-flex arch-items-center arch-justify-end arch-gap-2 arch-border-t arch-border-gray-200 arch-pt-4\"\n >\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 hover:arch-bg-gray-100 arch-rounded-lg arch-transition-colors\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-rounded-lg arch-transition-colors disabled:arch-opacity-50 disabled:arch-cursor-not-allowed\"\n :style=\"{\n backgroundColor: colorStyles?.['--color-primary'] \n ? `rgb(${colorStyles['--color-primary']})` \n : 'rgb(37 99 235)',\n }\"\n :disabled=\"!localStartDate || !localEndDate\"\n @click=\"apply\"\n >\n Apply\n </button>\n </div>\n </div>\n\n <!-- Tooltip -->\n <div\n v-if=\"showTooltipComputed\"\n class=\"rangepicker-tooltip\"\n :style=\"tooltipStyle\"\n >\n <div class=\"arch-flex arch-items-center arch-gap-1\">\n {{ tooltipText }}\n </div>\n </div>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<style lang=\"scss\" scoped>\n@use \"./styles/rangepicker.scss\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Helper function to convert HEX to RGB\nfunction hexToRgb(hex: string): string | null {\n // Remove # if present\n hex = hex.replace(/^#/, '')\n\n // Handle 3-digit hex\n if (hex.length === 3) {\n hex = hex.split('').map(char => char + char).join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = parseInt(hex.substring(0, 2), 16)\n const g = parseInt(hex.substring(2, 4), 16)\n const b = parseInt(hex.substring(4, 6), 16)\n\n if (isNaN(r) || isNaN(g) || isNaN(b)) {\n return null\n }\n\n return `${r} ${g} ${b}`\n}\n\nconst props = withDefaults(defineProps<RangepickerInputProps>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\n showClearButton: true,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n 'focusin': []\n}>()\n\n// Refs\nconst inputRef = ref<HTMLInputElement | null>(null)\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value)\n return { startDate: '', endDate: '' }\n\n const parts = value.split(' - ')\n if (parts.length === 2) {\n return {\n startDate: parts[0].trim(),\n endDate: parts[1].trim(),\n }\n }\n return { startDate: '', endDate: '' }\n}\n\nwatch(() => props?.close, (cur) => {\n if (cur)\n inputRef.value.blur()\n})\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\nconst inputClass = computed(() => {\n return props.class || 'arch-w-full arch-px-3 arch-py-2 arch-border arch-border-gray-300 arch-rounded-lg arch-text-sm arch-text-gray-900 focus:arch-outline-none focus:arch-ring-2 focus:arch-ring-blue-500 focus:arch-border-blue-500'\n})\n\nfunction openPicker() {\n isOpen.value = true\n}\n\nfunction onFocus() {\n emit('focusin')\n openPicker()\n}\n\nfunction handleUpdate(value: { startDate: string; endDate: string }) {\n localValue.value = value\n const formatted = `${value.startDate} - ${value.endDate}`\n emit('update:modelValue', formatted)\n}\n\nfunction clearValue() {\n localValue.value = { startDate: '', endDate: '' }\n emit('update:modelValue', '')\n isOpen.value = false\n}\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = parseValue(newVal)\n})\n\n// Compute CSS variables for scoped styling\nconst colorStyles = computed(() => {\n const styles: Record<string, string> = {}\n\n if (props.primaryColor) {\n const rgb = hexToRgb(props.primaryColor)\n if (rgb) {\n styles['--color-primary'] = rgb\n }\n }\n\n if (props.secondaryColor) {\n const rgb = hexToRgb(props.secondaryColor)\n if (rgb) {\n styles['--color-secondary'] = rgb\n }\n }\n\n if (props.fontFamily) {\n styles['--rangepicker-font-family'] = props.fontFamily\n }\n\n return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input :id=\"id\" ref=\"inputRef\" type=\"text\" :value=\"displayValue\" :placeholder=\"placeholder\" :readonly=\"readonly\"\n :name=\"name\" :class=\"inputClass\" @click=\"openPicker\" @focus=\"onFocus\" />\n \n <button v-if=\"showClearButton && displayValue\" type=\"button\" class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\" aria-label=\"Clear dates\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-4 arch-w-4\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n\n <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"minDate\"\n :max-date=\"maxDate\" :min-days=\"minDays\" :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\" :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\" :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\" @update:model-value=\"handleUpdate\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n@use './styles/rangepicker.scss';\n\n.rangepicker-input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n font-family: var(--rangepicker-font-family, inherit);\n}\n\n.rangepicker-input-container {\n position: relative;\n display: flex;\n align-items: center;\n}\n\ninput {\n cursor: pointer;\n font-family: inherit;\n flex: 1;\n padding-right: 2.5rem;\n}\n\n.rangepicker-clear-button {\n position: absolute;\n right: 0.5rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n background: transparent;\n border: none;\n border-radius: 0.375rem;\n color: #6b7280;\n cursor: pointer;\n transition: all 0.2s;\n z-index: 1;\n\n &:hover {\n color: #374151;\n background: #f3f4f6;\n }\n\n &:active {\n transform: translateY(-50%) scale(0.95);\n }\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.5);\n }\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { \n DateRange, \n RangepickerProps, \n RangepickerEmits, \n CalendarDay, \n CalendarMonth,\n RangepickerInputProps\n} from './types'\n\n// Default export - RangepickerInput (Litepicker-compatible wrapper)\nexport default RangepickerInput\n\n// Named exports\nexport { Rangepicker, RangepickerInput }\n\n// Type exports\nexport type { \n RangepickerProps, \n RangepickerInputProps,\n RangepickerEmits, \n DateRange, \n CalendarDay, \n CalendarMonth \n}\n\n// Vue 3 composable for easy integration\nexport function useRangepicker(triggerRef: any, options: Partial<RangepickerProps> = {}) {\n const isOpen = ref(false)\n const dateRange = ref<DateRange>({ startDate: '', endDate: '' })\n\n const open = () => { isOpen.value = true }\n const close = () => { isOpen.value = false }\n const toggle = () => { isOpen.value = !isOpen.value }\n\n return {\n isOpen,\n dateRange,\n open,\n close,\n toggle,\n options,\n }\n}\n"],"names":["this","e","i","t","n","r","o","a","f","h","u","d","l","s","c","m","M","_createBlock","_Teleport","_createVNode","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeClass","_hoisted_2","_toDisplayString","_Fragment","_renderList","_normalizeStyle"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|