@trackunit/filters-filter-bar 0.0.295-alpha-1f3fb7cf8b5.0 → 0.0.295

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
@@ -13,7 +13,6 @@ var reactFilterComponents = require('@trackunit/react-filter-components');
13
13
  var reactCoreHooks = require('@trackunit/react-core-hooks');
14
14
  var reactCoreContextsApi = require('@trackunit/react-core-contexts-api');
15
15
  var reactFormComponents = require('@trackunit/react-form-components');
16
- var dateAndTimeComponents = require('@trackunit/date-and-time-components');
17
16
  var dequal = require('dequal');
18
17
  var isEqual = require('lodash/isEqual');
19
18
 
@@ -703,12 +702,18 @@ const formatToJustDate = (date) => {
703
702
  *
704
703
  * @param {DefaultFilterProps<DateRangeValue>} props - The properties required for the `DefaultDateRangeFilter` component.
705
704
  */
706
- const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue, showQuickOptions }) => {
705
+ const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue, }) => {
706
+ var _a, _b;
707
707
  const [t] = useTranslation();
708
+ const [fromDateValue, setFromDateValue] = react.useState((_a = value === null || value === void 0 ? void 0 : value.from) !== null && _a !== void 0 ? _a : undefined);
709
+ const [toDateValue, setToDateValue] = react.useState((_b = value === null || value === void 0 ? void 0 : value.to) !== null && _b !== void 0 ? _b : undefined);
708
710
  const hasSelection = [value === null || value === void 0 ? void 0 : value.from, value === null || value === void 0 ? void 0 : value.to].some(val => sharedUtils.nonNullable(val));
709
711
  const reset = () => {
712
+ var _a, _b;
710
713
  // The Types for DefaultFilterProps and FilterDefinition could probably be improved to avoid this check
711
714
  if (filterDefinition.type === "dateRange") {
715
+ setFromDateValue((_a = filterDefinition.defaultValue) === null || _a === void 0 ? void 0 : _a.from);
716
+ setToDateValue((_b = filterDefinition.defaultValue) === null || _b === void 0 ? void 0 : _b.to);
712
717
  setValue(() => {
713
718
  var _a, _b;
714
719
  return ({
@@ -717,24 +722,29 @@ const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue,
717
722
  });
718
723
  });
719
724
  }
720
- else {
721
- setValue(() => ({ from: undefined, to: undefined }));
722
- }
725
+ setFromDateValue(undefined);
726
+ setToDateValue(undefined);
727
+ setValue(() => ({ from: undefined, to: undefined }));
728
+ };
729
+ const cancel = () => {
730
+ setFromDateValue(value === null || value === void 0 ? void 0 : value.from);
731
+ setToDateValue(value === null || value === void 0 ? void 0 : value.to);
723
732
  };
724
733
  const { logEvent } = reactCoreHooks.useAnalytics(FilterEvents);
725
- const handleApply = (fromDateValue, toDateValue) => {
734
+ const handleApply = () => {
726
735
  logEvent("FilterApplied", {
727
736
  type: filterName !== null && filterName !== void 0 ? filterName : `${sharedUtils.capitalize(filterDefinition.filterKey)}Filter`,
728
737
  value: JSON.stringify({ from: fromDateValue, to: toDateValue }),
729
738
  });
730
739
  setValue(() => ({ from: fromDateValue, to: toDateValue }));
731
740
  };
732
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(reactFilterComponents.FilterHeader, { onReset: reset, resetLabel: t("filtersBar.resetFilter"), showReset: hasSelection, title: filterDefinition.title }), jsxRuntime.jsx(reactFilterComponents.FilterBody, { children: jsxRuntime.jsx("div", { className: "flex gap-4 px-1", children: jsxRuntime.jsx(dateAndTimeComponents.DayRangePicker, { language: "en", onRangeSelect: dateRange => {
733
- handleApply(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.from), formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.to));
734
- }, selectedDays: {
735
- from: (value === null || value === void 0 ? void 0 : value.from) ? new Date(value.from) : undefined,
736
- to: (value === null || value === void 0 ? void 0 : value.to) ? new Date(value.to) : undefined,
737
- }, showQuickOptions: showQuickOptions }) }) })] }));
741
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(reactFilterComponents.FilterHeader, { onReset: reset, resetLabel: t("filtersBar.resetFilter"), showReset: hasSelection, title: filterDefinition.title }), jsxRuntime.jsxs(reactFilterComponents.FilterBody, { children: [jsxRuntime.jsx("div", { className: "flex gap-4 px-1", children: jsxRuntime.jsx(reactComponents.DayRangePicker, { language: "en", onRangeSelect: dateRange => {
742
+ setFromDateValue(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.from));
743
+ setToDateValue(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.to));
744
+ }, selectedDays: {
745
+ from: fromDateValue ? new Date(fromDateValue) : undefined,
746
+ to: toDateValue ? new Date(toDateValue) : undefined,
747
+ } }) }), jsxRuntime.jsx(reactFilterComponents.FilterFooter, { children: jsxRuntime.jsxs("div", { className: "flex gap-2", children: [jsxRuntime.jsx(reactComponents.Button, { onClick: cancel, size: "small", variant: "secondary", children: t("filtersBar.defaultDateRangeFilters.cancel") }), jsxRuntime.jsx(reactComponents.Button, { onClick: handleApply, size: "small", children: t("filtersBar.defaultDateRangeFilters.apply") })] }) })] })] }));
738
748
  };
739
749
 
740
750
  /**
package/index.esm.js CHANGED
@@ -2,14 +2,13 @@ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { registerTranslations, useNamespaceTranslation } from '@trackunit/i18n-library-translation';
3
3
  import { twMerge } from 'tailwind-merge';
4
4
  import { cvaMerge } from '@trackunit/css-class-variance-utilities';
5
- import { Button, Popover, PopoverTrigger, IconButton, Icon, PopoverContent, MenuList, Text, StarButton, useResize, Collapse, VirtualizedList } from '@trackunit/react-components';
5
+ import { Button, Popover, PopoverTrigger, IconButton, Icon, PopoverContent, MenuList, Text, StarButton, useResize, Collapse, VirtualizedList, DayRangePicker } from '@trackunit/react-components';
6
6
  import { objectValues, truthy, capitalize as capitalize$1, nonNullable } from '@trackunit/shared-utils';
7
7
  import { useMemo, useState, Fragment as Fragment$1, useRef, useEffect, useCallback } from 'react';
8
8
  import { Filter as Filter$1, FilterBody, RadioFilterItem, CheckBoxFilterItem, FilterHeader as FilterHeader$1, FilterFooter } from '@trackunit/react-filter-components';
9
9
  import { useAnalytics, useTextSearch } from '@trackunit/react-core-hooks';
10
10
  import { createEvent } from '@trackunit/react-core-contexts-api';
11
11
  import { Search, NumberField, RadioGroup } from '@trackunit/react-form-components';
12
- import { DayRangePicker } from '@trackunit/date-and-time-components';
13
12
  import { dequal } from 'dequal';
14
13
  import isEqual from 'lodash/isEqual';
15
14
 
@@ -695,12 +694,18 @@ const formatToJustDate = (date) => {
695
694
  *
696
695
  * @param {DefaultFilterProps<DateRangeValue>} props - The properties required for the `DefaultDateRangeFilter` component.
697
696
  */
698
- const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue, showQuickOptions }) => {
697
+ const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue, }) => {
698
+ var _a, _b;
699
699
  const [t] = useTranslation();
700
+ const [fromDateValue, setFromDateValue] = useState((_a = value === null || value === void 0 ? void 0 : value.from) !== null && _a !== void 0 ? _a : undefined);
701
+ const [toDateValue, setToDateValue] = useState((_b = value === null || value === void 0 ? void 0 : value.to) !== null && _b !== void 0 ? _b : undefined);
700
702
  const hasSelection = [value === null || value === void 0 ? void 0 : value.from, value === null || value === void 0 ? void 0 : value.to].some(val => nonNullable(val));
701
703
  const reset = () => {
704
+ var _a, _b;
702
705
  // The Types for DefaultFilterProps and FilterDefinition could probably be improved to avoid this check
703
706
  if (filterDefinition.type === "dateRange") {
707
+ setFromDateValue((_a = filterDefinition.defaultValue) === null || _a === void 0 ? void 0 : _a.from);
708
+ setToDateValue((_b = filterDefinition.defaultValue) === null || _b === void 0 ? void 0 : _b.to);
704
709
  setValue(() => {
705
710
  var _a, _b;
706
711
  return ({
@@ -709,24 +714,29 @@ const DefaultDateRangeFilter = ({ filterDefinition, filterName, value, setValue,
709
714
  });
710
715
  });
711
716
  }
712
- else {
713
- setValue(() => ({ from: undefined, to: undefined }));
714
- }
717
+ setFromDateValue(undefined);
718
+ setToDateValue(undefined);
719
+ setValue(() => ({ from: undefined, to: undefined }));
720
+ };
721
+ const cancel = () => {
722
+ setFromDateValue(value === null || value === void 0 ? void 0 : value.from);
723
+ setToDateValue(value === null || value === void 0 ? void 0 : value.to);
715
724
  };
716
725
  const { logEvent } = useAnalytics(FilterEvents);
717
- const handleApply = (fromDateValue, toDateValue) => {
726
+ const handleApply = () => {
718
727
  logEvent("FilterApplied", {
719
728
  type: filterName !== null && filterName !== void 0 ? filterName : `${capitalize$1(filterDefinition.filterKey)}Filter`,
720
729
  value: JSON.stringify({ from: fromDateValue, to: toDateValue }),
721
730
  });
722
731
  setValue(() => ({ from: fromDateValue, to: toDateValue }));
723
732
  };
724
- return (jsxs(Fragment, { children: [jsx(FilterHeader$1, { onReset: reset, resetLabel: t("filtersBar.resetFilter"), showReset: hasSelection, title: filterDefinition.title }), jsx(FilterBody, { children: jsx("div", { className: "flex gap-4 px-1", children: jsx(DayRangePicker, { language: "en", onRangeSelect: dateRange => {
725
- handleApply(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.from), formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.to));
726
- }, selectedDays: {
727
- from: (value === null || value === void 0 ? void 0 : value.from) ? new Date(value.from) : undefined,
728
- to: (value === null || value === void 0 ? void 0 : value.to) ? new Date(value.to) : undefined,
729
- }, showQuickOptions: showQuickOptions }) }) })] }));
733
+ return (jsxs(Fragment, { children: [jsx(FilterHeader$1, { onReset: reset, resetLabel: t("filtersBar.resetFilter"), showReset: hasSelection, title: filterDefinition.title }), jsxs(FilterBody, { children: [jsx("div", { className: "flex gap-4 px-1", children: jsx(DayRangePicker, { language: "en", onRangeSelect: dateRange => {
734
+ setFromDateValue(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.from));
735
+ setToDateValue(formatToJustDate(dateRange === null || dateRange === void 0 ? void 0 : dateRange.to));
736
+ }, selectedDays: {
737
+ from: fromDateValue ? new Date(fromDateValue) : undefined,
738
+ to: toDateValue ? new Date(toDateValue) : undefined,
739
+ } }) }), jsx(FilterFooter, { children: jsxs("div", { className: "flex gap-2", children: [jsx(Button, { onClick: cancel, size: "small", variant: "secondary", children: t("filtersBar.defaultDateRangeFilters.cancel") }), jsx(Button, { onClick: handleApply, size: "small", children: t("filtersBar.defaultDateRangeFilters.apply") })] }) })] })] }));
730
740
  };
731
741
 
732
742
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-filter-bar",
3
- "version": "0.0.295-alpha-1f3fb7cf8b5.0",
3
+ "version": "0.0.295",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -19,8 +19,7 @@
19
19
  "@trackunit/react-core-contexts-api": "*",
20
20
  "@trackunit/i18n-library-translation": "*",
21
21
  "@trackunit/css-class-variance-utilities": "*",
22
- "tailwind-merge": "^2.0.0",
23
- "@trackunit/date-and-time-components": "*"
22
+ "tailwind-merge": "^2.0.0"
24
23
  },
25
24
  "module": "./index.esm.js",
26
25
  "main": "./index.cjs.js"
@@ -1,18 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { DateRangeValue } from "../types/FilterTypes";
3
3
  import { DefaultFilterProps } from "./DefaultFilterTypes";
4
- import { ShowQuickOption } from "@trackunit/date-and-time-components";
5
- interface DefaultDateRangeFilterProps extends DefaultFilterProps<DateRangeValue> {
6
- /**
7
- * Display quick options buttons above calendar which will preselect date range
8
- */
9
- showQuickOptions?: ShowQuickOption;
10
- }
11
4
  /**
12
5
  * `DefaultDateRangeFilter` is a React component for handling date range filters.
13
6
  * Formats the date range as YYYY-MM-DD - YYYY-MM-DD
14
7
  *
15
8
  * @param {DefaultFilterProps<DateRangeValue>} props - The properties required for the `DefaultDateRangeFilter` component.
16
9
  */
17
- export declare const DefaultDateRangeFilter: ({ filterDefinition, filterName, value, setValue, showQuickOptions }: DefaultDateRangeFilterProps) => JSX.Element;
18
- export {};
10
+ export declare const DefaultDateRangeFilter: ({ filterDefinition, filterName, value, setValue, }: DefaultFilterProps<DateRangeValue>) => JSX.Element;