@bitrise/bitkit-v2 0.3.480 → 0.3.481-beta.3055
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/components/BitkitCalendar/BitkitCalendar.d.ts +12 -0
- package/dist/components/BitkitCalendar/BitkitCalendar.js +7 -1
- package/dist/components/BitkitCalendar/BitkitCalendar.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarContent.d.ts +5 -1
- package/dist/components/BitkitCalendar/components/CalendarContent.js +60 -43
- package/dist/components/BitkitCalendar/components/CalendarContent.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarMonth.d.ts +4 -2
- package/dist/components/BitkitCalendar/components/CalendarMonth.js +15 -5
- package/dist/components/BitkitCalendar/components/CalendarMonth.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarMonthSelect.d.ts +2 -1
- package/dist/components/BitkitCalendar/components/CalendarMonthSelect.js +3 -2
- package/dist/components/BitkitCalendar/components/CalendarMonthSelect.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarNextTrigger.d.ts +3 -1
- package/dist/components/BitkitCalendar/components/CalendarNextTrigger.js +3 -3
- package/dist/components/BitkitCalendar/components/CalendarNextTrigger.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.d.ts +3 -1
- package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.js +3 -3
- package/dist/components/BitkitCalendar/components/CalendarPrevTrigger.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarSelect.d.ts +1 -0
- package/dist/components/BitkitCalendar/components/CalendarSelect.js +5 -3
- package/dist/components/BitkitCalendar/components/CalendarSelect.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarTrigger.js +1 -0
- package/dist/components/BitkitCalendar/components/CalendarTrigger.js.map +1 -1
- package/dist/components/BitkitCalendar/components/CalendarYearSelect.d.ts +2 -1
- package/dist/components/BitkitCalendar/components/CalendarYearSelect.js +3 -2
- package/dist/components/BitkitCalendar/components/CalendarYearSelect.js.map +1 -1
- package/dist/components/BitkitDatePicker/BitkitDatePicker.d.ts +2 -0
- package/dist/components/BitkitDatePicker/BitkitDatePicker.js +2 -1
- package/dist/components/BitkitDatePicker/BitkitDatePicker.js.map +1 -1
- package/dist/components/BitkitFilter/BitkitFilter.context.d.ts +65 -0
- package/dist/components/BitkitFilter/BitkitFilter.context.js +82 -0
- package/dist/components/BitkitFilter/BitkitFilter.context.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilter.d.ts +55 -0
- package/dist/components/BitkitFilter/BitkitFilter.js +247 -0
- package/dist/components/BitkitFilter/BitkitFilter.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilter.utils.d.ts +18 -0
- package/dist/components/BitkitFilter/BitkitFilter.utils.js +42 -0
- package/dist/components/BitkitFilter/BitkitFilter.utils.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilterAdd.d.ts +18 -0
- package/dist/components/BitkitFilter/BitkitFilterAdd.js +200 -0
- package/dist/components/BitkitFilter/BitkitFilterAdd.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilterDateRange.d.ts +26 -0
- package/dist/components/BitkitFilter/BitkitFilterDateRange.js +118 -0
- package/dist/components/BitkitFilter/BitkitFilterDateRange.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilterSearch.d.ts +23 -0
- package/dist/components/BitkitFilter/BitkitFilterSearch.js +72 -0
- package/dist/components/BitkitFilter/BitkitFilterSearch.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilterSelect.d.ts +61 -0
- package/dist/components/BitkitFilter/BitkitFilterSelect.js +149 -0
- package/dist/components/BitkitFilter/BitkitFilterSelect.js.map +1 -0
- package/dist/components/BitkitFilter/BitkitFilterSwitch.d.ts +28 -0
- package/dist/components/BitkitFilter/BitkitFilterSwitch.js +87 -0
- package/dist/components/BitkitFilter/BitkitFilterSwitch.js.map +1 -0
- package/dist/components/BitkitFilter/components/FilterChip.d.ts +23 -0
- package/dist/components/BitkitFilter/components/FilterChip.js +66 -0
- package/dist/components/BitkitFilter/components/FilterChip.js.map +1 -0
- package/dist/components/BitkitFilter/components/FilterField.d.ts +15 -0
- package/dist/components/BitkitFilter/components/FilterField.js +60 -0
- package/dist/components/BitkitFilter/components/FilterField.js.map +1 -0
- package/dist/components/BitkitFilter/components/FilterPanel.d.ts +42 -0
- package/dist/components/BitkitFilter/components/FilterPanel.js +126 -0
- package/dist/components/BitkitFilter/components/FilterPanel.js.map +1 -0
- package/dist/components/BitkitFilter/components/FilterSearchInput.d.ts +15 -0
- package/dist/components/BitkitFilter/components/FilterSearchInput.js +41 -0
- package/dist/components/BitkitFilter/components/FilterSearchInput.js.map +1 -0
- package/dist/components/BitkitFilter/components/FilterSelectForm.d.ts +45 -0
- package/dist/components/BitkitFilter/components/FilterSelectForm.js +324 -0
- package/dist/components/BitkitFilter/components/FilterSelectForm.js.map +1 -0
- package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.d.ts +4 -3
- package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.js +3 -2
- package/dist/components/BitkitLabelTooltip/BitkitLabelTooltip.js.map +1 -1
- package/dist/components/BitkitMarkdown/BitkitMarkdown.js +1 -1
- package/dist/components/BitkitNoteCard/BitkitNoteCard.js +1 -1
- package/dist/components/BitkitPageSidebar/BitkitPageSidebar.js +1 -1
- package/dist/components/index.d.ts +6 -0
- package/dist/main.js +8 -7
- package/dist/theme/slot-recipes/DatePicker.recipe.d.ts +15 -0
- package/dist/theme/slot-recipes/DatePicker.recipe.js +72 -22
- package/dist/theme/slot-recipes/DatePicker.recipe.js.map +1 -1
- package/dist/theme/slot-recipes/DatePickerSelect.recipe.d.ts +85 -0
- package/dist/theme/slot-recipes/DatePickerSelect.recipe.js +35 -10
- package/dist/theme/slot-recipes/DatePickerSelect.recipe.js.map +1 -1
- package/dist/theme/slot-recipes/Filter.recipe.d.ts +37 -0
- package/dist/theme/slot-recipes/Filter.recipe.js +649 -0
- package/dist/theme/slot-recipes/Filter.recipe.js.map +1 -0
- package/dist/theme/slot-recipes/Listbox.recipe.d.ts +22 -0
- package/dist/theme/slot-recipes/Listbox.recipe.js +92 -0
- package/dist/theme/slot-recipes/Listbox.recipe.js.map +1 -0
- package/dist/theme/slot-recipes/Menu.recipe.js +6 -1
- package/dist/theme/slot-recipes/Menu.recipe.js.map +1 -1
- package/dist/theme/slot-recipes/Tag.recipe.d.ts +1 -1
- package/dist/theme/slot-recipes/index.d.ts +158 -1
- package/dist/theme/slot-recipes/index.js +4 -0
- package/dist/theme/slot-recipes/index.js.map +1 -1
- package/dist/utilities/BitkitPortalContext.js +3 -2
- package/dist/utilities/BitkitPortalContext.js.map +1 -1
- package/docs/v1-to-v2-migration-guide.md +48 -1
- package/package.json +1 -1
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
export interface BitkitCalendarProps {
|
|
3
3
|
children?: ReactNode;
|
|
4
|
+
/** Text for a day's tooltip, e.g. why it can't be picked. Return `undefined` for no tooltip. */
|
|
5
|
+
dayTooltip?: (date: Date) => string | undefined;
|
|
4
6
|
defaultValue?: Date | Date[] | null;
|
|
5
7
|
device?: 'desktop' | 'mobile';
|
|
8
|
+
/**
|
|
9
|
+
* Content under the month grid, inside the calendar card — e.g. Clear/Apply buttons that commit
|
|
10
|
+
* the selection. With a footer, picking a range no longer closes the popover; closing is up to it.
|
|
11
|
+
*/
|
|
12
|
+
footer?: ReactNode;
|
|
6
13
|
layout?: '1-month' | '2-month';
|
|
7
14
|
max?: Date;
|
|
8
15
|
min?: Date;
|
|
16
|
+
/** Called when the popover opens or closes. Pair it with `open` to control it. */
|
|
17
|
+
onOpenChange?: (open: boolean) => void;
|
|
9
18
|
onValueChange?: (value: Date[] | null) => void;
|
|
19
|
+
/** Controls whether the popover is open. Only applies with a trigger (`children`). */
|
|
20
|
+
open?: boolean;
|
|
10
21
|
selectionMode?: 'day' | 'range';
|
|
22
|
+
/** Shows the days of the neighbouring months. Defaults to `true` on the `1-month` layout, `false` on `2-month`. */
|
|
11
23
|
showOutsideDays?: boolean;
|
|
12
24
|
showSelectedDate?: boolean;
|
|
13
25
|
value?: Date[] | null;
|
|
@@ -7,12 +7,15 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
import { Portal } from "@chakra-ui/react/portal";
|
|
8
8
|
//#region lib/components/BitkitCalendar/BitkitCalendar.tsx
|
|
9
9
|
var BitkitCalendar = forwardRef((props, ref) => {
|
|
10
|
-
const { children, defaultValue, device = "desktop", layout, selectionMode = "range", min, max, onValueChange, showOutsideDays: showOutsideDaysProp
|
|
10
|
+
const { children, dayTooltip, defaultValue, device = "desktop", footer, layout = "1-month", selectionMode = "range", min, max, onOpenChange, onValueChange, open, showOutsideDays: showOutsideDaysProp, showSelectedDate = false, value: inputValue, ...rest } = props;
|
|
11
11
|
const minCalendarDate = useMemo(() => min ? dateToCalendarDate(min) : void 0, [min]);
|
|
12
12
|
const maxCalendarDate = useMemo(() => max ? dateToCalendarDate(max) : void 0, [max]);
|
|
13
13
|
const value = inputValue?.map(dateToCalendarDate);
|
|
14
14
|
const inline = !children;
|
|
15
15
|
const content = /* @__PURE__ */ jsx(CalendarContent, {
|
|
16
|
+
dayTooltip,
|
|
17
|
+
device,
|
|
18
|
+
footer,
|
|
16
19
|
layout,
|
|
17
20
|
max: maxCalendarDate,
|
|
18
21
|
min: minCalendarDate,
|
|
@@ -21,10 +24,13 @@ var BitkitCalendar = forwardRef((props, ref) => {
|
|
|
21
24
|
});
|
|
22
25
|
const showOutsideDays = showOutsideDaysProp ?? layout === "1-month";
|
|
23
26
|
return /* @__PURE__ */ jsxs(DatePicker.Root, {
|
|
27
|
+
closeOnSelect: !footer,
|
|
24
28
|
defaultValue: defaultValue instanceof Array ? defaultValue.map(dateToCalendarDate) : defaultValue ? [dateToCalendarDate(defaultValue)] : void 0,
|
|
25
29
|
device,
|
|
26
30
|
layout,
|
|
27
31
|
numOfMonths: layout === "2-month" ? 2 : 1,
|
|
32
|
+
onOpenChange: onOpenChange ? (details) => onOpenChange(details.open) : void 0,
|
|
33
|
+
open,
|
|
28
34
|
ref,
|
|
29
35
|
inline,
|
|
30
36
|
min: minCalendarDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BitkitCalendar.js","names":[],"sources":["../../../lib/components/BitkitCalendar/BitkitCalendar.tsx"],"sourcesContent":["import { Portal } from '@chakra-ui/react/portal';\nimport { forwardRef, type ReactNode, useMemo } from 'react';\n\nimport { DatePicker } from '../../atoms/DatePicker/DatePicker';\nimport { calendarDateToDate, dateToCalendarDate } from './Calendar.utils';\nimport CalendarContent from './components/CalendarContent';\nimport CalendarTrigger from './components/CalendarTrigger';\n\nexport interface BitkitCalendarProps {\n children?: ReactNode;\n defaultValue?: Date | Date[] | null;\n device?: 'desktop' | 'mobile';\n layout?: '1-month' | '2-month';\n max?: Date;\n min?: Date;\n onValueChange?: (value: Date[] | null) => void;\n selectionMode?: 'day' | 'range';\n showOutsideDays?: boolean;\n showSelectedDate?: boolean;\n value?: Date[] | null;\n}\n\nconst BitkitCalendar = forwardRef<HTMLDivElement, BitkitCalendarProps>((props, ref) => {\n const {\n children,\n defaultValue,\n device = 'desktop',\n layout,\n selectionMode = 'range',\n min,\n max,\n onValueChange,\n showOutsideDays: showOutsideDaysProp
|
|
1
|
+
{"version":3,"file":"BitkitCalendar.js","names":[],"sources":["../../../lib/components/BitkitCalendar/BitkitCalendar.tsx"],"sourcesContent":["import { Portal } from '@chakra-ui/react/portal';\nimport { forwardRef, type ReactNode, useMemo } from 'react';\n\nimport { DatePicker } from '../../atoms/DatePicker/DatePicker';\nimport { calendarDateToDate, dateToCalendarDate } from './Calendar.utils';\nimport CalendarContent from './components/CalendarContent';\nimport CalendarTrigger from './components/CalendarTrigger';\n\nexport interface BitkitCalendarProps {\n children?: ReactNode;\n /** Text for a day's tooltip, e.g. why it can't be picked. Return `undefined` for no tooltip. */\n dayTooltip?: (date: Date) => string | undefined;\n defaultValue?: Date | Date[] | null;\n device?: 'desktop' | 'mobile';\n /**\n * Content under the month grid, inside the calendar card — e.g. Clear/Apply buttons that commit\n * the selection. With a footer, picking a range no longer closes the popover; closing is up to it.\n */\n footer?: ReactNode;\n layout?: '1-month' | '2-month';\n max?: Date;\n min?: Date;\n /** Called when the popover opens or closes. Pair it with `open` to control it. */\n onOpenChange?: (open: boolean) => void;\n onValueChange?: (value: Date[] | null) => void;\n /** Controls whether the popover is open. Only applies with a trigger (`children`). */\n open?: boolean;\n selectionMode?: 'day' | 'range';\n /** Shows the days of the neighbouring months. Defaults to `true` on the `1-month` layout, `false` on `2-month`. */\n showOutsideDays?: boolean;\n showSelectedDate?: boolean;\n value?: Date[] | null;\n}\n\nconst BitkitCalendar = forwardRef<HTMLDivElement, BitkitCalendarProps>((props, ref) => {\n const {\n children,\n dayTooltip,\n defaultValue,\n device = 'desktop',\n footer,\n layout = '1-month',\n selectionMode = 'range',\n min,\n max,\n onOpenChange,\n onValueChange,\n open,\n showOutsideDays: showOutsideDaysProp,\n showSelectedDate = false,\n value: inputValue,\n ...rest\n } = props;\n\n const minCalendarDate = useMemo(() => (min ? dateToCalendarDate(min) : undefined), [min]);\n const maxCalendarDate = useMemo(() => (max ? dateToCalendarDate(max) : undefined), [max]);\n\n const value = inputValue?.map(dateToCalendarDate);\n\n const inline = !children;\n\n const content = (\n <CalendarContent\n dayTooltip={dayTooltip}\n device={device}\n footer={footer}\n layout={layout}\n max={maxCalendarDate}\n min={minCalendarDate}\n selectionMode={selectionMode}\n showSelectedDate={showSelectedDate}\n />\n );\n\n const showOutsideDays = showOutsideDaysProp ?? layout === '1-month';\n\n return (\n <DatePicker.Root\n closeOnSelect={!footer}\n defaultValue={\n defaultValue instanceof Array\n ? defaultValue.map(dateToCalendarDate)\n : defaultValue\n ? [dateToCalendarDate(defaultValue)]\n : undefined\n }\n device={device}\n layout={layout}\n numOfMonths={layout === '2-month' ? 2 : 1}\n onOpenChange={onOpenChange ? (details) => onOpenChange(details.open) : undefined}\n open={open}\n ref={ref}\n inline={inline}\n min={minCalendarDate}\n max={maxCalendarDate}\n onValueChange={\n onValueChange\n ? (details) => {\n const dates = details.value?.map(calendarDateToDate) || null;\n onValueChange(dates);\n }\n : undefined\n }\n selectionMode={selectionMode === 'day' ? 'single' : 'range'}\n showOutsideDays={showOutsideDays}\n startOfWeek={1}\n value={value}\n {...rest}\n >\n {!inline && (\n <DatePicker.Control>\n <CalendarTrigger>{children}</CalendarTrigger>\n </DatePicker.Control>\n )}\n {inline ? (\n content\n ) : (\n <Portal>\n <DatePicker.Positioner>{content}</DatePicker.Positioner>\n </Portal>\n )}\n </DatePicker.Root>\n );\n});\n\nBitkitCalendar.displayName = 'BitkitCalendar';\n\nexport default BitkitCalendar;\n"],"mappings":";;;;;;;;AAkCA,IAAM,iBAAiB,YAAiD,OAAO,QAAQ;CACrF,MAAM,EACJ,UACA,YACA,cACA,SAAS,WACT,QACA,SAAS,WACT,gBAAgB,SAChB,KACA,KACA,cACA,eACA,MACA,iBAAiB,qBACjB,mBAAmB,OACnB,OAAO,YACP,GAAG,SACD;CAEJ,MAAM,kBAAkB,cAAe,MAAM,mBAAmB,GAAG,IAAI,KAAA,GAAY,CAAC,GAAG,CAAC;CACxF,MAAM,kBAAkB,cAAe,MAAM,mBAAmB,GAAG,IAAI,KAAA,GAAY,CAAC,GAAG,CAAC;CAExF,MAAM,QAAQ,YAAY,IAAI,kBAAkB;CAEhD,MAAM,SAAS,CAAC;CAEhB,MAAM,UACJ,oBAAC,iBAAD;EACc;EACJ;EACA;EACA;EACR,KAAK;EACL,KAAK;EACU;EACG;CACnB,CAAA;CAGH,MAAM,kBAAkB,uBAAuB,WAAW;CAE1D,OACE,qBAAC,WAAW,MAAZ;EACE,eAAe,CAAC;EAChB,cACE,wBAAwB,QACpB,aAAa,IAAI,kBAAkB,IACnC,eACE,CAAC,mBAAmB,YAAY,CAAC,IACjC,KAAA;EAEA;EACA;EACR,aAAa,WAAW,YAAY,IAAI;EACxC,cAAc,gBAAgB,YAAY,aAAa,QAAQ,IAAI,IAAI,KAAA;EACjE;EACD;EACG;EACR,KAAK;EACL,KAAK;EACL,eACE,iBACK,YAAY;GACX,MAAM,QAAQ,QAAQ,OAAO,IAAI,kBAAkB,KAAK;GACxD,cAAc,KAAK;EACrB,IACA,KAAA;EAEN,eAAe,kBAAkB,QAAQ,WAAW;EACnC;EACjB,aAAa;EACN;EACP,GAAI;EA9BN,UAAA,CAgCG,CAAC,UACA,oBAAC,WAAW,SAAZ,EAAA,UACE,oBAAC,iBAAD,EAAkB,SAA0B,CAAA,EAC1B,CAAA,GAErB,SACC,UAEA,oBAAC,QAAD,EAAA,UACE,oBAAC,WAAW,YAAZ,EAAA,UAAwB,QAA+B,CAAA,EACjD,CAAA,CAEK;;AAErB,CAAC;AAED,eAAe,cAAc"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { CalendarDate } from '@internationalized/date';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
2
3
|
export interface CalendarContentProps {
|
|
4
|
+
dayTooltip?: (date: Date) => string | undefined;
|
|
5
|
+
device?: 'desktop' | 'mobile';
|
|
6
|
+
footer?: ReactNode;
|
|
3
7
|
layout?: '1-month' | '2-month';
|
|
4
8
|
max?: CalendarDate;
|
|
5
9
|
min?: CalendarDate;
|
|
@@ -10,5 +14,5 @@ export interface CalendarContentProps {
|
|
|
10
14
|
* The styled popover body shared by BitkitCalendar and BitkitDatePicker.
|
|
11
15
|
* Renders the view controls, month grids and footer inside `DatePicker.Content`.
|
|
12
16
|
*/
|
|
13
|
-
declare const CalendarContent: ({ layout, max, min, selectionMode, showSelectedDate }: CalendarContentProps) => import('react').JSX.Element;
|
|
17
|
+
declare const CalendarContent: ({ dayTooltip, device, footer, layout, max, min, selectionMode, showSelectedDate, }: CalendarContentProps) => import('react').JSX.Element;
|
|
14
18
|
export default CalendarContent;
|
|
@@ -13,7 +13,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
* The styled popover body shared by BitkitCalendar and BitkitDatePicker.
|
|
14
14
|
* Renders the view controls, month grids and footer inside `DatePicker.Content`.
|
|
15
15
|
*/
|
|
16
|
-
var CalendarContent = ({ layout, max, min, selectionMode, showSelectedDate }) => {
|
|
16
|
+
var CalendarContent = ({ dayTooltip, device, footer, layout, max, min, selectionMode, showSelectedDate }) => {
|
|
17
17
|
const context = useDatePickerContext();
|
|
18
18
|
const prevModeRef = useRef(selectionMode);
|
|
19
19
|
useEffect(() => {
|
|
@@ -22,53 +22,70 @@ var CalendarContent = ({ layout, max, min, selectionMode, showSelectedDate }) =>
|
|
|
22
22
|
prevModeRef.current = selectionMode;
|
|
23
23
|
}
|
|
24
24
|
}, [selectionMode]);
|
|
25
|
-
return /* @__PURE__ */ jsxs(DatePicker.Content, { children: [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
25
|
+
return /* @__PURE__ */ jsxs(DatePicker.Content, { children: [
|
|
26
|
+
/* @__PURE__ */ jsxs(DatePicker.View, {
|
|
27
|
+
view: "day",
|
|
28
|
+
children: [/* @__PURE__ */ jsxs(DatePicker.ViewControl, { children: [/* @__PURE__ */ jsxs(Box, {
|
|
29
|
+
display: "flex",
|
|
30
|
+
alignItems: "center",
|
|
31
|
+
gap: "12",
|
|
32
|
+
minWidth: "0",
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx(CalendarPrevTrigger, { device }),
|
|
35
|
+
/* @__PURE__ */ jsxs(Box, {
|
|
36
|
+
display: "flex",
|
|
37
|
+
alignItems: "center",
|
|
38
|
+
minWidth: "0",
|
|
39
|
+
children: [/* @__PURE__ */ jsx(CalendarMonthSelect, {
|
|
40
|
+
device,
|
|
41
|
+
offset: 0,
|
|
42
|
+
layout,
|
|
43
|
+
max,
|
|
44
|
+
min
|
|
45
|
+
}), /* @__PURE__ */ jsx(CalendarYearSelect, {
|
|
46
|
+
device,
|
|
47
|
+
monthOffset: 0,
|
|
48
|
+
max,
|
|
49
|
+
min
|
|
50
|
+
})]
|
|
51
|
+
}),
|
|
52
|
+
layout === "1-month" && /* @__PURE__ */ jsx(CalendarNextTrigger, { device })
|
|
53
|
+
]
|
|
54
|
+
}), layout === "2-month" && /* @__PURE__ */ jsxs(Box, {
|
|
55
|
+
display: "flex",
|
|
56
|
+
alignItems: "center",
|
|
57
|
+
gap: "12",
|
|
58
|
+
minWidth: "0",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsx(CalendarMonthSelect, {
|
|
61
|
+
device,
|
|
62
|
+
offset: 1,
|
|
38
63
|
layout,
|
|
39
64
|
max,
|
|
40
65
|
min
|
|
41
|
-
}),
|
|
42
|
-
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx(CalendarYearSelect, {
|
|
68
|
+
device,
|
|
69
|
+
monthOffset: 1,
|
|
43
70
|
max,
|
|
44
71
|
min
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
]
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
max,
|
|
63
|
-
min
|
|
64
|
-
}),
|
|
65
|
-
/* @__PURE__ */ jsx(CalendarNextTrigger, {})
|
|
66
|
-
]
|
|
67
|
-
})] }), /* @__PURE__ */ jsxs(DatePicker.Months, { children: [/* @__PURE__ */ jsx(CalendarMonth, { monthsIndex: 0 }), layout === "2-month" && /* @__PURE__ */ jsx(CalendarMonth, { monthsIndex: 1 })] })]
|
|
68
|
-
}), /* @__PURE__ */ jsx(CalendarFooter, {
|
|
69
|
-
selectionMode,
|
|
70
|
-
showSelectedDate
|
|
71
|
-
})] });
|
|
72
|
+
}),
|
|
73
|
+
/* @__PURE__ */ jsx(CalendarNextTrigger, { device })
|
|
74
|
+
]
|
|
75
|
+
})] }), /* @__PURE__ */ jsxs(DatePicker.Months, { children: [/* @__PURE__ */ jsx(CalendarMonth, {
|
|
76
|
+
dayTooltip,
|
|
77
|
+
monthsIndex: 0
|
|
78
|
+
}), layout === "2-month" && /* @__PURE__ */ jsx(CalendarMonth, {
|
|
79
|
+
dayTooltip,
|
|
80
|
+
monthsIndex: 1
|
|
81
|
+
})] })]
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ jsx(CalendarFooter, {
|
|
84
|
+
selectionMode,
|
|
85
|
+
showSelectedDate
|
|
86
|
+
}),
|
|
87
|
+
footer
|
|
88
|
+
] });
|
|
72
89
|
};
|
|
73
90
|
//#endregion
|
|
74
91
|
export { CalendarContent as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarContent.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarContent.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { type CalendarDate } from '@internationalized/date';\nimport { useEffect, useRef } from 'react';\n\nimport { DatePicker, useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport CalendarFooter from './CalendarFooter';\nimport CalendarMonth from './CalendarMonth';\nimport CalendarMonthSelect from './CalendarMonthSelect';\nimport CalendarNextTrigger from './CalendarNextTrigger';\nimport CalendarPrevTrigger from './CalendarPrevTrigger';\nimport CalendarYearSelect from './CalendarYearSelect';\n\nexport interface CalendarContentProps {\n layout?: '1-month' | '2-month';\n max?: CalendarDate;\n min?: CalendarDate;\n selectionMode?: 'day' | 'range';\n showSelectedDate?: boolean;\n}\n\n/**\n * The styled popover body shared by BitkitCalendar and BitkitDatePicker.\n * Renders the view controls, month grids and footer inside `DatePicker.Content`.\n */\nconst CalendarContent = ({
|
|
1
|
+
{"version":3,"file":"CalendarContent.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarContent.tsx"],"sourcesContent":["import { Box } from '@chakra-ui/react/box';\nimport { type CalendarDate } from '@internationalized/date';\nimport { type ReactNode, useEffect, useRef } from 'react';\n\nimport { DatePicker, useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport CalendarFooter from './CalendarFooter';\nimport CalendarMonth from './CalendarMonth';\nimport CalendarMonthSelect from './CalendarMonthSelect';\nimport CalendarNextTrigger from './CalendarNextTrigger';\nimport CalendarPrevTrigger from './CalendarPrevTrigger';\nimport CalendarYearSelect from './CalendarYearSelect';\n\nexport interface CalendarContentProps {\n dayTooltip?: (date: Date) => string | undefined;\n device?: 'desktop' | 'mobile';\n footer?: ReactNode;\n layout?: '1-month' | '2-month';\n max?: CalendarDate;\n min?: CalendarDate;\n selectionMode?: 'day' | 'range';\n showSelectedDate?: boolean;\n}\n\n/**\n * The styled popover body shared by BitkitCalendar and BitkitDatePicker.\n * Renders the view controls, month grids and footer inside `DatePicker.Content`.\n */\nconst CalendarContent = ({\n dayTooltip,\n device,\n footer,\n layout,\n max,\n min,\n selectionMode,\n showSelectedDate,\n}: CalendarContentProps) => {\n const context = useDatePickerContext();\n const prevModeRef = useRef(selectionMode);\n\n useEffect(() => {\n if (prevModeRef.current !== selectionMode) {\n context.clearValue();\n prevModeRef.current = selectionMode;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectionMode]);\n\n return (\n <DatePicker.Content>\n <DatePicker.View view=\"day\">\n <DatePicker.ViewControl>\n <Box display=\"flex\" alignItems=\"center\" gap=\"12\" minWidth=\"0\">\n <CalendarPrevTrigger device={device} />\n\n <Box display=\"flex\" alignItems=\"center\" minWidth=\"0\">\n <CalendarMonthSelect device={device} offset={0} layout={layout} max={max} min={min} />\n <CalendarYearSelect device={device} monthOffset={0} max={max} min={min} />\n </Box>\n {layout === '1-month' && <CalendarNextTrigger device={device} />}\n </Box>\n {layout === '2-month' && (\n <Box display=\"flex\" alignItems=\"center\" gap=\"12\" minWidth=\"0\">\n <CalendarMonthSelect device={device} offset={1} layout={layout} max={max} min={min} />\n <CalendarYearSelect device={device} monthOffset={1} max={max} min={min} />\n <CalendarNextTrigger device={device} />\n </Box>\n )}\n </DatePicker.ViewControl>\n <DatePicker.Months>\n <CalendarMonth dayTooltip={dayTooltip} monthsIndex={0} />\n {layout === '2-month' && <CalendarMonth dayTooltip={dayTooltip} monthsIndex={1} />}\n </DatePicker.Months>\n </DatePicker.View>\n <CalendarFooter selectionMode={selectionMode} showSelectedDate={showSelectedDate} />\n {footer}\n </DatePicker.Content>\n );\n};\n\nexport default CalendarContent;\n"],"mappings":";;;;;;;;;;;;;;;AA2BA,IAAM,mBAAmB,EACvB,YACA,QACA,QACA,QACA,KACA,KACA,eACA,uBAC0B;CAC1B,MAAM,UAAU,qBAAqB;CACrC,MAAM,cAAc,OAAO,aAAa;CAExC,gBAAgB;EACd,IAAI,YAAY,YAAY,eAAe;GACzC,QAAQ,WAAW;GACnB,YAAY,UAAU;EACxB;CAEF,GAAG,CAAC,aAAa,CAAC;CAElB,OACE,qBAAC,WAAW,SAAZ,EAAA,UAAA;EACE,qBAAC,WAAW,MAAZ;GAAiB,MAAK;GAAtB,UAAA,CACE,qBAAC,WAAW,aAAZ,EAAA,UAAA,CACE,qBAAC,KAAD;IAAK,SAAQ;IAAO,YAAW;IAAS,KAAI;IAAK,UAAS;IAA1D,UAAA;KACE,oBAAC,qBAAD,EAA6B,OAAS,CAAA;KAEtC,qBAAC,KAAD;MAAK,SAAQ;MAAO,YAAW;MAAS,UAAS;MAAjD,UAAA,CACE,oBAAC,qBAAD;OAA6B;OAAQ,QAAQ;OAAW;OAAa;OAAU;MAAM,CAAA,GACrF,oBAAC,oBAAD;OAA4B;OAAQ,aAAa;OAAQ;OAAU;MAAM,CAAA,CACtE;;KACJ,WAAW,aAAa,oBAAC,qBAAD,EAA6B,OAAS,CAAA;IAC5D;GACJ,CAAA,GAAA,WAAW,aACV,qBAAC,KAAD;IAAK,SAAQ;IAAO,YAAW;IAAS,KAAI;IAAK,UAAS;IAA1D,UAAA;KACE,oBAAC,qBAAD;MAA6B;MAAQ,QAAQ;MAAW;MAAa;MAAU;KAAM,CAAA;KACrF,oBAAC,oBAAD;MAA4B;MAAQ,aAAa;MAAQ;MAAU;KAAM,CAAA;KACzE,oBAAC,qBAAD,EAA6B,OAAS,CAAA;IACnC;GAEe,CAAA,CAAA,EAAA,CAAA,GACxB,qBAAC,WAAW,QAAZ,EAAA,UAAA,CACE,oBAAC,eAAD;IAA2B;IAAY,aAAa;GAAI,CAAA,GACvD,WAAW,aAAa,oBAAC,eAAD;IAA2B;IAAY,aAAa;GAAI,CAAA,CAChE,EAAA,CAAA,CACJ;;EACjB,oBAAC,gBAAD;GAA+B;GAAiC;EAAmB,CAAA;EAClF;CACiB,EAAA,CAAA;AAExB"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface CalendarMonthProps {
|
|
2
|
+
dayTooltip?: (date: Date) => string | undefined;
|
|
2
3
|
monthsIndex: number;
|
|
3
|
-
}
|
|
4
|
+
}
|
|
5
|
+
declare const CalendarMonth: ({ dayTooltip, monthsIndex }: CalendarMonthProps) => import('react').JSX.Element;
|
|
4
6
|
export default CalendarMonth;
|
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
import { DatePicker, DatePickerContext } from "../../../atoms/DatePicker/DatePicker.js";
|
|
2
|
+
import { calendarDateToDate } from "../Calendar.utils.js";
|
|
3
|
+
import BitkitTooltip from "../../BitkitTooltip/BitkitTooltip.js";
|
|
2
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
5
|
import { Text } from "@chakra-ui/react/text";
|
|
4
6
|
//#region lib/components/BitkitCalendar/components/CalendarMonth.tsx
|
|
5
|
-
var CalendarMonth = ({ monthsIndex }) => {
|
|
7
|
+
var CalendarMonth = ({ dayTooltip, monthsIndex }) => {
|
|
6
8
|
return /* @__PURE__ */ jsx(DatePickerContext, { children: (datePicker) => {
|
|
7
9
|
const offset = datePicker.getOffset({ months: monthsIndex });
|
|
8
10
|
return /* @__PURE__ */ jsxs(DatePicker.Table, { children: [/* @__PURE__ */ jsx(DatePicker.TableHead, { children: /* @__PURE__ */ jsx(DatePicker.TableRow, { children: datePicker.weekDays.map((weekDay, id) => /* @__PURE__ */ jsx(DatePicker.TableHeader, { children: weekDay.short }, id)) }) }), /* @__PURE__ */ jsx(DatePicker.TableBody, { children: offset.weeks.map((week, id) => /* @__PURE__ */ jsx(DatePicker.TableRow, { children: week.map((day, id) => {
|
|
11
|
+
const tooltip = dayTooltip?.(calendarDateToDate(day));
|
|
12
|
+
const label = /* @__PURE__ */ jsx(Text, {
|
|
13
|
+
as: "span",
|
|
14
|
+
children: day.day
|
|
15
|
+
});
|
|
9
16
|
return /* @__PURE__ */ jsx(DatePicker.TableCell, {
|
|
10
17
|
value: day,
|
|
11
18
|
visibleRange: offset.visibleRange,
|
|
12
|
-
children: /* @__PURE__ */ jsx(DatePicker.TableCellTrigger, {
|
|
13
|
-
|
|
14
|
-
children:
|
|
15
|
-
|
|
19
|
+
children: /* @__PURE__ */ jsx(DatePicker.TableCellTrigger, {
|
|
20
|
+
...tooltip ? { "aria-description": tooltip } : {},
|
|
21
|
+
children: tooltip ? /* @__PURE__ */ jsx(BitkitTooltip, {
|
|
22
|
+
text: tooltip,
|
|
23
|
+
children: label
|
|
24
|
+
}) : label
|
|
25
|
+
})
|
|
16
26
|
}, id);
|
|
17
27
|
}) }, id)) })] });
|
|
18
28
|
} });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarMonth.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarMonth.tsx"],"sourcesContent":["import { Text } from '@chakra-ui/react/text';\n\nimport { DatePicker, DatePickerContext } from '../../../atoms/DatePicker/DatePicker';\n\nconst CalendarMonth = ({ monthsIndex }:
|
|
1
|
+
{"version":3,"file":"CalendarMonth.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarMonth.tsx"],"sourcesContent":["import { Text } from '@chakra-ui/react/text';\n\nimport { DatePicker, DatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport BitkitTooltip from '../../BitkitTooltip/BitkitTooltip';\nimport { calendarDateToDate } from '../Calendar.utils';\n\ninterface CalendarMonthProps {\n dayTooltip?: (date: Date) => string | undefined;\n monthsIndex: number;\n}\n\nconst CalendarMonth = ({ dayTooltip, monthsIndex }: CalendarMonthProps) => {\n return (\n <DatePickerContext>\n {(datePicker) => {\n const offset = datePicker.getOffset({ months: monthsIndex });\n return (\n <DatePicker.Table>\n <DatePicker.TableHead>\n <DatePicker.TableRow>\n {datePicker.weekDays.map((weekDay, id) => (\n <DatePicker.TableHeader key={id}>{weekDay.short}</DatePicker.TableHeader>\n ))}\n </DatePicker.TableRow>\n </DatePicker.TableHead>\n <DatePicker.TableBody>\n {offset.weeks.map((week, id) => (\n <DatePicker.TableRow key={id}>\n {week.map((day, id) => {\n const tooltip = dayTooltip?.(calendarDateToDate(day));\n const label = <Text as=\"span\">{day.day}</Text>;\n // The tooltip sits on the day's inner box, not the cell: as the cell's trigger it would\n // replace the id and data attributes Zag finds the focused day by. An unavailable day never\n // takes focus, so the text is also the cell's description, next to Zag's own label.\n return (\n <DatePicker.TableCell key={id} value={day} visibleRange={offset.visibleRange}>\n <DatePicker.TableCellTrigger {...(tooltip ? { 'aria-description': tooltip } : {})}>\n {tooltip ? <BitkitTooltip text={tooltip}>{label}</BitkitTooltip> : label}\n </DatePicker.TableCellTrigger>\n </DatePicker.TableCell>\n );\n })}\n </DatePicker.TableRow>\n ))}\n </DatePicker.TableBody>\n </DatePicker.Table>\n );\n }}\n </DatePickerContext>\n );\n};\n\nexport default CalendarMonth;\n"],"mappings":";;;;;;AAWA,IAAM,iBAAiB,EAAE,YAAY,kBAAsC;CACzE,OACE,oBAAC,mBAAD,EAAA,WACI,eAAe;EACf,MAAM,SAAS,WAAW,UAAU,EAAE,QAAQ,YAAY,CAAC;EAC3D,OACE,qBAAC,WAAW,OAAZ,EAAA,UAAA,CACE,oBAAC,WAAW,WAAZ,EAAA,UACE,oBAAC,WAAW,UAAZ,EAAA,UACG,WAAW,SAAS,KAAK,SAAS,OACjC,oBAAC,WAAW,aAAZ,EAAA,UAAkC,QAAQ,MAA8B,GAA3C,EAA2C,CACzE,EACkB,CAAA,EACD,CAAA,GACtB,oBAAC,WAAW,WAAZ,EAAA,UACG,OAAO,MAAM,KAAK,MAAM,OACvB,oBAAC,WAAW,UAAZ,EAAA,UACG,KAAK,KAAK,KAAK,OAAO;GACrB,MAAM,UAAU,aAAa,mBAAmB,GAAG,CAAC;GACpD,MAAM,QAAQ,oBAAC,MAAD;IAAM,IAAG;IAAQ,UAAA,IAAI;GAAU,CAAA;GAI7C,OACE,oBAAC,WAAW,WAAZ;IAA+B,OAAO;IAAK,cAAc,OAAO;IAC9D,UAAA,oBAAC,WAAW,kBAAZ;KAA6B,GAAK,UAAU,EAAE,oBAAoB,QAAQ,IAAI,CAAC;KAC5E,UAAA,UAAU,oBAAC,eAAD;MAAe,MAAM;MAAU,UAAA;KAAqB,CAAA,IAAI;IACxC,CAAA;GACT,GAJK,EAIL;EAE1B,CAAC,EACkB,GAfK,EAeL,CACtB,EACmB,CAAA,CACN,EAAA,CAAA;CAEtB,EACiB,CAAA;AAEvB"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CalendarDate } from '@internationalized/date';
|
|
2
2
|
type CalendarMonthSelectProps = {
|
|
3
|
+
device?: 'desktop' | 'mobile';
|
|
3
4
|
offset: number;
|
|
4
5
|
layout?: '1-month' | '2-month';
|
|
5
6
|
min?: CalendarDate;
|
|
6
7
|
max?: CalendarDate;
|
|
7
8
|
};
|
|
8
|
-
declare const CalendarMonthSelect: ({ offset, layout, min, max }: CalendarMonthSelectProps) => import('react').JSX.Element;
|
|
9
|
+
declare const CalendarMonthSelect: ({ device, offset, layout, min, max }: CalendarMonthSelectProps) => import('react').JSX.Element;
|
|
9
10
|
export default CalendarMonthSelect;
|
|
@@ -54,7 +54,7 @@ var months = [
|
|
|
54
54
|
value: "12"
|
|
55
55
|
}
|
|
56
56
|
];
|
|
57
|
-
var CalendarMonthSelect = ({ offset, layout, min, max }) => {
|
|
57
|
+
var CalendarMonthSelect = ({ device, offset, layout, min, max }) => {
|
|
58
58
|
const datePicker = useDatePickerContext();
|
|
59
59
|
const currentMonthDate = datePicker.getOffset({ months: offset }).visibleRange.start;
|
|
60
60
|
const availableMonths = months.filter((month) => {
|
|
@@ -80,7 +80,8 @@ var CalendarMonthSelect = ({ offset, layout, min, max }) => {
|
|
|
80
80
|
maxHeight: rem(312),
|
|
81
81
|
width: rem(148)
|
|
82
82
|
},
|
|
83
|
-
controlProps: { width: rem(114) },
|
|
83
|
+
controlProps: { width: rem(device === "mobile" ? 132 : 114) },
|
|
84
|
+
device,
|
|
84
85
|
items: availableMonths,
|
|
85
86
|
onValueChange: handleMonthChange,
|
|
86
87
|
value: [currentMonthDate.month.toString()]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarMonthSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarMonthSelect.tsx"],"sourcesContent":["import { CalendarDate } from '@internationalized/date';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { rem } from '../../../theme/themeUtils';\nimport CalendarSelect from './CalendarSelect';\n\nconst months = [\n { label: 'January', value: '1' },\n { label: 'February', value: '2' },\n { label: 'March', value: '3' },\n { label: 'April', value: '4' },\n { label: 'May', value: '5' },\n { label: 'June', value: '6' },\n { label: 'July', value: '7' },\n { label: 'August', value: '8' },\n { label: 'September', value: '9' },\n { label: 'October', value: '10' },\n { label: 'November', value: '11' },\n { label: 'December', value: '12' },\n];\n\ntype CalendarMonthSelectProps = {\n offset: number;\n layout?: '1-month' | '2-month';\n min?: CalendarDate;\n max?: CalendarDate;\n};\n\nconst CalendarMonthSelect = ({ offset, layout, min, max }: CalendarMonthSelectProps) => {\n const datePicker = useDatePickerContext();\n\n const currentMonthDate = datePicker.getOffset({ months: offset }).visibleRange.start;\n\n const availableMonths = months.filter((month) => {\n if (!min && !max) return true;\n\n const monthNumber = parseInt(month.value, 10);\n const year = currentMonthDate.year;\n\n const firstDayOfMonth = new CalendarDate(year, monthNumber, 1);\n const lastDayOfMonth = firstDayOfMonth.add({ months: 1 }).subtract({ days: 1 });\n\n const isBeforeMin = min && lastDayOfMonth.compare(min) < 0;\n const isAfterMax = max && firstDayOfMonth.compare(max) > 0;\n\n return !isBeforeMin && !isAfterMax;\n });\n\n const handleMonthChange = (details: { value: string[] }) => {\n const selectedMonth = parseInt(details.value[0], 10);\n if (layout === '1-month') {\n datePicker.focusMonth(selectedMonth);\n } else {\n // first needs to be focused to some distant date otherwise the newly selected month won't always be set properly\n // due to \"smart\" focus behaviour of the calendar in 2-month layout\n datePicker.setFocusedValue(new CalendarDate(1990, 1, 1));\n datePicker.setFocusedValue(currentMonthDate.set({ month: selectedMonth }).subtract({ months: offset }));\n }\n };\n\n return (\n <CalendarSelect\n contentProps={{\n maxHeight: rem(312),\n width: rem(148),\n }}\n controlProps={{\n width: rem(114),\n }}\n items={availableMonths}\n onValueChange={handleMonthChange}\n value={[currentMonthDate.month.toString()]}\n />\n );\n};\n\nexport default CalendarMonthSelect;\n"],"mappings":";;;;;;AAMA,IAAM,SAAS;CACb;EAAE,OAAO;EAAW,OAAO;CAAI;CAC/B;EAAE,OAAO;EAAY,OAAO;CAAI;CAChC;EAAE,OAAO;EAAS,OAAO;CAAI;CAC7B;EAAE,OAAO;EAAS,OAAO;CAAI;CAC7B;EAAE,OAAO;EAAO,OAAO;CAAI;CAC3B;EAAE,OAAO;EAAQ,OAAO;CAAI;CAC5B;EAAE,OAAO;EAAQ,OAAO;CAAI;CAC5B;EAAE,OAAO;EAAU,OAAO;CAAI;CAC9B;EAAE,OAAO;EAAa,OAAO;CAAI;CACjC;EAAE,OAAO;EAAW,OAAO;CAAK;CAChC;EAAE,OAAO;EAAY,OAAO;CAAK;CACjC;EAAE,OAAO;EAAY,OAAO;CAAK;AACnC;
|
|
1
|
+
{"version":3,"file":"CalendarMonthSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarMonthSelect.tsx"],"sourcesContent":["import { CalendarDate } from '@internationalized/date';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { rem } from '../../../theme/themeUtils';\nimport CalendarSelect from './CalendarSelect';\n\nconst months = [\n { label: 'January', value: '1' },\n { label: 'February', value: '2' },\n { label: 'March', value: '3' },\n { label: 'April', value: '4' },\n { label: 'May', value: '5' },\n { label: 'June', value: '6' },\n { label: 'July', value: '7' },\n { label: 'August', value: '8' },\n { label: 'September', value: '9' },\n { label: 'October', value: '10' },\n { label: 'November', value: '11' },\n { label: 'December', value: '12' },\n];\n\ntype CalendarMonthSelectProps = {\n device?: 'desktop' | 'mobile';\n offset: number;\n layout?: '1-month' | '2-month';\n min?: CalendarDate;\n max?: CalendarDate;\n};\n\nconst CalendarMonthSelect = ({ device, offset, layout, min, max }: CalendarMonthSelectProps) => {\n const datePicker = useDatePickerContext();\n\n const currentMonthDate = datePicker.getOffset({ months: offset }).visibleRange.start;\n\n const availableMonths = months.filter((month) => {\n if (!min && !max) return true;\n\n const monthNumber = parseInt(month.value, 10);\n const year = currentMonthDate.year;\n\n const firstDayOfMonth = new CalendarDate(year, monthNumber, 1);\n const lastDayOfMonth = firstDayOfMonth.add({ months: 1 }).subtract({ days: 1 });\n\n const isBeforeMin = min && lastDayOfMonth.compare(min) < 0;\n const isAfterMax = max && firstDayOfMonth.compare(max) > 0;\n\n return !isBeforeMin && !isAfterMax;\n });\n\n const handleMonthChange = (details: { value: string[] }) => {\n const selectedMonth = parseInt(details.value[0], 10);\n if (layout === '1-month') {\n datePicker.focusMonth(selectedMonth);\n } else {\n // first needs to be focused to some distant date otherwise the newly selected month won't always be set properly\n // due to \"smart\" focus behaviour of the calendar in 2-month layout\n datePicker.setFocusedValue(new CalendarDate(1990, 1, 1));\n datePicker.setFocusedValue(currentMonthDate.set({ month: selectedMonth }).subtract({ months: offset }));\n }\n };\n\n return (\n <CalendarSelect\n contentProps={{\n maxHeight: rem(312),\n width: rem(148),\n }}\n controlProps={{\n width: rem(device === 'mobile' ? 132 : 114),\n }}\n device={device}\n items={availableMonths}\n onValueChange={handleMonthChange}\n value={[currentMonthDate.month.toString()]}\n />\n );\n};\n\nexport default CalendarMonthSelect;\n"],"mappings":";;;;;;AAMA,IAAM,SAAS;CACb;EAAE,OAAO;EAAW,OAAO;CAAI;CAC/B;EAAE,OAAO;EAAY,OAAO;CAAI;CAChC;EAAE,OAAO;EAAS,OAAO;CAAI;CAC7B;EAAE,OAAO;EAAS,OAAO;CAAI;CAC7B;EAAE,OAAO;EAAO,OAAO;CAAI;CAC3B;EAAE,OAAO;EAAQ,OAAO;CAAI;CAC5B;EAAE,OAAO;EAAQ,OAAO;CAAI;CAC5B;EAAE,OAAO;EAAU,OAAO;CAAI;CAC9B;EAAE,OAAO;EAAa,OAAO;CAAI;CACjC;EAAE,OAAO;EAAW,OAAO;CAAK;CAChC;EAAE,OAAO;EAAY,OAAO;CAAK;CACjC;EAAE,OAAO;EAAY,OAAO;CAAK;AACnC;AAUA,IAAM,uBAAuB,EAAE,QAAQ,QAAQ,QAAQ,KAAK,UAAoC;CAC9F,MAAM,aAAa,qBAAqB;CAExC,MAAM,mBAAmB,WAAW,UAAU,EAAE,QAAQ,OAAO,CAAC,CAAC,CAAC,aAAa;CAE/E,MAAM,kBAAkB,OAAO,QAAQ,UAAU;EAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO;EAEzB,MAAM,cAAc,SAAS,MAAM,OAAO,EAAE;EAC5C,MAAM,OAAO,iBAAiB;EAE9B,MAAM,kBAAkB,IAAI,aAAa,MAAM,aAAa,CAAC;EAC7D,MAAM,iBAAiB,gBAAgB,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;EAE9E,MAAM,cAAc,OAAO,eAAe,QAAQ,GAAG,IAAI;EACzD,MAAM,aAAa,OAAO,gBAAgB,QAAQ,GAAG,IAAI;EAEzD,OAAO,CAAC,eAAe,CAAC;CAC1B,CAAC;CAED,MAAM,qBAAqB,YAAiC;EAC1D,MAAM,gBAAgB,SAAS,QAAQ,MAAM,IAAI,EAAE;EACnD,IAAI,WAAW,WACb,WAAW,WAAW,aAAa;OAC9B;GAGL,WAAW,gBAAgB,IAAI,aAAa,MAAM,GAAG,CAAC,CAAC;GACvD,WAAW,gBAAgB,iBAAiB,IAAI,EAAE,OAAO,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,OAAO,CAAC,CAAC;EACxG;CACF;CAEA,OACE,oBAAC,gBAAD;EACE,cAAc;GACZ,WAAW,IAAI,GAAG;GAClB,OAAO,IAAI,GAAG;EAChB;EACA,cAAc,EACZ,OAAO,IAAI,WAAW,WAAW,MAAM,GAAG,EAC5C;EACQ;EACR,OAAO;EACP,eAAe;EACf,OAAO,CAAC,iBAAiB,MAAM,SAAS,CAAC;CAC1C,CAAA;AAEL"}
|
|
@@ -3,14 +3,14 @@ import { useDatePickerContext } from "../../../atoms/DatePicker/DatePicker.js";
|
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconButton } from "@chakra-ui/react";
|
|
5
5
|
//#region lib/components/BitkitCalendar/components/CalendarNextTrigger.tsx
|
|
6
|
-
var CalendarNextTrigger = () => {
|
|
6
|
+
var CalendarNextTrigger = ({ device }) => {
|
|
7
7
|
const datePicker = useDatePickerContext();
|
|
8
8
|
return /* @__PURE__ */ jsx(IconButton, {
|
|
9
9
|
...datePicker.getNextTriggerProps(),
|
|
10
10
|
color: "button/secondary/text",
|
|
11
|
-
size: "sm",
|
|
11
|
+
size: device === "mobile" ? "md" : "sm",
|
|
12
12
|
variant: "tertiary",
|
|
13
|
-
children: /* @__PURE__ */ jsx(IconChevronRight, { size: "16" })
|
|
13
|
+
children: /* @__PURE__ */ jsx(IconChevronRight, { size: device === "mobile" ? "24" : "16" })
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarNextTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarNextTrigger.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { IconButton } from '@chakra-ui/react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { IconChevronRight } from '../../../main';\n\nconst CalendarNextTrigger = () => {\n const datePicker = useDatePickerContext();\n\n return (\n <IconButton
|
|
1
|
+
{"version":3,"file":"CalendarNextTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarNextTrigger.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { IconButton } from '@chakra-ui/react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { IconChevronRight } from '../../../main';\n\nconst CalendarNextTrigger = ({ device }: { device?: 'desktop' | 'mobile' }) => {\n const datePicker = useDatePickerContext();\n\n return (\n <IconButton\n {...datePicker.getNextTriggerProps()}\n color=\"button/secondary/text\"\n size={device === 'mobile' ? 'md' : 'sm'}\n variant=\"tertiary\"\n >\n <IconChevronRight size={device === 'mobile' ? '24' : '16'} />\n </IconButton>\n );\n};\n\nexport default CalendarNextTrigger;\n"],"mappings":";;;;;AAMA,IAAM,uBAAuB,EAAE,aAAgD;CAC7E,MAAM,aAAa,qBAAqB;CAExC,OACE,oBAAC,YAAD;EACE,GAAI,WAAW,oBAAoB;EACnC,OAAM;EACN,MAAM,WAAW,WAAW,OAAO;EACnC,SAAQ;EAER,UAAA,oBAAC,kBAAD,EAAkB,MAAM,WAAW,WAAW,OAAO,KAAO,CAAA;CAClD,CAAA;AAEhB"}
|
|
@@ -3,14 +3,14 @@ import { useDatePickerContext } from "../../../atoms/DatePicker/DatePicker.js";
|
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconButton } from "@chakra-ui/react";
|
|
5
5
|
//#region lib/components/BitkitCalendar/components/CalendarPrevTrigger.tsx
|
|
6
|
-
var CalendarPrevTrigger = () => {
|
|
6
|
+
var CalendarPrevTrigger = ({ device }) => {
|
|
7
7
|
const datePicker = useDatePickerContext();
|
|
8
8
|
return /* @__PURE__ */ jsx(IconButton, {
|
|
9
9
|
...datePicker.getPrevTriggerProps(),
|
|
10
10
|
color: "button/secondary/text",
|
|
11
|
-
size: "sm",
|
|
11
|
+
size: device === "mobile" ? "md" : "sm",
|
|
12
12
|
variant: "tertiary",
|
|
13
|
-
children: /* @__PURE__ */ jsx(IconChevronLeft, { size: "16" })
|
|
13
|
+
children: /* @__PURE__ */ jsx(IconChevronLeft, { size: device === "mobile" ? "24" : "16" })
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarPrevTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarPrevTrigger.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { IconButton } from '@chakra-ui/react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { IconChevronLeft } from '../../../main';\n\nconst CalendarPrevTrigger = () => {\n const datePicker = useDatePickerContext();\n\n return (\n <IconButton
|
|
1
|
+
{"version":3,"file":"CalendarPrevTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarPrevTrigger.tsx"],"sourcesContent":["// eslint-disable-next-line no-restricted-imports\nimport { IconButton } from '@chakra-ui/react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { IconChevronLeft } from '../../../main';\n\nconst CalendarPrevTrigger = ({ device }: { device?: 'desktop' | 'mobile' }) => {\n const datePicker = useDatePickerContext();\n\n return (\n <IconButton\n {...datePicker.getPrevTriggerProps()}\n color=\"button/secondary/text\"\n size={device === 'mobile' ? 'md' : 'sm'}\n variant=\"tertiary\"\n >\n <IconChevronLeft size={device === 'mobile' ? '24' : '16'} />\n </IconButton>\n );\n};\n\nexport default CalendarPrevTrigger;\n"],"mappings":";;;;;AAMA,IAAM,uBAAuB,EAAE,aAAgD;CAC7E,MAAM,aAAa,qBAAqB;CAExC,OACE,oBAAC,YAAD;EACE,GAAI,WAAW,oBAAoB;EACnC,OAAM;EACN,MAAM,WAAW,WAAW,OAAO;EACnC,SAAQ;EAER,UAAA,oBAAC,iBAAD,EAAiB,MAAM,WAAW,WAAW,OAAO,KAAO,CAAA;CACjD,CAAA;AAEhB"}
|
|
@@ -7,25 +7,27 @@ import { createListCollection } from "@chakra-ui/react/collection";
|
|
|
7
7
|
import { Select } from "@chakra-ui/react/select";
|
|
8
8
|
//#region lib/components/BitkitCalendar/components/CalendarSelect.tsx
|
|
9
9
|
var CalendarSelect = (props) => {
|
|
10
|
-
const { contentProps, controlProps, defaultValue, items, onValueChange, value } = props;
|
|
10
|
+
const { contentProps, controlProps, defaultValue, device, items, onValueChange, value } = props;
|
|
11
11
|
const collection = createListCollection({
|
|
12
12
|
items,
|
|
13
13
|
groupBy: (item) => item.group || ""
|
|
14
14
|
});
|
|
15
|
-
const styles = useSlotRecipe({ key: "datePickerSelect" })();
|
|
15
|
+
const styles = useSlotRecipe({ key: "datePickerSelect" })({ size: device === "mobile" ? "lg" : "md" });
|
|
16
16
|
return /* @__PURE__ */ jsxs(Select.Root, {
|
|
17
17
|
collection,
|
|
18
18
|
defaultValue,
|
|
19
|
+
minWidth: "0",
|
|
19
20
|
onValueChange,
|
|
20
21
|
size: "md",
|
|
21
22
|
value,
|
|
22
23
|
children: [/* @__PURE__ */ jsxs(Select.Control, {
|
|
24
|
+
maxWidth: "100%",
|
|
23
25
|
...controlProps,
|
|
24
26
|
children: [
|
|
25
27
|
/* @__PURE__ */ jsx(Select.HiddenSelect, {}),
|
|
26
28
|
/* @__PURE__ */ jsx(Select.Trigger, {
|
|
27
29
|
css: styles.trigger,
|
|
28
|
-
children: /* @__PURE__ */ jsx(Select.ValueText, {})
|
|
30
|
+
children: /* @__PURE__ */ jsx(Select.ValueText, { css: styles.valueText })
|
|
29
31
|
}),
|
|
30
32
|
/* @__PURE__ */ jsx(Select.IndicatorGroup, {
|
|
31
33
|
css: styles.indicatorGroup,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarSelect.tsx"],"sourcesContent":["import { createListCollection } from '@chakra-ui/react/collection';\nimport { Portal } from '@chakra-ui/react/portal';\nimport {\n Select,\n type SelectContentProps,\n type SelectControlProps,\n type SelectRootProps,\n} from '@chakra-ui/react/select';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport AssetSelectChevron from '../../../utilities/AssetSelectChevron.tsx';\nimport BitkitSelectMenu from '../../BitkitSelectMenu/BitkitSelectMenu.tsx';\n\nexport interface BitkitSelectProps {\n controlProps?: SelectControlProps;\n contentProps?: SelectContentProps;\n defaultValue?: string[];\n items: Array<{ group?: string; value: string; label: string }>;\n onValueChange?: SelectRootProps['onValueChange'];\n value?: string[];\n}\n\nconst CalendarSelect = (props: BitkitSelectProps) => {\n const { contentProps, controlProps, defaultValue, items, onValueChange, value } = props;\n\n const collection = createListCollection({\n items,\n groupBy: (item) => item.group || '',\n });\n\n const recipe = useSlotRecipe({ key: 'datePickerSelect' });\n const styles = recipe();\n\n return (\n <Select.Root\n collection={collection}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n size=\"md\"\n value={value}\n >\n <Select.Control {...controlProps}>\n <Select.HiddenSelect />\n <Select.Trigger css={styles.trigger}>\n <Select.ValueText />\n </Select.Trigger>\n <Select.IndicatorGroup css={styles.indicatorGroup}>\n <Select.Indicator asChild css={styles.indicator}>\n <AssetSelectChevron width=\"20\" height=\"20\" />\n </Select.Indicator>\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <BitkitSelectMenu collection={collection} contentProps={contentProps} size=\"md\" />\n </Select.Positioner>\n </Portal>\n </Select.Root>\n );\n};\n\nCalendarSelect.displayName = 'CalendarSelect';\n\nexport default CalendarSelect;\n"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"CalendarSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarSelect.tsx"],"sourcesContent":["import { createListCollection } from '@chakra-ui/react/collection';\nimport { Portal } from '@chakra-ui/react/portal';\nimport {\n Select,\n type SelectContentProps,\n type SelectControlProps,\n type SelectRootProps,\n} from '@chakra-ui/react/select';\nimport { useSlotRecipe } from '@chakra-ui/react/styled-system';\n\nimport AssetSelectChevron from '../../../utilities/AssetSelectChevron.tsx';\nimport BitkitSelectMenu from '../../BitkitSelectMenu/BitkitSelectMenu.tsx';\n\nexport interface BitkitSelectProps {\n controlProps?: SelectControlProps;\n contentProps?: SelectContentProps;\n defaultValue?: string[];\n device?: 'desktop' | 'mobile';\n items: Array<{ group?: string; value: string; label: string }>;\n onValueChange?: SelectRootProps['onValueChange'];\n value?: string[];\n}\n\nconst CalendarSelect = (props: BitkitSelectProps) => {\n const { contentProps, controlProps, defaultValue, device, items, onValueChange, value } = props;\n\n const collection = createListCollection({\n items,\n groupBy: (item) => item.group || '',\n });\n\n const recipe = useSlotRecipe({ key: 'datePickerSelect' });\n const styles = recipe({ size: device === 'mobile' ? 'lg' : 'md' });\n\n return (\n <Select.Root\n collection={collection}\n defaultValue={defaultValue}\n // On a narrow screen the month and year selects give way rather than push past the arrows.\n minWidth=\"0\"\n onValueChange={onValueChange}\n size=\"md\"\n value={value}\n >\n <Select.Control maxWidth=\"100%\" {...controlProps}>\n <Select.HiddenSelect />\n <Select.Trigger css={styles.trigger}>\n <Select.ValueText css={styles.valueText} />\n </Select.Trigger>\n <Select.IndicatorGroup css={styles.indicatorGroup}>\n <Select.Indicator asChild css={styles.indicator}>\n <AssetSelectChevron width=\"20\" height=\"20\" />\n </Select.Indicator>\n </Select.IndicatorGroup>\n </Select.Control>\n <Portal>\n <Select.Positioner>\n <BitkitSelectMenu collection={collection} contentProps={contentProps} size=\"md\" />\n </Select.Positioner>\n </Portal>\n </Select.Root>\n );\n};\n\nCalendarSelect.displayName = 'CalendarSelect';\n\nexport default CalendarSelect;\n"],"mappings":";;;;;;;;AAuBA,IAAM,kBAAkB,UAA6B;CACnD,MAAM,EAAE,cAAc,cAAc,cAAc,QAAQ,OAAO,eAAe,UAAU;CAE1F,MAAM,aAAa,qBAAqB;EACtC;EACA,UAAU,SAAS,KAAK,SAAS;CACnC,CAAC;CAGD,MAAM,SADS,cAAc,EAAE,KAAK,mBAAmB,CACxC,CAAA,CAAO,EAAE,MAAM,WAAW,WAAW,OAAO,KAAK,CAAC;CAEjE,OACE,qBAAC,OAAO,MAAR;EACc;EACE;EAEd,UAAS;EACM;EACf,MAAK;EACE;EAPT,UAAA,CASE,qBAAC,OAAO,SAAR;GAAgB,UAAS;GAAO,GAAI;GAApC,UAAA;IACE,oBAAC,OAAO,cAAR,CAAsB,CAAA;IACtB,oBAAC,OAAO,SAAR;KAAgB,KAAK,OAAO;KAC1B,UAAA,oBAAC,OAAO,WAAR,EAAkB,KAAK,OAAO,UAAY,CAAA;IAC5B,CAAA;IAChB,oBAAC,OAAO,gBAAR;KAAuB,KAAK,OAAO;KACjC,UAAA,oBAAC,OAAO,WAAR;MAAkB,SAAA;MAAQ,KAAK,OAAO;MACpC,UAAA,oBAAC,oBAAD;OAAoB,OAAM;OAAK,QAAO;MAAM,CAAA;KAC5B,CAAA;IACG,CAAA;GACT;EAChB,CAAA,GAAA,oBAAC,QAAD,EAAA,UACE,oBAAC,OAAO,YAAR,EAAA,UACE,oBAAC,kBAAD;GAA8B;GAA0B;GAAc,MAAK;EAAM,CAAA,EAChE,CAAA,EACb,CAAA,CACG;;AAEjB;AAEA,eAAe,cAAc"}
|
|
@@ -8,6 +8,7 @@ var CalendarTrigger = ({ children }) => {
|
|
|
8
8
|
const mergedProps = {
|
|
9
9
|
...childProps,
|
|
10
10
|
...triggerProps,
|
|
11
|
+
"aria-label": childProps["aria-label"] ?? triggerProps["aria-label"],
|
|
11
12
|
onClick: (event) => {
|
|
12
13
|
triggerProps.onClick?.(event);
|
|
13
14
|
childProps.onClick?.(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarTrigger.tsx"],"sourcesContent":["import { cloneElement, isValidElement, type ReactNode } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\n\nconst CalendarTrigger = ({ children }: { children: ReactNode }) => {\n const context = useDatePickerContext();\n const triggerProps = context.getTriggerProps();\n\n if (!isValidElement(children)) {\n throw new Error('CalendarTrigger children must be a valid React element');\n }\n\n const childProps = children.props as Record<string, any>;\n const mergedProps = {\n ...childProps,\n ...triggerProps,\n onClick: (event: any) => {\n triggerProps.onClick?.(event);\n childProps.onClick?.(event);\n },\n };\n\n return cloneElement(children, mergedProps as any);\n};\n\nexport default CalendarTrigger;\n"],"mappings":";;;AAIA,IAAM,mBAAmB,EAAE,eAAwC;CAEjE,MAAM,eADU,qBACK,CAAA,CAAQ,gBAAgB;CAE7C,IAAI,CAAC,eAAe,QAAQ,GAC1B,MAAM,IAAI,MAAM,wDAAwD;CAG1E,MAAM,aAAa,SAAS;CAC5B,MAAM,cAAc;EAClB,GAAG;EACH,GAAG;
|
|
1
|
+
{"version":3,"file":"CalendarTrigger.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarTrigger.tsx"],"sourcesContent":["import { cloneElement, isValidElement, type ReactNode } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\n\nconst CalendarTrigger = ({ children }: { children: ReactNode }) => {\n const context = useDatePickerContext();\n const triggerProps = context.getTriggerProps();\n\n if (!isValidElement(children)) {\n throw new Error('CalendarTrigger children must be a valid React element');\n }\n\n const childProps = children.props as Record<string, any>;\n const mergedProps = {\n ...childProps,\n ...triggerProps,\n // Zag's \"Open calendar\" only stands in for a trigger that has no name of its own.\n 'aria-label': childProps['aria-label'] ?? triggerProps['aria-label'],\n onClick: (event: any) => {\n triggerProps.onClick?.(event);\n childProps.onClick?.(event);\n },\n };\n\n return cloneElement(children, mergedProps as any);\n};\n\nexport default CalendarTrigger;\n"],"mappings":";;;AAIA,IAAM,mBAAmB,EAAE,eAAwC;CAEjE,MAAM,eADU,qBACK,CAAA,CAAQ,gBAAgB;CAE7C,IAAI,CAAC,eAAe,QAAQ,GAC1B,MAAM,IAAI,MAAM,wDAAwD;CAG1E,MAAM,aAAa,SAAS;CAC5B,MAAM,cAAc;EAClB,GAAG;EACH,GAAG;EAEH,cAAc,WAAW,iBAAiB,aAAa;EACvD,UAAU,UAAe;GACvB,aAAa,UAAU,KAAK;GAC5B,WAAW,UAAU,KAAK;EAC5B;CACF;CAEA,OAAO,aAAa,UAAU,WAAkB;AAClD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CalendarDate } from '@internationalized/date';
|
|
2
2
|
type CalendarYearSelectProps = {
|
|
3
|
+
device?: 'desktop' | 'mobile';
|
|
3
4
|
min?: CalendarDate;
|
|
4
5
|
max?: CalendarDate;
|
|
5
6
|
monthOffset: number;
|
|
@@ -8,5 +9,5 @@ type CalendarYearSelectProps = {
|
|
|
8
9
|
to: number;
|
|
9
10
|
};
|
|
10
11
|
};
|
|
11
|
-
declare const CalendarYearSelect: ({ monthOffset, max, min, yearsRange }: CalendarYearSelectProps) => import('react').JSX.Element;
|
|
12
|
+
declare const CalendarYearSelect: ({ device, monthOffset, max, min, yearsRange }: CalendarYearSelectProps) => import('react').JSX.Element;
|
|
12
13
|
export default CalendarYearSelect;
|
|
@@ -4,7 +4,7 @@ import CalendarSelect from "./CalendarSelect.js";
|
|
|
4
4
|
import { useMemo } from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region lib/components/BitkitCalendar/components/CalendarYearSelect.tsx
|
|
7
|
-
var CalendarYearSelect = ({ monthOffset, max, min, yearsRange }) => {
|
|
7
|
+
var CalendarYearSelect = ({ device, monthOffset, max, min, yearsRange }) => {
|
|
8
8
|
const datePicker = useDatePickerContext();
|
|
9
9
|
const firstDayOfMonth = datePicker.getOffset({ months: monthOffset }).visibleRange.start;
|
|
10
10
|
const handleYearChange = (details) => {
|
|
@@ -44,7 +44,8 @@ var CalendarYearSelect = ({ monthOffset, max, min, yearsRange }) => {
|
|
|
44
44
|
maxHeight: rem(312),
|
|
45
45
|
width: rem(108)
|
|
46
46
|
},
|
|
47
|
-
controlProps: { width: rem(77) },
|
|
47
|
+
controlProps: { width: rem(device === "mobile" ? 92 : 77) },
|
|
48
|
+
device,
|
|
48
49
|
defaultValue: [(/* @__PURE__ */ new Date()).getFullYear().toString()],
|
|
49
50
|
items: years,
|
|
50
51
|
onValueChange: handleYearChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarYearSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarYearSelect.tsx"],"sourcesContent":["import { type CalendarDate } from '@internationalized/date';\nimport { useMemo } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { rem } from '../../../theme/themeUtils';\nimport CalendarSelect from './CalendarSelect';\n\ntype CalendarYearSelectProps = {\n min?: CalendarDate;\n max?: CalendarDate;\n monthOffset: number;\n yearsRange?: {\n from: number;\n to: number;\n };\n};\n\nconst CalendarYearSelect = ({ monthOffset, max, min, yearsRange }: CalendarYearSelectProps) => {\n const datePicker = useDatePickerContext();\n\n const firstDayOfMonth = datePicker.getOffset({ months: monthOffset }).visibleRange.start;\n\n const handleYearChange = (details: { value: string[] }) => {\n const selectedYear = parseInt(details.value[0], 10);\n\n datePicker.focusYear(selectedYear);\n };\n\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n const years = useMemo(() => {\n const currentYear = new Date().getFullYear();\n\n let yearOptions = [];\n\n if (yearsRange?.from) {\n for (let year = yearsRange.from; year <= yearsRange.to; year++) {\n yearOptions.push({\n label: year.toString(),\n value: year.toString(),\n });\n }\n } else {\n yearOptions = [currentYear - 1, currentYear, currentYear + 1].map((year) => ({\n label: year.toString(),\n value: year.toString(),\n }));\n }\n\n if (min || max) {\n return yearOptions.filter((year) => {\n const yearNumber = parseInt(year.value, 10);\n\n const isBeforeMin = min && yearNumber < min.year;\n const isAfterMax = max && yearNumber > max.year;\n\n return !isBeforeMin && !isAfterMax;\n });\n }\n\n return yearOptions;\n }, [yearsRange?.from, yearsRange?.to, min, max]);\n\n return (\n <CalendarSelect\n contentProps={{\n maxHeight: rem(312),\n width: rem(108),\n }}\n controlProps={{\n width: rem(77),\n }}\n defaultValue={[new Date().getFullYear().toString()]}\n items={years}\n onValueChange={handleYearChange}\n value={[firstDayOfMonth.year.toString()]}\n />\n );\n};\n\nexport default CalendarYearSelect;\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"CalendarYearSelect.js","names":[],"sources":["../../../../lib/components/BitkitCalendar/components/CalendarYearSelect.tsx"],"sourcesContent":["import { type CalendarDate } from '@internationalized/date';\nimport { useMemo } from 'react';\n\nimport { useDatePickerContext } from '../../../atoms/DatePicker/DatePicker';\nimport { rem } from '../../../theme/themeUtils';\nimport CalendarSelect from './CalendarSelect';\n\ntype CalendarYearSelectProps = {\n device?: 'desktop' | 'mobile';\n min?: CalendarDate;\n max?: CalendarDate;\n monthOffset: number;\n yearsRange?: {\n from: number;\n to: number;\n };\n};\n\nconst CalendarYearSelect = ({ device, monthOffset, max, min, yearsRange }: CalendarYearSelectProps) => {\n const datePicker = useDatePickerContext();\n\n const firstDayOfMonth = datePicker.getOffset({ months: monthOffset }).visibleRange.start;\n\n const handleYearChange = (details: { value: string[] }) => {\n const selectedYear = parseInt(details.value[0], 10);\n\n datePicker.focusYear(selectedYear);\n };\n\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n const years = useMemo(() => {\n const currentYear = new Date().getFullYear();\n\n let yearOptions = [];\n\n if (yearsRange?.from) {\n for (let year = yearsRange.from; year <= yearsRange.to; year++) {\n yearOptions.push({\n label: year.toString(),\n value: year.toString(),\n });\n }\n } else {\n yearOptions = [currentYear - 1, currentYear, currentYear + 1].map((year) => ({\n label: year.toString(),\n value: year.toString(),\n }));\n }\n\n if (min || max) {\n return yearOptions.filter((year) => {\n const yearNumber = parseInt(year.value, 10);\n\n const isBeforeMin = min && yearNumber < min.year;\n const isAfterMax = max && yearNumber > max.year;\n\n return !isBeforeMin && !isAfterMax;\n });\n }\n\n return yearOptions;\n }, [yearsRange?.from, yearsRange?.to, min, max]);\n\n return (\n <CalendarSelect\n contentProps={{\n maxHeight: rem(312),\n width: rem(108),\n }}\n controlProps={{\n width: rem(device === 'mobile' ? 92 : 77),\n }}\n device={device}\n defaultValue={[new Date().getFullYear().toString()]}\n items={years}\n onValueChange={handleYearChange}\n value={[firstDayOfMonth.year.toString()]}\n />\n );\n};\n\nexport default CalendarYearSelect;\n"],"mappings":";;;;;;AAkBA,IAAM,sBAAsB,EAAE,QAAQ,aAAa,KAAK,KAAK,iBAA0C;CACrG,MAAM,aAAa,qBAAqB;CAExC,MAAM,kBAAkB,WAAW,UAAU,EAAE,QAAQ,YAAY,CAAC,CAAC,CAAC,aAAa;CAEnF,MAAM,oBAAoB,YAAiC;EACzD,MAAM,eAAe,SAAS,QAAQ,MAAM,IAAI,EAAE;EAElD,WAAW,UAAU,YAAY;CACnC;CAGA,MAAM,QAAQ,cAAc;EAC1B,MAAM,+BAAc,IAAI,KAAK,EAAA,CAAE,YAAY;EAE3C,IAAI,cAAc,CAAC;EAEnB,IAAI,YAAY,MACd,KAAK,IAAI,OAAO,WAAW,MAAM,QAAQ,WAAW,IAAI,QACtD,YAAY,KAAK;GACf,OAAO,KAAK,SAAS;GACrB,OAAO,KAAK,SAAS;EACvB,CAAC;OAGH,cAAc;GAAC,cAAc;GAAG;GAAa,cAAc;EAAC,CAAC,CAAC,KAAK,UAAU;GAC3E,OAAO,KAAK,SAAS;GACrB,OAAO,KAAK,SAAS;EACvB,EAAE;EAGJ,IAAI,OAAO,KACT,OAAO,YAAY,QAAQ,SAAS;GAClC,MAAM,aAAa,SAAS,KAAK,OAAO,EAAE;GAE1C,MAAM,cAAc,OAAO,aAAa,IAAI;GAC5C,MAAM,aAAa,OAAO,aAAa,IAAI;GAE3C,OAAO,CAAC,eAAe,CAAC;EAC1B,CAAC;EAGH,OAAO;CACT,GAAG;EAAC,YAAY;EAAM,YAAY;EAAI;EAAK;CAAG,CAAC;CAE/C,OACE,oBAAC,gBAAD;EACE,cAAc;GACZ,WAAW,IAAI,GAAG;GAClB,OAAO,IAAI,GAAG;EAChB;EACA,cAAc,EACZ,OAAO,IAAI,WAAW,WAAW,KAAK,EAAE,EAC1C;EACQ;EACR,cAAc,kBAAC,IAAI,KAAK,EAAA,CAAE,YAAY,CAAC,CAAC,SAAS,CAAC;EAClD,OAAO;EACP,eAAe;EACf,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC;CACxC,CAAA;AAEL"}
|
|
@@ -3,6 +3,8 @@ import { BitkitFieldProps } from '../BitkitField/BitkitField';
|
|
|
3
3
|
export type BitkitDatePickerControlProps = BoxProps;
|
|
4
4
|
export interface BitkitDatePickerProps extends Omit<BitkitFieldProps, 'children' | 'defaultValue' | 'state' | 'value'> {
|
|
5
5
|
controlProps?: BitkitDatePickerControlProps;
|
|
6
|
+
/** Text for a day's tooltip, e.g. why it can't be picked. Return `undefined` for no tooltip. */
|
|
7
|
+
dayTooltip?: (date: Date) => string | undefined;
|
|
6
8
|
defaultValue?: Date | null;
|
|
7
9
|
disablePortal?: boolean;
|
|
8
10
|
max?: Date;
|
|
@@ -46,7 +46,7 @@ var DatePickerInput = ({ css }) => {
|
|
|
46
46
|
});
|
|
47
47
|
};
|
|
48
48
|
var BitkitDatePicker = forwardRef((props, ref) => {
|
|
49
|
-
const { controlProps, defaultValue, disablePortal, max, min, onValueChange, placeholder, showOutsideDays, size = "lg", state, value, ...fieldProps } = props;
|
|
49
|
+
const { controlProps, dayTooltip, defaultValue, disablePortal, max, min, onValueChange, placeholder, showOutsideDays, size = "lg", state, value, ...fieldProps } = props;
|
|
50
50
|
const styles = useSlotRecipe({ key: "textInput" })({ size });
|
|
51
51
|
const { disablePortal: disablePortalFromContext } = useContext(BitkitPortalContext);
|
|
52
52
|
const minCalendarDate = useMemo(() => min ? dateToCalendarDate(min) : void 0, [min]);
|
|
@@ -115,6 +115,7 @@ var BitkitDatePicker = forwardRef((props, ref) => {
|
|
|
115
115
|
}), /* @__PURE__ */ jsx(Portal, {
|
|
116
116
|
disabled: disablePortal || disablePortalFromContext,
|
|
117
117
|
children: /* @__PURE__ */ jsx(DatePicker.Positioner, { children: /* @__PURE__ */ jsx(CalendarContent, {
|
|
118
|
+
dayTooltip,
|
|
118
119
|
layout: "1-month",
|
|
119
120
|
max: maxCalendarDate,
|
|
120
121
|
min: minCalendarDate,
|