blimpui 0.0.26 → 0.0.27

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.
@@ -6,7 +6,7 @@ type CalendarMonthGridProps = {
6
6
  disabled?: (date: Date) => boolean;
7
7
  isDateUnavailable?: (date: Date) => boolean;
8
8
  pickerOpen: boolean;
9
- onSelectDay: (day: Date) => void;
9
+ onSelectDay: (day: Date, outside: boolean) => void;
10
10
  };
11
11
  declare function CalendarMonthGrid({ displayMonth, firstDayOfWeekIndex, selectedDate, today, disabled, isDateUnavailable, pickerOpen, onSelectDay, }: CalendarMonthGridProps): import("react/jsx-runtime").JSX.Element;
12
12
  export { CalendarMonthGrid };
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-month-grid.d.ts","sourceRoot":"","sources":["../../../../../$/components/primitives/calendar/calendar-month-grid.tsx"],"names":[],"mappings":"AAOA,KAAK,sBAAsB,GAAG;IAC7B,YAAY,EAAE,IAAI,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EAC1B,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,WAAW,GACX,EAAE,sBAAsB,2CA8DxB;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"calendar-month-grid.d.ts","sourceRoot":"","sources":["../../../../../$/components/primitives/calendar/calendar-month-grid.tsx"],"names":[],"mappings":"AAOA,KAAK,sBAAsB,GAAG;IAC7B,YAAY,EAAE,IAAI,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,iBAAS,iBAAiB,CAAC,EAC1B,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,WAAW,GACX,EAAE,sBAAsB,2CA8DxB;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
@@ -9,21 +9,21 @@ function CalendarMonthGrid(_a) {
9
9
  var grid = React.useMemo(function () { return buildMonthGrid(displayMonth, firstDayOfWeekIndex); }, [displayMonth, firstDayOfWeekIndex]);
10
10
  return (_jsx(View, { className: "mt-2", children: grid.map(function (week, weekIndex) { return (_jsx(View, { className: "flex-row", children: week.map(function (day, dayIndex) {
11
11
  var outside = !isSameMonth(day, displayMonth);
12
- var dayDisabled = outside || Boolean(disabled === null || disabled === void 0 ? void 0 : disabled(day));
12
+ var dayDisabled = Boolean(disabled === null || disabled === void 0 ? void 0 : disabled(day));
13
13
  var unavailable = !outside && Boolean(isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(day));
14
14
  var selected = selectedDate
15
15
  ? isSameDay(day, selectedDate)
16
16
  : false;
17
17
  var isToday = isSameDay(day, today);
18
- return (_jsx(View, { className: "flex-1 items-center justify-center py-1", children: _jsx(Pressable, { disabled: dayDisabled || pickerOpen, onPress: function () {
18
+ return (_jsx(View, { className: "flex-1 items-center justify-center py-1", children: _jsx(Pressable, { disabled: dayDisabled || pickerOpen || unavailable, onPress: function () {
19
19
  if (unavailable)
20
20
  return;
21
- onSelectDay(day);
21
+ onSelectDay(day, outside);
22
22
  }, accessibilityState: {
23
23
  disabled: dayDisabled || unavailable,
24
24
  }, className: cn("h-8 w-8 items-center justify-center rounded-full", selected && "bg-primary", !selected &&
25
25
  isToday &&
26
- "border-primary bg-primary/10 border", dayDisabled && "opacity-40"), children: _jsx(Text, { className: cn("text-base", selected && "text-primary-foreground", !selected && unavailable && "text-destructive", !selected && outside && "text-muted-foreground", !selected && !outside && "text-foreground"), selectable: false, children: day.getDate() }) }) }, "day-".concat(dayIndex)));
26
+ "border-primary bg-primary/10 border", (outside || dayDisabled) && "opacity-40"), children: _jsx(Text, { className: cn("text-base", selected && "text-primary-foreground", !selected && unavailable && "text-destructive", !selected && outside && "text-muted-foreground", !selected && !outside && "text-foreground"), selectable: false, children: day.getDate() }) }) }, "day-".concat(dayIndex)));
27
27
  }) }, "week-".concat(weekIndex))); }) }));
28
28
  }
29
29
  export { CalendarMonthGrid };
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../$/components/primitives/calendar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAE5E,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,iBAAS,QAAQ,CAAC,EACjB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,iCAAiC,GACjC,EAAE,aAAa,2CAsHf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../$/components/primitives/calendar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAE5E,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,iBAAS,QAAQ,CAAC,EACjB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,iCAAiC,GACjC,EAAE,aAAa,2CAyHf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -36,13 +36,16 @@ function Calendar(_a) {
36
36
  }), displayMonth = _c.displayMonth, setDisplayMonth = _c.setDisplayMonth, locale = _c.locale, firstDayOfWeekIndex = _c.firstDayOfWeekIndex, safeVisibleMonths = _c.safeVisibleMonths, pageStep = _c.pageStep, monthsToRender = _c.monthsToRender, years = _c.years, months = _c.months, canGoPrev = _c.canGoPrev, canGoNext = _c.canGoNext, pickerOpen = _c.pickerOpen, setPickerOpen = _c.setPickerOpen, onMonthWheel = _c.onMonthWheel, onYearWheel = _c.onYearWheel;
37
37
  var headerMonthIndex = displayMonth.getMonth();
38
38
  var headerYear = displayMonth.getFullYear();
39
- var onSelectDay = React.useCallback(function (day) {
39
+ var onSelectDay = React.useCallback(function (day, outside) {
40
40
  if (disabled === null || disabled === void 0 ? void 0 : disabled(day))
41
41
  return;
42
42
  if (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(day))
43
43
  return;
44
+ if (outside) {
45
+ setDisplayMonth(startOfMonth(day));
46
+ }
44
47
  setSelectedDate(day);
45
- }, [disabled, isDateUnavailable, setSelectedDate]);
48
+ }, [disabled, isDateUnavailable, setDisplayMonth, setSelectedDate]);
46
49
  return (_jsxs(View, { className: cn("bg-card border-border rounded-xl border p-4 shadow-sm shadow-black/5", className), children: [_jsx(CalendarHeader, { displayMonth: displayMonth, pickerOpen: pickerOpen, onTogglePicker: function () { return setPickerOpen(function (o) { return !o; }); }, canGoPrev: canGoPrev, canGoNext: canGoNext, onPrev: function () { return setDisplayMonth(addMonths(displayMonth, -pageStep)); }, onNext: function () { return setDisplayMonth(addMonths(displayMonth, pageStep)); } }), _jsxs(View, { className: "mt-3 relative", children: [_jsx(View, { className: cn(safeVisibleMonths > 1 && "flex-row gap-4"), children: monthsToRender.map(function (m) { return (_jsxs(View, { className: cn(safeVisibleMonths > 1 && "flex-1"), children: [safeVisibleMonths > 1 && (_jsxs(Text, { variant: "small", className: "mb-1 text-center font-semibold", children: [MONTHS[m.getMonth()], " ", m.getFullYear()] })), _jsx(CalendarWeekdaysRow, { firstDayOfWeekIndex: firstDayOfWeekIndex, locale: locale }), _jsx(CalendarMonthGrid, { displayMonth: m, firstDayOfWeekIndex: firstDayOfWeekIndex, selectedDate: selectedDate, today: today, disabled: disabled, isDateUnavailable: isDateUnavailable, pickerOpen: pickerOpen, onSelectDay: onSelectDay })] }, "".concat(m.getFullYear(), "-").concat(m.getMonth()))); }) }), _jsx(MonthYearOverlay, { open: pickerOpen, months: months, years: years, monthIndex: headerMonthIndex, year: headerYear, onMonthChange: onMonthWheel, onYearChange: onYearWheel, monthYearPickerContainerClassName: monthYearPickerContainerClassName })] })] }));
47
50
  }
48
51
  export { Calendar };
@@ -1 +1 @@
1
- {"version":3,"file":"range-calendar.d.ts","sourceRoot":"","sources":["../../../../../$/components/primitives/range-calendar/range-calendar.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACX,cAAc,EACd,YAAY,EACZ,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,EAAE,CAAC,EAAE,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC,CAAC,EAAE,MAAM,CAAC;CAC3C,CAAC;AAkKF,iBAAS,aAAa,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,iCAAiC,GACjC,EAAE,kBAAkB,2CAyLpB;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"range-calendar.d.ts","sourceRoot":"","sources":["../../../../../$/components/primitives/range-calendar/range-calendar.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EACX,cAAc,EACd,YAAY,EACZ,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,EAAE,CAAC,EAAE,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC,CAAC,EAAE,MAAM,CAAC;CAC3C,CAAC;AA8JF,iBAAS,aAAa,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,iCAAiC,GACjC,EAAE,kBAAkB,2CAmMpB;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -37,32 +37,28 @@ function RangeCalendarMonthGrid(_a) {
37
37
  }, [selectedRange, previewRange]), from = _b.from, to = _b.to;
38
38
  return (_jsx(View, { className: "mt-2", children: grid.map(function (week, weekIndex) { return (_jsx(View, { className: "flex-row", children: week.map(function (day, dayIndex) {
39
39
  var outside = !isSameMonth(day, displayMonth);
40
- var dayDisabled = outside || Boolean(disabled === null || disabled === void 0 ? void 0 : disabled(day));
40
+ var dayDisabled = Boolean(disabled === null || disabled === void 0 ? void 0 : disabled(day));
41
41
  var unavailable = !outside && Boolean(isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(day));
42
42
  var isToday = !outside && isSameDay(day, today);
43
- var isStart = Boolean(from && !outside && isSameDay(day, from));
44
- var isEnd = Boolean(to && !outside && isSameDay(day, to));
43
+ var isStart = Boolean(from && isSameDay(day, from));
44
+ var isEnd = Boolean(to && isSameDay(day, to));
45
45
  var hasFullRange = Boolean(from && to);
46
- var inRange = hasFullRange &&
47
- !outside &&
48
- isInInclusiveRange(day, from, to);
46
+ var inRange = hasFullRange && isInInclusiveRange(day, from, to);
49
47
  var endpointSelected = isStart || isEnd;
50
48
  var prevDay = week[dayIndex - 1];
51
49
  var nextDay = week[dayIndex + 1];
52
50
  var prevInRange = inRange &&
53
51
  prevDay &&
54
- isSameMonth(prevDay, displayMonth) &&
55
52
  isInInclusiveRange(prevDay, from, to);
56
53
  var nextInRange = inRange &&
57
54
  nextDay &&
58
- isSameMonth(nextDay, displayMonth) &&
59
55
  isInInclusiveRange(nextDay, from, to);
60
56
  var segmentStart = inRange && !prevInRange;
61
57
  var segmentEnd = inRange && !nextInRange;
62
58
  return (_jsx(View, { className: "flex-1 items-center justify-center py-1", children: _jsxs(View, { className: "relative h-8 w-full items-center justify-center", children: [_jsx(View, { pointerEvents: "none", className: cn("absolute inset-y-0 left-0 right-0", inRange && "bg-primary/10", segmentStart && "rounded-l-full", segmentEnd && "rounded-r-full") }), _jsx(Pressable, { disabled: dayDisabled || pickerOpen, onPress: function () {
63
59
  if (unavailable)
64
60
  return;
65
- onSelectDay(day);
61
+ onSelectDay(day, outside);
66
62
  }, onHoverIn: function () {
67
63
  if (pickerOpen)
68
64
  return;
@@ -126,7 +122,7 @@ function RangeCalendar(_a) {
126
122
  }), displayMonth = _d.displayMonth, setDisplayMonth = _d.setDisplayMonth, locale = _d.locale, firstDayOfWeekIndex = _d.firstDayOfWeekIndex, safeVisibleMonths = _d.safeVisibleMonths, pageStep = _d.pageStep, monthsToRender = _d.monthsToRender, years = _d.years, months = _d.months, canGoPrev = _d.canGoPrev, canGoNext = _d.canGoNext, pickerOpen = _d.pickerOpen, setPickerOpen = _d.setPickerOpen, onMonthWheel = _d.onMonthWheel, onYearWheel = _d.onYearWheel;
127
123
  var headerMonthIndex = displayMonth.getMonth();
128
124
  var headerYear = displayMonth.getFullYear();
129
- var onSelectDay = React.useCallback(function (day) {
125
+ var onSelectDay = React.useCallback(function (day, outside) {
130
126
  if (disabled === null || disabled === void 0 ? void 0 : disabled(day))
131
127
  return;
132
128
  if (isDateUnavailable === null || isDateUnavailable === void 0 ? void 0 : isDateUnavailable(day))
@@ -136,6 +132,9 @@ function RangeCalendar(_a) {
136
132
  hoverClearTimeoutRef.current = null;
137
133
  }
138
134
  setHoveredDay(undefined);
135
+ if (outside) {
136
+ setDisplayMonth(startOfMonth(day));
137
+ }
139
138
  var nextDay = startOfDay(day);
140
139
  var current = normalizeRange(selectedRangeRaw);
141
140
  // Start a new range
@@ -150,7 +149,13 @@ function RangeCalendar(_a) {
150
149
  return;
151
150
  }
152
151
  setSelectedRangeRaw({ from: fromDay, to: nextDay });
153
- }, [disabled, isDateUnavailable, selectedRangeRaw, setSelectedRangeRaw]);
152
+ }, [
153
+ disabled,
154
+ isDateUnavailable,
155
+ selectedRangeRaw,
156
+ setDisplayMonth,
157
+ setSelectedRangeRaw,
158
+ ]);
154
159
  var onHoverDay = React.useCallback(function (day) {
155
160
  if (hoverClearTimeoutRef.current) {
156
161
  clearTimeout(hoverClearTimeoutRef.current);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blimpui",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",