@trackunit/filters-filter-bar 0.0.5 → 0.0.6

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
@@ -4,9 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var i18nLibraryTranslation = require('@trackunit/i18n-library-translation');
7
+ var sharedUtils = require('@trackunit/shared-utils');
7
8
  var React = require('react');
8
9
  var reactFilterComponents = require('@trackunit/react-filter-components');
9
- var sharedUtils = require('@trackunit/shared-utils');
10
10
  var reactComponents = require('@trackunit/react-components');
11
11
  var reactRouterDom = require('react-router-dom');
12
12
  var reactCoreHooks = require('@trackunit/react-core-hooks');
@@ -447,16 +447,15 @@ const FilterEvents = {
447
447
  const StarredFiltersMenu = ({ filterBarDefinition, updateStarredFilters, starredFilterKeys, hiddenFilters = [], }) => {
448
448
  const [t] = useTranslation();
449
449
  const { logEvent } = reactCoreHooks.useAnalytics(FilterEvents);
450
- const hideInStarredMenu = Object.values(filterBarDefinition)
451
- .map(filter => {
452
- if (filter.showInStarredMenu) {
453
- return filter.showInStarredMenu() ? null : filter.filterKey;
454
- }
455
- else {
456
- return null;
457
- }
458
- })
459
- .filter(sharedUtils.truthy);
450
+ const hideInStarredMenu = React.useMemo(() => {
451
+ return Object.values(filterBarDefinition)
452
+ .map(filter => {
453
+ const showInStarredMenu = filter.showInStarredMenu ? filter.showInStarredMenu() : true;
454
+ const showInFilterBar = filter.showInFilterBar ? filter.showInFilterBar() : true;
455
+ return !showInStarredMenu && !showInFilterBar ? filter.filterKey : null;
456
+ })
457
+ .filter(sharedUtils.truthy);
458
+ }, [filterBarDefinition]);
460
459
  const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), [
461
460
  ...hideInStarredMenu,
462
461
  ...hiddenFilters,
@@ -488,7 +487,18 @@ const StarredFiltersMenu = ({ filterBarDefinition, updateStarredFilters, starred
488
487
  * @returns {JSX.Element} - Returns the StarredFilters component.
489
488
  */
490
489
  const StarredFilters = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], }) => {
491
- const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), hiddenFilters);
490
+ const hideInFilterBar = React.useMemo(() => {
491
+ return Object.values(filterBarDefinition)
492
+ .map(filter => {
493
+ const showInFilterBar = filter.showInFilterBar ? filter.showInFilterBar() : true;
494
+ return !showInFilterBar ? filter.filterKey : null;
495
+ })
496
+ .filter(sharedUtils.truthy);
497
+ }, [filterBarDefinition]);
498
+ const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), [
499
+ ...hideInFilterBar,
500
+ ...hiddenFilters,
501
+ ]);
492
502
  return (jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-3", "data-testid": "starred-filters", children: [jsxRuntime.jsx(StarredFiltersMenu, { hiddenFilters: hiddenFilters, starredFilterKeys: filterBarConfig.starredFilterKeys, filterBarDefinition: filterBarDefinition, updateStarredFilters: filterBarConfig.updateStarredFilters }), filtersGrouped.map(group => group.filters
493
503
  .filter(filter => !hiddenFilters.includes(filter.filterKey))
494
504
  .map(filter => {
package/index.esm.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { registerTranslations, useNamespaceTranslation } from '@trackunit/i18n-library-translation';
3
+ import { titleCase, truthy, capitalize as capitalize$1, nonNullable } from '@trackunit/shared-utils';
3
4
  import React, { useMemo, Fragment as Fragment$1, useRef, useState, useEffect, useCallback } from 'react';
4
5
  import { Filter as Filter$1, FilterBody, RadioFilterItem, CheckBoxFilterItem, FilterHeader as FilterHeader$1, FilterFooter } from '@trackunit/react-filter-components';
5
- import { titleCase, truthy, capitalize as capitalize$1, nonNullable } from '@trackunit/shared-utils';
6
6
  import { Button, Popover, PopoverTrigger, IconButton, Icon, PopoverContent, MenuList, Text, StarButton, DayRangePicker } from '@trackunit/react-components';
7
7
  import { useLocation, useNavigate } from 'react-router-dom';
8
8
  import { useAnalytics, useTextSearch } from '@trackunit/react-core-hooks';
@@ -439,16 +439,15 @@ const FilterEvents = {
439
439
  const StarredFiltersMenu = ({ filterBarDefinition, updateStarredFilters, starredFilterKeys, hiddenFilters = [], }) => {
440
440
  const [t] = useTranslation();
441
441
  const { logEvent } = useAnalytics(FilterEvents);
442
- const hideInStarredMenu = Object.values(filterBarDefinition)
443
- .map(filter => {
444
- if (filter.showInStarredMenu) {
445
- return filter.showInStarredMenu() ? null : filter.filterKey;
446
- }
447
- else {
448
- return null;
449
- }
450
- })
451
- .filter(truthy);
442
+ const hideInStarredMenu = useMemo(() => {
443
+ return Object.values(filterBarDefinition)
444
+ .map(filter => {
445
+ const showInStarredMenu = filter.showInStarredMenu ? filter.showInStarredMenu() : true;
446
+ const showInFilterBar = filter.showInFilterBar ? filter.showInFilterBar() : true;
447
+ return !showInStarredMenu && !showInFilterBar ? filter.filterKey : null;
448
+ })
449
+ .filter(truthy);
450
+ }, [filterBarDefinition]);
452
451
  const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), [
453
452
  ...hideInStarredMenu,
454
453
  ...hiddenFilters,
@@ -480,7 +479,18 @@ const StarredFiltersMenu = ({ filterBarDefinition, updateStarredFilters, starred
480
479
  * @returns {JSX.Element} - Returns the StarredFilters component.
481
480
  */
482
481
  const StarredFilters = ({ filterBarDefinition, filterBarConfig, hiddenFilters = [], }) => {
483
- const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), hiddenFilters);
482
+ const hideInFilterBar = useMemo(() => {
483
+ return Object.values(filterBarDefinition)
484
+ .map(filter => {
485
+ const showInFilterBar = filter.showInFilterBar ? filter.showInFilterBar() : true;
486
+ return !showInFilterBar ? filter.filterKey : null;
487
+ })
488
+ .filter(truthy);
489
+ }, [filterBarDefinition]);
490
+ const { filtersGrouped } = useStarredGroupFilters(Object.values(filterBarDefinition), [
491
+ ...hideInFilterBar,
492
+ ...hiddenFilters,
493
+ ]);
484
494
  return (jsxs("div", { className: "flex flex-wrap items-center gap-3", "data-testid": "starred-filters", children: [jsx(StarredFiltersMenu, { hiddenFilters: hiddenFilters, starredFilterKeys: filterBarConfig.starredFilterKeys, filterBarDefinition: filterBarDefinition, updateStarredFilters: filterBarConfig.updateStarredFilters }), filtersGrouped.map(group => group.filters
485
495
  .filter(filter => !hiddenFilters.includes(filter.filterKey))
486
496
  .map(filter => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trackunit/filters-filter-bar",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "repository": "https://github.com/Trackunit/manager",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "engines": {
@@ -93,6 +93,10 @@ export interface AbstractFilterDefinition {
93
93
  * A function that determines if the filter should be displayed in the starred filter menu.
94
94
  */
95
95
  showInStarredMenu?: () => boolean;
96
+ /**
97
+ * A function that determines if the filter should be displayed in the filter bar.
98
+ */
99
+ showInFilterBar?: () => boolean;
96
100
  }
97
101
  export interface BooleanFilterDefinition extends AbstractFilterDefinition {
98
102
  type: "boolean";