@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 +22 -12
- package/index.esm.js +23 -13
- package/package.json +2 -3
- package/src/lib/components/DefaultDateRangeFilter.d.ts +1 -9
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,
|
|
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
|
-
|
|
721
|
-
|
|
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 = (
|
|
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.
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
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,
|
|
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
|
-
|
|
713
|
-
|
|
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 = (
|
|
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 }),
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
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
|
|
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,
|
|
18
|
-
export {};
|
|
10
|
+
export declare const DefaultDateRangeFilter: ({ filterDefinition, filterName, value, setValue, }: DefaultFilterProps<DateRangeValue>) => JSX.Element;
|