@archpublicwebsite/rangepicker 1.2.15 → 1.2.16
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/README.md +6 -0
- package/dist/Rangepicker.vue.d.ts.map +1 -1
- package/dist/rangepicker.js +40 -39
- 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 +2 -3
package/README.md
CHANGED
|
@@ -24,6 +24,12 @@ pnpm add @archpublicwebsite/rangepicker
|
|
|
24
24
|
yarn add @archpublicwebsite/rangepicker
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
|
|
28
|
+
```verification
|
|
29
|
+
Ran: pnpm -w --filter @archpublicwebsite/rangepicker build
|
|
30
|
+
Result: rangepicker build completed successfully.
|
|
31
|
+
```
|
|
32
|
+
|
|
27
33
|
## Quick Start
|
|
28
34
|
|
|
29
35
|
**Important:** You must import both the component AND the CSS file.
|
|
@@ -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":"AAqjBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAIlC,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,SAAS,CAAA;;;mBAiBhB,MAAM;iBAAW,MAAM;;;;;;;mBAAvB,MAAM;iBAAW,MAAM;;;;;;;;;;;;;;;;;;;AA6lBnE,wBAUG"}
|
package/dist/rangepicker.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, computed, ref, watch, onMounted, onUnmounted, createBlock, openBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, createCommentVNode, createElementVNode, normalizeStyle, normalizeClass, toDisplayString, Fragment, renderList, nextTick, mergeProps, withModifiers } from "vue";
|
|
1
|
+
import { defineComponent, computed, ref, watch, onMounted, onUnmounted, createBlock, openBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, createCommentVNode, createElementVNode, normalizeStyle, normalizeClass, unref, toDisplayString, Fragment, renderList, nextTick, mergeProps, withModifiers } from "vue";
|
|
2
2
|
import { useBreakpoints, breakpointsTailwind, useWindowSize, onClickOutside } from "@vueuse/core";
|
|
3
3
|
import dayjs from "dayjs";
|
|
4
4
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
@@ -292,40 +292,40 @@ const _hoisted_1$1 = {
|
|
|
292
292
|
key: 0,
|
|
293
293
|
class: "rangepicker-overlay"
|
|
294
294
|
};
|
|
295
|
-
const _hoisted_2$1 =
|
|
296
|
-
const _hoisted_3 = { class: "
|
|
297
|
-
const _hoisted_4 = {
|
|
295
|
+
const _hoisted_2$1 = ["data-version"];
|
|
296
|
+
const _hoisted_3 = { class: "rangepicker-header" };
|
|
297
|
+
const _hoisted_4 = { class: "arch-flex arch-items-center arch-justify-between" };
|
|
298
|
+
const _hoisted_5 = {
|
|
298
299
|
key: 0,
|
|
299
300
|
class: "arch-mb-1 arch-text-xs arch-font-medium arch-text-gray-500"
|
|
300
301
|
};
|
|
301
|
-
const
|
|
302
|
-
const
|
|
302
|
+
const _hoisted_6 = { class: "arch-text-sm arch-font-semibold arch-text-gray-900" };
|
|
303
|
+
const _hoisted_7 = {
|
|
303
304
|
key: 0,
|
|
304
305
|
class: "arch-mt-1 arch-text-xs arch-text-gray-500"
|
|
305
306
|
};
|
|
306
|
-
const
|
|
307
|
-
const
|
|
308
|
-
const
|
|
309
|
-
const
|
|
310
|
-
const
|
|
307
|
+
const _hoisted_8 = { class: "rangepicker-body" };
|
|
308
|
+
const _hoisted_9 = { class: "rangepicker-month-grid" };
|
|
309
|
+
const _hoisted_10 = { class: "rangepicker-month-header" };
|
|
310
|
+
const _hoisted_11 = ["disabled"];
|
|
311
|
+
const _hoisted_12 = {
|
|
311
312
|
key: 1,
|
|
312
313
|
class: "arch-w-8"
|
|
313
314
|
};
|
|
314
|
-
const
|
|
315
|
-
const
|
|
316
|
-
const
|
|
315
|
+
const _hoisted_13 = { class: "rangepicker-month-title" };
|
|
316
|
+
const _hoisted_14 = ["disabled"];
|
|
317
|
+
const _hoisted_15 = {
|
|
317
318
|
key: 3,
|
|
318
319
|
class: "arch-w-8"
|
|
319
320
|
};
|
|
320
|
-
const
|
|
321
|
-
const
|
|
322
|
-
const
|
|
321
|
+
const _hoisted_16 = { class: "rangepicker-weekdays" };
|
|
322
|
+
const _hoisted_17 = ["disabled", "aria-label", "onClick", "onMouseenter"];
|
|
323
|
+
const _hoisted_18 = {
|
|
323
324
|
key: 0,
|
|
324
325
|
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"
|
|
325
326
|
};
|
|
326
|
-
const
|
|
327
|
-
const
|
|
328
|
-
const packageVersion = 10;
|
|
327
|
+
const _hoisted_19 = ["disabled"];
|
|
328
|
+
const _hoisted_20 = { class: "arch-flex arch-items-center arch-gap-1" };
|
|
329
329
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
330
330
|
__name: "Rangepicker",
|
|
331
331
|
props: {
|
|
@@ -431,6 +431,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
431
431
|
});
|
|
432
432
|
}
|
|
433
433
|
const tooltipStyle = ref({});
|
|
434
|
+
const packageVersion = "1.2.16";
|
|
434
435
|
const tooltipText = computed(() => {
|
|
435
436
|
if (!hoveredDay.value || !localStartDate.value) return "";
|
|
436
437
|
const nights = hoveredDay.value.date.diff(localStartDate.value, "day");
|
|
@@ -619,27 +620,27 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
619
620
|
createElementVNode("div", {
|
|
620
621
|
ref_key: "calendarRef",
|
|
621
622
|
ref: calendarRef,
|
|
622
|
-
"data-version": packageVersion,
|
|
623
|
+
"data-version": unref(packageVersion),
|
|
623
624
|
class: normalizeClass(["rangepicker-container", [__props.variant === "mobile" ? "rangepicker-mobile" : ""]]),
|
|
624
625
|
style: normalizeStyle({ ...calendarStyle.value, ...__props.colorStyles, borderRadius: props.borderRadius })
|
|
625
626
|
}, [
|
|
626
|
-
createElementVNode("div",
|
|
627
|
-
createElementVNode("div",
|
|
627
|
+
createElementVNode("div", _hoisted_3, [
|
|
628
|
+
createElementVNode("div", _hoisted_4, [
|
|
628
629
|
createElementVNode("div", null, [
|
|
629
|
-
__props.label ? (openBlock(), createElementBlock("p",
|
|
630
|
-
createElementVNode("p",
|
|
630
|
+
__props.label ? (openBlock(), createElementBlock("p", _hoisted_5, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
|
|
631
|
+
createElementVNode("p", _hoisted_6, toDisplayString(formattedDateRange.value || __props.placeholder || "Select dates"), 1)
|
|
631
632
|
]),
|
|
632
|
-
nightCount.value > 0 ? (openBlock(), createElementBlock("p",
|
|
633
|
+
nightCount.value > 0 ? (openBlock(), createElementBlock("p", _hoisted_7, toDisplayString(nightCount.value) + " " + toDisplayString(nightCount.value === 1 ? "night" : "nights"), 1)) : createCommentVNode("", true)
|
|
633
634
|
])
|
|
634
635
|
]),
|
|
635
|
-
createElementVNode("div",
|
|
636
|
-
createElementVNode("div",
|
|
636
|
+
createElementVNode("div", _hoisted_8, [
|
|
637
|
+
createElementVNode("div", _hoisted_9, [
|
|
637
638
|
(openBlock(true), createElementBlock(Fragment, null, renderList(calendarMonths.value, (monthData, index) => {
|
|
638
639
|
return openBlock(), createElementBlock("div", {
|
|
639
640
|
key: monthData.month.format("YYYY-MM"),
|
|
640
641
|
class: "rangepicker-month"
|
|
641
642
|
}, [
|
|
642
|
-
createElementVNode("div",
|
|
643
|
+
createElementVNode("div", _hoisted_10, [
|
|
643
644
|
__props.variant === "mobile" || index === 0 ? (openBlock(), createElementBlock("button", {
|
|
644
645
|
key: 0,
|
|
645
646
|
class: "rangepicker-nav-button",
|
|
@@ -659,8 +660,8 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
659
660
|
"clip-rule": "evenodd"
|
|
660
661
|
})
|
|
661
662
|
], -1)
|
|
662
|
-
])], 8,
|
|
663
|
-
createElementVNode("span",
|
|
663
|
+
])], 8, _hoisted_11)) : (openBlock(), createElementBlock("div", _hoisted_12)),
|
|
664
|
+
createElementVNode("span", _hoisted_13, toDisplayString(monthData.month.format("MMMM YYYY")), 1),
|
|
664
665
|
__props.variant === "mobile" || index === calendarMonths.value.length - 1 ? (openBlock(), createElementBlock("button", {
|
|
665
666
|
key: 2,
|
|
666
667
|
class: "rangepicker-nav-button",
|
|
@@ -680,9 +681,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
680
681
|
"clip-rule": "evenodd"
|
|
681
682
|
})
|
|
682
683
|
], -1)
|
|
683
|
-
])], 8,
|
|
684
|
+
])], 8, _hoisted_14)) : (openBlock(), createElementBlock("div", _hoisted_15))
|
|
684
685
|
]),
|
|
685
|
-
createElementVNode("div",
|
|
686
|
+
createElementVNode("div", _hoisted_16, [
|
|
686
687
|
(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (weekday) => {
|
|
687
688
|
return openBlock(), createElementBlock("div", {
|
|
688
689
|
key: weekday,
|
|
@@ -704,13 +705,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
704
705
|
onMouseenter: (e) => handleDayHover(day, e)
|
|
705
706
|
}, [
|
|
706
707
|
createElementVNode("span", null, toDisplayString(day.date.date()), 1)
|
|
707
|
-
], 42,
|
|
708
|
+
], 42, _hoisted_17);
|
|
708
709
|
}), 128))
|
|
709
710
|
], 32)
|
|
710
711
|
]);
|
|
711
712
|
}), 128))
|
|
712
713
|
]),
|
|
713
|
-
!__props.autoApply ? (openBlock(), createElementBlock("div",
|
|
714
|
+
!__props.autoApply ? (openBlock(), createElementBlock("div", _hoisted_18, [
|
|
714
715
|
createElementVNode("button", {
|
|
715
716
|
class: "arch-rounded-lg arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 arch-transition-colors hover:arch-bg-gray-100",
|
|
716
717
|
onClick: cancel
|
|
@@ -722,7 +723,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
722
723
|
}),
|
|
723
724
|
disabled: !localStartDate.value || !localEndDate.value,
|
|
724
725
|
onClick: apply
|
|
725
|
-
}, " Apply ", 12,
|
|
726
|
+
}, " Apply ", 12, _hoisted_19)
|
|
726
727
|
])) : createCommentVNode("", true)
|
|
727
728
|
]),
|
|
728
729
|
showTooltipComputed.value ? (openBlock(), createElementBlock("div", {
|
|
@@ -730,9 +731,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
730
731
|
class: "rangepicker-tooltip",
|
|
731
732
|
style: normalizeStyle(tooltipStyle.value)
|
|
732
733
|
}, [
|
|
733
|
-
createElementVNode("div",
|
|
734
|
+
createElementVNode("div", _hoisted_20, toDisplayString(tooltipText.value), 1)
|
|
734
735
|
], 4)) : createCommentVNode("", true)
|
|
735
|
-
],
|
|
736
|
+
], 14, _hoisted_2$1)
|
|
736
737
|
])) : createCommentVNode("", true)
|
|
737
738
|
];
|
|
738
739
|
}),
|
|
@@ -749,7 +750,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
749
750
|
}
|
|
750
751
|
return target;
|
|
751
752
|
};
|
|
752
|
-
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
753
|
+
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-dd4ff97e"]]);
|
|
753
754
|
const _hoisted_1 = { class: "rangepicker-input-container" };
|
|
754
755
|
const _hoisted_2 = ["id", "value", "placeholder", "readonly", "name"];
|
|
755
756
|
const inputClass = "rangepicker-input block w-full h-full bg-transparent border-0 shadow-none outline-none cursor-pointer font-inherit text-inherit p-0";
|
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)) 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 = (startDate && date.isSame(startDate, 'day')) || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange = startDate && endDate && date.isAfter(startDate, 'day') && 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(day.date, day.isPrevMonth, day.isCurrentMonth, day.isNextMonth, options),\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) 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 } else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n } else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\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) position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16) position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport {\n computed,\nnextTick,\nonMounted,\nonUnmounted,\nref,\nwatch,\n} from 'vue'\nimport {\n breakpointsTailwind,\nonClickOutside,\nuseBreakpoints,\nuseWindowSize,\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(() => (isMobile.value ? 1 : props.valueOfMonths))\nconst numberOfColumns = computed(() => (isMobile.value ? 1 : props.valueOfColumns))\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(() => (props.minDate ? dayjs(props.minDate) : null))\nconst parsedMaxDate = computed(() => (props.maxDate ? dayjs(props.maxDate) : null))\nconst parsedDisabledDates = computed(() => props.disabledDates?.map(d => dayjs(d)) || [])\nconst parsedHolidays = computed(() => props.holidays?.map(h => dayjs(h)) || [])\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays('en', 'narrow'))\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() => (props.variant === 'mobile' ? 1 : numberOfMonths.value))\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) 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(props.triggerElement, calendarRef.value, props.position)\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 packageVersion = 10.0\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}\n else if (localStartDate.value && day.date.isSame(localStartDate.value, 'day')) {\n classes.push('rangepicker-day-selected-start')\n}\n else if (localEndDate.value && day.date.isSame(localEndDate.value, 'day')) {\n classes.push('rangepicker-day-selected-end')\n}\n else { classes.push('rangepicker-day-selected')\n}\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 (hovered.isAfter(start, 'day')) {\n if (day.date.isSame(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-start')\n } else if (day.date.isSame(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-end')\n } else if (day.date.isAfter(start, 'day') && day.date.isBefore(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-middle')\n }\n } else if (hovered.isBefore(start, 'day')) {\n if (day.date.isSame(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-start')\n } else if (day.date.isSame(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-end')\n } else if (day.date.isAfter(hovered, 'day') && day.date.isBefore(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-middle')\n }\n }\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) 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) localStartDate.value = dayjs(props.modelValue.startDate)\n else localStartDate.value = null\n\n if (props.modelValue?.endDate) 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 :data-version=\"packageVersion\"\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 v-if=\"label\" class=\"arch-mb-1 arch-text-xs arch-font-medium arch-text-gray-500\">\n {{ label }}\n </p>\n <p class=\"arch-text-sm arch-font-semibold arch-text-gray-900\">\n {{ formattedDateRange || placeholder || 'Select dates' }}\n </p>\n </div>\n <p v-if=\"nightCount > 0\" class=\"arch-mt-1 arch-text-xs arch-text-gray-500\">\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 class=\"rangepicker-month-grid\">\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=\"variant === 'mobile' || index === calendarMonths.length - 1\"\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 v-for=\"weekday in weekdays\" :key=\"weekday\" class=\"rangepicker-weekday\">\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-rounded-lg arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 arch-transition-colors hover:arch-bg-gray-100\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-rounded-lg arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-transition-colors disabled:arch-cursor-not-allowed disabled:arch-opacity-50\"\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 v-if=\"showTooltipComputed\" class=\"rangepicker-tooltip\" :style=\"tooltipStyle\">\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 {\n computed,\nref,\nwatch,\n} from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Prevent Vue from auto-applying non-prop attrs (class, style, etc.) to root element.\n// We manually spread $attrs on the wrapper so class/style from the consumer\n// always lands on the outer wrapper div — standard Vue component behavior.\ndefineOptions({ inheritAttrs: false })\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\n .split('')\n .map(char => char + char)\n .join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = Number.parseInt(hex.substring(0, 2), 16)\n const g = Number.parseInt(hex.substring(2, 4), 16)\n const b = Number.parseInt(hex.substring(4, 6), 16)\n\n if (Number.isNaN(r) || Number.isNaN(g) || Number.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 isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value) 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(\n () => props?.close,\n (cur) => {\n if (cur) inputRef.value.blur()\n },\n)\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\n// The inner input fills the wrapper — sizing/padding/border come from the\n// wrapper via $attrs (class/style passed by the consumer).\nconst inputClass =\n 'rangepicker-input block w-full h-full bg-transparent border-0 shadow-none outline-none cursor-pointer font-inherit text-inherit p-0'\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(\n () => props.modelValue,\n (newVal) => {\n localValue.value = parseValue(newVal)\n },\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 v-bind=\"$attrs\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly\"\n :name=\"name\"\n :class=\"props?.class ? props.class : inputClass\"\n @click=\"openPicker\"\n @focus=\"onFocus\"\n />\n\n <button\n v-if=\"showClearButton && displayValue\"\n type=\"button\"\n class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\"\n aria-label=\"Clear dates\"\n >\n <svg\nxmlns=\"http://www.w3.org/2000/svg\"\nclass=\"arch-h-4 arch-w-4\"\nviewBox=\"0 0 20 20\"\nfill=\"currentColor\">\n <path\n 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 />\n </svg>\n </button>\n </div>\n\n <Rangepicker\n v-model=\"localValue\"\n v-model:is-open=\"isOpen\"\n :trigger-element=\"inputRef\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :min-days=\"minDays\"\n :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\"\n :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\"\n :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\"\n :variant=\"variant\"\n :close=\"props.close\"\n :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\"\n @update:model-value=\"handleUpdate\"\n />\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: flex;\n align-items: center;\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\n.rangepicker-input {\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 { RangepickerProps, RangepickerInputProps, RangepickerEmits, DateRange, CalendarDay, CalendarMonth }\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 = () => {\n isOpen.value = true\n }\n const close = () => {\n isOpen.value = false\n }\n const toggle = () => {\n isOpen.value = !isOpen.value\n }\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","_mergeProps"],"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)) 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 = (startDate && date.isSame(startDate, 'day')) || (endDate && date.isSame(endDate, 'day'))\n\n const isInRange = startDate && endDate && date.isAfter(startDate, 'day') && 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(day.date, day.isPrevMonth, day.isCurrentMonth, day.isNextMonth, options),\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) 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 } else {\n // Position above\n position.bottom = viewportHeight - triggerRect.top + 8\n }\n } else if (preferredPosition === 'top') {\n position.bottom = viewportHeight - triggerRect.top + 8\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) position.left = viewportWidth - calendarRect.width - 16\n\n if (position.left < 16) position.left = 16\n\n return position\n}\n","<script setup lang=\"ts\">\nimport {\n computed,\nnextTick,\nonMounted,\nonUnmounted,\nref,\nwatch,\n} from 'vue'\nimport {\n breakpointsTailwind,\nonClickOutside,\nuseBreakpoints,\nuseWindowSize,\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(() => (isMobile.value ? 1 : props.valueOfMonths))\nconst numberOfColumns = computed(() => (isMobile.value ? 1 : props.valueOfColumns))\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(() => (props.minDate ? dayjs(props.minDate) : null))\nconst parsedMaxDate = computed(() => (props.maxDate ? dayjs(props.maxDate) : null))\nconst parsedDisabledDates = computed(() => props.disabledDates?.map(d => dayjs(d)) || [])\nconst parsedHolidays = computed(() => props.holidays?.map(h => dayjs(h)) || [])\n\n// Calendar data\nconst weekdays = computed(() => getWeekDays('en', 'narrow'))\n\n// For mobile view, show only 1 month\nconst effectiveNumberOfMonths = computed(() => (props.variant === 'mobile' ? 1 : numberOfMonths.value))\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) 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(props.triggerElement, calendarRef.value, props.position)\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 packageVersion =\n typeof __ARCH_RANGEPICKER_VERSION__ === 'undefined' ? '0.0.0-dev' : __ARCH_RANGEPICKER_VERSION__\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}\n else if (localStartDate.value && day.date.isSame(localStartDate.value, 'day')) {\n classes.push('rangepicker-day-selected-start')\n}\n else if (localEndDate.value && day.date.isSame(localEndDate.value, 'day')) {\n classes.push('rangepicker-day-selected-end')\n}\n else { classes.push('rangepicker-day-selected')\n}\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 (hovered.isAfter(start, 'day')) {\n if (day.date.isSame(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-start')\n } else if (day.date.isSame(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-end')\n } else if (day.date.isAfter(start, 'day') && day.date.isBefore(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-middle')\n }\n } else if (hovered.isBefore(start, 'day')) {\n if (day.date.isSame(hovered, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-start')\n } else if (day.date.isSame(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-end')\n } else if (day.date.isAfter(hovered, 'day') && day.date.isBefore(start, 'day')) {\n classes.push('rangepicker-day-hover-range', 'rangepicker-day-hover-middle')\n }\n }\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) 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) localStartDate.value = dayjs(props.modelValue.startDate)\n else localStartDate.value = null\n\n if (props.modelValue?.endDate) 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 :data-version=\"packageVersion\"\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 v-if=\"label\" class=\"arch-mb-1 arch-text-xs arch-font-medium arch-text-gray-500\">\n {{ label }}\n </p>\n <p class=\"arch-text-sm arch-font-semibold arch-text-gray-900\">\n {{ formattedDateRange || placeholder || 'Select dates' }}\n </p>\n </div>\n <p v-if=\"nightCount > 0\" class=\"arch-mt-1 arch-text-xs arch-text-gray-500\">\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 class=\"rangepicker-month-grid\">\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=\"variant === 'mobile' || index === calendarMonths.length - 1\"\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 v-for=\"weekday in weekdays\" :key=\"weekday\" class=\"rangepicker-weekday\">\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-rounded-lg arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-gray-700 arch-transition-colors hover:arch-bg-gray-100\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"arch-rounded-lg arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-transition-colors disabled:arch-cursor-not-allowed disabled:arch-opacity-50\"\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 v-if=\"showTooltipComputed\" class=\"rangepicker-tooltip\" :style=\"tooltipStyle\">\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 {\n computed,\nref,\nwatch,\n} from 'vue'\nimport Rangepicker from './Rangepicker.vue'\nimport type { RangepickerInputProps } from './types'\n\n// Prevent Vue from auto-applying non-prop attrs (class, style, etc.) to root element.\n// We manually spread $attrs on the wrapper so class/style from the consumer\n// always lands on the outer wrapper div — standard Vue component behavior.\ndefineOptions({ inheritAttrs: false })\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\n .split('')\n .map(char => char + char)\n .join('')\n }\n\n if (hex.length !== 6) {\n console.warn(`[Rangepicker] Invalid hex color: ${hex}`)\n return null\n }\n\n const r = Number.parseInt(hex.substring(0, 2), 16)\n const g = Number.parseInt(hex.substring(2, 4), 16)\n const b = Number.parseInt(hex.substring(4, 6), 16)\n\n if (Number.isNaN(r) || Number.isNaN(g) || Number.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 isOpen = ref(false)\n\n// Parse the modelValue into start/end dates\nfunction parseValue(value?: string) {\n if (!value) 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(\n () => props?.close,\n (cur) => {\n if (cur) inputRef.value.blur()\n },\n)\nconst localValue = ref(parseValue(props.modelValue))\n\nconst displayValue = computed(() => {\n return props.modelValue || ''\n})\n\n// The inner input fills the wrapper — sizing/padding/border come from the\n// wrapper via $attrs (class/style passed by the consumer).\nconst inputClass =\n 'rangepicker-input block w-full h-full bg-transparent border-0 shadow-none outline-none cursor-pointer font-inherit text-inherit p-0'\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(\n () => props.modelValue,\n (newVal) => {\n localValue.value = parseValue(newVal)\n },\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 v-bind=\"$attrs\" class=\"rangepicker-input-wrapper\" :style=\"colorStyles\">\n <div class=\"rangepicker-input-container\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n type=\"text\"\n :value=\"displayValue\"\n :placeholder=\"placeholder\"\n :readonly=\"readonly\"\n :name=\"name\"\n :class=\"props?.class ? props.class : inputClass\"\n @click=\"openPicker\"\n @focus=\"onFocus\"\n />\n\n <button\n v-if=\"showClearButton && displayValue\"\n type=\"button\"\n class=\"rangepicker-clear-button\"\n @click.stop=\"clearValue\"\n aria-label=\"Clear dates\"\n >\n <svg\nxmlns=\"http://www.w3.org/2000/svg\"\nclass=\"arch-h-4 arch-w-4\"\nviewBox=\"0 0 20 20\"\nfill=\"currentColor\">\n <path\n 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 />\n </svg>\n </button>\n </div>\n\n <Rangepicker\n v-model=\"localValue\"\n v-model:is-open=\"isOpen\"\n :trigger-element=\"inputRef\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :min-days=\"minDays\"\n :max-days=\"maxDays\"\n :value-of-months=\"numberOfMonths || 2\"\n :value-of-columns=\"numberOfColumns || 2\"\n :format=\"format || 'DD MMM YYYY'\"\n :auto-apply=\"autoApply !== false\"\n :show-tooltip=\"showTooltip !== false\"\n :variant=\"variant\"\n :close=\"props.close\"\n :color-styles=\"colorStyles\"\n :border-radius=\"borderRadius\"\n @update:model-value=\"handleUpdate\"\n />\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: flex;\n align-items: center;\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\n.rangepicker-input {\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 { RangepickerProps, RangepickerInputProps, RangepickerEmits, DateRange, CalendarDay, CalendarMonth }\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 = () => {\n isOpen.value = true\n }\n const close = () => {\n isOpen.value = false\n }\n const toggle = () => {\n isOpen.value = !isOpen.value\n }\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","_unref","_normalizeClass","_toDisplayString","_Fragment","_renderList","_normalizeStyle","_mergeProps"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|