@trackunit/react-date-and-time-components 1.6.3 → 1.6.5
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/index.cjs.js
CHANGED
|
@@ -519,7 +519,7 @@ const isTemporalPeriod = (value) => !!value && typeof value === "object" && "dir
|
|
|
519
519
|
/**
|
|
520
520
|
* Day range select component.
|
|
521
521
|
*/
|
|
522
|
-
const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection = undefined, initialDateRangeOptions, showDateRangeSearch = true, showCustomDateRangeOption = true, timezone, maxDaysInRange, size = "medium", fullWidth = false, }) => {
|
|
522
|
+
const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection = undefined, initialDateRangeOptions, showDateRangeSearch = true, showCustomDateRangeOption = true, timezone, maxDaysInRange, size = "medium", fullWidth = false, actionButton, }) => {
|
|
523
523
|
const [t] = useTranslation();
|
|
524
524
|
const parseTemporalPeriodFromText = useParseTemporalPeriodFromText();
|
|
525
525
|
const filterTemporalPeriodsInRange = useFilterTemporalPeriodsInRange();
|
|
@@ -613,7 +613,7 @@ const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, on
|
|
|
613
613
|
setSelectedRange(_selectedDateRange);
|
|
614
614
|
onRangeSelect(_selectedDateRange);
|
|
615
615
|
}, [onRangeSelect, handleReset]);
|
|
616
|
-
return (jsxRuntime.jsxs(reactComponents.Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: "bottom-start", children: [jsxRuntime.jsx(reactComponents.PopoverTrigger, { children: jsxRuntime.jsx(reactComponents.Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), dataTestId: dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsxRuntime.jsx(reactComponents.Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "secondary" : selectedDateRange ? "primary" : undefined, name: "Calendar", size: size === "large" ? "medium" : "small" }), size: size, variant: "secondary", children: popoverTriggerLabel ?? t("trigger.selectDateRange") }) }), jsxRuntime.jsx(reactComponents.PopoverContent, { dataTestId: dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
616
|
+
return (jsxRuntime.jsxs(reactComponents.Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: "bottom-start", children: [jsxRuntime.jsx(reactComponents.PopoverTrigger, { children: !actionButton ? (jsxRuntime.jsx(reactComponents.Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), dataTestId: dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsxRuntime.jsx(reactComponents.Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "secondary" : selectedDateRange ? "primary" : undefined, name: "Calendar", size: size === "large" ? "medium" : "small" }), size: size, variant: "secondary", children: popoverTriggerLabel ?? t("trigger.selectDateRange") })) : (jsxRuntime.jsx("div", { children: actionButton })) }), jsxRuntime.jsx(reactComponents.PopoverContent, { dataTestId: dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
617
617
|
return !isCustomDateRangeOpen ? (jsxRuntime.jsxs(reactComponents.MenuList, { className: "min-w-[280px]", children: [jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [showDateRangeSearch ? (jsxRuntime.jsx(reactFormComponents.Search, { className: "w-full", dataTestId: dataTestId ? `${dataTestId}-search-input` : undefined, onChange: event => handleDateRangeSearch(event.target.value), onClear: () => handleDateRangeSearch(""), placeholder: allowedDirection === "last"
|
|
618
618
|
? t("input.placeholder.customRange.last")
|
|
619
619
|
: t("input.placeholder.customRange.next"), value: dateRangeSearchValue })) : null, jsxRuntime.jsx(reactComponents.Button, { className: "ml-auto", dataTestId: dataTestId ? `${dataTestId}-reset-button` : undefined, disabled: !selectedDateRange, onClick: handleReset, size: "small", variant: "ghost", children: t("layout.actions.reset") })] }), jsxRuntime.jsx("hr", { className: "border-secondary-200 my-1", role: "separator" }), jsxRuntime.jsx(DayRangeSelectOptions, { dataTestId: dataTestId ? `${dataTestId}-options` : undefined, onSelect: value => handleOptionsSelect(value, closeMenu), selectedDateRange: currentSelectedRange, temporalPeriods: temporalPeriods }), showCustomDateRangeOption ? (jsxRuntime.jsxs("section", { children: [jsxRuntime.jsx(reactComponents.MenuDivider, {}), jsxRuntime.jsx(reactComponents.MenuItem, { dataTestId: dataTestId ? `${dataTestId}-custom-range` : undefined, label: t("trigger.customRange"), onClick: () => setIsCustomDateRangeOpen(true), selected: isCustomDateRangeSelected, suffix: jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [isCustomDateRangeSelected ? jsxRuntime.jsx(reactComponents.Icon, { color: "primary", name: "Check", size: "small" }) : null, jsxRuntime.jsx(reactComponents.Icon, { name: "ChevronRight", size: "small" })] }) })] })) : null] })) : (jsxRuntime.jsx(reactComponents.Card, { children: jsxRuntime.jsx(DayRangePicker, { cancelButtonLabel: t("layout.actions.back"), disabledDays: customDateRangeDisabledDays, language: "en", onClose: () => setIsCustomDateRangeOpen(false), onRangeSelect: dateRange => handleCustomDateRangeSelect(dateRange
|
package/index.esm.js
CHANGED
|
@@ -517,7 +517,7 @@ const isTemporalPeriod = (value) => !!value && typeof value === "object" && "dir
|
|
|
517
517
|
/**
|
|
518
518
|
* Day range select component.
|
|
519
519
|
*/
|
|
520
|
-
const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection = undefined, initialDateRangeOptions, showDateRangeSearch = true, showCustomDateRangeOption = true, timezone, maxDaysInRange, size = "medium", fullWidth = false, }) => {
|
|
520
|
+
const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection = undefined, initialDateRangeOptions, showDateRangeSearch = true, showCustomDateRangeOption = true, timezone, maxDaysInRange, size = "medium", fullWidth = false, actionButton, }) => {
|
|
521
521
|
const [t] = useTranslation();
|
|
522
522
|
const parseTemporalPeriodFromText = useParseTemporalPeriodFromText();
|
|
523
523
|
const filterTemporalPeriodsInRange = useFilterTemporalPeriodsInRange();
|
|
@@ -611,7 +611,7 @@ const DayRangeSelect = ({ className, dataTestId, disabled, selectedDateRange, on
|
|
|
611
611
|
setSelectedRange(_selectedDateRange);
|
|
612
612
|
onRangeSelect(_selectedDateRange);
|
|
613
613
|
}, [onRangeSelect, handleReset]);
|
|
614
|
-
return (jsxs(Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: "bottom-start", children: [jsx(PopoverTrigger, { children: jsx(Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), dataTestId: dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsx(Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "secondary" : selectedDateRange ? "primary" : undefined, name: "Calendar", size: size === "large" ? "medium" : "small" }), size: size, variant: "secondary", children: popoverTriggerLabel ?? t("trigger.selectDateRange") }) }), jsx(PopoverContent, { dataTestId: dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
614
|
+
return (jsxs(Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: "bottom-start", children: [jsx(PopoverTrigger, { children: !actionButton ? (jsx(Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), dataTestId: dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsx(Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "secondary" : selectedDateRange ? "primary" : undefined, name: "Calendar", size: size === "large" ? "medium" : "small" }), size: size, variant: "secondary", children: popoverTriggerLabel ?? t("trigger.selectDateRange") })) : (jsx("div", { children: actionButton })) }), jsx(PopoverContent, { dataTestId: dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
615
615
|
return !isCustomDateRangeOpen ? (jsxs(MenuList, { className: "min-w-[280px]", children: [jsxs("div", { className: "flex flex-col gap-1", children: [showDateRangeSearch ? (jsx(Search, { className: "w-full", dataTestId: dataTestId ? `${dataTestId}-search-input` : undefined, onChange: event => handleDateRangeSearch(event.target.value), onClear: () => handleDateRangeSearch(""), placeholder: allowedDirection === "last"
|
|
616
616
|
? t("input.placeholder.customRange.last")
|
|
617
617
|
: t("input.placeholder.customRange.next"), value: dateRangeSearchValue })) : null, jsx(Button, { className: "ml-auto", dataTestId: dataTestId ? `${dataTestId}-reset-button` : undefined, disabled: !selectedDateRange, onClick: handleReset, size: "small", variant: "ghost", children: t("layout.actions.reset") })] }), jsx("hr", { className: "border-secondary-200 my-1", role: "separator" }), jsx(DayRangeSelectOptions, { dataTestId: dataTestId ? `${dataTestId}-options` : undefined, onSelect: value => handleOptionsSelect(value, closeMenu), selectedDateRange: currentSelectedRange, temporalPeriods: temporalPeriods }), showCustomDateRangeOption ? (jsxs("section", { children: [jsx(MenuDivider, {}), jsx(MenuItem, { dataTestId: dataTestId ? `${dataTestId}-custom-range` : undefined, label: t("trigger.customRange"), onClick: () => setIsCustomDateRangeOpen(true), selected: isCustomDateRangeSelected, suffix: jsxs(Fragment, { children: [isCustomDateRangeSelected ? jsx(Icon, { color: "primary", name: "Check", size: "small" }) : null, jsx(Icon, { name: "ChevronRight", size: "small" })] }) })] })) : null] })) : (jsx(Card, { children: jsx(DayRangePicker, { cancelButtonLabel: t("layout.actions.back"), disabledDays: customDateRangeDisabledDays, language: "en", onClose: () => setIsCustomDateRangeOpen(false), onRangeSelect: dateRange => handleCustomDateRangeSelect(dateRange
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/react-date-and-time-components",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.5",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"react": "19.0.0",
|
|
11
|
-
"@trackunit/react-components": "1.5.
|
|
12
|
-
"@trackunit/react-date-and-time-hooks": "1.4.
|
|
13
|
-
"@trackunit/date-and-time-utils": "1.4.
|
|
14
|
-
"@trackunit/css-class-variance-utilities": "1.4.
|
|
15
|
-
"@trackunit/ui-icons": "1.4.
|
|
16
|
-
"@trackunit/ui-design-tokens": "1.4.
|
|
17
|
-
"@trackunit/shared-utils": "1.6.
|
|
18
|
-
"@trackunit/i18n-library-translation": "1.4.
|
|
19
|
-
"@trackunit/react-test-setup": "1.1.
|
|
20
|
-
"@trackunit/react-form-components": "1.4.
|
|
11
|
+
"@trackunit/react-components": "1.5.16",
|
|
12
|
+
"@trackunit/react-date-and-time-hooks": "1.4.12",
|
|
13
|
+
"@trackunit/date-and-time-utils": "1.4.10",
|
|
14
|
+
"@trackunit/css-class-variance-utilities": "1.4.10",
|
|
15
|
+
"@trackunit/ui-icons": "1.4.10",
|
|
16
|
+
"@trackunit/ui-design-tokens": "1.4.12",
|
|
17
|
+
"@trackunit/shared-utils": "1.6.10",
|
|
18
|
+
"@trackunit/i18n-library-translation": "1.4.12",
|
|
19
|
+
"@trackunit/react-test-setup": "1.1.10",
|
|
20
|
+
"@trackunit/react-form-components": "1.4.18",
|
|
21
21
|
"string-ts": "^2.0.0",
|
|
22
22
|
"tailwind-merge": "^2.0.0",
|
|
23
23
|
"react-calendar": "^6.0.0"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DateRange } from "@trackunit/date-and-time-utils";
|
|
2
2
|
import { CommonProps } from "@trackunit/react-components";
|
|
3
3
|
import { Size } from "@trackunit/shared-utils";
|
|
4
|
+
import { ReactElement } from "react";
|
|
4
5
|
import { DayRangePickerProps } from "../DayPicker/DayRangePicker";
|
|
5
6
|
import { SelectedDateRange, TemporalDirection, TemporalPeriod } from "./types";
|
|
6
7
|
export type DayRangeSelectProps = CommonProps & {
|
|
@@ -50,8 +51,13 @@ export type DayRangeSelectProps = CommonProps & {
|
|
|
50
51
|
* Whether the trigger button is full width.
|
|
51
52
|
*/
|
|
52
53
|
fullWidth?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Custom action button to trigger the display of the date range selector.
|
|
56
|
+
* If provided, this button replaces the default trigger button of the component.
|
|
57
|
+
*/
|
|
58
|
+
actionButton?: ReactElement;
|
|
53
59
|
};
|
|
54
60
|
/**
|
|
55
61
|
* Day range select component.
|
|
56
62
|
*/
|
|
57
|
-
export declare const DayRangeSelect: ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection, initialDateRangeOptions, showDateRangeSearch, showCustomDateRangeOption, timezone, maxDaysInRange, size, fullWidth, }: DayRangeSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
export declare const DayRangeSelect: ({ className, dataTestId, disabled, selectedDateRange, onRangeSelect, allowedDirection, initialDateRangeOptions, showDateRangeSearch, showCustomDateRangeOption, timezone, maxDaysInRange, size, fullWidth, actionButton, }: DayRangeSelectProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,3 +8,4 @@ export declare const packageName: () => import("react/jsx-runtime").JSX.Element;
|
|
|
8
8
|
export declare const VariantWithoutCustomDateRangeOptionAndSearch: Story;
|
|
9
9
|
export declare const VariantWithAllowedDirectionSet: Story;
|
|
10
10
|
export declare const VariantWithInitialDateRangeOptionsSet: Story;
|
|
11
|
+
export declare const VariantWithActionButton: Story;
|