@trackunit/react-date-and-time-components 1.0.15 → 1.0.16

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.
Files changed (3) hide show
  1. package/index.cjs.js +10 -11
  2. package/index.esm.js +10 -11
  3. package/package.json +2 -2
package/index.cjs.js CHANGED
@@ -93,15 +93,15 @@ const DateTime = ({ value, format, className, fromNow, withTitle, titleFormat, t
93
93
  const locale = reactDateAndTimeHooks.useLocale();
94
94
  const nowDate = React.useMemo(() => new Date(), []);
95
95
  const date = value ? dateAndTimeUtils.toDateUtil(value) : nowDate;
96
- const newDateTime = dateAndTimeUtils.formatDateUtil(date, format, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale);
97
- const titleDateTime = withTitle ? dateAndTimeUtils.formatDateUtil(date, titleFormat, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale) : undefined;
96
+ const newDateTime = dateAndTimeUtils.formatDateUtil(date, format, timezone?.id, locale);
97
+ const titleDateTime = withTitle ? dateAndTimeUtils.formatDateUtil(date, titleFormat, timezone?.id, locale) : undefined;
98
98
  const getTimeSince = React.useCallback((from, to) => {
99
99
  const same = dateAndTimeUtils.isEqualUtil(from, to);
100
100
  if (same) {
101
101
  return t("dateTime.instant.now");
102
102
  }
103
- return dateAndTimeUtils.timeSinceAuto(from, to, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale);
104
- }, [locale, t, timezone === null || timezone === void 0 ? void 0 : timezone.id]);
103
+ return dateAndTimeUtils.timeSinceAuto(from, to, timezone?.id, locale);
104
+ }, [locale, t, timezone?.id]);
105
105
  const dateValue = React.useMemo(() => {
106
106
  return fromNow ? getTimeSince(date, nowDate) : newDateTime;
107
107
  }, [date, fromNow, getTimeSince, newDateTime, nowDate]);
@@ -169,7 +169,7 @@ const DayPicker = ({ onDaySelect, disabledDays, selectedDays, language, classNam
169
169
  * @returns {JSX.Element} DayRangePicker component
170
170
  */
171
171
  const DayRangePicker = ({ onRangeSelect, selectedDays, disabledDays, dataTestId, language, className, max, showQuickOptions, timezone, onClose, }) => {
172
- const [newRange, setNewRange] = React.useState(selectedDays !== null && selectedDays !== void 0 ? selectedDays : { from: undefined, to: undefined });
172
+ const [newRange, setNewRange] = React.useState(selectedDays ?? { from: undefined, to: undefined });
173
173
  const [t] = useTranslation();
174
174
  const locale = useLocale(language);
175
175
  React.useEffect(() => {
@@ -287,7 +287,7 @@ const DayRangePickerPopover = ({ interval = { from: undefined, to: undefined },
287
287
  onRangeSelect(range);
288
288
  }
289
289
  }, [onRangeSelect]);
290
- return (jsxRuntime.jsxs(reactComponents.Popover, { placement: placement, children: [jsxRuntime.jsx(reactComponents.PopoverTrigger, { children: jsxRuntime.jsx(reactComponents.Button, { className: className, dataTestId: dataTestId !== null && dataTestId !== void 0 ? dataTestId : "show-date-range", disabled: disabled, fullWidth: fullwidth, size: size, suffix: jsxRuntime.jsx(reactComponents.Icon, { ariaLabel: t("dayRangePickerPopover.icon.tooltip.calendar"), name: "Calendar", size: "small" }), variant: variant, children: buttonContent }) }), jsxRuntime.jsx(reactComponents.PopoverContent, { children: close => (jsxRuntime.jsx(reactComponents.Card, { className: "min-w-min p-4", dataTestId: "range-popover-list", children: jsxRuntime.jsx(DayRangePicker, { disabledDays: disabledDays, language: language || "en", max: max, onClose: close, onRangeSelect: handleOnRangeSelect, selectedDays: interval, showQuickOptions: showQuickOptions, timezone: timezone }) })) })] }));
290
+ return (jsxRuntime.jsxs(reactComponents.Popover, { placement: placement, children: [jsxRuntime.jsx(reactComponents.PopoverTrigger, { children: jsxRuntime.jsx(reactComponents.Button, { className: className, dataTestId: dataTestId ?? "show-date-range", disabled: disabled, fullWidth: fullwidth, size: size, suffix: jsxRuntime.jsx(reactComponents.Icon, { ariaLabel: t("dayRangePickerPopover.icon.tooltip.calendar"), name: "Calendar", size: "small" }), variant: variant, children: buttonContent }) }), jsxRuntime.jsx(reactComponents.PopoverContent, { children: close => (jsxRuntime.jsx(reactComponents.Card, { className: "min-w-min p-4", dataTestId: "range-popover-list", children: jsxRuntime.jsx(DayRangePicker, { disabledDays: disabledDays, language: language || "en", max: max, onClose: close, onRangeSelect: handleOnRangeSelect, selectedDays: interval, showQuickOptions: showQuickOptions, timezone: timezone }) })) })] }));
291
291
  };
292
292
 
293
293
  const cvaTimelineElement = cssClassVarianceUtilities.cvaMerge([
@@ -378,7 +378,6 @@ const cvaTimelineElementTime = cssClassVarianceUtilities.cvaMerge([
378
378
  * @returns {JSX.Element} Timeline component
379
379
  */
380
380
  const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, toggleButton, }) => {
381
- var _a;
382
381
  const ref = React.useRef(null);
383
382
  const [isOpen, setIsOpen] = React.useState(false);
384
383
  const { formatDate, formatRange } = reactDateAndTimeHooks.useDateAndTime();
@@ -389,9 +388,9 @@ const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, t
389
388
  const childProps = React.isValidElement(firstChild) ? firstChild.props : {};
390
389
  const lastChild = remainingChildren.pop();
391
390
  const middleChildren = remainingChildren;
392
- const renderToggleButton = () => (jsxRuntime.jsxs("div", { className: cvaTimelineElement(), children: [(childProps === null || childProps === void 0 ? void 0 : childProps.date) ? (jsxRuntime.jsx("div", { className: cvaTimelineElementTime({
391
+ const renderToggleButton = () => (jsxRuntime.jsxs("div", { className: cvaTimelineElement(), children: [childProps?.date ? (jsxRuntime.jsx("div", { className: cvaTimelineElementTime({
393
392
  width: hourCycle === "h12" || hourCycle === "h11" ? "large" : "small",
394
- }) })) : null, jsxRuntime.jsx("div", { className: cvaDotWrapper(), children: jsxRuntime.jsx("div", { className: cvaLine({ lineStyle: childProps === null || childProps === void 0 ? void 0 : childProps.lineStyle }) }) }), jsxRuntime.jsxs("div", { className: "flex text-sm text-secondary-500 cursor-pointer items-center min-h-8 hover:text-secondary-600", "data-testid": "timeline-toggle-btn", onClick: () => setIsOpen(!isOpen), children: [jsxRuntime.jsx(reactComponents.Icon, { className: cvaToggleBtnIcon({ rotated: isOpen }), name: "ChevronDown", size: "small" }), jsxRuntime.jsx("span", { children: isOpen ? toggleButton === null || toggleButton === void 0 ? void 0 : toggleButton.collapsedLabel : toggleButton === null || toggleButton === void 0 ? void 0 : toggleButton.expandedLabel })] })] }));
393
+ }) })) : null, jsxRuntime.jsx("div", { className: cvaDotWrapper(), children: jsxRuntime.jsx("div", { className: cvaLine({ lineStyle: childProps?.lineStyle }) }) }), jsxRuntime.jsxs("div", { className: "flex text-sm text-secondary-500 cursor-pointer items-center min-h-8 hover:text-secondary-600", "data-testid": "timeline-toggle-btn", onClick: () => setIsOpen(!isOpen), children: [jsxRuntime.jsx(reactComponents.Icon, { className: cvaToggleBtnIcon({ rotated: isOpen }), name: "ChevronDown", size: "small" }), jsxRuntime.jsx("span", { children: isOpen ? toggleButton?.collapsedLabel : toggleButton?.expandedLabel })] })] }));
395
394
  const renderDateHeader = () => {
396
395
  if (!dateHeader) {
397
396
  return null;
@@ -402,7 +401,7 @@ const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, t
402
401
  const { date, dateRange, showTime } = dateHeader;
403
402
  return (jsxRuntime.jsx("div", { className: "pb-4", "data-testid": "timeline-date-header", children: date ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(reactComponents.Text, { size: "medium", type: "span", weight: "thick", children: formatDate(date, { selectFormat: !showTime ? "dateOnly" : undefined }) }), jsxRuntime.jsx(reactComponents.Text, { className: "text-secondary-500", size: "medium", type: "span", weight: "thick", children: ` (${dateAndTimeUtils.timeSinceAuto(date, new Date())})` })] })) : (jsxRuntime.jsx(reactComponents.Text, { className: "pr-1", size: "medium", type: "span", weight: "thick", children: formatRange(dateRange, { dateStyle: !showTime ? "medium" : undefined }) })) }));
404
403
  };
405
- return (jsxRuntime.jsxs("div", { className: className, "data-testid": dataTestId, children: [renderDateHeader(), customHeader ? jsxRuntime.jsx("div", { className: "pb-4 font-semibold text-sm", children: customHeader }) : null, toggleButton && middleChildren.length > 0 ? (jsxRuntime.jsxs("div", { children: [firstChild, middleChildren.length > 0 ? renderToggleButton() : null, jsxRuntime.jsxs("div", { "aria-hidden": !isOpen, className: "transition-all duration-300 overflow-hidden", ref: ref, style: { height: isOpen ? `${(_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollHeight}px` : "0px" }, children: [jsxRuntime.jsx("div", {}), middleChildren, jsxRuntime.jsx("div", {})] }), lastChild] })) : (jsxRuntime.jsx("div", { children: children }))] }));
404
+ return (jsxRuntime.jsxs("div", { className: className, "data-testid": dataTestId, children: [renderDateHeader(), customHeader ? jsxRuntime.jsx("div", { className: "pb-4 font-semibold text-sm", children: customHeader }) : null, toggleButton && middleChildren.length > 0 ? (jsxRuntime.jsxs("div", { children: [firstChild, middleChildren.length > 0 ? renderToggleButton() : null, jsxRuntime.jsxs("div", { "aria-hidden": !isOpen, className: "transition-all duration-300 overflow-hidden", ref: ref, style: { height: isOpen ? `${ref.current?.scrollHeight}px` : "0px" }, children: [jsxRuntime.jsx("div", {}), middleChildren, jsxRuntime.jsx("div", {})] }), lastChild] })) : (jsxRuntime.jsx("div", { children: children }))] }));
406
405
  };
407
406
 
408
407
  /**
@@ -438,7 +437,7 @@ const renderDate = (formattedDate, locale) => {
438
437
  return (jsxRuntime.jsx("div", { className: "pt-2 items-center", children: timelineElementTime(formattedDate, locale) }));
439
438
  };
440
439
  const renderDot = (customDot, isHovered, selected) => {
441
- return (customDot === null || customDot === void 0 ? void 0 : customDot.name)
440
+ return customDot?.name
442
441
  ? customDotElement(customDot.name, isHovered, selected, customDot.color)
443
442
  : defaultDot(isHovered, selected);
444
443
  };
package/index.esm.js CHANGED
@@ -91,15 +91,15 @@ const DateTime = ({ value, format, className, fromNow, withTitle, titleFormat, t
91
91
  const locale = useLocale$1();
92
92
  const nowDate = useMemo(() => new Date(), []);
93
93
  const date = value ? toDateUtil(value) : nowDate;
94
- const newDateTime = formatDateUtil(date, format, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale);
95
- const titleDateTime = withTitle ? formatDateUtil(date, titleFormat, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale) : undefined;
94
+ const newDateTime = formatDateUtil(date, format, timezone?.id, locale);
95
+ const titleDateTime = withTitle ? formatDateUtil(date, titleFormat, timezone?.id, locale) : undefined;
96
96
  const getTimeSince = useCallback((from, to) => {
97
97
  const same = isEqualUtil(from, to);
98
98
  if (same) {
99
99
  return t("dateTime.instant.now");
100
100
  }
101
- return timeSinceAuto(from, to, timezone === null || timezone === void 0 ? void 0 : timezone.id, locale);
102
- }, [locale, t, timezone === null || timezone === void 0 ? void 0 : timezone.id]);
101
+ return timeSinceAuto(from, to, timezone?.id, locale);
102
+ }, [locale, t, timezone?.id]);
103
103
  const dateValue = useMemo(() => {
104
104
  return fromNow ? getTimeSince(date, nowDate) : newDateTime;
105
105
  }, [date, fromNow, getTimeSince, newDateTime, nowDate]);
@@ -167,7 +167,7 @@ const DayPicker = ({ onDaySelect, disabledDays, selectedDays, language, classNam
167
167
  * @returns {JSX.Element} DayRangePicker component
168
168
  */
169
169
  const DayRangePicker = ({ onRangeSelect, selectedDays, disabledDays, dataTestId, language, className, max, showQuickOptions, timezone, onClose, }) => {
170
- const [newRange, setNewRange] = useState(selectedDays !== null && selectedDays !== void 0 ? selectedDays : { from: undefined, to: undefined });
170
+ const [newRange, setNewRange] = useState(selectedDays ?? { from: undefined, to: undefined });
171
171
  const [t] = useTranslation();
172
172
  const locale = useLocale(language);
173
173
  useEffect(() => {
@@ -285,7 +285,7 @@ const DayRangePickerPopover = ({ interval = { from: undefined, to: undefined },
285
285
  onRangeSelect(range);
286
286
  }
287
287
  }, [onRangeSelect]);
288
- return (jsxs(Popover, { placement: placement, children: [jsx(PopoverTrigger, { children: jsx(Button, { className: className, dataTestId: dataTestId !== null && dataTestId !== void 0 ? dataTestId : "show-date-range", disabled: disabled, fullWidth: fullwidth, size: size, suffix: jsx(Icon, { ariaLabel: t("dayRangePickerPopover.icon.tooltip.calendar"), name: "Calendar", size: "small" }), variant: variant, children: buttonContent }) }), jsx(PopoverContent, { children: close => (jsx(Card, { className: "min-w-min p-4", dataTestId: "range-popover-list", children: jsx(DayRangePicker, { disabledDays: disabledDays, language: language || "en", max: max, onClose: close, onRangeSelect: handleOnRangeSelect, selectedDays: interval, showQuickOptions: showQuickOptions, timezone: timezone }) })) })] }));
288
+ return (jsxs(Popover, { placement: placement, children: [jsx(PopoverTrigger, { children: jsx(Button, { className: className, dataTestId: dataTestId ?? "show-date-range", disabled: disabled, fullWidth: fullwidth, size: size, suffix: jsx(Icon, { ariaLabel: t("dayRangePickerPopover.icon.tooltip.calendar"), name: "Calendar", size: "small" }), variant: variant, children: buttonContent }) }), jsx(PopoverContent, { children: close => (jsx(Card, { className: "min-w-min p-4", dataTestId: "range-popover-list", children: jsx(DayRangePicker, { disabledDays: disabledDays, language: language || "en", max: max, onClose: close, onRangeSelect: handleOnRangeSelect, selectedDays: interval, showQuickOptions: showQuickOptions, timezone: timezone }) })) })] }));
289
289
  };
290
290
 
291
291
  const cvaTimelineElement = cvaMerge([
@@ -376,7 +376,6 @@ const cvaTimelineElementTime = cvaMerge([
376
376
  * @returns {JSX.Element} Timeline component
377
377
  */
378
378
  const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, toggleButton, }) => {
379
- var _a;
380
379
  const ref = useRef(null);
381
380
  const [isOpen, setIsOpen] = useState(false);
382
381
  const { formatDate, formatRange } = useDateAndTime();
@@ -387,9 +386,9 @@ const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, t
387
386
  const childProps = React.isValidElement(firstChild) ? firstChild.props : {};
388
387
  const lastChild = remainingChildren.pop();
389
388
  const middleChildren = remainingChildren;
390
- const renderToggleButton = () => (jsxs("div", { className: cvaTimelineElement(), children: [(childProps === null || childProps === void 0 ? void 0 : childProps.date) ? (jsx("div", { className: cvaTimelineElementTime({
389
+ const renderToggleButton = () => (jsxs("div", { className: cvaTimelineElement(), children: [childProps?.date ? (jsx("div", { className: cvaTimelineElementTime({
391
390
  width: hourCycle === "h12" || hourCycle === "h11" ? "large" : "small",
392
- }) })) : null, jsx("div", { className: cvaDotWrapper(), children: jsx("div", { className: cvaLine({ lineStyle: childProps === null || childProps === void 0 ? void 0 : childProps.lineStyle }) }) }), jsxs("div", { className: "flex text-sm text-secondary-500 cursor-pointer items-center min-h-8 hover:text-secondary-600", "data-testid": "timeline-toggle-btn", onClick: () => setIsOpen(!isOpen), children: [jsx(Icon, { className: cvaToggleBtnIcon({ rotated: isOpen }), name: "ChevronDown", size: "small" }), jsx("span", { children: isOpen ? toggleButton === null || toggleButton === void 0 ? void 0 : toggleButton.collapsedLabel : toggleButton === null || toggleButton === void 0 ? void 0 : toggleButton.expandedLabel })] })] }));
391
+ }) })) : null, jsx("div", { className: cvaDotWrapper(), children: jsx("div", { className: cvaLine({ lineStyle: childProps?.lineStyle }) }) }), jsxs("div", { className: "flex text-sm text-secondary-500 cursor-pointer items-center min-h-8 hover:text-secondary-600", "data-testid": "timeline-toggle-btn", onClick: () => setIsOpen(!isOpen), children: [jsx(Icon, { className: cvaToggleBtnIcon({ rotated: isOpen }), name: "ChevronDown", size: "small" }), jsx("span", { children: isOpen ? toggleButton?.collapsedLabel : toggleButton?.expandedLabel })] })] }));
393
392
  const renderDateHeader = () => {
394
393
  if (!dateHeader) {
395
394
  return null;
@@ -400,7 +399,7 @@ const Timeline = ({ className, dataTestId, children, dateHeader, customHeader, t
400
399
  const { date, dateRange, showTime } = dateHeader;
401
400
  return (jsx("div", { className: "pb-4", "data-testid": "timeline-date-header", children: date ? (jsxs(Fragment, { children: [jsx(Text, { size: "medium", type: "span", weight: "thick", children: formatDate(date, { selectFormat: !showTime ? "dateOnly" : undefined }) }), jsx(Text, { className: "text-secondary-500", size: "medium", type: "span", weight: "thick", children: ` (${timeSinceAuto(date, new Date())})` })] })) : (jsx(Text, { className: "pr-1", size: "medium", type: "span", weight: "thick", children: formatRange(dateRange, { dateStyle: !showTime ? "medium" : undefined }) })) }));
402
401
  };
403
- return (jsxs("div", { className: className, "data-testid": dataTestId, children: [renderDateHeader(), customHeader ? jsx("div", { className: "pb-4 font-semibold text-sm", children: customHeader }) : null, toggleButton && middleChildren.length > 0 ? (jsxs("div", { children: [firstChild, middleChildren.length > 0 ? renderToggleButton() : null, jsxs("div", { "aria-hidden": !isOpen, className: "transition-all duration-300 overflow-hidden", ref: ref, style: { height: isOpen ? `${(_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollHeight}px` : "0px" }, children: [jsx("div", {}), middleChildren, jsx("div", {})] }), lastChild] })) : (jsx("div", { children: children }))] }));
402
+ return (jsxs("div", { className: className, "data-testid": dataTestId, children: [renderDateHeader(), customHeader ? jsx("div", { className: "pb-4 font-semibold text-sm", children: customHeader }) : null, toggleButton && middleChildren.length > 0 ? (jsxs("div", { children: [firstChild, middleChildren.length > 0 ? renderToggleButton() : null, jsxs("div", { "aria-hidden": !isOpen, className: "transition-all duration-300 overflow-hidden", ref: ref, style: { height: isOpen ? `${ref.current?.scrollHeight}px` : "0px" }, children: [jsx("div", {}), middleChildren, jsx("div", {})] }), lastChild] })) : (jsx("div", { children: children }))] }));
404
403
  };
405
404
 
406
405
  /**
@@ -436,7 +435,7 @@ const renderDate = (formattedDate, locale) => {
436
435
  return (jsx("div", { className: "pt-2 items-center", children: timelineElementTime(formattedDate, locale) }));
437
436
  };
438
437
  const renderDot = (customDot, isHovered, selected) => {
439
- return (customDot === null || customDot === void 0 ? void 0 : customDot.name)
438
+ return customDot?.name
440
439
  ? customDotElement(customDot.name, isHovered, selected, customDot.color)
441
440
  : defaultDot(isHovered, selected);
442
441
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/react-date-and-time-components",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -12,7 +12,7 @@
12
12
  "tailwind-merge": "^2.0.0",
13
13
  "react": "18.3.1",
14
14
  "@trackunit/react-components": "^1.0.13",
15
- "@trackunit/react-date-and-time-hooks": "^1.0.7",
15
+ "@trackunit/react-date-and-time-hooks": "^1.0.8",
16
16
  "@trackunit/react-core-hooks": "^1.0.5",
17
17
  "@trackunit/date-and-time-utils": "^1.0.1",
18
18
  "@trackunit/css-class-variance-utilities": "^1.0.1",