@archpublicwebsite/rangepicker 1.0.8 → 1.0.9
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/RangepickerInput.stories.d.ts +67 -7
- package/dist/RangepickerInput.stories.d.ts.map +1 -1
- package/dist/RangepickerInput.stories.js +233 -31
- package/dist/RangepickerInput.vue.d.ts.map +1 -1
- package/dist/StoryWrapper.vue.d.ts +18 -0
- package/dist/StoryWrapper.vue.d.ts.map +1 -0
- package/dist/rangepicker.js +57 -38
- 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 +5 -8
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 } from "vue";
|
|
1
|
+
import { defineComponent, computed, ref, watch, onMounted, onUnmounted, createBlock, openBlock, Teleport, createVNode, Transition, withCtx, createElementBlock, createCommentVNode, createElementVNode, withModifiers, normalizeStyle, normalizeClass, toDisplayString, Fragment, renderList, nextTick } from "vue";
|
|
2
2
|
import { useBreakpoints, breakpointsTailwind, useWindowSize, onClickOutside } from "@vueuse/core";
|
|
3
3
|
import dayjs from "dayjs";
|
|
4
4
|
function getDefaultExportFromCjs(x) {
|
|
@@ -329,39 +329,38 @@ const _hoisted_1$1 = {
|
|
|
329
329
|
class: "rangepicker-overlay"
|
|
330
330
|
};
|
|
331
331
|
const _hoisted_2 = { class: "rangepicker-header" };
|
|
332
|
-
const _hoisted_3 = { class: "
|
|
332
|
+
const _hoisted_3 = { class: "flex items-center justify-between w-full" };
|
|
333
333
|
const _hoisted_4 = {
|
|
334
334
|
key: 0,
|
|
335
|
-
class: "
|
|
335
|
+
class: "text-xs font-medium text-gray-500 mb-1"
|
|
336
336
|
};
|
|
337
|
-
const _hoisted_5 = { class: "
|
|
337
|
+
const _hoisted_5 = { class: "text-sm font-semibold text-gray-900" };
|
|
338
338
|
const _hoisted_6 = {
|
|
339
339
|
key: 0,
|
|
340
|
-
class: "
|
|
340
|
+
class: "text-xs text-gray-500 mt-1"
|
|
341
341
|
};
|
|
342
342
|
const _hoisted_7 = { class: "rangepicker-body" };
|
|
343
343
|
const _hoisted_8 = { class: "rangepicker-month-header" };
|
|
344
344
|
const _hoisted_9 = ["disabled"];
|
|
345
345
|
const _hoisted_10 = {
|
|
346
346
|
key: 1,
|
|
347
|
-
class: "
|
|
347
|
+
class: "w-8"
|
|
348
348
|
};
|
|
349
|
-
const _hoisted_11 = { class: "rangepicker-month-title
|
|
349
|
+
const _hoisted_11 = { class: "rangepicker-month-title" };
|
|
350
350
|
const _hoisted_12 = ["disabled"];
|
|
351
351
|
const _hoisted_13 = {
|
|
352
352
|
key: 3,
|
|
353
|
-
class: "
|
|
353
|
+
class: "w-8"
|
|
354
354
|
};
|
|
355
355
|
const _hoisted_14 = { class: "rangepicker-weekdays" };
|
|
356
356
|
const _hoisted_15 = { class: "rangepicker-grid" };
|
|
357
357
|
const _hoisted_16 = ["disabled", "aria-label", "onClick", "onMouseenter"];
|
|
358
|
-
const _hoisted_17 = {
|
|
359
|
-
const _hoisted_18 = {
|
|
358
|
+
const _hoisted_17 = {
|
|
360
359
|
key: 0,
|
|
361
|
-
class: "
|
|
360
|
+
class: "mt-4 flex items-center justify-end gap-2 border-t border-gray-200 pt-4"
|
|
362
361
|
};
|
|
363
|
-
const
|
|
364
|
-
const
|
|
362
|
+
const _hoisted_18 = ["disabled"];
|
|
363
|
+
const _hoisted_19 = { class: "flex items-center gap-1" };
|
|
365
364
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
366
365
|
__name: "Rangepicker",
|
|
367
366
|
props: {
|
|
@@ -509,14 +508,15 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
509
508
|
if (day.isHoliday)
|
|
510
509
|
classes.push("rangepicker-day-holiday");
|
|
511
510
|
if (day.isSelected) {
|
|
512
|
-
if (localStartDate.value && localEndDate.value && day.date.isSame(localStartDate.value, "day") && day.date.isSame(localEndDate.value, "day"))
|
|
511
|
+
if (localStartDate.value && localEndDate.value && day.date.isSame(localStartDate.value, "day") && day.date.isSame(localEndDate.value, "day")) {
|
|
513
512
|
classes.push("rangepicker-day-selected-single");
|
|
514
|
-
else if (localStartDate.value && day.date.isSame(localStartDate.value, "day"))
|
|
513
|
+
} else if (localStartDate.value && day.date.isSame(localStartDate.value, "day")) {
|
|
515
514
|
classes.push("rangepicker-day-selected-start");
|
|
516
|
-
else if (localEndDate.value && day.date.isSame(localEndDate.value, "day"))
|
|
515
|
+
} else if (localEndDate.value && day.date.isSame(localEndDate.value, "day")) {
|
|
517
516
|
classes.push("rangepicker-day-selected-end");
|
|
518
|
-
else
|
|
517
|
+
} else {
|
|
519
518
|
classes.push("rangepicker-day-selected");
|
|
519
|
+
}
|
|
520
520
|
}
|
|
521
521
|
if (day.isInRange)
|
|
522
522
|
classes.push("rangepicker-day-in-range");
|
|
@@ -530,7 +530,13 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
530
530
|
}
|
|
531
531
|
return classes;
|
|
532
532
|
}
|
|
533
|
-
function selectDate(day) {
|
|
533
|
+
function selectDate(event, day) {
|
|
534
|
+
console.log("[Rangepicker v1.1] selectDate called", day.date.format("YYYY-MM-DD"));
|
|
535
|
+
event.stopPropagation();
|
|
536
|
+
const target = event.currentTarget;
|
|
537
|
+
if (target) {
|
|
538
|
+
target.blur();
|
|
539
|
+
}
|
|
534
540
|
if (day.isDisabled)
|
|
535
541
|
return;
|
|
536
542
|
emit("dateSelected", day.date);
|
|
@@ -565,7 +571,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
565
571
|
apply();
|
|
566
572
|
}
|
|
567
573
|
}
|
|
568
|
-
function handleDayHover(
|
|
574
|
+
function handleDayHover(event, day) {
|
|
569
575
|
hoveredDay.value = day;
|
|
570
576
|
if (props.showTooltip && localStartDate.value && !localEndDate.value)
|
|
571
577
|
updateTooltipPosition(event);
|
|
@@ -590,13 +596,25 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
590
596
|
monthOffset.value++;
|
|
591
597
|
}
|
|
592
598
|
function close() {
|
|
599
|
+
var _a;
|
|
600
|
+
console.log("[Rangepicker v1.1] close called, activeElement:", (_a = document.activeElement) == null ? void 0 : _a.tagName);
|
|
593
601
|
if (isFadingOut.value)
|
|
594
602
|
return;
|
|
603
|
+
if (document.activeElement && document.activeElement !== document.body) {
|
|
604
|
+
document.activeElement.blur();
|
|
605
|
+
}
|
|
606
|
+
document.body.focus();
|
|
607
|
+
console.log("[Rangepicker v1.1] Focus moved to body");
|
|
595
608
|
isFadingOut.value = true;
|
|
596
609
|
setTimeout(() => {
|
|
597
610
|
localIsOpen.value = false;
|
|
598
611
|
emit("update:isOpen", false);
|
|
599
612
|
isFadingOut.value = false;
|
|
613
|
+
nextTick(() => {
|
|
614
|
+
if (document.activeElement === document.body) {
|
|
615
|
+
document.body.blur();
|
|
616
|
+
}
|
|
617
|
+
});
|
|
600
618
|
}, 200);
|
|
601
619
|
}
|
|
602
620
|
function apply() {
|
|
@@ -680,7 +698,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
680
698
|
localIsOpen.value || isFadingOut.value ? (openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
681
699
|
createElementVNode("div", {
|
|
682
700
|
class: "rangepicker-backdrop",
|
|
683
|
-
onClick: close
|
|
701
|
+
onClick: withModifiers(close, ["stop"])
|
|
684
702
|
}),
|
|
685
703
|
createElementVNode("div", {
|
|
686
704
|
ref_key: "calendarRef",
|
|
@@ -702,7 +720,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
702
720
|
createElementVNode("div", _hoisted_7, [
|
|
703
721
|
createElementVNode("div", {
|
|
704
722
|
class: normalizeClass(["rangepicker-month-grid", [
|
|
705
|
-
__props.variant === "mobile" ? "
|
|
723
|
+
__props.variant === "mobile" ? "grid-cols-1" : `lg:grid-cols-${numberOfColumns.value}`
|
|
706
724
|
]])
|
|
707
725
|
}, [
|
|
708
726
|
(openBlock(true), createElementBlock(Fragment, null, renderList(calendarMonths.value, (monthData, index) => {
|
|
@@ -720,7 +738,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
720
738
|
}, [..._cache[0] || (_cache[0] = [
|
|
721
739
|
createElementVNode("svg", {
|
|
722
740
|
xmlns: "http://www.w3.org/2000/svg",
|
|
723
|
-
class: "
|
|
741
|
+
class: "h-5 w-5",
|
|
724
742
|
viewBox: "0 0 20 20",
|
|
725
743
|
fill: "currentColor"
|
|
726
744
|
}, [
|
|
@@ -731,7 +749,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
731
749
|
})
|
|
732
750
|
], -1)
|
|
733
751
|
])], 8, _hoisted_9)) : (openBlock(), createElementBlock("div", _hoisted_10)),
|
|
734
|
-
createElementVNode("
|
|
752
|
+
createElementVNode("span", _hoisted_11, toDisplayString(monthData.month.format("MMMM YYYY")), 1),
|
|
735
753
|
__props.variant === "mobile" || index === calendarMonths.value.length - 1 ? (openBlock(), createElementBlock("button", {
|
|
736
754
|
key: 2,
|
|
737
755
|
class: "rangepicker-nav-button",
|
|
@@ -741,7 +759,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
741
759
|
}, [..._cache[1] || (_cache[1] = [
|
|
742
760
|
createElementVNode("svg", {
|
|
743
761
|
xmlns: "http://www.w3.org/2000/svg",
|
|
744
|
-
class: "
|
|
762
|
+
class: "h-5 w-5",
|
|
745
763
|
viewBox: "0 0 20 20",
|
|
746
764
|
fill: "currentColor"
|
|
747
765
|
}, [
|
|
@@ -757,7 +775,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
757
775
|
(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (weekday) => {
|
|
758
776
|
return openBlock(), createElementBlock("div", {
|
|
759
777
|
key: weekday,
|
|
760
|
-
class: "rangepicker-weekday
|
|
778
|
+
class: "rangepicker-weekday"
|
|
761
779
|
}, toDisplayString(weekday), 1);
|
|
762
780
|
}), 128))
|
|
763
781
|
]),
|
|
@@ -768,27 +786,27 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
768
786
|
class: normalizeClass(getDayClasses(day)),
|
|
769
787
|
disabled: day.isDisabled,
|
|
770
788
|
"aria-label": day.date.format("MMMM D, YYYY"),
|
|
771
|
-
onClick: (
|
|
772
|
-
onMouseenter: (e) => handleDayHover(
|
|
789
|
+
onClick: (e) => selectDate(e, day),
|
|
790
|
+
onMouseenter: (e) => handleDayHover(e, day),
|
|
773
791
|
onMouseleave: handleDayLeave
|
|
774
792
|
}, [
|
|
775
|
-
createElementVNode("span",
|
|
793
|
+
createElementVNode("span", null, toDisplayString(day.date.date()), 1)
|
|
776
794
|
], 42, _hoisted_16);
|
|
777
795
|
}), 128))
|
|
778
796
|
])
|
|
779
797
|
]);
|
|
780
798
|
}), 128))
|
|
781
799
|
], 2),
|
|
782
|
-
!__props.autoApply ? (openBlock(), createElementBlock("div",
|
|
800
|
+
!__props.autoApply ? (openBlock(), createElementBlock("div", _hoisted_17, [
|
|
783
801
|
createElementVNode("button", {
|
|
784
|
-
class: "
|
|
802
|
+
class: "px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 rounded-lg transition-colors",
|
|
785
803
|
onClick: cancel
|
|
786
804
|
}, " Cancel "),
|
|
787
805
|
createElementVNode("button", {
|
|
788
|
-
class: "
|
|
806
|
+
class: "px-4 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed",
|
|
789
807
|
disabled: !localStartDate.value || !localEndDate.value,
|
|
790
808
|
onClick: apply
|
|
791
|
-
}, " Apply ", 8,
|
|
809
|
+
}, " Apply ", 8, _hoisted_18)
|
|
792
810
|
])) : createCommentVNode("", true)
|
|
793
811
|
]),
|
|
794
812
|
showTooltipComputed.value ? (openBlock(), createElementBlock("div", {
|
|
@@ -796,7 +814,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
796
814
|
class: "rangepicker-tooltip",
|
|
797
815
|
style: normalizeStyle(tooltipStyle.value)
|
|
798
816
|
}, [
|
|
799
|
-
createElementVNode("div",
|
|
817
|
+
createElementVNode("div", _hoisted_19, toDisplayString(tooltipText.value), 1)
|
|
800
818
|
], 4)) : createCommentVNode("", true)
|
|
801
819
|
], 6)
|
|
802
820
|
])) : createCommentVNode("", true)
|
|
@@ -814,7 +832,7 @@ const _export_sfc = (sfc, props) => {
|
|
|
814
832
|
}
|
|
815
833
|
return target;
|
|
816
834
|
};
|
|
817
|
-
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
835
|
+
const Rangepicker = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-10261b64"]]);
|
|
818
836
|
const _hoisted_1 = ["id", "value", "placeholder", "readonly", "name"];
|
|
819
837
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
820
838
|
__name: "RangepickerInput",
|
|
@@ -876,13 +894,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
876
894
|
return props.modelValue || "";
|
|
877
895
|
});
|
|
878
896
|
const inputClass = computed(() => {
|
|
879
|
-
return props.class || "
|
|
897
|
+
return props.class || "tw-w-full tw-px-3 tw-py-2 tw-border tw-border-gray-300 tw-rounded-lg tw-text-sm tw-text-gray-900 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-blue-500 focus:tw-border-blue-500";
|
|
880
898
|
});
|
|
881
899
|
function openPicker() {
|
|
882
900
|
isOpen.value = true;
|
|
883
901
|
}
|
|
884
|
-
function onFocus() {
|
|
885
|
-
|
|
902
|
+
function onFocus(event) {
|
|
903
|
+
event.preventDefault();
|
|
904
|
+
event.stopPropagation();
|
|
886
905
|
openPicker();
|
|
887
906
|
}
|
|
888
907
|
function handleUpdate(value) {
|
|
@@ -955,7 +974,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
955
974
|
};
|
|
956
975
|
}
|
|
957
976
|
});
|
|
958
|
-
const RangepickerInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
977
|
+
const RangepickerInput = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-11a28dcf"]]);
|
|
959
978
|
function useRangepicker(triggerRef, options = {}) {
|
|
960
979
|
const isOpen = ref(false);
|
|
961
980
|
const dateRange = ref({ startDate: "", endDate: "" });
|
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 { breakpointsTailwind, onClickOutside, useBreakpoints, useWindowSize } 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 } from './types'\n\nconst props = withDefaults(defineProps<Props>(), {\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})\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)\ninterface Props {\n modelValue?: {\n startDate?: string | Date | Dayjs\n endDate?: string | Date | Dayjs\n }\n isOpen?: boolean\n variant?: 'desktop' | 'mobile'\n minDate?: string | Date | Dayjs\n maxDate?: string | Date | Dayjs\n minDays?: number\n maxDays?: number\n close?: boolean\n valueOfMonths?: number\n valueOfColumns?: number\n disabledDates?: (string | Date)[]\n holidays?: (string | Date)[]\n format?: string\n delimiter?: string\n placeholder?: string\n label?: string\n showTooltip?: boolean\n autoApply?: boolean\n position?: 'auto' | 'top' | 'bottom'\n triggerElement?: HTMLElement | null\n colorStyles?: Record<string, string>\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)\n return 0\n return localEndDate.value.diff(localStartDate.value, 'day')\n})\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value)\n 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\n return ''\n})\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value)\n 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)\n 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 return\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 }\n })\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({})\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value)\n return ''\n const nights = hoveredDay.value.date.diff(localStartDate.value, 'day')\n if (nights <= 0)\n return ''\n return `${nights} ${nights === 1 ? 'night' : 'nights'}`\n})\n\nconst showTooltipComputed = computed(() => {\n return props.showTooltip\n && hoveredDay.value\n && localStartDate.value\n && !localEndDate.value\n && hoveredDay.value.date.isAfter(localStartDate.value, 'day')\n})\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = ['rangepicker-day']\n\n if (!day.isCurrentMonth)\n classes.push('rangepicker-day-other-month')\n\n if (day.isDisabled)\n classes.push('rangepicker-day-disabled')\n\n if (day.isToday)\n classes.push('rangepicker-day-today')\n\n if (day.isWeekend && !day.isSelected)\n classes.push('rangepicker-day-weekend')\n\n if (day.isHoliday)\n 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\n classes.push('rangepicker-day-selected')\n }\n\n if (day.isInRange)\n 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) {\n if (day.isDisabled)\n 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 }\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 }\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)\n 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)\n monthOffset.value--\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value)\n monthOffset.value++\n}\n\nfunction close() {\n if (isFadingOut.value)\n 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\n localStartDate.value = null\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate)\n else\n localEndDate.value = null\n\n close()\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal\n if (newVal)\n updatePosition()\n },\n)\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal)\n close()\n },\n)\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate)\n localStartDate.value = dayjs(newVal.startDate)\n else\n localStartDate.value = null\n\n if (newVal?.endDate)\n localEndDate.value = dayjs(newVal.endDate)\n else\n localEndDate.value = null\n },\n { immediate: true, deep: true },\n)\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value)\n updatePosition()\n})\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== 'mobile')\n close()\n})\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value)\n return\n\n if (e.key === 'Escape')\n close()\n}\n\nonMounted(() => {\n document.addEventListener('keydown', handleKeydown)\n if (props.isOpen)\n 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 ref=\"calendarRef\" class=\"rangepicker-container\" :class=\"[\n variant === 'mobile' ? 'rangepicker-mobile' : '',\n ]\" :style=\"{ ...calendarStyle, ...colorStyles }\">\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-text-xs arch-font-medium arch-text-gray-500 arch-mb-1 font-secondary\">\n {{ label }}\n </p>\n <p class=\"arch-text-sm arch-font-semibold arch-text-gray-900 font-secondary\">\n {{ formattedDateRange || placeholder || 'Select dates' }}\n </p>\n </div>\n <p v-if=\"nightCount > 0\" class=\"arch-text-xs arch-text-gray-500 arch-mt-1 font-secondary\">\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\" :class=\"[\n variant === 'mobile' ? 'arch-grid-cols-1' : `lg:arch-grid-cols-${numberOfColumns}`,\n ]\">\n <div v-for=\"(monthData, index) in calendarMonths\" :key=\"monthData.month.format('YYYY-MM')\"\n class=\"rangepicker-month\">\n <!-- Month Header -->\n <div class=\"rangepicker-month-header\">\n <button v-if=\"variant === 'mobile' || index === 0\" class=\"rangepicker-nav-button\"\n :disabled=\"!canNavigatePrevious\" aria-label=\"Previous month\" @click=\"previousMonth\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-5 arch-w-5\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path 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 </svg>\n </button>\n <div v-else class=\"arch-w-8\"></div>\n\n <h3 class=\"rangepicker-month-title font-secondary\">\n {{ monthData.month.format('MMMM YYYY') }}\n </h3>\n\n <button v-if=\"variant === 'mobile' || index === calendarMonths.length - 1\"\n class=\"rangepicker-nav-button\" :disabled=\"!canNavigateNext\" aria-label=\"Next month\"\n @click=\"nextMonth\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"arch-h-5 arch-w-5\" viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path 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 </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 font-secondary\">\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"rangepicker-grid\">\n <button v-for=\"day in monthData.days\" :key=\"day.date.unix()\" :class=\"getDayClasses(day)\"\n :disabled=\"day.isDisabled\" :aria-label=\"day.date.format('MMMM D, YYYY')\" @click=\"selectDate(day)\"\n @mouseenter=\"(e) => handleDayHover(day, e)\" @mouseleave=\"handleDayLeave\">\n <span class=\"font-secondary\">{{ day.date.date() }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Apply/Cancel Buttons (if not autoApply) -->\n <div 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 <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 font-secondary\"\n @click=\"cancel\">\n Cancel\n </button>\n <button\n class=\"arch-px-4 arch-py-2 arch-text-sm arch-font-medium arch-text-white arch-bg-blue-600 hover:arch-bg-blue-700 arch-rounded-lg arch-transition-colors disabled:arch-opacity-50 disabled:arch-cursor-not-allowed font-secondary\"\n :disabled=\"!localStartDate || !localEndDate\" @click=\"apply\">\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 { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\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\ninterface LitepickerOptions {\n autoApply?: boolean\n allowRepick?: boolean\n dropdowns?: any\n startDate?: Date | string\n minDate?: Date | string\n maxDate?: Date | string\n format?: string\n numberOfColumns?: number\n numberOfMonths?: number\n singleMode?: boolean\n tooltipText?: any\n tooltipNumber?: any\n inlineMode?: boolean\n minDays?: number\n maxDays?: number\n showTooltip?: boolean\n}\n\ninterface Props {\n id?: string\n close?: boolean\n modelValue?: string\n name?: string\n placeholder?: string\n readonly?: boolean\n class?: string\n options?: LitepickerOptions\n variant?: 'desktop' | 'mobile'\n primaryColor?: string\n secondaryColor?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\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\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 return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\">\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 <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"options?.minDate\"\n :max-date=\"options?.maxDate\" :min-days=\"options?.minDays\" :max-days=\"options?.maxDays\"\n :value-of-months=\"options?.numberOfMonths || 2\" :value-of-columns=\"options?.numberOfColumns || 2\"\n :format=\"options?.format || 'DD MMM YYYY'\" :auto-apply=\"options?.autoApply !== false\"\n :show-tooltip=\"options?.showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n @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}\n\ninput {\n cursor: pointer;\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { DateRange, RangepickerProps } 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, DateRange }\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","_normalizeStyle","_toDisplayString","_Fragment","_renderList","_normalizeClass"],"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 type { Dayjs } from 'dayjs'\nimport type { CalendarDay } from './types'\nimport { breakpointsTailwind, onClickOutside, useBreakpoints, useWindowSize } from '@vueuse/core'\nimport { computed, nextTick, onMounted, onUnmounted, ref, watch } from 'vue'\nimport { generateCalendarMonths, getWeekDays } from './utils/calendar'\nimport { dayjs } from './utils/date'\nimport { calculatePosition } from './utils/position'\n\nconst props = withDefaults(defineProps<Props>(), {\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})\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)\ninterface Props {\n modelValue?: {\n startDate?: string | Date | Dayjs\n endDate?: string | Date | Dayjs\n }\n isOpen?: boolean\n variant?: 'desktop' | 'mobile'\n minDate?: string | Date | Dayjs\n maxDate?: string | Date | Dayjs\n minDays?: number\n maxDays?: number\n close?: boolean\n valueOfMonths?: number\n valueOfColumns?: number\n disabledDates?: (string | Date)[]\n holidays?: (string | Date)[]\n format?: string\n delimiter?: string\n placeholder?: string\n label?: string\n showTooltip?: boolean\n autoApply?: boolean\n position?: 'auto' | 'top' | 'bottom'\n triggerElement?: HTMLElement | null\n colorStyles?: Record<string, string>\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)\n return 0\n return localEndDate.value.diff(localStartDate.value, 'day')\n})\n\nconst formattedDateRange = computed(() => {\n if (!localStartDate.value && !localEndDate.value)\n 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\n return ''\n})\n\n// Navigation\nconst canNavigatePrevious = computed(() => {\n if (!parsedMinDate.value)\n 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)\n 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 return\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 }\n })\n}\n\n// Tooltip\nconst tooltipStyle = ref<Record<string, string>>({})\nconst tooltipText = computed(() => {\n if (!hoveredDay.value || !localStartDate.value)\n return ''\n const nights = hoveredDay.value.date.diff(localStartDate.value, 'day')\n if (nights <= 0)\n return ''\n return `${nights} ${nights === 1 ? 'night' : 'nights'}`\n})\n\nconst showTooltipComputed = computed(() => {\n return props.showTooltip\n && hoveredDay.value\n && localStartDate.value\n && !localEndDate.value\n && hoveredDay.value.date.isAfter(localStartDate.value, 'day')\n})\n\n// Methods\nfunction getDayClasses(day: CalendarDay) {\n const classes = ['rangepicker-day']\n\n if (!day.isCurrentMonth)\n classes.push('rangepicker-day-other-month')\n\n if (day.isDisabled)\n classes.push('rangepicker-day-disabled')\n\n if (day.isToday)\n classes.push('rangepicker-day-today')\n\n if (day.isWeekend && !day.isSelected)\n classes.push('rangepicker-day-weekend')\n\n if (day.isHoliday)\n 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 (\n localStartDate.value\n && day.date.isSame(localStartDate.value, 'day')\n ) {\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 {\n classes.push('rangepicker-day-selected')\n }\n }\n\n if (day.isInRange)\n 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(event: MouseEvent, day: CalendarDay) {\n console.log('[Rangepicker v1.1] selectDate called', day.date.format('YYYY-MM-DD'))\n event.stopPropagation()\n\n // Blur the clicked button immediately to prevent focus from shifting to next element\n const target = event.currentTarget as HTMLElement\n if (target) {\n target.blur()\n }\n\n if (day.isDisabled)\n 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 }\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 }\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)\n apply()\n }\n}\n\nfunction handleDayHover(event: MouseEvent, day: CalendarDay) {\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)\n monthOffset.value--\n}\n\nfunction nextMonth() {\n if (canNavigateNext.value)\n monthOffset.value++\n}\n\nfunction close() {\n console.log('[Rangepicker v1.1] close called, activeElement:', document.activeElement?.tagName)\n if (isFadingOut.value)\n return\n\n // Move focus to body BEFORE starting close transition to prevent focus shift\n if (document.activeElement && document.activeElement !== document.body) {\n (document.activeElement as HTMLElement).blur()\n }\n // Explicitly set focus to body to prevent browser from auto-focusing next element\n document.body.focus()\n console.log('[Rangepicker v1.1] Focus moved to body')\n isFadingOut.value = true\n\n setTimeout(() => {\n localIsOpen.value = false\n emit('update:isOpen', false)\n isFadingOut.value = false\n\n // Blur body after transition to ensure clean state\n nextTick(() => {\n if (document.activeElement === document.body) {\n document.body.blur()\n }\n })\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\n localStartDate.value = null\n\n if (props.modelValue?.endDate)\n localEndDate.value = dayjs(props.modelValue.endDate)\n else\n localEndDate.value = null\n\n close()\n}\n\n// Watch props\nwatch(\n () => props.isOpen,\n (newVal) => {\n localIsOpen.value = newVal\n if (newVal)\n updatePosition()\n },\n)\n\n// Watch props\nwatch(\n () => props.close,\n (newVal) => {\n if (newVal)\n close()\n },\n)\n\nwatch(\n () => props.modelValue,\n (newVal) => {\n if (newVal?.startDate)\n localStartDate.value = dayjs(newVal.startDate)\n else\n localStartDate.value = null\n\n if (newVal?.endDate)\n localEndDate.value = dayjs(newVal.endDate)\n else\n localEndDate.value = null\n },\n { immediate: true, deep: true },\n)\n\nwatch([windowWidth, localIsOpen], () => {\n if (localIsOpen.value)\n updatePosition()\n})\n\n// Click outside to close\nonClickOutside(calendarRef, () => {\n if (localIsOpen.value && props.variant !== 'mobile')\n close()\n})\n\n// Keyboard navigation\nfunction handleKeydown(e: KeyboardEvent) {\n if (!localIsOpen.value)\n return\n\n if (e.key === 'Escape')\n close()\n}\n\nonMounted(() => {\n document.addEventListener('keydown', handleKeydown)\n if (props.isOpen)\n 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.stop=\"close\" />\n\n <!-- Calendar Container -->\n <div\n ref=\"calendarRef\"\n class=\"rangepicker-container\"\n :class=\"[\n variant === 'mobile' ? 'rangepicker-mobile' : '',\n ]\"\n :style=\"{ ...calendarStyle, ...colorStyles }\"\n >\n <!-- Header -->\n <div class=\"rangepicker-header\">\n <div class=\"flex items-center justify-between w-full\">\n <div>\n <p v-if=\"label\" class=\"text-xs font-medium text-gray-500 mb-1\">\n {{ label }}\n </p>\n <p class=\"text-sm font-semibold text-gray-900\">\n {{ formattedDateRange || placeholder || 'Select dates' }}\n </p>\n </div>\n <p v-if=\"nightCount > 0\" class=\"text-xs text-gray-500 mt-1\">\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=\"h-5 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 :class=\"[\n variant === 'mobile' ? 'grid-cols-1' : `lg:grid-cols-${numberOfColumns}`,\n ]\"\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=\"h-5 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=\"w-8\" />\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=\"h-5 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=\"w-8\" />\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\">\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(e, day)\"\n @mouseenter=\"(e) => handleDayHover(e, day)\"\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=\"mt-4 flex items-center justify-end gap-2 border-t border-gray-200 pt-4\"\n >\n <button\n class=\"px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-100 rounded-lg transition-colors\"\n @click=\"cancel\"\n >\n Cancel\n </button>\n <button\n class=\"px-4 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed\"\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=\"flex items-center 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/* Styles are imported globally from compiled CSS */\n</style>\n","<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport Rangepicker from './Rangepicker.vue'\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\ninterface LitepickerOptions {\n autoApply?: boolean\n allowRepick?: boolean\n dropdowns?: any\n startDate?: Date | string\n minDate?: Date | string\n maxDate?: Date | string\n format?: string\n numberOfColumns?: number\n numberOfMonths?: number\n singleMode?: boolean\n tooltipText?: any\n tooltipNumber?: any\n inlineMode?: boolean\n minDays?: number\n maxDays?: number\n showTooltip?: boolean\n}\n\ninterface Props {\n id?: string\n close?: boolean\n modelValue?: string\n name?: string\n placeholder?: string\n readonly?: boolean\n class?: string\n options?: LitepickerOptions\n variant?: 'desktop' | 'mobile'\n primaryColor?: string\n secondaryColor?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n readonly: true,\n variant: 'desktop',\n placeholder: 'Select dates',\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 || 'tw-w-full tw-px-3 tw-py-2 tw-border tw-border-gray-300 tw-rounded-lg tw-text-sm tw-text-gray-900 focus:tw-outline-none focus:tw-ring-2 focus:tw-ring-blue-500 focus:tw-border-blue-500'\n})\n\nfunction openPicker() {\n isOpen.value = true\n}\n\nfunction onFocus(event: FocusEvent) {\n event.preventDefault()\n event.stopPropagation()\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\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 return styles\n})\n</script>\n\n<template>\n <div ref=\"wrapperRef\" class=\"rangepicker-input-wrapper\">\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 <Rangepicker v-model=\"localValue\" v-model:is-open=\"isOpen\" :trigger-element=\"inputRef\" :min-date=\"options?.minDate\"\n :max-date=\"options?.maxDate\" :min-days=\"options?.minDays\" :max-days=\"options?.maxDays\"\n :value-of-months=\"options?.numberOfMonths || 2\" :value-of-columns=\"options?.numberOfColumns || 2\"\n :format=\"options?.format || 'DD MMM YYYY'\" :auto-apply=\"options?.autoApply !== false\"\n :show-tooltip=\"options?.showTooltip !== false\" :variant=\"variant\" :close=\"props.close\" :color-styles=\"colorStyles\"\n @update:model-value=\"handleUpdate\" />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n/* Rangepicker styles are imported globally */\n\n.rangepicker-input-wrapper {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n\ninput {\n cursor: pointer;\n}\n</style>\n","import { ref } from 'vue'\nimport './styles/rangepicker.scss'\nimport Rangepicker from './Rangepicker.vue'\nimport RangepickerInput from './RangepickerInput.vue'\nimport type { DateRange, RangepickerProps } 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, DateRange }\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","_normalizeStyle","_toDisplayString","_Fragment","_renderList","_normalizeClass"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|