@launchpad-ui/filter 0.5.26 → 0.5.28

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.
@@ -20,7 +20,7 @@ type AppliedFilterProps = {
20
20
  searchId?: string;
21
21
  'data-test-id'?: string;
22
22
  };
23
- declare const AppliedFilter: ({ searchValue, onSearchChange, searchPlaceholder, name, description, options, className, isEmpty, isLoading, onClickFilterButton, onClearFilter, searchAriaLabel, searchId, "data-test-id": testId, ...props }: AppliedFilterProps) => JSX.Element;
23
+ declare const AppliedFilter: ({ searchValue, onSearchChange, searchPlaceholder, name, description, options, className, isEmpty, isLoading, onClickFilterButton, onClearFilter, searchAriaLabel, searchId, "data-test-id": testId, ...props }: AppliedFilterProps) => import("react/jsx-runtime").JSX.Element;
24
24
  export type { AppliedFilterProps };
25
25
  export { AppliedFilter };
26
26
  //# sourceMappingURL=AppliedFilter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppliedFilter.d.ts","sourceRoot":"","sources":["../src/AppliedFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASpD,KAAK,kBAAkB,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,aAAa,mNAgBhB,kBAAkB,gBA0BpB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"AppliedFilter.d.ts","sourceRoot":"","sources":["../src/AppliedFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASpD,KAAK,kBAAkB,GAAG;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,aAAa,mNAgBhB,kBAAkB,4CA0BpB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/Filter.d.ts CHANGED
@@ -28,7 +28,7 @@ type FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {
28
28
  triggerTestId?: string;
29
29
  clearAriaLabel?: string;
30
30
  };
31
- declare const Filter: ({ searchValue, onSearchChange, searchPlaceholder, searchAriaLabel, name, hideName, description, options, isClearable, onClear, isSelected, className, isEmpty, searchId, isLoading, onClickFilterButton, disabledOptionTooltip, "data-test-id": testId, size, disabled, enableVirtualization, clearAriaLabel, ...props }: FilterProps) => JSX.Element;
31
+ declare const Filter: ({ searchValue, onSearchChange, searchPlaceholder, searchAriaLabel, name, hideName, description, options, isClearable, onClear, isSelected, className, isEmpty, searchId, isLoading, onClickFilterButton, disabledOptionTooltip, "data-test-id": testId, size, disabled, enableVirtualization, clearAriaLabel, ...props }: FilterProps) => import("react/jsx-runtime").JSX.Element;
32
32
  export { Filter };
33
33
  export type { FilterProps };
34
34
  //# sourceMappingURL=Filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../src/Filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAWpE,KAAK,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC,GAAG;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,MAAM,6TAwBT,WAAW,gBA6Cb,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../src/Filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAWpE,KAAK,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC,GAAG;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,SAAS,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,MAAM,6TAwBT,WAAW,4CA6Cb,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -23,7 +23,7 @@ type FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' |
23
23
  isLoading?: boolean;
24
24
  disabledOptionTooltip?: string;
25
25
  };
26
- declare const FilterMenu: ({ options, onClearFilter, enableSearch, searchValue, searchPlaceholder, searchAriaLabel, searchId, onSelect, onSearchChange, isLoading, disabledOptionTooltip, enableVirtualization, size, "data-test-id": testId, }: FilterMenuProps) => JSX.Element;
26
+ declare const FilterMenu: ({ options, onClearFilter, enableSearch, searchValue, searchPlaceholder, searchAriaLabel, searchId, onSelect, onSearchChange, isLoading, disabledOptionTooltip, enableVirtualization, size, "data-test-id": testId, }: FilterMenuProps) => import("react/jsx-runtime").JSX.Element;
27
27
  export { FilterMenu };
28
28
  export type { FilterOption, FilterMenuProps };
29
29
  //# sourceMappingURL=FilterMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterMenu.d.ts","sourceRoot":"","sources":["../src/FilterMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASpD,KAAK,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,cAAc,CAAC,GAAG;IACjG,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,UAAU,yNAeb,eAAe,gBA2DjB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"FilterMenu.d.ts","sourceRoot":"","sources":["../src/FilterMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASpD,KAAK,YAAY,CAAC,CAAC,GAAG,GAAG,IAAI;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,cAAc,CAAC,GAAG;IACjG,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,CAAC,IAAI,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,UAAU,yNAeb,eAAe,4CA2DjB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
package/dist/index.es.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import './style.css';
2
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
3
  import { Dropdown } from "@launchpad-ui/dropdown";
3
4
  import { ExpandMore, Check, Close } from "@launchpad-ui/icons";
4
5
  import { cx } from "classix";
5
6
  import { forwardRef, Children, useId } from "react";
6
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
7
7
  import { Button, IconButton } from "@launchpad-ui/button";
8
8
  import { Menu, MenuSearch, MenuDivider, MenuItem } from "@launchpad-ui/menu";
9
9
  import { Tooltip } from "@launchpad-ui/tooltip";
@@ -35,35 +35,25 @@ const styles = {
35
35
  filterClearButton
36
36
  };
37
37
  const AppliedFilterButton = forwardRef((props, ref) => {
38
- const {
39
- name: name2,
40
- className,
41
- children,
42
- onClickFilterButton,
43
- "data-test-id": testId
44
- } = props;
38
+ const { name: name2, className, children, onClickFilterButton, "data-test-id": testId } = props;
45
39
  const hasDescription = Children.count(children) !== 0;
46
- return /* @__PURE__ */ jsx("div", {
47
- "data-test-id": testId,
48
- children: /* @__PURE__ */ jsxs("button", {
40
+ return /* @__PURE__ */ jsx("div", { "data-test-id": testId, children: /* @__PURE__ */ jsxs(
41
+ "button",
42
+ {
49
43
  "aria-haspopup": true,
50
44
  className: cx(styles.appliedButton, className),
51
45
  ref,
52
46
  onClick: onClickFilterButton,
53
- children: [name2 && /* @__PURE__ */ jsxs("span", {
54
- className: styles.appliedName,
55
- "data-test-id": `${testId}-name`,
56
- children: [name2, hasDescription && ":"]
57
- }), hasDescription && /* @__PURE__ */ jsx("span", {
58
- className: styles.appliedDescription,
59
- "data-test-id": `${testId}-description`,
60
- children
61
- }), /* @__PURE__ */ jsx(ExpandMore, {
62
- size: "small",
63
- "data-test-id": `${testId}-expand`
64
- })]
65
- })
66
- });
47
+ children: [
48
+ name2 && /* @__PURE__ */ jsxs("span", { className: styles.appliedName, "data-test-id": `${testId}-name`, children: [
49
+ name2,
50
+ hasDescription && ":"
51
+ ] }),
52
+ hasDescription && /* @__PURE__ */ jsx("span", { className: styles.appliedDescription, "data-test-id": `${testId}-description`, children }),
53
+ /* @__PURE__ */ jsx(ExpandMore, { size: "small", "data-test-id": `${testId}-expand` })
54
+ ]
55
+ }
56
+ ) });
67
57
  });
68
58
  AppliedFilterButton.displayName = "AppliedFilterButton";
69
59
  const FilterMenu = ({
@@ -82,49 +72,62 @@ const FilterMenu = ({
82
72
  size,
83
73
  "data-test-id": testId = "filter-menu"
84
74
  }) => {
85
- const filterOptions = isLoading ? [{
86
- name: "loading...",
87
- value: "loading...",
88
- isDisabled: true
89
- }] : options;
90
- return /* @__PURE__ */ jsxs(Fragment, {
91
- children: [onClearFilter && /* @__PURE__ */ jsx(Button, {
92
- tabIndex: 0,
93
- className: styles.filterClearButton,
94
- onClick: onClearFilter,
95
- kind: "link",
96
- "data-test-id": "clear-filter-button",
97
- children: "CLEAR FILTER"
98
- }), /* @__PURE__ */ jsxs(Menu, {
99
- enableVirtualization,
100
- size,
101
- "data-test-id": testId,
102
- onSelect,
103
- children: [enableSearch && /* @__PURE__ */ jsx(MenuSearch, {
104
- value: searchValue,
105
- id: searchId,
106
- placeholder: searchPlaceholder,
107
- onChange: onSearchChange,
108
- ariaLabel: searchAriaLabel
109
- }), filterOptions.map((option, index) => {
110
- if (option.isDivider) {
111
- return /* @__PURE__ */ jsx(MenuDivider, {}, `divider-${index}`);
112
- }
113
- return /* @__PURE__ */ jsx(MenuItem, {
114
- item: option,
115
- disabled: option.isDisabled,
116
- icon: option.isChecked ? Check : null,
117
- role: "menuitemradio",
118
- "aria-checked": option.isChecked ? "true" : void 0,
119
- nested: option.nested,
120
- groupHeader: option.groupHeader,
121
- tooltip: option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : void 0,
122
- tooltipPlacement: "right",
123
- children: option.name
124
- }, option.value);
125
- })]
126
- })]
127
- });
75
+ const filterOptions = isLoading ? [{ name: "loading...", value: "loading...", isDisabled: true }] : options;
76
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
77
+ onClearFilter && /* @__PURE__ */ jsx(
78
+ Button,
79
+ {
80
+ tabIndex: 0,
81
+ className: styles.filterClearButton,
82
+ onClick: onClearFilter,
83
+ kind: "link",
84
+ "data-test-id": "clear-filter-button",
85
+ children: "CLEAR FILTER"
86
+ }
87
+ ),
88
+ /* @__PURE__ */ jsxs(
89
+ Menu,
90
+ {
91
+ enableVirtualization,
92
+ size,
93
+ "data-test-id": testId,
94
+ onSelect,
95
+ children: [
96
+ enableSearch && /* @__PURE__ */ jsx(
97
+ MenuSearch,
98
+ {
99
+ value: searchValue,
100
+ id: searchId,
101
+ placeholder: searchPlaceholder,
102
+ onChange: onSearchChange,
103
+ ariaLabel: searchAriaLabel
104
+ }
105
+ ),
106
+ filterOptions.map((option, index) => {
107
+ if (option.isDivider) {
108
+ return /* @__PURE__ */ jsx(MenuDivider, {}, `divider-${index}`);
109
+ }
110
+ return /* @__PURE__ */ jsx(
111
+ MenuItem,
112
+ {
113
+ item: option,
114
+ disabled: option.isDisabled,
115
+ icon: option.isChecked ? Check : null,
116
+ role: "menuitemradio",
117
+ "aria-checked": option.isChecked ? "true" : void 0,
118
+ nested: option.nested,
119
+ groupHeader: option.groupHeader,
120
+ tooltip: option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : void 0,
121
+ tooltipPlacement: "right",
122
+ children: option.name
123
+ },
124
+ option.value
125
+ );
126
+ })
127
+ ]
128
+ }
129
+ )
130
+ ] });
128
131
  };
129
132
  const SEARCH_INPUT_THRESHOLD$1 = 4;
130
133
  const AppliedFilter = ({
@@ -145,28 +148,31 @@ const AppliedFilter = ({
145
148
  ...props
146
149
  }) => {
147
150
  const enableSearch = onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD$1 || !isEmpty);
148
- return /* @__PURE__ */ jsxs(Dropdown, {
149
- targetClassName: className,
150
- placement: "bottom-start",
151
- enableArrow: false,
152
- ...props,
153
- children: [/* @__PURE__ */ jsx(AppliedFilterButton, {
154
- "data-test-id": testId,
155
- name: name2,
156
- onClickFilterButton,
157
- children: description2
158
- }), /* @__PURE__ */ jsx(FilterMenu, {
159
- options,
160
- searchValue,
161
- searchPlaceholder,
162
- enableSearch,
163
- searchAriaLabel,
164
- searchId,
165
- onSearchChange,
166
- onClearFilter,
167
- isLoading
168
- })]
169
- });
151
+ return /* @__PURE__ */ jsxs(Dropdown, { targetClassName: className, placement: "bottom-start", enableArrow: false, ...props, children: [
152
+ /* @__PURE__ */ jsx(
153
+ AppliedFilterButton,
154
+ {
155
+ "data-test-id": testId,
156
+ name: name2,
157
+ onClickFilterButton,
158
+ children: description2
159
+ }
160
+ ),
161
+ /* @__PURE__ */ jsx(
162
+ FilterMenu,
163
+ {
164
+ options,
165
+ searchValue,
166
+ searchPlaceholder,
167
+ enableSearch,
168
+ searchAriaLabel,
169
+ searchId,
170
+ onSearchChange,
171
+ onClearFilter,
172
+ isLoading
173
+ }
174
+ )
175
+ ] });
170
176
  };
171
177
  const FilterButton = forwardRef((props, ref) => {
172
178
  const {
@@ -187,56 +193,47 @@ const FilterButton = forwardRef((props, ref) => {
187
193
  const nameId = useId();
188
194
  const descriptionId = useId();
189
195
  const hasDescription = Children.count(children) !== 0;
190
- const nameElement = /* @__PURE__ */ jsxs("span", {
191
- className: styles.name,
192
- children: [name2, hasDescription && ":"]
193
- });
196
+ const nameElement = /* @__PURE__ */ jsxs("span", { className: styles.name, children: [
197
+ name2,
198
+ hasDescription && ":"
199
+ ] });
194
200
  const isDisabled = disabled;
195
201
  const handleClick = (event) => {
196
202
  if (isDisabled)
197
203
  return event.preventDefault();
198
204
  onClickFilterButton == null ? void 0 : onClickFilterButton();
199
205
  };
200
- return /* @__PURE__ */ jsxs("div", {
201
- className: styles.buttonContainer,
202
- "data-test-id": testId,
203
- children: [/* @__PURE__ */ jsxs("button", {
204
- ...rest,
205
- "aria-labelledby": `${nameId} ${hasDescription ? descriptionId : ""}`,
206
- "aria-haspopup": true,
207
- disabled: isDisabled,
208
- "aria-disabled": isDisabled,
209
- className: cx(styles.button, className, (isClearable2 || isSelected) && styles.isClearable),
210
- ref,
211
- onClick: handleClick,
212
- children: [hideName ? /* @__PURE__ */ jsx(VisuallyHidden, {
213
- id: nameId,
214
- children: nameElement
215
- }) : /* @__PURE__ */ jsx("span", {
216
- id: nameId,
217
- children: nameElement
218
- }), hasDescription && /* @__PURE__ */ jsx("span", {
219
- id: descriptionId,
220
- className: styles.description,
221
- children
222
- }), !isClearable2 && /* @__PURE__ */ jsx(ExpandMore, {
223
- size: "small"
224
- })]
225
- }), isClearable2 && /* @__PURE__ */ jsx(Tooltip, {
226
- targetClassName: styles.clearTooltip,
227
- content: clearTooltip2,
228
- children: /* @__PURE__ */ jsx(IconButton, {
206
+ return /* @__PURE__ */ jsxs("div", { className: styles.buttonContainer, "data-test-id": testId, children: [
207
+ /* @__PURE__ */ jsxs(
208
+ "button",
209
+ {
210
+ ...rest,
211
+ "aria-labelledby": `${nameId} ${hasDescription ? descriptionId : ""}`,
212
+ "aria-haspopup": true,
213
+ disabled: isDisabled,
214
+ "aria-disabled": isDisabled,
215
+ className: cx(styles.button, className, (isClearable2 || isSelected) && styles.isClearable),
216
+ ref,
217
+ onClick: handleClick,
218
+ children: [
219
+ hideName ? /* @__PURE__ */ jsx(VisuallyHidden, { id: nameId, children: nameElement }) : /* @__PURE__ */ jsx("span", { id: nameId, children: nameElement }),
220
+ hasDescription && /* @__PURE__ */ jsx("span", { id: descriptionId, className: styles.description, children }),
221
+ !isClearable2 && /* @__PURE__ */ jsx(ExpandMore, { size: "small" })
222
+ ]
223
+ }
224
+ ),
225
+ isClearable2 && /* @__PURE__ */ jsx(Tooltip, { targetClassName: styles.clearTooltip, content: clearTooltip2, children: /* @__PURE__ */ jsx(
226
+ IconButton,
227
+ {
229
228
  "aria-label": ariaLabel,
230
229
  className: styles.clear,
231
230
  "data-test-id": "clear-filter-button",
232
- icon: /* @__PURE__ */ jsx(Close, {
233
- size: "tiny"
234
- }),
231
+ icon: /* @__PURE__ */ jsx(Close, { size: "tiny" }),
235
232
  size: "small",
236
233
  onClick: onClear
237
- })
238
- })]
239
- });
234
+ }
235
+ ) })
236
+ ] });
240
237
  });
241
238
  FilterButton.defaultProps = {
242
239
  clearTooltip: "Clear filter"
@@ -274,35 +271,47 @@ const Filter = ({
274
271
  event.preventDefault();
275
272
  onClear == null ? void 0 : onClear();
276
273
  };
277
- return /* @__PURE__ */ jsxs(Dropdown, {
278
- targetTestId: testId,
279
- disabled,
280
- targetClassName: dropdownClasses,
281
- ...props,
282
- children: [/* @__PURE__ */ jsx(FilterButton, {
283
- isClearable: isClearable2,
284
- onClear: handleClear,
285
- name: name2,
286
- hideName,
274
+ return /* @__PURE__ */ jsxs(
275
+ Dropdown,
276
+ {
277
+ targetTestId: testId,
287
278
  disabled,
288
- isSelected,
289
- onClickFilterButton,
290
- ariaLabel: clearAriaLabel,
291
- children: description2
292
- }), /* @__PURE__ */ jsx(FilterMenu, {
293
- options,
294
- searchId,
295
- searchValue,
296
- searchPlaceholder,
297
- searchAriaLabel,
298
- enableSearch,
299
- onSearchChange,
300
- isLoading,
301
- disabledOptionTooltip,
302
- size,
303
- enableVirtualization
304
- })]
305
- });
279
+ targetClassName: dropdownClasses,
280
+ ...props,
281
+ children: [
282
+ /* @__PURE__ */ jsx(
283
+ FilterButton,
284
+ {
285
+ isClearable: isClearable2,
286
+ onClear: handleClear,
287
+ name: name2,
288
+ hideName,
289
+ disabled,
290
+ isSelected,
291
+ onClickFilterButton,
292
+ ariaLabel: clearAriaLabel,
293
+ children: description2
294
+ }
295
+ ),
296
+ /* @__PURE__ */ jsx(
297
+ FilterMenu,
298
+ {
299
+ options,
300
+ searchId,
301
+ searchValue,
302
+ searchPlaceholder,
303
+ searchAriaLabel,
304
+ enableSearch,
305
+ onSearchChange,
306
+ isLoading,
307
+ disabledOptionTooltip,
308
+ size,
309
+ enableVirtualization
310
+ }
311
+ )
312
+ ]
313
+ }
314
+ );
306
315
  };
307
316
  export {
308
317
  AppliedFilter,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/AppliedFilterButton.tsx","../src/FilterMenu.tsx","../src/AppliedFilter.tsx","../src/FilterButton.tsx","../src/Filter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ExpandMore } from '@launchpad-ui/icons';\nimport { cx } from 'classix';\nimport { Children, forwardRef } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype AppliedFilterButtonProps = {\n name?: ReactNode;\n className?: string;\n children: ReactNode;\n onClickFilterButton?(): void;\n 'data-test-id': string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst AppliedFilterButton = forwardRef<Ref, AppliedFilterButtonProps>((props, ref) => {\n const { name, className, children, onClickFilterButton, 'data-test-id': testId } = props;\n\n const hasDescription = Children.count(children) !== 0;\n\n return (\n <div data-test-id={testId}>\n <button\n aria-haspopup\n className={cx(styles.appliedButton, className)}\n ref={ref}\n onClick={onClickFilterButton}\n >\n {name && (\n <span className={styles.appliedName} data-test-id={`${testId}-name`}>\n {name}\n {hasDescription && ':'}\n </span>\n )}\n {hasDescription && (\n <span className={styles.appliedDescription} data-test-id={`${testId}-description`}>\n {children}\n </span>\n )}\n <ExpandMore size=\"small\" data-test-id={`${testId}-expand`} />\n </button>\n </div>\n );\n});\n\nAppliedFilterButton.displayName = 'AppliedFilterButton';\n\nexport type { AppliedFilterButtonProps };\nexport { AppliedFilterButton };\n","import type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Button } from '@launchpad-ui/button';\nimport { Check } from '@launchpad-ui/icons';\nimport { Menu, MenuDivider, MenuItem, MenuSearch } from '@launchpad-ui/menu';\n\nimport styles from './styles/Filter.module.css';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FilterOption<T = any> = {\n name?: ReactNode;\n isDisabled?: boolean;\n isDivider?: boolean;\n isChecked?: boolean;\n value: T | null;\n projKey?: string;\n nested?: boolean;\n groupHeader?: boolean;\n};\n\ntype FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' | 'data-test-id'> & {\n options: FilterOption[];\n onClearFilter?(): void;\n enableSearch?: boolean;\n searchValue?: string;\n searchId?: string;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onSelect?(): void;\n isLoading?: boolean;\n disabledOptionTooltip?: string;\n};\n\nconst FilterMenu = ({\n options,\n onClearFilter,\n enableSearch,\n searchValue,\n searchPlaceholder,\n searchAriaLabel,\n searchId,\n onSelect,\n onSearchChange,\n isLoading = false,\n disabledOptionTooltip,\n enableVirtualization,\n size,\n 'data-test-id': testId = 'filter-menu',\n}: FilterMenuProps) => {\n const filterOptions = isLoading\n ? [{ name: 'loading...', value: 'loading...', isDisabled: true }]\n : options;\n\n return (\n <>\n {onClearFilter && (\n <Button\n tabIndex={0}\n className={styles.filterClearButton}\n onClick={onClearFilter}\n kind=\"link\"\n data-test-id=\"clear-filter-button\"\n >\n CLEAR FILTER\n </Button>\n )}\n <Menu\n enableVirtualization={enableVirtualization}\n size={size}\n data-test-id={testId}\n onSelect={onSelect}\n >\n {enableSearch && (\n <MenuSearch\n value={searchValue}\n id={searchId}\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n ariaLabel={searchAriaLabel}\n />\n )}\n {filterOptions.map((option, index) => {\n if (option.isDivider) {\n return <MenuDivider key={`divider-${index}`} />;\n }\n return (\n <MenuItem\n item={option}\n disabled={option.isDisabled}\n icon={option.isChecked ? Check : null}\n key={option.value}\n role=\"menuitemradio\"\n aria-checked={option.isChecked ? 'true' : undefined}\n nested={option.nested}\n groupHeader={option.groupHeader}\n tooltip={\n option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : undefined\n }\n tooltipPlacement=\"right\"\n >\n {option.name}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nexport { FilterMenu };\nexport type { FilterOption, FilterMenuProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\n\nimport { AppliedFilterButton } from './AppliedFilterButton';\nimport { FilterMenu } from './FilterMenu';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype AppliedFilterProps = {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onClearFilter?(): void;\n searchPlaceholder?: string;\n name?: ReactNode;\n description: ReactNode;\n options: FilterOption[];\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n onClickFilterButton?(): void;\n searchAriaLabel?: string;\n searchId?: string;\n 'data-test-id'?: string;\n};\n\nconst AppliedFilter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n name,\n description,\n options,\n className,\n isEmpty,\n isLoading,\n onClickFilterButton,\n onClearFilter,\n searchAriaLabel,\n searchId,\n 'data-test-id': testId = 'applied-filter',\n ...props\n}: AppliedFilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n return (\n <Dropdown targetClassName={className} placement=\"bottom-start\" enableArrow={false} {...props}>\n <AppliedFilterButton\n data-test-id={testId}\n name={name}\n onClickFilterButton={onClickFilterButton}\n >\n {description}\n </AppliedFilterButton>\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\n searchId={searchId}\n onSearchChange={onSearchChange}\n onClearFilter={onClearFilter}\n isLoading={isLoading}\n />\n </Dropdown>\n );\n};\n\nexport type { AppliedFilterProps };\nexport { AppliedFilter };\n","import type { ReactNode, SyntheticEvent, MouseEvent } from 'react';\n\nimport { IconButton } from '@launchpad-ui/button';\nimport { Close, ExpandMore } from '@launchpad-ui/icons';\nimport { Tooltip } from '@launchpad-ui/tooltip';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { cx } from 'classix';\nimport { Children, forwardRef, useId } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype FilterButtonProps = {\n name: ReactNode;\n hideName?: boolean;\n isClearable?: boolean;\n onClear?(event: SyntheticEvent): void;\n className?: string;\n isSelected?: boolean;\n clearTooltip?: string | JSX.Element;\n children?: ReactNode;\n disabled?: boolean;\n onClickFilterButton?(): void;\n 'data-test-id'?: string;\n ariaLabel?: string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst FilterButton = forwardRef<Ref, FilterButtonProps>((props, ref) => {\n const {\n children,\n name,\n hideName,\n isClearable,\n clearTooltip,\n onClear,\n disabled,\n isSelected,\n onClickFilterButton,\n className,\n 'data-test-id': testId = 'filter-button',\n ariaLabel = 'Clear filter',\n ...rest\n } = props;\n const nameId = useId();\n const descriptionId = useId();\n\n const hasDescription = Children.count(children) !== 0;\n\n const nameElement = (\n <span className={styles.name}>\n {name}\n {hasDescription && ':'}\n </span>\n );\n\n const isDisabled = disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return event.preventDefault();\n onClickFilterButton?.();\n };\n\n return (\n <div className={styles.buttonContainer} data-test-id={testId}>\n <button\n {...rest}\n aria-labelledby={`${nameId} ${hasDescription ? descriptionId : ''}`}\n aria-haspopup\n disabled={isDisabled}\n aria-disabled={isDisabled}\n className={cx(styles.button, className, (isClearable || isSelected) && styles.isClearable)}\n ref={ref}\n onClick={handleClick}\n >\n {hideName ? (\n <VisuallyHidden id={nameId}>{nameElement}</VisuallyHidden>\n ) : (\n <span id={nameId}>{nameElement}</span>\n )}\n {hasDescription && (\n <span id={descriptionId} className={styles.description}>\n {children}\n </span>\n )}\n {!isClearable && <ExpandMore size=\"small\" />}\n </button>\n {isClearable && (\n <Tooltip targetClassName={styles.clearTooltip} content={clearTooltip}>\n <IconButton\n aria-label={ariaLabel}\n className={styles.clear}\n data-test-id=\"clear-filter-button\"\n icon={<Close size=\"tiny\" />}\n size=\"small\"\n onClick={onClear}\n />\n </Tooltip>\n )}\n </div>\n );\n});\n\nFilterButton.defaultProps = {\n clearTooltip: 'Clear filter',\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport { FilterButton };\nexport type { FilterButtonProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode, SyntheticEvent } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\nimport { cx } from 'classix';\n\nimport { FilterButton } from './FilterButton';\nimport { FilterMenu } from './FilterMenu';\nimport styles from './styles/Filter.module.css';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n name: ReactNode;\n hideName?: boolean;\n description: ReactNode;\n options: FilterOption[];\n isClearable?: boolean;\n onClear?(): void;\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n isSelected?: boolean;\n searchId?: string;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n onClickFilterButton?(): void;\n disabledOptionTooltip?: string;\n 'data-test-id'?: string;\n triggerTestId?: string;\n clearAriaLabel?: string;\n};\n\nconst Filter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n searchAriaLabel,\n name,\n hideName,\n description,\n options,\n isClearable,\n onClear,\n isSelected,\n className,\n isEmpty,\n searchId,\n isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\n clearAriaLabel,\n ...props\n}: FilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n const dropdownClasses = cx(styles.filter, className);\n\n const handleClear = (event: SyntheticEvent) => {\n event.preventDefault();\n onClear?.();\n };\n\n return (\n <Dropdown\n targetTestId={testId}\n disabled={disabled}\n targetClassName={dropdownClasses}\n {...props}\n >\n <FilterButton\n isClearable={isClearable}\n onClear={handleClear}\n name={name}\n hideName={hideName}\n disabled={disabled}\n isSelected={isSelected}\n onClickFilterButton={onClickFilterButton}\n ariaLabel={clearAriaLabel}\n >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\n searchId={searchId}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n searchAriaLabel={searchAriaLabel}\n enableSearch={enableSearch}\n onSearchChange={onSearchChange}\n isLoading={isLoading}\n disabledOptionTooltip={disabledOptionTooltip}\n size={size}\n enableVirtualization={enableVirtualization}\n />\n </Dropdown>\n );\n};\n\nexport { Filter };\nexport type { FilterProps };\n"],"names":["AppliedFilterButton","forwardRef","props","ref","name","className","children","onClickFilterButton","testId","hasDescription","Children","count","cx","styles","appliedButton","onClick","_jsxs","appliedName","_jsx","appliedDescription","ExpandMore","size","displayName","FilterMenu","options","onClearFilter","enableSearch","searchValue","searchPlaceholder","searchAriaLabel","searchId","onSelect","onSearchChange","isLoading","disabledOptionTooltip","enableVirtualization","filterOptions","value","isDisabled","_Fragment","Button","tabIndex","filterClearButton","kind","Menu","MenuSearch","id","placeholder","onChange","ariaLabel","map","option","index","isDivider","MenuDivider","MenuItem","item","disabled","icon","isChecked","Check","role","undefined","nested","groupHeader","tooltip","tooltipPlacement","SEARCH_INPUT_THRESHOLD","AppliedFilter","description","isEmpty","length","Dropdown","targetClassName","placement","enableArrow","FilterButton","hideName","isClearable","clearTooltip","onClear","isSelected","rest","nameId","useId","descriptionId","nameElement","handleClick","event","preventDefault","buttonContainer","button","VisuallyHidden","Tooltip","content","IconButton","clear","Close","defaultProps","Filter","clearAriaLabel","dropdownClasses","filter","handleClear","targetTestId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,sBAAsBC,WAA0C,CAACC,OAAOC,QAAQ;AAC9E,QAAA;AAAA,IAAEC,MAAAA;AAAAA,IAAMC;AAAAA,IAAWC;AAAAA,IAAUC;AAAAA,IAAqB,gBAAgBC;AAAAA,EAAWN,IAAAA;AAEnF,QAAMO,iBAAiBC,SAASC,MAAML,QAAQ,MAAM;AAEpD,6BACE,OAAA;AAAA,IAAK,gBAAcE;AAAAA,IAAOF,+BACxB,UAAA;AAAA,MACE,iBAAa;AAAA,MACbD,WAAWO,GAAGC,OAAOC,eAAeT,SAAS;AAAA,MAC7CF;AAAAA,MACAY,SAASR;AAAAA,MAAoBD,UAAA,CAE5BF,SACCY,qBAAA,QAAA;AAAA,QAAMX,WAAWQ,OAAOI;AAAAA,QAAa,gBAAe,GAAET;AAAAA,QAAcF,UACjEF,CAAAA,OACAK,kBAAkB,GAAG;AAAA,MAAA,CAEzB,GACAA,kBACCS,oBAAA,QAAA;AAAA,QAAMb,WAAWQ,OAAOM;AAAAA,QAAoB,gBAAe,GAAEX;AAAAA,QAAqBF;AAAAA,MAAAA,CAGnF,GACDY,oBAACE,YAAU;AAAA,QAACC,MAAK;AAAA,QAAQ,gBAAe,GAAEb;AAAAA,MAAAA,CAAmB,CAAA;AAAA,IAAA,CAAA;AAAA,EAAA,CAE3D;AAEV,CAAC;AAEDR,oBAAoBsB,cAAc;ACblC,MAAMC,aAAaA,CAAC;AAAA,EAClBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,YAAY;AAAA,EACZC;AAAAA,EACAC;AAAAA,EACAd;AAAAA,EACA,gBAAgBb,SAAS;AACV,MAAM;AACf4B,QAAAA,gBAAgBH,YAClB,CAAC;AAAA,IAAE7B,MAAM;AAAA,IAAciC,OAAO;AAAA,IAAcC,YAAY;AAAA,EAAM,CAAA,IAC9Dd;AAEJ,8BACEe,UAAA;AAAA,IAAAjC,UACGmB,CAAAA,iBACCP,oBAACsB,QAAM;AAAA,MACLC,UAAU;AAAA,MACVpC,WAAWQ,OAAO6B;AAAAA,MAClB3B,SAASU;AAAAA,MACTkB,MAAK;AAAA,MACL,gBAAa;AAAA,MAAqBrC,UACnC;AAAA,IAAA,CAGF,GACDU,qBAAC4B,MAAI;AAAA,MACHT;AAAAA,MACAd;AAAAA,MACA,gBAAcb;AAAAA,MACduB;AAAAA,MAAmBzB,UAElBoB,CAAAA,gBACCR,oBAAC2B,YAAU;AAAA,QACTR,OAAOV;AAAAA,QACPmB,IAAIhB;AAAAA,QACJiB,aAAanB;AAAAA,QACboB,UAAUhB;AAAAA,QACViB,WAAWpB;AAAAA,MAEd,CAAA,GACAO,cAAcc,IAAI,CAACC,QAAQC,UAAU;AACpC,YAAID,OAAOE,WAAW;AACpB,iBAAQC,oBAAAA,iBAAkB,WAAUF,OAAO;AAAA,QAC7C;AACA,mCACGG,UAAQ;AAAA,UACPC,MAAML;AAAAA,UACNM,UAAUN,OAAOb;AAAAA,UACjBoB,MAAMP,OAAOQ,YAAYC,QAAQ;AAAA,UAEjCC,MAAK;AAAA,UACL,gBAAcV,OAAOQ,YAAY,SAASG;AAAAA,UAC1CC,QAAQZ,OAAOY;AAAAA,UACfC,aAAab,OAAOa;AAAAA,UACpBC,SACEd,OAAOb,cAAcJ,wBAAwBA,wBAAwB4B;AAAAA,UAEvEI,kBAAiB;AAAA,UAAO5D,UAEvB6C,OAAO/C;AAAAA,QAAAA,GAVH+C,OAAOd,KAAK;AAAA,MAAA,CAatB,CAAC;AAAA,IAAA,CACG,CAAA;AAAA,EAAA,CACN;AAEP;ACrGA,MAAM8B,2BAAyB;AAqB/B,MAAMC,gBAAgBA,CAAC;AAAA,EACrBzC;AAAAA,EACAK;AAAAA,EACAJ;AAAAA,EACAxB,MAAAA;AAAAA,EACAiE,aAAAA;AAAAA,EACA7C;AAAAA,EACAnB;AAAAA,EACAiE;AAAAA,EACArC;AAAAA,EACA1B;AAAAA,EACAkB;AAAAA,EACAI;AAAAA,EACAC;AAAAA,EACA,gBAAgBtB,SAAS;AAAA,KACtBN;AACe,MAAM;AAClBwB,QAAAA,eACJM,mBAAmB,CAAC,CAACL,eAAeH,QAAQ+C,SAASJ,4BAA0B,CAACG;AAElF,8BACGE,UAAQ;AAAA,IAACC,iBAAiBpE;AAAAA,IAAWqE,WAAU;AAAA,IAAeC,aAAa;AAAA,IAAM,GAAKzE;AAAAA,IAAKI,UAAA,CAC1FY,oBAAClB,qBAAmB;AAAA,MAClB,gBAAcQ;AAAAA,MACdJ,MAAAA;AAAAA,MACAG;AAAAA,MAAyCD,UAExC+D;AAAAA,IAAAA,CACmB,GACtBnD,oBAACK,YAAU;AAAA,MACTC;AAAAA,MACAG;AAAAA,MACAC;AAAAA,MACAF;AAAAA,MACAG;AAAAA,MACAC;AAAAA,MACAE;AAAAA,MACAP;AAAAA,MACAQ;AAAAA,IAAAA,CACA,CAAA;AAAA,EAAA,CACO;AAEf;AC3CA,MAAM2C,eAAe3E,WAAmC,CAACC,OAAOC,QAAQ;AAChE,QAAA;AAAA,IACJG;AAAAA,IACAF,MAAAA;AAAAA,IACAyE;AAAAA,IACAC,aAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAC;AAAAA,IACAvB;AAAAA,IACAwB;AAAAA,IACA1E;AAAAA,IACAF;AAAAA,IACA,gBAAgBG,SAAS;AAAA,IACzByC,YAAY;AAAA,OACTiC;AAAAA,EACDhF,IAAAA;AACJ,QAAMiF,SAASC;AACf,QAAMC,gBAAgBD;AAEtB,QAAM3E,iBAAiBC,SAASC,MAAML,QAAQ,MAAM;AAE9CgF,QAAAA,mCACJ,QAAA;AAAA,IAAMjF,WAAWQ,OAAOT;AAAAA,IAAKE,UAC1BF,CAAAA,OACAK,kBAAkB,GAAG;AAAA,EAAA,CAEzB;AAED,QAAM6B,aAAamB;AAEb8B,QAAAA,cAAcA,CAACC,UAAyC;AACxDlD,QAAAA;AAAY,aAAOkD,MAAMC;AACN;AAAA,EAAA;AAGzB,8BACE,OAAA;AAAA,IAAKpF,WAAWQ,OAAO6E;AAAAA,IAAiB,gBAAclF;AAAAA,IAAOF,WAC3DU,qBAAA,UAAA;AAAA,MAAA,GACMkE;AAAAA,MACJ,mBAAkB,GAAEC,UAAU1E,iBAAiB4E,gBAAgB;AAAA,MAC/D,iBAAa;AAAA,MACb5B,UAAUnB;AAAAA,MACV,iBAAeA;AAAAA,MACfjC,WAAWO,GAAGC,OAAO8E,QAAQtF,YAAYyE,gBAAeG,eAAepE,OAAOiE,WAAW;AAAA,MACzF3E;AAAAA,MACAY,SAASwE;AAAAA,MAAYjF,UAEpBuE,CAAAA,WACC3D,oBAAC0E,gBAAc;AAAA,QAAC9C,IAAIqC;AAAAA,QAAO7E,UAAEgF;AAAAA,MAAAA,CAAW,IAExCpE,oBAAA,QAAA;AAAA,QAAM4B,IAAIqC;AAAAA,QAAO7E,UAAEgF;AAAAA,MAAAA,CACpB,GACA7E,kBACCS,oBAAA,QAAA;AAAA,QAAM4B,IAAIuC;AAAAA,QAAehF,WAAWQ,OAAOwD;AAAAA,QAAY/D;AAAAA,MAC5C,CAAA,GAGZ,CAACwE,oCAAgB1D,YAAU;AAAA,QAACC,MAAK;AAAA,MAAA,CAAU,CAAA;AAAA,IAAA,CAAA,GAE7CyD,gBACC5D,oBAAC2E,SAAO;AAAA,MAACpB,iBAAiB5D,OAAOkE;AAAAA,MAAce,SAASf;AAAAA,MAAazE,8BAClEyF,YAAU;AAAA,QACT,cAAY9C;AAAAA,QACZ5C,WAAWQ,OAAOmF;AAAAA,QAClB,gBAAa;AAAA,QACbtC,0BAAOuC,OAAK;AAAA,UAAC5E,MAAK;AAAA,QAAA,CAAU;AAAA,QAC5BA,MAAK;AAAA,QACLN,SAASiE;AAAAA,MAAAA,CAAQ;AAAA,IAAA,CAGtB,CAAA;AAAA,EAAA,CACG;AAEV,CAAC;AAEDJ,aAAasB,eAAe;AAAA,EAC1BnB,cAAc;AAChB;AAEAH,aAAatD,cAAc;AChG3B,MAAM6C,yBAAyB;AA4B/B,MAAMgC,SAASA,CAAC;AAAA,EACdxE;AAAAA,EACAK;AAAAA,EACAJ;AAAAA,EACAC;AAAAA,EACAzB,MAAAA;AAAAA,EACAyE;AAAAA,EACAR,aAAAA;AAAAA,EACA7C;AAAAA,EACAsD,aAAAA;AAAAA,EACAE;AAAAA,EACAC;AAAAA,EACA5E;AAAAA,EACAiE;AAAAA,EACAxC;AAAAA,EACAG;AAAAA,EACA1B;AAAAA,EACA2B;AAAAA,EACA,gBAAgB1B,SAAS;AAAA,EACzBa;AAAAA,EACAoC;AAAAA,EACAtB;AAAAA,EACAiE;AAAAA,KACGlG;AACQ,MAAM;AACXwB,QAAAA,eACJM,mBAAmB,CAAC,CAACL,eAAeH,QAAQ+C,SAASJ,0BAA0B,CAACG;AAElF,QAAM+B,kBAAkBzF,GAAGC,OAAOyF,QAAQjG,SAAS;AAE7CkG,QAAAA,cAAcA,CAACf,UAA0B;AAC7CA,UAAMC,eAAgB;AACX;AAAA,EAAA;AAGb,8BACGjB,UAAQ;AAAA,IACPgC,cAAchG;AAAAA,IACdiD;AAAAA,IACAgB,iBAAiB4B;AAAAA,IAAgB,GAC7BnG;AAAAA,IAAKI,UAAA,CAETY,oBAAC0D,cAAY;AAAA,MACXE,aAAAA;AAAAA,MACAE,SAASuB;AAAAA,MACTnG,MAAAA;AAAAA,MACAyE;AAAAA,MACApB;AAAAA,MACAwB;AAAAA,MACA1E;AAAAA,MACA0C,WAAWmD;AAAAA,MAAe9F,UAEzB+D;AAAAA,IAAAA,CACY,GACfnD,oBAACK,YAAU;AAAA,MACTC;AAAAA,MACAM;AAAAA,MACAH;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAH;AAAAA,MACAM;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAb;AAAAA,MACAc;AAAAA,IAAAA,CACA,CAAA;AAAA,EAAA,CACO;AAEf;"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/AppliedFilterButton.tsx","../src/FilterMenu.tsx","../src/AppliedFilter.tsx","../src/FilterButton.tsx","../src/Filter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ExpandMore } from '@launchpad-ui/icons';\nimport { cx } from 'classix';\nimport { Children, forwardRef } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype AppliedFilterButtonProps = {\n name?: ReactNode;\n className?: string;\n children: ReactNode;\n onClickFilterButton?(): void;\n 'data-test-id': string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst AppliedFilterButton = forwardRef<Ref, AppliedFilterButtonProps>((props, ref) => {\n const { name, className, children, onClickFilterButton, 'data-test-id': testId } = props;\n\n const hasDescription = Children.count(children) !== 0;\n\n return (\n <div data-test-id={testId}>\n <button\n aria-haspopup\n className={cx(styles.appliedButton, className)}\n ref={ref}\n onClick={onClickFilterButton}\n >\n {name && (\n <span className={styles.appliedName} data-test-id={`${testId}-name`}>\n {name}\n {hasDescription && ':'}\n </span>\n )}\n {hasDescription && (\n <span className={styles.appliedDescription} data-test-id={`${testId}-description`}>\n {children}\n </span>\n )}\n <ExpandMore size=\"small\" data-test-id={`${testId}-expand`} />\n </button>\n </div>\n );\n});\n\nAppliedFilterButton.displayName = 'AppliedFilterButton';\n\nexport type { AppliedFilterButtonProps };\nexport { AppliedFilterButton };\n","import type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Button } from '@launchpad-ui/button';\nimport { Check } from '@launchpad-ui/icons';\nimport { Menu, MenuDivider, MenuItem, MenuSearch } from '@launchpad-ui/menu';\n\nimport styles from './styles/Filter.module.css';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FilterOption<T = any> = {\n name?: ReactNode;\n isDisabled?: boolean;\n isDivider?: boolean;\n isChecked?: boolean;\n value: T | null;\n projKey?: string;\n nested?: boolean;\n groupHeader?: boolean;\n};\n\ntype FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' | 'data-test-id'> & {\n options: FilterOption[];\n onClearFilter?(): void;\n enableSearch?: boolean;\n searchValue?: string;\n searchId?: string;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onSelect?(): void;\n isLoading?: boolean;\n disabledOptionTooltip?: string;\n};\n\nconst FilterMenu = ({\n options,\n onClearFilter,\n enableSearch,\n searchValue,\n searchPlaceholder,\n searchAriaLabel,\n searchId,\n onSelect,\n onSearchChange,\n isLoading = false,\n disabledOptionTooltip,\n enableVirtualization,\n size,\n 'data-test-id': testId = 'filter-menu',\n}: FilterMenuProps) => {\n const filterOptions = isLoading\n ? [{ name: 'loading...', value: 'loading...', isDisabled: true }]\n : options;\n\n return (\n <>\n {onClearFilter && (\n <Button\n tabIndex={0}\n className={styles.filterClearButton}\n onClick={onClearFilter}\n kind=\"link\"\n data-test-id=\"clear-filter-button\"\n >\n CLEAR FILTER\n </Button>\n )}\n <Menu\n enableVirtualization={enableVirtualization}\n size={size}\n data-test-id={testId}\n onSelect={onSelect}\n >\n {enableSearch && (\n <MenuSearch\n value={searchValue}\n id={searchId}\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n ariaLabel={searchAriaLabel}\n />\n )}\n {filterOptions.map((option, index) => {\n if (option.isDivider) {\n return <MenuDivider key={`divider-${index}`} />;\n }\n return (\n <MenuItem\n item={option}\n disabled={option.isDisabled}\n icon={option.isChecked ? Check : null}\n key={option.value}\n role=\"menuitemradio\"\n aria-checked={option.isChecked ? 'true' : undefined}\n nested={option.nested}\n groupHeader={option.groupHeader}\n tooltip={\n option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : undefined\n }\n tooltipPlacement=\"right\"\n >\n {option.name}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nexport { FilterMenu };\nexport type { FilterOption, FilterMenuProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\n\nimport { AppliedFilterButton } from './AppliedFilterButton';\nimport { FilterMenu } from './FilterMenu';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype AppliedFilterProps = {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onClearFilter?(): void;\n searchPlaceholder?: string;\n name?: ReactNode;\n description: ReactNode;\n options: FilterOption[];\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n onClickFilterButton?(): void;\n searchAriaLabel?: string;\n searchId?: string;\n 'data-test-id'?: string;\n};\n\nconst AppliedFilter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n name,\n description,\n options,\n className,\n isEmpty,\n isLoading,\n onClickFilterButton,\n onClearFilter,\n searchAriaLabel,\n searchId,\n 'data-test-id': testId = 'applied-filter',\n ...props\n}: AppliedFilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n return (\n <Dropdown targetClassName={className} placement=\"bottom-start\" enableArrow={false} {...props}>\n <AppliedFilterButton\n data-test-id={testId}\n name={name}\n onClickFilterButton={onClickFilterButton}\n >\n {description}\n </AppliedFilterButton>\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\n searchId={searchId}\n onSearchChange={onSearchChange}\n onClearFilter={onClearFilter}\n isLoading={isLoading}\n />\n </Dropdown>\n );\n};\n\nexport type { AppliedFilterProps };\nexport { AppliedFilter };\n","import type { ReactNode, SyntheticEvent, MouseEvent } from 'react';\n\nimport { IconButton } from '@launchpad-ui/button';\nimport { Close, ExpandMore } from '@launchpad-ui/icons';\nimport { Tooltip } from '@launchpad-ui/tooltip';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { cx } from 'classix';\nimport { Children, forwardRef, useId } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype FilterButtonProps = {\n name: ReactNode;\n hideName?: boolean;\n isClearable?: boolean;\n onClear?(event: SyntheticEvent): void;\n className?: string;\n isSelected?: boolean;\n clearTooltip?: string | JSX.Element;\n children?: ReactNode;\n disabled?: boolean;\n onClickFilterButton?(): void;\n 'data-test-id'?: string;\n ariaLabel?: string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst FilterButton = forwardRef<Ref, FilterButtonProps>((props, ref) => {\n const {\n children,\n name,\n hideName,\n isClearable,\n clearTooltip,\n onClear,\n disabled,\n isSelected,\n onClickFilterButton,\n className,\n 'data-test-id': testId = 'filter-button',\n ariaLabel = 'Clear filter',\n ...rest\n } = props;\n const nameId = useId();\n const descriptionId = useId();\n\n const hasDescription = Children.count(children) !== 0;\n\n const nameElement = (\n <span className={styles.name}>\n {name}\n {hasDescription && ':'}\n </span>\n );\n\n const isDisabled = disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return event.preventDefault();\n onClickFilterButton?.();\n };\n\n return (\n <div className={styles.buttonContainer} data-test-id={testId}>\n <button\n {...rest}\n aria-labelledby={`${nameId} ${hasDescription ? descriptionId : ''}`}\n aria-haspopup\n disabled={isDisabled}\n aria-disabled={isDisabled}\n className={cx(styles.button, className, (isClearable || isSelected) && styles.isClearable)}\n ref={ref}\n onClick={handleClick}\n >\n {hideName ? (\n <VisuallyHidden id={nameId}>{nameElement}</VisuallyHidden>\n ) : (\n <span id={nameId}>{nameElement}</span>\n )}\n {hasDescription && (\n <span id={descriptionId} className={styles.description}>\n {children}\n </span>\n )}\n {!isClearable && <ExpandMore size=\"small\" />}\n </button>\n {isClearable && (\n <Tooltip targetClassName={styles.clearTooltip} content={clearTooltip}>\n <IconButton\n aria-label={ariaLabel}\n className={styles.clear}\n data-test-id=\"clear-filter-button\"\n icon={<Close size=\"tiny\" />}\n size=\"small\"\n onClick={onClear}\n />\n </Tooltip>\n )}\n </div>\n );\n});\n\nFilterButton.defaultProps = {\n clearTooltip: 'Clear filter',\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport { FilterButton };\nexport type { FilterButtonProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode, SyntheticEvent } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\nimport { cx } from 'classix';\n\nimport { FilterButton } from './FilterButton';\nimport { FilterMenu } from './FilterMenu';\nimport styles from './styles/Filter.module.css';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n name: ReactNode;\n hideName?: boolean;\n description: ReactNode;\n options: FilterOption[];\n isClearable?: boolean;\n onClear?(): void;\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n isSelected?: boolean;\n searchId?: string;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n onClickFilterButton?(): void;\n disabledOptionTooltip?: string;\n 'data-test-id'?: string;\n triggerTestId?: string;\n clearAriaLabel?: string;\n};\n\nconst Filter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n searchAriaLabel,\n name,\n hideName,\n description,\n options,\n isClearable,\n onClear,\n isSelected,\n className,\n isEmpty,\n searchId,\n isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\n clearAriaLabel,\n ...props\n}: FilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n const dropdownClasses = cx(styles.filter, className);\n\n const handleClear = (event: SyntheticEvent) => {\n event.preventDefault();\n onClear?.();\n };\n\n return (\n <Dropdown\n targetTestId={testId}\n disabled={disabled}\n targetClassName={dropdownClasses}\n {...props}\n >\n <FilterButton\n isClearable={isClearable}\n onClear={handleClear}\n name={name}\n hideName={hideName}\n disabled={disabled}\n isSelected={isSelected}\n onClickFilterButton={onClickFilterButton}\n ariaLabel={clearAriaLabel}\n >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\n searchId={searchId}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n searchAriaLabel={searchAriaLabel}\n enableSearch={enableSearch}\n onSearchChange={onSearchChange}\n isLoading={isLoading}\n disabledOptionTooltip={disabledOptionTooltip}\n size={size}\n enableVirtualization={enableVirtualization}\n />\n </Dropdown>\n );\n};\n\nexport { Filter };\nexport type { FilterProps };\n"],"names":["name","SEARCH_INPUT_THRESHOLD","description","isClearable","clearTooltip"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
1
  require('./style.css');
2
2
  "use strict";
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
4
+ const jsxRuntime = require("react/jsx-runtime");
4
5
  const dropdown = require("@launchpad-ui/dropdown");
5
6
  const icons = require("@launchpad-ui/icons");
6
7
  const classix = require("classix");
7
8
  const react = require("react");
8
- const jsxRuntime = require("react/jsx-runtime");
9
9
  const button$1 = require("@launchpad-ui/button");
10
10
  const menu = require("@launchpad-ui/menu");
11
11
  const tooltip = require("@launchpad-ui/tooltip");
@@ -37,35 +37,25 @@ const styles = {
37
37
  filterClearButton
38
38
  };
39
39
  const AppliedFilterButton = react.forwardRef((props, ref) => {
40
- const {
41
- name: name2,
42
- className,
43
- children,
44
- onClickFilterButton,
45
- "data-test-id": testId
46
- } = props;
40
+ const { name: name2, className, children, onClickFilterButton, "data-test-id": testId } = props;
47
41
  const hasDescription = react.Children.count(children) !== 0;
48
- return /* @__PURE__ */ jsxRuntime.jsx("div", {
49
- "data-test-id": testId,
50
- children: /* @__PURE__ */ jsxRuntime.jsxs("button", {
42
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-test-id": testId, children: /* @__PURE__ */ jsxRuntime.jsxs(
43
+ "button",
44
+ {
51
45
  "aria-haspopup": true,
52
46
  className: classix.cx(styles.appliedButton, className),
53
47
  ref,
54
48
  onClick: onClickFilterButton,
55
- children: [name2 && /* @__PURE__ */ jsxRuntime.jsxs("span", {
56
- className: styles.appliedName,
57
- "data-test-id": `${testId}-name`,
58
- children: [name2, hasDescription && ":"]
59
- }), hasDescription && /* @__PURE__ */ jsxRuntime.jsx("span", {
60
- className: styles.appliedDescription,
61
- "data-test-id": `${testId}-description`,
62
- children
63
- }), /* @__PURE__ */ jsxRuntime.jsx(icons.ExpandMore, {
64
- size: "small",
65
- "data-test-id": `${testId}-expand`
66
- })]
67
- })
68
- });
49
+ children: [
50
+ name2 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.appliedName, "data-test-id": `${testId}-name`, children: [
51
+ name2,
52
+ hasDescription && ":"
53
+ ] }),
54
+ hasDescription && /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles.appliedDescription, "data-test-id": `${testId}-description`, children }),
55
+ /* @__PURE__ */ jsxRuntime.jsx(icons.ExpandMore, { size: "small", "data-test-id": `${testId}-expand` })
56
+ ]
57
+ }
58
+ ) });
69
59
  });
70
60
  AppliedFilterButton.displayName = "AppliedFilterButton";
71
61
  const FilterMenu = ({
@@ -84,49 +74,62 @@ const FilterMenu = ({
84
74
  size,
85
75
  "data-test-id": testId = "filter-menu"
86
76
  }) => {
87
- const filterOptions = isLoading ? [{
88
- name: "loading...",
89
- value: "loading...",
90
- isDisabled: true
91
- }] : options;
92
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
93
- children: [onClearFilter && /* @__PURE__ */ jsxRuntime.jsx(button$1.Button, {
94
- tabIndex: 0,
95
- className: styles.filterClearButton,
96
- onClick: onClearFilter,
97
- kind: "link",
98
- "data-test-id": "clear-filter-button",
99
- children: "CLEAR FILTER"
100
- }), /* @__PURE__ */ jsxRuntime.jsxs(menu.Menu, {
101
- enableVirtualization,
102
- size,
103
- "data-test-id": testId,
104
- onSelect,
105
- children: [enableSearch && /* @__PURE__ */ jsxRuntime.jsx(menu.MenuSearch, {
106
- value: searchValue,
107
- id: searchId,
108
- placeholder: searchPlaceholder,
109
- onChange: onSearchChange,
110
- ariaLabel: searchAriaLabel
111
- }), filterOptions.map((option, index) => {
112
- if (option.isDivider) {
113
- return /* @__PURE__ */ jsxRuntime.jsx(menu.MenuDivider, {}, `divider-${index}`);
114
- }
115
- return /* @__PURE__ */ jsxRuntime.jsx(menu.MenuItem, {
116
- item: option,
117
- disabled: option.isDisabled,
118
- icon: option.isChecked ? icons.Check : null,
119
- role: "menuitemradio",
120
- "aria-checked": option.isChecked ? "true" : void 0,
121
- nested: option.nested,
122
- groupHeader: option.groupHeader,
123
- tooltip: option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : void 0,
124
- tooltipPlacement: "right",
125
- children: option.name
126
- }, option.value);
127
- })]
128
- })]
129
- });
77
+ const filterOptions = isLoading ? [{ name: "loading...", value: "loading...", isDisabled: true }] : options;
78
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
79
+ onClearFilter && /* @__PURE__ */ jsxRuntime.jsx(
80
+ button$1.Button,
81
+ {
82
+ tabIndex: 0,
83
+ className: styles.filterClearButton,
84
+ onClick: onClearFilter,
85
+ kind: "link",
86
+ "data-test-id": "clear-filter-button",
87
+ children: "CLEAR FILTER"
88
+ }
89
+ ),
90
+ /* @__PURE__ */ jsxRuntime.jsxs(
91
+ menu.Menu,
92
+ {
93
+ enableVirtualization,
94
+ size,
95
+ "data-test-id": testId,
96
+ onSelect,
97
+ children: [
98
+ enableSearch && /* @__PURE__ */ jsxRuntime.jsx(
99
+ menu.MenuSearch,
100
+ {
101
+ value: searchValue,
102
+ id: searchId,
103
+ placeholder: searchPlaceholder,
104
+ onChange: onSearchChange,
105
+ ariaLabel: searchAriaLabel
106
+ }
107
+ ),
108
+ filterOptions.map((option, index) => {
109
+ if (option.isDivider) {
110
+ return /* @__PURE__ */ jsxRuntime.jsx(menu.MenuDivider, {}, `divider-${index}`);
111
+ }
112
+ return /* @__PURE__ */ jsxRuntime.jsx(
113
+ menu.MenuItem,
114
+ {
115
+ item: option,
116
+ disabled: option.isDisabled,
117
+ icon: option.isChecked ? icons.Check : null,
118
+ role: "menuitemradio",
119
+ "aria-checked": option.isChecked ? "true" : void 0,
120
+ nested: option.nested,
121
+ groupHeader: option.groupHeader,
122
+ tooltip: option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : void 0,
123
+ tooltipPlacement: "right",
124
+ children: option.name
125
+ },
126
+ option.value
127
+ );
128
+ })
129
+ ]
130
+ }
131
+ )
132
+ ] });
130
133
  };
131
134
  const SEARCH_INPUT_THRESHOLD$1 = 4;
132
135
  const AppliedFilter = ({
@@ -147,28 +150,31 @@ const AppliedFilter = ({
147
150
  ...props
148
151
  }) => {
149
152
  const enableSearch = onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD$1 || !isEmpty);
150
- return /* @__PURE__ */ jsxRuntime.jsxs(dropdown.Dropdown, {
151
- targetClassName: className,
152
- placement: "bottom-start",
153
- enableArrow: false,
154
- ...props,
155
- children: [/* @__PURE__ */ jsxRuntime.jsx(AppliedFilterButton, {
156
- "data-test-id": testId,
157
- name: name2,
158
- onClickFilterButton,
159
- children: description2
160
- }), /* @__PURE__ */ jsxRuntime.jsx(FilterMenu, {
161
- options,
162
- searchValue,
163
- searchPlaceholder,
164
- enableSearch,
165
- searchAriaLabel,
166
- searchId,
167
- onSearchChange,
168
- onClearFilter,
169
- isLoading
170
- })]
171
- });
153
+ return /* @__PURE__ */ jsxRuntime.jsxs(dropdown.Dropdown, { targetClassName: className, placement: "bottom-start", enableArrow: false, ...props, children: [
154
+ /* @__PURE__ */ jsxRuntime.jsx(
155
+ AppliedFilterButton,
156
+ {
157
+ "data-test-id": testId,
158
+ name: name2,
159
+ onClickFilterButton,
160
+ children: description2
161
+ }
162
+ ),
163
+ /* @__PURE__ */ jsxRuntime.jsx(
164
+ FilterMenu,
165
+ {
166
+ options,
167
+ searchValue,
168
+ searchPlaceholder,
169
+ enableSearch,
170
+ searchAriaLabel,
171
+ searchId,
172
+ onSearchChange,
173
+ onClearFilter,
174
+ isLoading
175
+ }
176
+ )
177
+ ] });
172
178
  };
173
179
  const FilterButton = react.forwardRef((props, ref) => {
174
180
  const {
@@ -189,56 +195,47 @@ const FilterButton = react.forwardRef((props, ref) => {
189
195
  const nameId = react.useId();
190
196
  const descriptionId = react.useId();
191
197
  const hasDescription = react.Children.count(children) !== 0;
192
- const nameElement = /* @__PURE__ */ jsxRuntime.jsxs("span", {
193
- className: styles.name,
194
- children: [name2, hasDescription && ":"]
195
- });
198
+ const nameElement = /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles.name, children: [
199
+ name2,
200
+ hasDescription && ":"
201
+ ] });
196
202
  const isDisabled = disabled;
197
203
  const handleClick = (event) => {
198
204
  if (isDisabled)
199
205
  return event.preventDefault();
200
206
  onClickFilterButton == null ? void 0 : onClickFilterButton();
201
207
  };
202
- return /* @__PURE__ */ jsxRuntime.jsxs("div", {
203
- className: styles.buttonContainer,
204
- "data-test-id": testId,
205
- children: [/* @__PURE__ */ jsxRuntime.jsxs("button", {
206
- ...rest,
207
- "aria-labelledby": `${nameId} ${hasDescription ? descriptionId : ""}`,
208
- "aria-haspopup": true,
209
- disabled: isDisabled,
210
- "aria-disabled": isDisabled,
211
- className: classix.cx(styles.button, className, (isClearable2 || isSelected) && styles.isClearable),
212
- ref,
213
- onClick: handleClick,
214
- children: [hideName ? /* @__PURE__ */ jsxRuntime.jsx(visuallyHidden.VisuallyHidden, {
215
- id: nameId,
216
- children: nameElement
217
- }) : /* @__PURE__ */ jsxRuntime.jsx("span", {
218
- id: nameId,
219
- children: nameElement
220
- }), hasDescription && /* @__PURE__ */ jsxRuntime.jsx("span", {
221
- id: descriptionId,
222
- className: styles.description,
223
- children
224
- }), !isClearable2 && /* @__PURE__ */ jsxRuntime.jsx(icons.ExpandMore, {
225
- size: "small"
226
- })]
227
- }), isClearable2 && /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip, {
228
- targetClassName: styles.clearTooltip,
229
- content: clearTooltip2,
230
- children: /* @__PURE__ */ jsxRuntime.jsx(button$1.IconButton, {
208
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles.buttonContainer, "data-test-id": testId, children: [
209
+ /* @__PURE__ */ jsxRuntime.jsxs(
210
+ "button",
211
+ {
212
+ ...rest,
213
+ "aria-labelledby": `${nameId} ${hasDescription ? descriptionId : ""}`,
214
+ "aria-haspopup": true,
215
+ disabled: isDisabled,
216
+ "aria-disabled": isDisabled,
217
+ className: classix.cx(styles.button, className, (isClearable2 || isSelected) && styles.isClearable),
218
+ ref,
219
+ onClick: handleClick,
220
+ children: [
221
+ hideName ? /* @__PURE__ */ jsxRuntime.jsx(visuallyHidden.VisuallyHidden, { id: nameId, children: nameElement }) : /* @__PURE__ */ jsxRuntime.jsx("span", { id: nameId, children: nameElement }),
222
+ hasDescription && /* @__PURE__ */ jsxRuntime.jsx("span", { id: descriptionId, className: styles.description, children }),
223
+ !isClearable2 && /* @__PURE__ */ jsxRuntime.jsx(icons.ExpandMore, { size: "small" })
224
+ ]
225
+ }
226
+ ),
227
+ isClearable2 && /* @__PURE__ */ jsxRuntime.jsx(tooltip.Tooltip, { targetClassName: styles.clearTooltip, content: clearTooltip2, children: /* @__PURE__ */ jsxRuntime.jsx(
228
+ button$1.IconButton,
229
+ {
231
230
  "aria-label": ariaLabel,
232
231
  className: styles.clear,
233
232
  "data-test-id": "clear-filter-button",
234
- icon: /* @__PURE__ */ jsxRuntime.jsx(icons.Close, {
235
- size: "tiny"
236
- }),
233
+ icon: /* @__PURE__ */ jsxRuntime.jsx(icons.Close, { size: "tiny" }),
237
234
  size: "small",
238
235
  onClick: onClear
239
- })
240
- })]
241
- });
236
+ }
237
+ ) })
238
+ ] });
242
239
  });
243
240
  FilterButton.defaultProps = {
244
241
  clearTooltip: "Clear filter"
@@ -276,35 +273,47 @@ const Filter = ({
276
273
  event.preventDefault();
277
274
  onClear == null ? void 0 : onClear();
278
275
  };
279
- return /* @__PURE__ */ jsxRuntime.jsxs(dropdown.Dropdown, {
280
- targetTestId: testId,
281
- disabled,
282
- targetClassName: dropdownClasses,
283
- ...props,
284
- children: [/* @__PURE__ */ jsxRuntime.jsx(FilterButton, {
285
- isClearable: isClearable2,
286
- onClear: handleClear,
287
- name: name2,
288
- hideName,
276
+ return /* @__PURE__ */ jsxRuntime.jsxs(
277
+ dropdown.Dropdown,
278
+ {
279
+ targetTestId: testId,
289
280
  disabled,
290
- isSelected,
291
- onClickFilterButton,
292
- ariaLabel: clearAriaLabel,
293
- children: description2
294
- }), /* @__PURE__ */ jsxRuntime.jsx(FilterMenu, {
295
- options,
296
- searchId,
297
- searchValue,
298
- searchPlaceholder,
299
- searchAriaLabel,
300
- enableSearch,
301
- onSearchChange,
302
- isLoading,
303
- disabledOptionTooltip,
304
- size,
305
- enableVirtualization
306
- })]
307
- });
281
+ targetClassName: dropdownClasses,
282
+ ...props,
283
+ children: [
284
+ /* @__PURE__ */ jsxRuntime.jsx(
285
+ FilterButton,
286
+ {
287
+ isClearable: isClearable2,
288
+ onClear: handleClear,
289
+ name: name2,
290
+ hideName,
291
+ disabled,
292
+ isSelected,
293
+ onClickFilterButton,
294
+ ariaLabel: clearAriaLabel,
295
+ children: description2
296
+ }
297
+ ),
298
+ /* @__PURE__ */ jsxRuntime.jsx(
299
+ FilterMenu,
300
+ {
301
+ options,
302
+ searchId,
303
+ searchValue,
304
+ searchPlaceholder,
305
+ searchAriaLabel,
306
+ enableSearch,
307
+ onSearchChange,
308
+ isLoading,
309
+ disabledOptionTooltip,
310
+ size,
311
+ enableVirtualization
312
+ }
313
+ )
314
+ ]
315
+ }
316
+ );
308
317
  };
309
318
  exports.AppliedFilter = AppliedFilter;
310
319
  exports.Filter = Filter;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/AppliedFilterButton.tsx","../src/FilterMenu.tsx","../src/AppliedFilter.tsx","../src/FilterButton.tsx","../src/Filter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ExpandMore } from '@launchpad-ui/icons';\nimport { cx } from 'classix';\nimport { Children, forwardRef } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype AppliedFilterButtonProps = {\n name?: ReactNode;\n className?: string;\n children: ReactNode;\n onClickFilterButton?(): void;\n 'data-test-id': string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst AppliedFilterButton = forwardRef<Ref, AppliedFilterButtonProps>((props, ref) => {\n const { name, className, children, onClickFilterButton, 'data-test-id': testId } = props;\n\n const hasDescription = Children.count(children) !== 0;\n\n return (\n <div data-test-id={testId}>\n <button\n aria-haspopup\n className={cx(styles.appliedButton, className)}\n ref={ref}\n onClick={onClickFilterButton}\n >\n {name && (\n <span className={styles.appliedName} data-test-id={`${testId}-name`}>\n {name}\n {hasDescription && ':'}\n </span>\n )}\n {hasDescription && (\n <span className={styles.appliedDescription} data-test-id={`${testId}-description`}>\n {children}\n </span>\n )}\n <ExpandMore size=\"small\" data-test-id={`${testId}-expand`} />\n </button>\n </div>\n );\n});\n\nAppliedFilterButton.displayName = 'AppliedFilterButton';\n\nexport type { AppliedFilterButtonProps };\nexport { AppliedFilterButton };\n","import type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Button } from '@launchpad-ui/button';\nimport { Check } from '@launchpad-ui/icons';\nimport { Menu, MenuDivider, MenuItem, MenuSearch } from '@launchpad-ui/menu';\n\nimport styles from './styles/Filter.module.css';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FilterOption<T = any> = {\n name?: ReactNode;\n isDisabled?: boolean;\n isDivider?: boolean;\n isChecked?: boolean;\n value: T | null;\n projKey?: string;\n nested?: boolean;\n groupHeader?: boolean;\n};\n\ntype FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' | 'data-test-id'> & {\n options: FilterOption[];\n onClearFilter?(): void;\n enableSearch?: boolean;\n searchValue?: string;\n searchId?: string;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onSelect?(): void;\n isLoading?: boolean;\n disabledOptionTooltip?: string;\n};\n\nconst FilterMenu = ({\n options,\n onClearFilter,\n enableSearch,\n searchValue,\n searchPlaceholder,\n searchAriaLabel,\n searchId,\n onSelect,\n onSearchChange,\n isLoading = false,\n disabledOptionTooltip,\n enableVirtualization,\n size,\n 'data-test-id': testId = 'filter-menu',\n}: FilterMenuProps) => {\n const filterOptions = isLoading\n ? [{ name: 'loading...', value: 'loading...', isDisabled: true }]\n : options;\n\n return (\n <>\n {onClearFilter && (\n <Button\n tabIndex={0}\n className={styles.filterClearButton}\n onClick={onClearFilter}\n kind=\"link\"\n data-test-id=\"clear-filter-button\"\n >\n CLEAR FILTER\n </Button>\n )}\n <Menu\n enableVirtualization={enableVirtualization}\n size={size}\n data-test-id={testId}\n onSelect={onSelect}\n >\n {enableSearch && (\n <MenuSearch\n value={searchValue}\n id={searchId}\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n ariaLabel={searchAriaLabel}\n />\n )}\n {filterOptions.map((option, index) => {\n if (option.isDivider) {\n return <MenuDivider key={`divider-${index}`} />;\n }\n return (\n <MenuItem\n item={option}\n disabled={option.isDisabled}\n icon={option.isChecked ? Check : null}\n key={option.value}\n role=\"menuitemradio\"\n aria-checked={option.isChecked ? 'true' : undefined}\n nested={option.nested}\n groupHeader={option.groupHeader}\n tooltip={\n option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : undefined\n }\n tooltipPlacement=\"right\"\n >\n {option.name}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nexport { FilterMenu };\nexport type { FilterOption, FilterMenuProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\n\nimport { AppliedFilterButton } from './AppliedFilterButton';\nimport { FilterMenu } from './FilterMenu';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype AppliedFilterProps = {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onClearFilter?(): void;\n searchPlaceholder?: string;\n name?: ReactNode;\n description: ReactNode;\n options: FilterOption[];\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n onClickFilterButton?(): void;\n searchAriaLabel?: string;\n searchId?: string;\n 'data-test-id'?: string;\n};\n\nconst AppliedFilter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n name,\n description,\n options,\n className,\n isEmpty,\n isLoading,\n onClickFilterButton,\n onClearFilter,\n searchAriaLabel,\n searchId,\n 'data-test-id': testId = 'applied-filter',\n ...props\n}: AppliedFilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n return (\n <Dropdown targetClassName={className} placement=\"bottom-start\" enableArrow={false} {...props}>\n <AppliedFilterButton\n data-test-id={testId}\n name={name}\n onClickFilterButton={onClickFilterButton}\n >\n {description}\n </AppliedFilterButton>\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\n searchId={searchId}\n onSearchChange={onSearchChange}\n onClearFilter={onClearFilter}\n isLoading={isLoading}\n />\n </Dropdown>\n );\n};\n\nexport type { AppliedFilterProps };\nexport { AppliedFilter };\n","import type { ReactNode, SyntheticEvent, MouseEvent } from 'react';\n\nimport { IconButton } from '@launchpad-ui/button';\nimport { Close, ExpandMore } from '@launchpad-ui/icons';\nimport { Tooltip } from '@launchpad-ui/tooltip';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { cx } from 'classix';\nimport { Children, forwardRef, useId } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype FilterButtonProps = {\n name: ReactNode;\n hideName?: boolean;\n isClearable?: boolean;\n onClear?(event: SyntheticEvent): void;\n className?: string;\n isSelected?: boolean;\n clearTooltip?: string | JSX.Element;\n children?: ReactNode;\n disabled?: boolean;\n onClickFilterButton?(): void;\n 'data-test-id'?: string;\n ariaLabel?: string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst FilterButton = forwardRef<Ref, FilterButtonProps>((props, ref) => {\n const {\n children,\n name,\n hideName,\n isClearable,\n clearTooltip,\n onClear,\n disabled,\n isSelected,\n onClickFilterButton,\n className,\n 'data-test-id': testId = 'filter-button',\n ariaLabel = 'Clear filter',\n ...rest\n } = props;\n const nameId = useId();\n const descriptionId = useId();\n\n const hasDescription = Children.count(children) !== 0;\n\n const nameElement = (\n <span className={styles.name}>\n {name}\n {hasDescription && ':'}\n </span>\n );\n\n const isDisabled = disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return event.preventDefault();\n onClickFilterButton?.();\n };\n\n return (\n <div className={styles.buttonContainer} data-test-id={testId}>\n <button\n {...rest}\n aria-labelledby={`${nameId} ${hasDescription ? descriptionId : ''}`}\n aria-haspopup\n disabled={isDisabled}\n aria-disabled={isDisabled}\n className={cx(styles.button, className, (isClearable || isSelected) && styles.isClearable)}\n ref={ref}\n onClick={handleClick}\n >\n {hideName ? (\n <VisuallyHidden id={nameId}>{nameElement}</VisuallyHidden>\n ) : (\n <span id={nameId}>{nameElement}</span>\n )}\n {hasDescription && (\n <span id={descriptionId} className={styles.description}>\n {children}\n </span>\n )}\n {!isClearable && <ExpandMore size=\"small\" />}\n </button>\n {isClearable && (\n <Tooltip targetClassName={styles.clearTooltip} content={clearTooltip}>\n <IconButton\n aria-label={ariaLabel}\n className={styles.clear}\n data-test-id=\"clear-filter-button\"\n icon={<Close size=\"tiny\" />}\n size=\"small\"\n onClick={onClear}\n />\n </Tooltip>\n )}\n </div>\n );\n});\n\nFilterButton.defaultProps = {\n clearTooltip: 'Clear filter',\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport { FilterButton };\nexport type { FilterButtonProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode, SyntheticEvent } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\nimport { cx } from 'classix';\n\nimport { FilterButton } from './FilterButton';\nimport { FilterMenu } from './FilterMenu';\nimport styles from './styles/Filter.module.css';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n name: ReactNode;\n hideName?: boolean;\n description: ReactNode;\n options: FilterOption[];\n isClearable?: boolean;\n onClear?(): void;\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n isSelected?: boolean;\n searchId?: string;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n onClickFilterButton?(): void;\n disabledOptionTooltip?: string;\n 'data-test-id'?: string;\n triggerTestId?: string;\n clearAriaLabel?: string;\n};\n\nconst Filter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n searchAriaLabel,\n name,\n hideName,\n description,\n options,\n isClearable,\n onClear,\n isSelected,\n className,\n isEmpty,\n searchId,\n isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\n clearAriaLabel,\n ...props\n}: FilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n const dropdownClasses = cx(styles.filter, className);\n\n const handleClear = (event: SyntheticEvent) => {\n event.preventDefault();\n onClear?.();\n };\n\n return (\n <Dropdown\n targetTestId={testId}\n disabled={disabled}\n targetClassName={dropdownClasses}\n {...props}\n >\n <FilterButton\n isClearable={isClearable}\n onClear={handleClear}\n name={name}\n hideName={hideName}\n disabled={disabled}\n isSelected={isSelected}\n onClickFilterButton={onClickFilterButton}\n ariaLabel={clearAriaLabel}\n >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\n searchId={searchId}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n searchAriaLabel={searchAriaLabel}\n enableSearch={enableSearch}\n onSearchChange={onSearchChange}\n isLoading={isLoading}\n disabledOptionTooltip={disabledOptionTooltip}\n size={size}\n enableVirtualization={enableVirtualization}\n />\n </Dropdown>\n );\n};\n\nexport { Filter };\nexport type { FilterProps };\n"],"names":["AppliedFilterButton","forwardRef","props","ref","name","className","children","onClickFilterButton","testId","hasDescription","Children","count","cx","styles","appliedButton","onClick","_jsxs","appliedName","_jsx","appliedDescription","ExpandMore","size","displayName","FilterMenu","options","onClearFilter","enableSearch","searchValue","searchPlaceholder","searchAriaLabel","searchId","onSelect","onSearchChange","isLoading","disabledOptionTooltip","enableVirtualization","filterOptions","value","isDisabled","_Fragment","Button","tabIndex","filterClearButton","kind","Menu","MenuSearch","id","placeholder","onChange","ariaLabel","map","option","index","isDivider","MenuDivider","MenuItem","item","disabled","icon","isChecked","Check","role","undefined","nested","groupHeader","tooltip","tooltipPlacement","SEARCH_INPUT_THRESHOLD","AppliedFilter","description","isEmpty","length","Dropdown","targetClassName","placement","enableArrow","FilterButton","hideName","isClearable","clearTooltip","onClear","isSelected","rest","nameId","useId","descriptionId","nameElement","handleClick","event","preventDefault","buttonContainer","button","VisuallyHidden","Tooltip","content","IconButton","clear","Close","defaultProps","Filter","clearAriaLabel","dropdownClasses","filter","handleClear","targetTestId"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/AppliedFilterButton.tsx","../src/FilterMenu.tsx","../src/AppliedFilter.tsx","../src/FilterButton.tsx","../src/Filter.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ExpandMore } from '@launchpad-ui/icons';\nimport { cx } from 'classix';\nimport { Children, forwardRef } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype AppliedFilterButtonProps = {\n name?: ReactNode;\n className?: string;\n children: ReactNode;\n onClickFilterButton?(): void;\n 'data-test-id': string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst AppliedFilterButton = forwardRef<Ref, AppliedFilterButtonProps>((props, ref) => {\n const { name, className, children, onClickFilterButton, 'data-test-id': testId } = props;\n\n const hasDescription = Children.count(children) !== 0;\n\n return (\n <div data-test-id={testId}>\n <button\n aria-haspopup\n className={cx(styles.appliedButton, className)}\n ref={ref}\n onClick={onClickFilterButton}\n >\n {name && (\n <span className={styles.appliedName} data-test-id={`${testId}-name`}>\n {name}\n {hasDescription && ':'}\n </span>\n )}\n {hasDescription && (\n <span className={styles.appliedDescription} data-test-id={`${testId}-description`}>\n {children}\n </span>\n )}\n <ExpandMore size=\"small\" data-test-id={`${testId}-expand`} />\n </button>\n </div>\n );\n});\n\nAppliedFilterButton.displayName = 'AppliedFilterButton';\n\nexport type { AppliedFilterButtonProps };\nexport { AppliedFilterButton };\n","import type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Button } from '@launchpad-ui/button';\nimport { Check } from '@launchpad-ui/icons';\nimport { Menu, MenuDivider, MenuItem, MenuSearch } from '@launchpad-ui/menu';\n\nimport styles from './styles/Filter.module.css';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FilterOption<T = any> = {\n name?: ReactNode;\n isDisabled?: boolean;\n isDivider?: boolean;\n isChecked?: boolean;\n value: T | null;\n projKey?: string;\n nested?: boolean;\n groupHeader?: boolean;\n};\n\ntype FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' | 'data-test-id'> & {\n options: FilterOption[];\n onClearFilter?(): void;\n enableSearch?: boolean;\n searchValue?: string;\n searchId?: string;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onSelect?(): void;\n isLoading?: boolean;\n disabledOptionTooltip?: string;\n};\n\nconst FilterMenu = ({\n options,\n onClearFilter,\n enableSearch,\n searchValue,\n searchPlaceholder,\n searchAriaLabel,\n searchId,\n onSelect,\n onSearchChange,\n isLoading = false,\n disabledOptionTooltip,\n enableVirtualization,\n size,\n 'data-test-id': testId = 'filter-menu',\n}: FilterMenuProps) => {\n const filterOptions = isLoading\n ? [{ name: 'loading...', value: 'loading...', isDisabled: true }]\n : options;\n\n return (\n <>\n {onClearFilter && (\n <Button\n tabIndex={0}\n className={styles.filterClearButton}\n onClick={onClearFilter}\n kind=\"link\"\n data-test-id=\"clear-filter-button\"\n >\n CLEAR FILTER\n </Button>\n )}\n <Menu\n enableVirtualization={enableVirtualization}\n size={size}\n data-test-id={testId}\n onSelect={onSelect}\n >\n {enableSearch && (\n <MenuSearch\n value={searchValue}\n id={searchId}\n placeholder={searchPlaceholder}\n onChange={onSearchChange}\n ariaLabel={searchAriaLabel}\n />\n )}\n {filterOptions.map((option, index) => {\n if (option.isDivider) {\n return <MenuDivider key={`divider-${index}`} />;\n }\n return (\n <MenuItem\n item={option}\n disabled={option.isDisabled}\n icon={option.isChecked ? Check : null}\n key={option.value}\n role=\"menuitemradio\"\n aria-checked={option.isChecked ? 'true' : undefined}\n nested={option.nested}\n groupHeader={option.groupHeader}\n tooltip={\n option.isDisabled && disabledOptionTooltip ? disabledOptionTooltip : undefined\n }\n tooltipPlacement=\"right\"\n >\n {option.name}\n </MenuItem>\n );\n })}\n </Menu>\n </>\n );\n};\n\nexport { FilterMenu };\nexport type { FilterOption, FilterMenuProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { ChangeEvent, ReactNode } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\n\nimport { AppliedFilterButton } from './AppliedFilterButton';\nimport { FilterMenu } from './FilterMenu';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype AppliedFilterProps = {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n onClearFilter?(): void;\n searchPlaceholder?: string;\n name?: ReactNode;\n description: ReactNode;\n options: FilterOption[];\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n onClickFilterButton?(): void;\n searchAriaLabel?: string;\n searchId?: string;\n 'data-test-id'?: string;\n};\n\nconst AppliedFilter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n name,\n description,\n options,\n className,\n isEmpty,\n isLoading,\n onClickFilterButton,\n onClearFilter,\n searchAriaLabel,\n searchId,\n 'data-test-id': testId = 'applied-filter',\n ...props\n}: AppliedFilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n return (\n <Dropdown targetClassName={className} placement=\"bottom-start\" enableArrow={false} {...props}>\n <AppliedFilterButton\n data-test-id={testId}\n name={name}\n onClickFilterButton={onClickFilterButton}\n >\n {description}\n </AppliedFilterButton>\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\n searchId={searchId}\n onSearchChange={onSearchChange}\n onClearFilter={onClearFilter}\n isLoading={isLoading}\n />\n </Dropdown>\n );\n};\n\nexport type { AppliedFilterProps };\nexport { AppliedFilter };\n","import type { ReactNode, SyntheticEvent, MouseEvent } from 'react';\n\nimport { IconButton } from '@launchpad-ui/button';\nimport { Close, ExpandMore } from '@launchpad-ui/icons';\nimport { Tooltip } from '@launchpad-ui/tooltip';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport { cx } from 'classix';\nimport { Children, forwardRef, useId } from 'react';\n\nimport styles from './styles/Filter.module.css';\n\ntype FilterButtonProps = {\n name: ReactNode;\n hideName?: boolean;\n isClearable?: boolean;\n onClear?(event: SyntheticEvent): void;\n className?: string;\n isSelected?: boolean;\n clearTooltip?: string | JSX.Element;\n children?: ReactNode;\n disabled?: boolean;\n onClickFilterButton?(): void;\n 'data-test-id'?: string;\n ariaLabel?: string;\n};\n\ntype Ref = HTMLButtonElement;\n\nconst FilterButton = forwardRef<Ref, FilterButtonProps>((props, ref) => {\n const {\n children,\n name,\n hideName,\n isClearable,\n clearTooltip,\n onClear,\n disabled,\n isSelected,\n onClickFilterButton,\n className,\n 'data-test-id': testId = 'filter-button',\n ariaLabel = 'Clear filter',\n ...rest\n } = props;\n const nameId = useId();\n const descriptionId = useId();\n\n const hasDescription = Children.count(children) !== 0;\n\n const nameElement = (\n <span className={styles.name}>\n {name}\n {hasDescription && ':'}\n </span>\n );\n\n const isDisabled = disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return event.preventDefault();\n onClickFilterButton?.();\n };\n\n return (\n <div className={styles.buttonContainer} data-test-id={testId}>\n <button\n {...rest}\n aria-labelledby={`${nameId} ${hasDescription ? descriptionId : ''}`}\n aria-haspopup\n disabled={isDisabled}\n aria-disabled={isDisabled}\n className={cx(styles.button, className, (isClearable || isSelected) && styles.isClearable)}\n ref={ref}\n onClick={handleClick}\n >\n {hideName ? (\n <VisuallyHidden id={nameId}>{nameElement}</VisuallyHidden>\n ) : (\n <span id={nameId}>{nameElement}</span>\n )}\n {hasDescription && (\n <span id={descriptionId} className={styles.description}>\n {children}\n </span>\n )}\n {!isClearable && <ExpandMore size=\"small\" />}\n </button>\n {isClearable && (\n <Tooltip targetClassName={styles.clearTooltip} content={clearTooltip}>\n <IconButton\n aria-label={ariaLabel}\n className={styles.clear}\n data-test-id=\"clear-filter-button\"\n icon={<Close size=\"tiny\" />}\n size=\"small\"\n onClick={onClear}\n />\n </Tooltip>\n )}\n </div>\n );\n});\n\nFilterButton.defaultProps = {\n clearTooltip: 'Clear filter',\n};\n\nFilterButton.displayName = 'FilterButton';\n\nexport { FilterButton };\nexport type { FilterButtonProps };\n","import type { FilterOption } from './FilterMenu';\nimport type { MenuProps } from '@launchpad-ui/menu';\nimport type { ChangeEvent, ReactNode, SyntheticEvent } from 'react';\n\nimport { Dropdown } from '@launchpad-ui/dropdown';\nimport { cx } from 'classix';\n\nimport { FilterButton } from './FilterButton';\nimport { FilterMenu } from './FilterMenu';\nimport styles from './styles/Filter.module.css';\n\nconst SEARCH_INPUT_THRESHOLD = 4;\n\ntype FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {\n searchValue?: string;\n onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;\n searchPlaceholder?: string;\n searchAriaLabel?: string;\n name: ReactNode;\n hideName?: boolean;\n description: ReactNode;\n options: FilterOption[];\n isClearable?: boolean;\n onClear?(): void;\n className?: string;\n onStateChange?({ isOpen }: { isOpen?: boolean }): void;\n isSelected?: boolean;\n searchId?: string;\n onSelect?(item: FilterOption): void;\n isEmpty?: boolean;\n isLoading?: boolean;\n disabled?: boolean;\n onClickFilterButton?(): void;\n disabledOptionTooltip?: string;\n 'data-test-id'?: string;\n triggerTestId?: string;\n clearAriaLabel?: string;\n};\n\nconst Filter = ({\n searchValue,\n onSearchChange,\n searchPlaceholder,\n searchAriaLabel,\n name,\n hideName,\n description,\n options,\n isClearable,\n onClear,\n isSelected,\n className,\n isEmpty,\n searchId,\n isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\n clearAriaLabel,\n ...props\n}: FilterProps) => {\n const enableSearch =\n onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);\n\n const dropdownClasses = cx(styles.filter, className);\n\n const handleClear = (event: SyntheticEvent) => {\n event.preventDefault();\n onClear?.();\n };\n\n return (\n <Dropdown\n targetTestId={testId}\n disabled={disabled}\n targetClassName={dropdownClasses}\n {...props}\n >\n <FilterButton\n isClearable={isClearable}\n onClear={handleClear}\n name={name}\n hideName={hideName}\n disabled={disabled}\n isSelected={isSelected}\n onClickFilterButton={onClickFilterButton}\n ariaLabel={clearAriaLabel}\n >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\n searchId={searchId}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n searchAriaLabel={searchAriaLabel}\n enableSearch={enableSearch}\n onSearchChange={onSearchChange}\n isLoading={isLoading}\n disabledOptionTooltip={disabledOptionTooltip}\n size={size}\n enableVirtualization={enableVirtualization}\n />\n </Dropdown>\n );\n};\n\nexport { Filter };\nexport type { FilterProps };\n"],"names":["forwardRef","name","Children","jsx","jsxs","cx","ExpandMore","Fragment","Button","Menu","MenuSearch","MenuDivider","MenuItem","Check","SEARCH_INPUT_THRESHOLD","description","Dropdown","isClearable","clearTooltip","useId","VisuallyHidden","Tooltip","IconButton","Close"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchpad-ui/filter",
3
- "version": "0.5.26",
3
+ "version": "0.5.28",
4
4
  "status": "beta",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -26,14 +26,14 @@
26
26
  },
27
27
  "source": "src/index.ts",
28
28
  "dependencies": {
29
- "@react-aria/visually-hidden": "3.6.1",
29
+ "@react-aria/visually-hidden": "3.8.1",
30
30
  "classix": "2.1.17",
31
31
  "@launchpad-ui/button": "~0.8.13",
32
- "@launchpad-ui/dropdown": "~0.6.48",
32
+ "@launchpad-ui/dropdown": "~0.6.49",
33
33
  "@launchpad-ui/icons": "~0.8.6",
34
- "@launchpad-ui/menu": "~0.10.1",
34
+ "@launchpad-ui/menu": "~0.10.3",
35
35
  "@launchpad-ui/tokens": "~0.5.6",
36
- "@launchpad-ui/tooltip": "~0.7.12"
36
+ "@launchpad-ui/tooltip": "~0.7.13"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "react": "18.2.0",