@uxf/ui 11.24.0 → 11.25.0
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/date-picker/date-picker-content.d.ts +2 -0
- package/date-picker/date-picker-content.js +6 -4
- package/date-picker/date-picker-month.d.ts +2 -0
- package/date-picker/date-picker-month.js +8 -3
- package/date-picker/date-picker.d.ts +2 -1
- package/date-picker/date-picker.js +1 -1
- package/date-picker/date-picker.stories.js +3 -1
- package/date-picker-input/date-picker-input.d.ts +2 -1
- package/date-picker-input/date-picker-input.js +1 -1
- package/datetime-picker/datetime-picker.d.ts +2 -0
- package/datetime-picker/datetime-picker.js +1 -1
- package/dropzone/dropzone-list.js +1 -1
- package/multi-combobox/multi-combobox.stories.js +2 -2
- package/package.json +2 -2
- package/pagination/pagination.js +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { MonthType } from "@uxf/datepicker/utils/types";
|
|
1
2
|
import { CSSProperties, FC, PropsWithChildren, ReactNode } from "react";
|
|
2
3
|
export interface DatePickerContentProps {
|
|
3
4
|
bottomContent?: ReactNode;
|
|
5
|
+
onMonthChange?: (months: MonthType[]) => void;
|
|
4
6
|
style?: CSSProperties;
|
|
5
7
|
}
|
|
6
8
|
export declare const DatePickerContent: FC<PropsWithChildren<DatePickerContentProps>>;
|
|
@@ -32,21 +32,23 @@ const date_picker_year_1 = require("./date-picker-year");
|
|
|
32
32
|
const DatePickerContent = (props) => {
|
|
33
33
|
// eslint-disable-next-line react/destructuring-assignment
|
|
34
34
|
const { goToDate, activeMonths } = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
|
|
35
|
+
const onMonthChange = props.onMonthChange;
|
|
35
36
|
const [viewMode, setViewMode] = (0, react_1.useState)("month");
|
|
36
37
|
const onYearSelect = (0, react_1.useCallback)(() => setViewMode("decade"), [setViewMode]);
|
|
37
38
|
const onMonthSelect = (0, react_1.useCallback)((date) => {
|
|
38
|
-
goToDate(date);
|
|
39
|
+
const newActiveMonths = goToDate(date);
|
|
40
|
+
onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(newActiveMonths);
|
|
39
41
|
setViewMode("month");
|
|
40
|
-
}, [goToDate, setViewMode]);
|
|
42
|
+
}, [goToDate, setViewMode, onMonthChange]);
|
|
41
43
|
const onDecadeYearSelect = (0, react_1.useCallback)((date) => {
|
|
42
44
|
goToDate(date);
|
|
43
45
|
setViewMode("year");
|
|
44
46
|
}, [goToDate, setViewMode]);
|
|
45
47
|
const datePickerComponents = (0, react_1.useMemo)(() => ({
|
|
46
|
-
month: activeMonths.map((month) => (react_1.default.createElement(date_picker_month_1.DatePickerMonth, { key: `${month.year}-${month.month}`, setViewMode: setViewMode }))),
|
|
48
|
+
month: activeMonths.map((month) => (react_1.default.createElement(date_picker_month_1.DatePickerMonth, { key: `${month.year}-${month.month}`, onMonthChange: onMonthChange, setViewMode: setViewMode }))),
|
|
47
49
|
year: react_1.default.createElement(date_picker_year_1.DatePickerYear, { onMonthSelect: (date) => onMonthSelect(date), onYearSelect: onYearSelect }),
|
|
48
50
|
decade: react_1.default.createElement(date_picker_decade_1.DatePickerDecade, { onYearSelect: (date) => onDecadeYearSelect(date) }),
|
|
49
|
-
}), [activeMonths, onYearSelect, onMonthSelect, onDecadeYearSelect]);
|
|
51
|
+
}), [activeMonths, onYearSelect, onMonthChange, onMonthSelect, onDecadeYearSelect]);
|
|
50
52
|
return (react_1.default.createElement("div", { className: "uxf-date-picker", style: props.style },
|
|
51
53
|
props.children,
|
|
52
54
|
datePickerComponents[viewMode],
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { MonthType } from "@uxf/datepicker/utils/types";
|
|
1
2
|
import React, { Dispatch, SetStateAction } from "react";
|
|
2
3
|
import { ViewModeType } from "./types";
|
|
3
4
|
interface DatePickerMonthProps {
|
|
5
|
+
onMonthChange?: (months: MonthType[]) => void;
|
|
4
6
|
setViewMode: Dispatch<SetStateAction<ViewModeType>>;
|
|
5
7
|
}
|
|
6
8
|
export declare const DatePickerMonth: React.NamedExoticComponent<DatePickerMonthProps>;
|
|
@@ -35,6 +35,7 @@ const calendar_1 = require("../calendar");
|
|
|
35
35
|
exports.DatePickerMonth = (0, react_1.memo)((props) => {
|
|
36
36
|
const { setViewMode } = props;
|
|
37
37
|
const datePickerProps = (0, react_1.useContext)(date_picker_context_1.DatePickerContext);
|
|
38
|
+
const onMonthChange = props.onMonthChange;
|
|
38
39
|
const { activeMonths, canGoToNextMonth, canGoToPrevMonth, firstDayOfWeek, goToNextMonthsByOneMonth, goToPrevMonthsByOneMonth, } = datePickerProps;
|
|
39
40
|
const currentMonth = activeMonths[0].month;
|
|
40
41
|
const currentYear = activeMonths[0].year;
|
|
@@ -47,9 +48,13 @@ exports.DatePickerMonth = (0, react_1.memo)((props) => {
|
|
|
47
48
|
year: currentYear,
|
|
48
49
|
});
|
|
49
50
|
const handleGoToPrevMonth = (0, react_1.useCallback)(() => {
|
|
50
|
-
goToPrevMonthsByOneMonth();
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
const newActiveMonths = goToPrevMonthsByOneMonth();
|
|
52
|
+
onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(newActiveMonths);
|
|
53
|
+
}, [goToPrevMonthsByOneMonth, onMonthChange]);
|
|
54
|
+
const handleGoToNextMonth = (0, react_1.useCallback)(() => {
|
|
55
|
+
const newActiveMonths = goToNextMonthsByOneMonth();
|
|
56
|
+
onMonthChange === null || onMonthChange === void 0 ? void 0 : onMonthChange(newActiveMonths);
|
|
57
|
+
}, [goToNextMonthsByOneMonth, onMonthChange]);
|
|
53
58
|
const handleMonthClick = (0, react_1.useCallback)(() => {
|
|
54
59
|
setViewMode("year");
|
|
55
60
|
}, [setViewMode]);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnDateChangeType } from "@uxf/datepicker/hooks/use-date-picker";
|
|
2
|
-
import { DatesConfig } from "@uxf/datepicker/utils/types";
|
|
2
|
+
import { DatesConfig, type MonthType } from "@uxf/datepicker/utils/types";
|
|
3
3
|
import { CSSProperties, FC, ReactNode } from "react";
|
|
4
4
|
export interface DatePickerProps {
|
|
5
5
|
bottomContent?: ReactNode;
|
|
@@ -8,6 +8,7 @@ export interface DatePickerProps {
|
|
|
8
8
|
maxDate?: Date;
|
|
9
9
|
minDate?: Date;
|
|
10
10
|
onChange: (data: OnDateChangeType) => void;
|
|
11
|
+
onMonthChange?: (months: MonthType[]) => void;
|
|
11
12
|
preventScroll?: boolean;
|
|
12
13
|
selectedDate: Date | null;
|
|
13
14
|
style?: CSSProperties;
|
|
@@ -24,7 +24,7 @@ const DatePicker = (props) => {
|
|
|
24
24
|
unavailableDates: props.unavailableDates,
|
|
25
25
|
});
|
|
26
26
|
return (react_1.default.createElement(date_picker_context_1.DatePickerContext.Provider, { value: datePickerProps },
|
|
27
|
-
react_1.default.createElement(date_picker_content_1.DatePickerContent, { bottomContent: props.bottomContent, style: props.style })));
|
|
27
|
+
react_1.default.createElement(date_picker_content_1.DatePickerContent, { bottomContent: props.bottomContent, onMonthChange: props.onMonthChange, style: props.style })));
|
|
28
28
|
};
|
|
29
29
|
exports.DatePicker = DatePicker;
|
|
30
30
|
exports.DatePicker.displayName = "UxfUiDatePicker";
|
|
@@ -77,7 +77,9 @@ function Default() {
|
|
|
77
77
|
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with bottom content"),
|
|
78
78
|
react_1.default.createElement(date_picker_1.DatePicker, { onChange: onChange, selectedDate: value, bottomContent: react_1.default.createElement("div", null,
|
|
79
79
|
"Bottom content",
|
|
80
|
-
react_1.default.createElement("p", null, "Here can goes anything")) })
|
|
80
|
+
react_1.default.createElement("p", null, "Here can goes anything")) }),
|
|
81
|
+
react_1.default.createElement("p", { className: "text-lg" }, "Date picker with onMonthChange callback"),
|
|
82
|
+
react_1.default.createElement(date_picker_1.DatePicker, { onChange: onChange, selectedDate: value, onMonthChange: (months) => alert(months[0].month) })));
|
|
81
83
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
82
84
|
react_1.default.createElement("div", { className: "max-w-[640px] space-y-4 rounded p-8" }, testDatePickers)));
|
|
83
85
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DatesConfig } from "@uxf/datepicker/utils/types";
|
|
1
|
+
import { DatesConfig, type MonthType } from "@uxf/datepicker/utils/types";
|
|
2
2
|
import React, { CSSProperties, ReactNode } from "react";
|
|
3
3
|
import { InputWithPopoverProps } from "../_input-with-popover";
|
|
4
4
|
export declare const ALLOWED_DATE_FORMAT: string[];
|
|
@@ -11,6 +11,7 @@ export interface DatePickerInputProps extends Omit<InputWithPopoverProps<string
|
|
|
11
11
|
displayDateFormat?: string;
|
|
12
12
|
maxDate?: string;
|
|
13
13
|
minDate?: string;
|
|
14
|
+
onMonthChange?: (months: MonthType[]) => void;
|
|
14
15
|
placeholder?: string;
|
|
15
16
|
style?: CSSProperties;
|
|
16
17
|
triggerElement?: ReactNode;
|
|
@@ -82,6 +82,6 @@ exports.DatePickerInput = (0, react_1.forwardRef)((props, ref) => {
|
|
|
82
82
|
const selectedDate = getSelectedDate(props.value);
|
|
83
83
|
const parsedMinDate = getBoundaryDate(props.minDate);
|
|
84
84
|
const parsedMaxDate = getBoundaryDate(props.maxDate);
|
|
85
|
-
return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, className: className, onChange: onInputChange, placeholder: (_c = props.placeholder) !== null && _c !== void 0 ? _c : (0, dayjs_1.default)().format(displayDateFormat), ref: ref, value: value, triggerElement: (_d = props.triggerElement) !== null && _d !== void 0 ? _d : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }) }, ({ close }) => (react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: props.bottomContent, closePopoverHandler: close, datesConfig: props.datesConfig, maxDate: parsedMaxDate, minDate: parsedMinDate, onChange: onDatePickerChange, preventScroll: true, selectedDate: selectedDate, style: props.style, unavailableDates: props.unavailableDates }))));
|
|
85
|
+
return (react_1.default.createElement(_input_with_popover_1._InputWithPopover, { ...props, className: className, onChange: onInputChange, placeholder: (_c = props.placeholder) !== null && _c !== void 0 ? _c : (0, dayjs_1.default)().format(displayDateFormat), ref: ref, value: value, triggerElement: (_d = props.triggerElement) !== null && _d !== void 0 ? _d : react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 20 }) }, ({ close }) => (react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: props.bottomContent, closePopoverHandler: close, datesConfig: props.datesConfig, maxDate: parsedMaxDate, minDate: parsedMinDate, onChange: onDatePickerChange, onMonthChange: props.onMonthChange, preventScroll: true, selectedDate: selectedDate, style: props.style, unavailableDates: props.unavailableDates }))));
|
|
86
86
|
});
|
|
87
87
|
exports.DatePickerInput.displayName = "UxfUiDatePickerInput";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MonthType } from "@uxf/datepicker/utils/types";
|
|
1
2
|
import { Dayjs } from "dayjs";
|
|
2
3
|
import { FC, ReactNode } from "react";
|
|
3
4
|
import { InputWithPopoverProps } from "../_input-with-popover";
|
|
@@ -6,6 +7,7 @@ export declare function getStrictParsedDatetime(date: string | null): Dayjs;
|
|
|
6
7
|
export interface DatetimePickerProps {
|
|
7
8
|
closePopoverHandler?: () => void;
|
|
8
9
|
onChange: InputWithPopoverProps<string | null>["onChange"];
|
|
10
|
+
onMonthChange?: (months: MonthType[]) => void;
|
|
9
11
|
value: InputWithPopoverProps<string | null>["value"];
|
|
10
12
|
minDate?: Date;
|
|
11
13
|
maxDate?: Date;
|
|
@@ -87,7 +87,7 @@ const DatetimePicker = (props) => {
|
|
|
87
87
|
react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-tabs__tab uxf-tabs__tab--segmented uxf-datetime-picker__tab", selectedTab === "date" && classes_1.CLASSES.IS_ACTIVE), onClick: () => setSelectedTab("date") }, "Datum"),
|
|
88
88
|
react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-tabs__tab uxf-tabs__tab--segmented uxf-datetime-picker__tab", selectedTab === "time" && classes_1.CLASSES.IS_ACTIVE), onClick: () => setSelectedTab("time") }, "\u010Cas"))),
|
|
89
89
|
react_1.default.createElement("div", { className: "uxf-tabs__panels" },
|
|
90
|
-
selectedTab === "date" && (react_1.default.createElement(date_picker_1.DatePicker, { maxDate: props.maxDate, minDate: props.minDate, onChange: onDatePickerChange, preventScroll: true, selectedDate: selectedDate, unavailableDates: props.unavailableDates
|
|
90
|
+
selectedTab === "date" && (react_1.default.createElement(date_picker_1.DatePicker, { bottomContent: props.bottomContent, maxDate: props.maxDate, minDate: props.minDate, onChange: onDatePickerChange, onMonthChange: props.onMonthChange, preventScroll: true, selectedDate: selectedDate, unavailableDates: props.unavailableDates })),
|
|
91
91
|
selectedTab === "time" && react_1.default.createElement(time_picker_1.TimePicker, { onChange: onTimePickerChange, selectedTime: selectedTime }))));
|
|
92
92
|
};
|
|
93
93
|
exports.DatetimePicker = DatetimePicker;
|
|
@@ -35,7 +35,7 @@ const get_file_icon_1 = require("../utils/files/get-file-icon");
|
|
|
35
35
|
function formatBytes(bytes, decimals = 2) {
|
|
36
36
|
const k = 1024;
|
|
37
37
|
const dm = decimals < 0 ? 0 : decimals;
|
|
38
|
-
const sizes = ["
|
|
38
|
+
const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
39
39
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
40
40
|
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;
|
|
41
41
|
}
|
|
@@ -60,12 +60,12 @@ function Default() {
|
|
|
60
60
|
react_1.default.createElement(multi_combobox_1.MultiCombobox, { dropdownMaxHeight: 350, id: "multi-combobox-1", label: "MultiCombobox", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte pros\u00EDm jednu nebo v\u00EDce mo\u017Enost\u00ED", value: value }),
|
|
61
61
|
react_1.default.createElement(multi_combobox_1.MultiCombobox, { id: "multi-combobox-2", label: "MultiCombobox with checkboxes", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value, withCheckboxes: true }),
|
|
62
62
|
react_1.default.createElement(multi_combobox_1.MultiCombobox, { helperText: "Start typing to see options...", id: "multi-combobox-3", label: "MultiCombobox with helper text", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value }),
|
|
63
|
-
react_1.default.createElement(multi_combobox_1.MultiCombobox, { helperText: "Error message", id: "multi-combobox-4", isInvalid: true, isRequired: true, label: "MultiCombobox invalid", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value }),
|
|
63
|
+
react_1.default.createElement(multi_combobox_1.MultiCombobox, { helperText: "Error message", id: "multi-combobox-4", isInvalid: true, isRequired: true, label: "MultiCombobox invalid", name: "multi-combobox-invalid", onChange: onChange, options: options, placeholder: "Vyberte...", value: value }),
|
|
64
64
|
react_1.default.createElement(multi_combobox_1.MultiCombobox, { dropdownPlacement: "top", id: "multi-combobox-5", label: "MultiCombobox with dropdown top", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value }),
|
|
65
65
|
react_1.default.createElement(multi_combobox_1.MultiCombobox, { id: "multi-combobox-6", label: "MultiCombobox with renderOption", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value, renderOption: (option) => react_1.default.createElement(react_1.default.Fragment, null,
|
|
66
66
|
"Option: ",
|
|
67
67
|
option.label) }),
|
|
68
|
-
react_1.default.createElement(multi_combobox_1.MultiCombobox, { id: "multi-combobox-disabled", label: "MultiCombobox disabled", name: "multi-combobox", onChange: onChange, options: options, placeholder: "Vyberte...", value: value, renderOption: (option) => react_1.default.createElement(react_1.default.Fragment, null,
|
|
68
|
+
react_1.default.createElement(multi_combobox_1.MultiCombobox, { id: "multi-combobox-disabled", label: "MultiCombobox disabled", name: "multi-combobox-disabled", onChange: onChange, options: options, placeholder: "Vyberte...", value: value, renderOption: (option) => react_1.default.createElement(react_1.default.Fragment, null,
|
|
69
69
|
"Option: ",
|
|
70
70
|
option.label), isDisabled: true })));
|
|
71
71
|
return (react_1.default.createElement("div", { className: "flex flex-col lg:flex-row" },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/ui",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.25.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"@headlessui/react": "1.7.14",
|
|
20
20
|
"@uxf/core": "11.22.0",
|
|
21
21
|
"@uxf/core-react": "11.22.0",
|
|
22
|
-
"@uxf/datepicker": "11.
|
|
22
|
+
"@uxf/datepicker": "11.25.0",
|
|
23
23
|
"@uxf/styles": "11.22.0",
|
|
24
24
|
"color2k": "2.0.3",
|
|
25
25
|
"dayjs": "1.11.10",
|
package/pagination/pagination.js
CHANGED
|
@@ -18,7 +18,7 @@ const Pagination = (props) => {
|
|
|
18
18
|
count: props.count,
|
|
19
19
|
page: props.page,
|
|
20
20
|
showFirstButton: props.showFirstButton,
|
|
21
|
-
showLastButton: props.
|
|
21
|
+
showLastButton: props.showLastButton,
|
|
22
22
|
});
|
|
23
23
|
const onClick = (item) => {
|
|
24
24
|
if (typeof item === "number") {
|