@trackunit/filters-filter-bar 1.25.1 → 1.25.3
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
|
@@ -450,9 +450,9 @@ const ResetFiltersButtonWithIcon = ({ resetFiltersToInitialState, "data-testid":
|
|
|
450
450
|
/**
|
|
451
451
|
*
|
|
452
452
|
*/
|
|
453
|
-
const AppliedFiltersRenderer = ({ appliedFilters, filterBarConfig, showResetButton = true, }) => {
|
|
453
|
+
const AppliedFiltersRenderer = ({ appliedFilters, filterBarConfig, showResetButton = true, style, }) => {
|
|
454
454
|
const filtersToRender = react.useMemo(() => appliedFilters.filter(filter => !filter.showDirectly), [appliedFilters]);
|
|
455
|
-
return (jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [filtersToRender.length > 0 ? (jsxRuntime.jsx("div", { className: "h-4 w-[1px] bg-neutral-300", "data-testid": "applied-filters-buttons" })) : null, jsxRuntime.jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: filtersToRender }), appliedFilters.length > 0 && showResetButton ? (jsxRuntime.jsx(ResetFiltersButtonWithIcon, { resetFiltersToInitialState: filterBarConfig.resetFiltersToInitialState })) : null] }));
|
|
455
|
+
return (jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", style: style, children: [filtersToRender.length > 0 ? (jsxRuntime.jsx("div", { className: "h-4 w-[1px] bg-neutral-300", "data-testid": "applied-filters-buttons" })) : null, jsxRuntime.jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: filtersToRender }), appliedFilters.length > 0 && showResetButton ? (jsxRuntime.jsx(ResetFiltersButtonWithIcon, { resetFiltersToInitialState: filterBarConfig.resetFiltersToInitialState })) : null] }));
|
|
456
456
|
};
|
|
457
457
|
|
|
458
458
|
/**
|
|
@@ -907,8 +907,8 @@ const useFiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters =
|
|
|
907
907
|
*
|
|
908
908
|
* @returns {ReactElement} - Returns the FiltersList component.
|
|
909
909
|
*/
|
|
910
|
-
const GroupedFiltersList = ({ filterBarConfig, filtersGrouped, className, "data-testid": dataTestId = "grouped-filters-list", }) => {
|
|
911
|
-
return (jsxRuntime.jsx("div", { className: className, "data-testid": dataTestId, role: "menu", children: filtersGrouped.map((group, idx) => {
|
|
910
|
+
const GroupedFiltersList = ({ filterBarConfig, filtersGrouped, className, style, "data-testid": dataTestId = "grouped-filters-list", }) => {
|
|
911
|
+
return (jsxRuntime.jsx("div", { className: className, "data-testid": dataTestId, role: "menu", style: style, children: filtersGrouped.map((group, idx) => {
|
|
912
912
|
const isLastGroup = idx === filtersGrouped.length - 1;
|
|
913
913
|
return (jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [jsxRuntime.jsxs("div", { children: [filtersGrouped.length > 1 && (jsxRuntime.jsx(reactComponents.Text, { className: "h-7 px-3 py-2 text-neutral-400", "data-testid": `${group.key}-group-title`, size: "small", uppercase: true, weight: "bold", children: group.title })), jsxRuntime.jsx("ul", { "aria-labelledby": `${group.key}-group-title`, className: "grid", "data-testid": `${group.key}-group-list`, children: jsxRuntime.jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: group.filters, visualStyle: "list-item" }) })] }), isLastGroup ? null : jsxRuntime.jsx("div", { className: "h-[1px] w-full bg-neutral-200", role: "separator" })] }, group.key));
|
|
914
914
|
}) }));
|
|
@@ -1069,7 +1069,7 @@ const MultipleFilterTooltipLabel = ({ filterBarConfig, filterKeys, filters, }) =
|
|
|
1069
1069
|
* @template TFilterBarDefinition - The type representing the filter bar definition.
|
|
1070
1070
|
* @returns {ReactElement} - Returns the FilterMenu component.
|
|
1071
1071
|
*/
|
|
1072
|
-
const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], compact = false, title, "data-testid": dataTestId = "filters-menu", className, buttonProps, allowShowFiltersDirectly = true, includeFilterKeys, }) => {
|
|
1072
|
+
const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], compact = false, title, "data-testid": dataTestId = "filters-menu", className, style, buttonProps, allowShowFiltersDirectly = true, includeFilterKeys, }) => {
|
|
1073
1073
|
const [t] = useTranslation();
|
|
1074
1074
|
const [showCustomFilters, setShowCustomFilters] = react.useState(false);
|
|
1075
1075
|
const { isSm } = reactComponents.useViewportBreakpoints();
|
|
@@ -1091,7 +1091,7 @@ const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [],
|
|
|
1091
1091
|
includeFilterKeys,
|
|
1092
1092
|
allowShowFiltersDirectly,
|
|
1093
1093
|
});
|
|
1094
|
-
return (jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex items-start gap-2", className), "data-testid": dataTestId, children: [jsxRuntime.jsx(reactComponents.Popover, { onOpenStateChange: open => {
|
|
1094
|
+
return (jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex items-start gap-2", className), "data-testid": dataTestId, style: style, children: [jsxRuntime.jsx(reactComponents.Popover, { onOpenStateChange: open => {
|
|
1095
1095
|
if (!open) {
|
|
1096
1096
|
setShowCustomFilters(false);
|
|
1097
1097
|
setSearchText("");
|
|
@@ -1406,8 +1406,8 @@ const HierarchicalCheckboxFilter = ({ filterDefinition, filterBarActions, option
|
|
|
1406
1406
|
* @param {FilterBarProps} props - The props for the FilterBar component
|
|
1407
1407
|
* @returns {ReactElement} FilterBar component
|
|
1408
1408
|
*/
|
|
1409
|
-
const FilterBar = ({ hiddenFilters, className, filterBarDefinition, filterBarConfig, compact = true, allowShowFiltersDirectly = true, title, }) => {
|
|
1410
|
-
return (jsxRuntime.jsx(FiltersMenu, { allowShowFiltersDirectly: allowShowFiltersDirectly, className: className, compact: compact, "data-testid": `${filterBarConfig.name}-filterbar`, filterBarConfig: filterBarConfig, filterBarDefinition: filterBarDefinition, hiddenFilters: hiddenFilters, title: title }));
|
|
1409
|
+
const FilterBar = ({ hiddenFilters, className, style, filterBarDefinition, filterBarConfig, compact = true, allowShowFiltersDirectly = true, title, }) => {
|
|
1410
|
+
return (jsxRuntime.jsx(FiltersMenu, { allowShowFiltersDirectly: allowShowFiltersDirectly, className: className, compact: compact, "data-testid": `${filterBarConfig.name}-filterbar`, filterBarConfig: filterBarConfig, filterBarDefinition: filterBarDefinition, hiddenFilters: hiddenFilters, style: style, title: title }));
|
|
1411
1411
|
};
|
|
1412
1412
|
|
|
1413
1413
|
const returnFalse = () => false;
|
package/index.esm.js
CHANGED
|
@@ -448,9 +448,9 @@ const ResetFiltersButtonWithIcon = ({ resetFiltersToInitialState, "data-testid":
|
|
|
448
448
|
/**
|
|
449
449
|
*
|
|
450
450
|
*/
|
|
451
|
-
const AppliedFiltersRenderer = ({ appliedFilters, filterBarConfig, showResetButton = true, }) => {
|
|
451
|
+
const AppliedFiltersRenderer = ({ appliedFilters, filterBarConfig, showResetButton = true, style, }) => {
|
|
452
452
|
const filtersToRender = useMemo(() => appliedFilters.filter(filter => !filter.showDirectly), [appliedFilters]);
|
|
453
|
-
return (jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [filtersToRender.length > 0 ? (jsx("div", { className: "h-4 w-[1px] bg-neutral-300", "data-testid": "applied-filters-buttons" })) : null, jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: filtersToRender }), appliedFilters.length > 0 && showResetButton ? (jsx(ResetFiltersButtonWithIcon, { resetFiltersToInitialState: filterBarConfig.resetFiltersToInitialState })) : null] }));
|
|
453
|
+
return (jsxs("div", { className: "flex flex-wrap items-center gap-2", style: style, children: [filtersToRender.length > 0 ? (jsx("div", { className: "h-4 w-[1px] bg-neutral-300", "data-testid": "applied-filters-buttons" })) : null, jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: filtersToRender }), appliedFilters.length > 0 && showResetButton ? (jsx(ResetFiltersButtonWithIcon, { resetFiltersToInitialState: filterBarConfig.resetFiltersToInitialState })) : null] }));
|
|
454
454
|
};
|
|
455
455
|
|
|
456
456
|
/**
|
|
@@ -905,8 +905,8 @@ const useFiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters =
|
|
|
905
905
|
*
|
|
906
906
|
* @returns {ReactElement} - Returns the FiltersList component.
|
|
907
907
|
*/
|
|
908
|
-
const GroupedFiltersList = ({ filterBarConfig, filtersGrouped, className, "data-testid": dataTestId = "grouped-filters-list", }) => {
|
|
909
|
-
return (jsx("div", { className: className, "data-testid": dataTestId, role: "menu", children: filtersGrouped.map((group, idx) => {
|
|
908
|
+
const GroupedFiltersList = ({ filterBarConfig, filtersGrouped, className, style, "data-testid": dataTestId = "grouped-filters-list", }) => {
|
|
909
|
+
return (jsx("div", { className: className, "data-testid": dataTestId, role: "menu", style: style, children: filtersGrouped.map((group, idx) => {
|
|
910
910
|
const isLastGroup = idx === filtersGrouped.length - 1;
|
|
911
911
|
return (jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { children: [filtersGrouped.length > 1 && (jsx(Text, { className: "h-7 px-3 py-2 text-neutral-400", "data-testid": `${group.key}-group-title`, size: "small", uppercase: true, weight: "bold", children: group.title })), jsx("ul", { "aria-labelledby": `${group.key}-group-title`, className: "grid", "data-testid": `${group.key}-group-list`, children: jsx(FiltersRenderer, { filterBarConfig: filterBarConfig, filters: group.filters, visualStyle: "list-item" }) })] }), isLastGroup ? null : jsx("div", { className: "h-[1px] w-full bg-neutral-200", role: "separator" })] }, group.key));
|
|
912
912
|
}) }));
|
|
@@ -1067,7 +1067,7 @@ const MultipleFilterTooltipLabel = ({ filterBarConfig, filterKeys, filters, }) =
|
|
|
1067
1067
|
* @template TFilterBarDefinition - The type representing the filter bar definition.
|
|
1068
1068
|
* @returns {ReactElement} - Returns the FilterMenu component.
|
|
1069
1069
|
*/
|
|
1070
|
-
const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], compact = false, title, "data-testid": dataTestId = "filters-menu", className, buttonProps, allowShowFiltersDirectly = true, includeFilterKeys, }) => {
|
|
1070
|
+
const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], compact = false, title, "data-testid": dataTestId = "filters-menu", className, style, buttonProps, allowShowFiltersDirectly = true, includeFilterKeys, }) => {
|
|
1071
1071
|
const [t] = useTranslation();
|
|
1072
1072
|
const [showCustomFilters, setShowCustomFilters] = useState(false);
|
|
1073
1073
|
const { isSm } = useViewportBreakpoints();
|
|
@@ -1089,7 +1089,7 @@ const FiltersMenu = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [],
|
|
|
1089
1089
|
includeFilterKeys,
|
|
1090
1090
|
allowShowFiltersDirectly,
|
|
1091
1091
|
});
|
|
1092
|
-
return (jsxs("div", { className: twMerge("flex items-start gap-2", className), "data-testid": dataTestId, children: [jsx(Popover, { onOpenStateChange: open => {
|
|
1092
|
+
return (jsxs("div", { className: twMerge("flex items-start gap-2", className), "data-testid": dataTestId, style: style, children: [jsx(Popover, { onOpenStateChange: open => {
|
|
1093
1093
|
if (!open) {
|
|
1094
1094
|
setShowCustomFilters(false);
|
|
1095
1095
|
setSearchText("");
|
|
@@ -1404,8 +1404,8 @@ const HierarchicalCheckboxFilter = ({ filterDefinition, filterBarActions, option
|
|
|
1404
1404
|
* @param {FilterBarProps} props - The props for the FilterBar component
|
|
1405
1405
|
* @returns {ReactElement} FilterBar component
|
|
1406
1406
|
*/
|
|
1407
|
-
const FilterBar = ({ hiddenFilters, className, filterBarDefinition, filterBarConfig, compact = true, allowShowFiltersDirectly = true, title, }) => {
|
|
1408
|
-
return (jsx(FiltersMenu, { allowShowFiltersDirectly: allowShowFiltersDirectly, className: className, compact: compact, "data-testid": `${filterBarConfig.name}-filterbar`, filterBarConfig: filterBarConfig, filterBarDefinition: filterBarDefinition, hiddenFilters: hiddenFilters, title: title }));
|
|
1407
|
+
const FilterBar = ({ hiddenFilters, className, style, filterBarDefinition, filterBarConfig, compact = true, allowShowFiltersDirectly = true, title, }) => {
|
|
1408
|
+
return (jsx(FiltersMenu, { allowShowFiltersDirectly: allowShowFiltersDirectly, className: className, compact: compact, "data-testid": `${filterBarConfig.name}-filterbar`, filterBarConfig: filterBarConfig, filterBarDefinition: filterBarDefinition, hiddenFilters: hiddenFilters, style: style, title: title }));
|
|
1409
1409
|
};
|
|
1410
1410
|
|
|
1411
1411
|
const returnFalse = () => false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/filters-filter-bar",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.3",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"engines": {
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
"string-ts": "^2.0.0",
|
|
13
13
|
"zod": "^3.25.76",
|
|
14
14
|
"@trackunit/iris-app-api": "1.20.1",
|
|
15
|
-
"@trackunit/react-core-hooks": "1.17.
|
|
16
|
-
"@trackunit/react-filter-components": "1.24.
|
|
17
|
-
"@trackunit/react-date-and-time-components": "1.27.
|
|
15
|
+
"@trackunit/react-core-hooks": "1.17.2",
|
|
16
|
+
"@trackunit/react-filter-components": "1.24.3",
|
|
17
|
+
"@trackunit/react-date-and-time-components": "1.27.3",
|
|
18
18
|
"@trackunit/shared-utils": "1.15.1",
|
|
19
|
-
"@trackunit/react-form-components": "1.25.
|
|
19
|
+
"@trackunit/react-form-components": "1.25.3",
|
|
20
20
|
"@trackunit/iris-app-runtime-core-api": "1.16.1",
|
|
21
21
|
"@trackunit/geo-json-utils": "1.14.1",
|
|
22
|
-
"@trackunit/i18n-library-translation": "1.21.
|
|
22
|
+
"@trackunit/i18n-library-translation": "1.21.2",
|
|
23
23
|
"@trackunit/css-class-variance-utilities": "1.13.1",
|
|
24
|
-
"@trackunit/react-components": "1.24.
|
|
24
|
+
"@trackunit/react-components": "1.24.2"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"@apollo/client": "^3.13.8",
|
package/src/lib/FilterBar.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { Styleable } from "@trackunit/react-components";
|
|
1
2
|
import { ReactElement } from "react";
|
|
2
3
|
import { FilterBarConfig, FilterBarDefinition, FilterMapActions, FilterMapGetter } from "./types/FilterTypes";
|
|
3
|
-
interface FilterBarProps<TFilterBarDefinition extends FilterBarDefinition> {
|
|
4
|
+
interface FilterBarProps<TFilterBarDefinition extends FilterBarDefinition> extends Styleable {
|
|
4
5
|
/**
|
|
5
6
|
* If you want some of the filters to be hidden, but still programmatically enabled
|
|
6
7
|
*/
|
|
@@ -70,5 +71,5 @@ interface FilterBarProps<TFilterBarDefinition extends FilterBarDefinition> {
|
|
|
70
71
|
* @param {FilterBarProps} props - The props for the FilterBar component
|
|
71
72
|
* @returns {ReactElement} FilterBar component
|
|
72
73
|
*/
|
|
73
|
-
export declare const FilterBar: <TFilterBarDefinition extends FilterBarDefinition>({ hiddenFilters, className, filterBarDefinition, filterBarConfig, compact, allowShowFiltersDirectly, title, }: FilterBarProps<TFilterBarDefinition>) => ReactElement;
|
|
74
|
+
export declare const FilterBar: <TFilterBarDefinition extends FilterBarDefinition>({ hiddenFilters, className, style, filterBarDefinition, filterBarConfig, compact, allowShowFiltersDirectly, title, }: FilterBarProps<TFilterBarDefinition>) => ReactElement;
|
|
74
75
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { Styleable } from "@trackunit/react-components";
|
|
1
2
|
import { ReactElement } from "react";
|
|
2
3
|
import { FilterBarConfig, FilterBarDefinition, FilterDefinition, FilterMapActions, FilterMapGetter } from "../types/FilterTypes";
|
|
3
4
|
/**
|
|
4
5
|
*
|
|
5
6
|
*/
|
|
6
|
-
export declare const AppliedFiltersRenderer: <TFilterBarDefinition extends FilterBarDefinition>({ appliedFilters, filterBarConfig, showResetButton, }: {
|
|
7
|
+
export declare const AppliedFiltersRenderer: <TFilterBarDefinition extends FilterBarDefinition>({ appliedFilters, filterBarConfig, showResetButton, style, }: {
|
|
7
8
|
appliedFilters: Array<FilterDefinition>;
|
|
8
9
|
filterBarConfig: FilterBarConfig<TFilterBarDefinition> & FilterMapActions & FilterMapGetter;
|
|
9
10
|
showResetButton?: boolean;
|
|
10
|
-
}) => ReactElement;
|
|
11
|
+
} & Styleable) => ReactElement;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ButtonProps, CommonProps } from "@trackunit/react-components";
|
|
1
|
+
import { ButtonProps, CommonProps, type Styleable } from "@trackunit/react-components";
|
|
2
2
|
import { ReactElement } from "react";
|
|
3
3
|
import { FilterBarConfig, FilterBarDefinition, FilterMapActions, FilterMapGetter } from "../types/FilterTypes";
|
|
4
|
-
interface FiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> extends CommonProps {
|
|
4
|
+
interface FiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> extends CommonProps, Styleable {
|
|
5
5
|
/**
|
|
6
6
|
* If true, the filters marked as showDirectly will not be shown directly in the filter bar
|
|
7
7
|
*/
|
|
@@ -41,5 +41,5 @@ interface FiltersMenuProps<TFilterBarDefinition extends FilterBarDefinition> ext
|
|
|
41
41
|
* @template TFilterBarDefinition - The type representing the filter bar definition.
|
|
42
42
|
* @returns {ReactElement} - Returns the FilterMenu component.
|
|
43
43
|
*/
|
|
44
|
-
export declare const FiltersMenu: <TFilterBarDefinition extends FilterBarDefinition>({ filterBarDefinition, filterBarConfig, hiddenFilters, compact, title, "data-testid": dataTestId, className, buttonProps, allowShowFiltersDirectly, includeFilterKeys, }: FiltersMenuProps<TFilterBarDefinition>) => ReactElement;
|
|
44
|
+
export declare const FiltersMenu: <TFilterBarDefinition extends FilterBarDefinition>({ filterBarDefinition, filterBarConfig, hiddenFilters, compact, title, "data-testid": dataTestId, className, style, buttonProps, allowShowFiltersDirectly, includeFilterKeys, }: FiltersMenuProps<TFilterBarDefinition>) => ReactElement;
|
|
45
45
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CommonProps } from "@trackunit/react-components";
|
|
1
|
+
import { CommonProps, type Styleable } from "@trackunit/react-components";
|
|
2
2
|
import { ReactElement } from "react";
|
|
3
3
|
import { GroupOfFilters } from "../hooks/useGroupFilters";
|
|
4
4
|
import { FilterBarConfig, FilterBarDefinition, FilterMapActions, FilterMapGetter } from "../types/FilterTypes";
|
|
5
|
-
interface FiltersListProps extends CommonProps {
|
|
5
|
+
interface FiltersListProps extends CommonProps, Styleable {
|
|
6
6
|
/**
|
|
7
7
|
* The configuration of the filter bar, including its actions and state.
|
|
8
8
|
*/
|
|
@@ -14,5 +14,5 @@ interface FiltersListProps extends CommonProps {
|
|
|
14
14
|
*
|
|
15
15
|
* @returns {ReactElement} - Returns the FiltersList component.
|
|
16
16
|
*/
|
|
17
|
-
export declare const GroupedFiltersList: ({ filterBarConfig, filtersGrouped, className, "data-testid": dataTestId, }: FiltersListProps) => ReactElement;
|
|
17
|
+
export declare const GroupedFiltersList: ({ filterBarConfig, filtersGrouped, className, style, "data-testid": dataTestId, }: FiltersListProps) => ReactElement;
|
|
18
18
|
export {};
|