@vuu-ui/vuu-filters 3.5.2 → 3.5.4

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.5.2",
2
+ "version": "3.5.4",
3
3
  "main": "./src/index.js",
4
4
  "author": "heswell",
5
5
  "license": "Apache-2.0",
@@ -10,19 +10,19 @@
10
10
  "type-defs": "node ../../scripts/build-type-defs.mjs"
11
11
  },
12
12
  "devDependencies": {
13
- "@vuu-ui/vuu-data-types": "3.5.2",
14
- "@vuu-ui/vuu-protocol-types": "3.5.2",
15
- "@vuu-ui/vuu-table-types": "3.5.2",
16
- "@vuu-ui/vuu-filter-types": "3.5.2"
13
+ "@vuu-ui/vuu-data-types": "3.5.4",
14
+ "@vuu-ui/vuu-protocol-types": "3.5.4",
15
+ "@vuu-ui/vuu-table-types": "3.5.4",
16
+ "@vuu-ui/vuu-filter-types": "3.5.4"
17
17
  },
18
18
  "dependencies": {
19
- "@vuu-ui/vuu-context-menu": "3.5.2",
20
- "@vuu-ui/vuu-data-react": "3.5.2",
21
- "@vuu-ui/vuu-filter-parser": "3.5.2",
22
- "@vuu-ui/vuu-popups": "3.5.2",
23
- "@vuu-ui/vuu-ui-controls": "3.5.2",
24
- "@vuu-ui/vuu-table": "3.5.2",
25
- "@vuu-ui/vuu-utils": "3.5.2",
19
+ "@vuu-ui/vuu-context-menu": "3.5.4",
20
+ "@vuu-ui/vuu-data-react": "3.5.4",
21
+ "@vuu-ui/vuu-filter-parser": "3.5.4",
22
+ "@vuu-ui/vuu-popups": "3.5.4",
23
+ "@vuu-ui/vuu-ui-controls": "3.5.4",
24
+ "@vuu-ui/vuu-table": "3.5.4",
25
+ "@vuu-ui/vuu-utils": "3.5.4",
26
26
  "@salt-ds/core": "1.54.1",
27
27
  "@salt-ds/lab": "1.0.0-alpha.83",
28
28
  "@salt-ds/styles": "0.2.1",
@@ -6,7 +6,10 @@ import clsx from "clsx";
6
6
  import { forwardRef, useCallback } from "react";
7
7
  import { useToggleFilter } from "./useToggleFilter.js";
8
8
  import ToggleFilter_0 from "./ToggleFilter.css";
9
- const getValues = (defaultValue, value)=>{
9
+ const toToggleButtonValue = (value)=>"boolean" == typeof value ? `${value}` : value;
10
+ const getValues = (defaultValueProp, valueProp)=>{
11
+ const defaultValue = toToggleButtonValue(defaultValueProp);
12
+ const value = toToggleButtonValue(valueProp);
10
13
  if (void 0 === defaultValue && void 0 === value) return [
11
14
  "all"
12
15
  ];
@@ -34,16 +37,22 @@ const ToggleFilter_ToggleFilter = /*#__PURE__*/ forwardRef(function({ className,
34
37
  });
35
38
  if (void 0 !== labels && labels.length !== values.length) throw Error("[ToggleFilter] labels must have the same number of items as values");
36
39
  const [defaultValue, value] = getValues(defaultValueProp, valueProp);
40
+ const stringValues = values.map(String);
37
41
  const { onlyAvailableValue, unavailableValues } = useToggleFilter({
38
42
  column,
39
43
  table,
40
- values
44
+ values: stringValues
41
45
  });
42
46
  const handleChange = useCallback((e)=>{
43
47
  const value = e.currentTarget.value;
44
- "all" === value ? onCommit(e, "") : onCommit(e, value);
48
+ if ("all" === value) onCommit(e, "");
49
+ else {
50
+ const toggleValue = values.find((v)=>`${v}` === value);
51
+ onCommit(e, "boolean" == typeof toggleValue ? toggleValue : value);
52
+ }
45
53
  }, [
46
- onCommit
54
+ onCommit,
55
+ values
47
56
  ]);
48
57
  return /*#__PURE__*/ jsxs(ToggleButtonGroup, {
49
58
  ...ToggleButtonGroupProps,
@@ -57,7 +66,7 @@ const ToggleFilter_ToggleFilter = /*#__PURE__*/ forwardRef(function({ className,
57
66
  value: "all",
58
67
  children: "All"
59
68
  }, "all"),
60
- values.map((toggleValue, i)=>{
69
+ stringValues.map((toggleValue, i)=>{
61
70
  const unavailable = unavailableValues.includes(toggleValue);
62
71
  return /*#__PURE__*/ jsx(Tooltip, {
63
72
  content: NO_MATCHING_DATA,
package/types/index.d.ts CHANGED
@@ -21,4 +21,4 @@ export { FilterNamePrompt as SaveFilterConfirmPrompt, type FilterNamePromptProps
21
21
  export { SavedFilterPanel, type SavedFilterPanelProps, } from "./saved-filters/SavedFilterPanel";
22
22
  export type { FilterClickHandler } from "./saved-filters/useSavedFilterPanel";
23
23
  export { TabbedFilterContainer, type TabbedFilterContainerProps, } from "./tabbed-filter-container/TabbedFilterContainer";
24
- export { ToggleFilter, type ToggleFilterProps, } from "./toggle-filter/ToggleFilter";
24
+ export { ToggleFilter, type ToggleFilterProps, type ToggleFilterValue, } from "./toggle-filter/ToggleFilter";
@@ -1,6 +1,8 @@
1
1
  import { ToggleButtonGroupProps } from "@salt-ds/core";
2
2
  import { CommitHandler } from "@vuu-ui/vuu-utils";
3
3
  import { type ToggleFilterHookProps } from "./useToggleFilter";
4
+ export type ToggleFilterValue = string | number | boolean;
5
+ type Value = ToggleButtonGroupProps["value"];
4
6
  /**
5
7
  * ToggleFilter is designed to work with a FilterProvider and
6
8
  * DataSourceProvider. With a DataSourceProvider, values will
@@ -11,12 +13,20 @@ import { type ToggleFilterHookProps } from "./useToggleFilter";
11
13
  * With neither of these Providers available, the ToggleFilter is
12
14
  * behaving like a regular ToggleButtonGroup.
13
15
  */
14
- export interface ToggleFilterProps extends ToggleButtonGroupProps, ToggleFilterHookProps {
16
+ export interface ToggleFilterProps extends Omit<ToggleButtonGroupProps, "defaultValue" | "value">, Omit<ToggleFilterHookProps, "values"> {
17
+ defaultValue?: ToggleFilterValue | Value;
15
18
  /**
16
19
  * Optional labels for the toggle buttons. If provided, must contain
17
20
  * the same number of items as values. Defaults to values.
18
21
  */
19
22
  labels?: string[];
20
23
  onCommit: CommitHandler<HTMLElement>;
24
+ value?: ToggleFilterValue | Value;
25
+ /**
26
+ * Values for the toggle buttons. Boolean values are converted to
27
+ * strings internally, the original value is passed to onCommit.
28
+ */
29
+ values: ToggleFilterValue[];
21
30
  }
22
31
  export declare const ToggleFilter: import("react").ForwardRefExoticComponent<ToggleFilterProps & import("react").RefAttributes<HTMLDivElement>>;
32
+ export {};