@trackunit/react-date-and-time-components 2.4.4 → 2.4.7-alpha-770d9994af7.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/index.cjs.js +4 -2
- package/index.esm.js +5 -3
- package/package.json +9 -9
package/index.cjs.js
CHANGED
|
@@ -712,7 +712,9 @@ const DayRangeSelect = ({ className, "data-testid": dataTestId, disabled = false
|
|
|
712
712
|
return filterTemporalPeriodsInRange({ temporalPeriods: defaultCombinations, maxDaysInRange });
|
|
713
713
|
}, [initialDateRangeOptions, filterTemporalPeriodsInRange, allowedDirection, maxDaysInRange]);
|
|
714
714
|
const [temporalPeriods, setTemporalPeriods] = react.useState(defaultTemporalPeriods);
|
|
715
|
-
|
|
715
|
+
// Starts as an empty string rather than undefined: clearing the search would otherwise switch the
|
|
716
|
+
// input from uncontrolled to controlled, which React warns about.
|
|
717
|
+
const [dateRangeSearchValue, setDateRangeSearchValue] = react.useState("");
|
|
716
718
|
const [selectedRange, setSelectedRange] = react.useState();
|
|
717
719
|
const currentSelectedRange = react.useMemo(() => {
|
|
718
720
|
// Internal selected range takes precedence
|
|
@@ -787,7 +789,7 @@ const DayRangeSelect = ({ className, "data-testid": dataTestId, disabled = false
|
|
|
787
789
|
onRangeSelect(_selectedDateRange);
|
|
788
790
|
}, [onRangeSelect, handleReset]);
|
|
789
791
|
return (jsxRuntime.jsxs(reactComponents.Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: popoverPlacement, children: [jsxRuntime.jsx(reactComponents.PopoverTrigger, { children: !actionButton ? (jsxRuntime.jsx(reactComponents.Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), "data-testid": dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsxRuntime.jsx(reactComponents.Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "neutral" : 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, { "data-testid": dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
790
|
-
return !isCustomDateRangeOpen ? (jsxRuntime.jsxs(reactComponents.
|
|
792
|
+
return !isCustomDateRangeOpen ? (jsxRuntime.jsxs(reactComponents.MenuContent, { className: "min-w-[280px]", children: [showPopoverHeader ? (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [showDateRangeSearch ? (jsxRuntime.jsx(reactFormComponents.Search, { className: "w-full", "data-testid": dataTestId ? `${dataTestId}-search-input` : undefined, onChange: event => handleDateRangeSearch(event.target.value), onClear: () => handleDateRangeSearch(""), placeholder: allowedDirection === "last"
|
|
791
793
|
? t("input.placeholder.customRange.last")
|
|
792
794
|
: t("input.placeholder.customRange.next"), value: dateRangeSearchValue })) : null, showResetButton ? (jsxRuntime.jsx(reactComponents.Button, { className: "ml-auto", "data-testid": dataTestId ? `${dataTestId}-reset-button` : undefined, disabled: !selectedDateRange, onClick: handleReset, size: "small", variant: "ghost", children: t("layout.actions.reset") })) : null] }), jsxRuntime.jsx("hr", { className: "my-1 border-neutral-200", role: "separator" })] })) : null, jsxRuntime.jsx(DayRangeSelectOptions, { "data-testid": 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, { "data-testid": 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
|
|
793
795
|
? {
|
package/index.esm.js
CHANGED
|
@@ -5,7 +5,7 @@ import { useLocale, useHourCycle, useTimezone, useDateAndTime } from '@trackunit
|
|
|
5
5
|
import { truthy, DateTimeFormat, nonNullable, objectKeys } from '@trackunit/shared-utils';
|
|
6
6
|
import { useMemo, useCallback, useState, useEffect, useRef, Children, isValidElement } from 'react';
|
|
7
7
|
import { twMerge } from 'tailwind-merge';
|
|
8
|
-
import { Tooltip, Button, MenuItem, Icon, Popover, PopoverTrigger, PopoverContent,
|
|
8
|
+
import { Tooltip, Button, MenuItem, Icon, Popover, PopoverTrigger, PopoverContent, MenuContent, MenuDivider, Card, Text } from '@trackunit/react-components';
|
|
9
9
|
import Calendar from 'react-calendar';
|
|
10
10
|
import { Search } from '@trackunit/react-form-components';
|
|
11
11
|
import { cvaMerge } from '@trackunit/css-class-variance-utilities';
|
|
@@ -710,7 +710,9 @@ const DayRangeSelect = ({ className, "data-testid": dataTestId, disabled = false
|
|
|
710
710
|
return filterTemporalPeriodsInRange({ temporalPeriods: defaultCombinations, maxDaysInRange });
|
|
711
711
|
}, [initialDateRangeOptions, filterTemporalPeriodsInRange, allowedDirection, maxDaysInRange]);
|
|
712
712
|
const [temporalPeriods, setTemporalPeriods] = useState(defaultTemporalPeriods);
|
|
713
|
-
|
|
713
|
+
// Starts as an empty string rather than undefined: clearing the search would otherwise switch the
|
|
714
|
+
// input from uncontrolled to controlled, which React warns about.
|
|
715
|
+
const [dateRangeSearchValue, setDateRangeSearchValue] = useState("");
|
|
714
716
|
const [selectedRange, setSelectedRange] = useState();
|
|
715
717
|
const currentSelectedRange = useMemo(() => {
|
|
716
718
|
// Internal selected range takes precedence
|
|
@@ -785,7 +787,7 @@ const DayRangeSelect = ({ className, "data-testid": dataTestId, disabled = false
|
|
|
785
787
|
onRangeSelect(_selectedDateRange);
|
|
786
788
|
}, [onRangeSelect, handleReset]);
|
|
787
789
|
return (jsxs(Popover, { onOpenStateChange: state => !state && setIsCustomDateRangeOpen(false), placement: popoverPlacement, children: [jsx(PopoverTrigger, { children: !actionButton ? (jsx(Button, { className: cvaTriggerButton({ active: !!selectedDateRange, className }), "data-testid": dataTestId, disabled: disabled, fullWidth: fullWidth, prefix: jsx(Icon, { ariaLabel: t("input.icon.tooltip.calendar"), color: disabled ? "neutral" : 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, { "data-testid": dataTestId ? `${dataTestId}-popover-content` : undefined, children: closeMenu => {
|
|
788
|
-
return !isCustomDateRangeOpen ? (jsxs(
|
|
790
|
+
return !isCustomDateRangeOpen ? (jsxs(MenuContent, { className: "min-w-[280px]", children: [showPopoverHeader ? (jsxs("div", { children: [jsxs("div", { className: "flex flex-col gap-1", children: [showDateRangeSearch ? (jsx(Search, { className: "w-full", "data-testid": dataTestId ? `${dataTestId}-search-input` : undefined, onChange: event => handleDateRangeSearch(event.target.value), onClear: () => handleDateRangeSearch(""), placeholder: allowedDirection === "last"
|
|
789
791
|
? t("input.placeholder.customRange.last")
|
|
790
792
|
: t("input.placeholder.customRange.next"), value: dateRangeSearchValue })) : null, showResetButton ? (jsx(Button, { className: "ml-auto", "data-testid": dataTestId ? `${dataTestId}-reset-button` : undefined, disabled: !selectedDateRange, onClick: handleReset, size: "small", variant: "ghost", children: t("layout.actions.reset") })) : null] }), jsx("hr", { className: "my-1 border-neutral-200", role: "separator" })] })) : null, jsx(DayRangeSelectOptions, { "data-testid": dataTestId ? `${dataTestId}-options` : undefined, onSelect: value => handleOptionsSelect(value, closeMenu), selectedDateRange: currentSelectedRange, temporalPeriods: temporalPeriods }), showCustomDateRangeOption ? (jsxs("section", { children: [jsx(MenuDivider, {}), jsx(MenuItem, { "data-testid": 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
|
|
791
793
|
? {
|
package/package.json
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/react-date-and-time-components",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.7-alpha-770d9994af7.0",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=24.x"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@trackunit/react-components": "2.
|
|
11
|
-
"@trackunit/date-and-time-utils": "1.14.
|
|
12
|
-
"@trackunit/react-date-and-time-hooks": "2.4.
|
|
13
|
-
"@trackunit/css-class-variance-utilities": "1.14.
|
|
14
|
-
"@trackunit/ui-icons": "1.14.
|
|
15
|
-
"@trackunit/shared-utils": "1.16.
|
|
16
|
-
"@trackunit/i18n-library-translation": "2.3.
|
|
17
|
-
"@trackunit/react-form-components": "2.4.
|
|
10
|
+
"@trackunit/react-components": "2.6.2-alpha-770d9994af7.0",
|
|
11
|
+
"@trackunit/date-and-time-utils": "1.14.3-alpha-770d9994af7.0",
|
|
12
|
+
"@trackunit/react-date-and-time-hooks": "2.4.7-alpha-770d9994af7.0",
|
|
13
|
+
"@trackunit/css-class-variance-utilities": "1.14.3-alpha-770d9994af7.0",
|
|
14
|
+
"@trackunit/ui-icons": "1.14.3-alpha-770d9994af7.0",
|
|
15
|
+
"@trackunit/shared-utils": "1.16.3-alpha-770d9994af7.0",
|
|
16
|
+
"@trackunit/i18n-library-translation": "2.3.4-alpha-770d9994af7.0",
|
|
17
|
+
"@trackunit/react-form-components": "2.4.7-alpha-770d9994af7.0",
|
|
18
18
|
"string-ts": "^2.0.0",
|
|
19
19
|
"tailwind-merge": "^2.0.0",
|
|
20
20
|
"react-calendar": "^6.0.0"
|