@launchpad-ui/filter 0.5.21 → 0.5.23

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.
@@ -17,9 +17,10 @@ type AppliedFilterProps = {
17
17
  isLoading?: boolean;
18
18
  onClickFilterButton?(): void;
19
19
  searchAriaLabel?: string;
20
+ searchId?: string;
20
21
  'data-test-id'?: string;
21
22
  };
22
- declare const AppliedFilter: ({ searchValue, onSearchChange, searchPlaceholder, name, description, options, className, isEmpty, isLoading, onClickFilterButton, onClearFilter, searchAriaLabel, "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) => JSX.Element;
23
24
  export type { AppliedFilterProps };
24
25
  export { AppliedFilter };
25
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,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,QAAA,MAAM,aAAa,yMAehB,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,gBA0BpB,CAAC;AAEF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/Filter.d.ts CHANGED
@@ -17,6 +17,7 @@ type FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {
17
17
  isOpen?: boolean;
18
18
  }): void;
19
19
  isSelected?: boolean;
20
+ searchId?: string;
20
21
  onSelect?(item: FilterOption): void;
21
22
  isEmpty?: boolean;
22
23
  isLoading?: boolean;
@@ -25,8 +26,9 @@ type FilterProps = Pick<MenuProps<string>, 'size' | 'enableVirtualization'> & {
25
26
  disabledOptionTooltip?: string;
26
27
  'data-test-id'?: string;
27
28
  triggerTestId?: string;
29
+ clearAriaLabel?: string;
28
30
  };
29
- declare const Filter: ({ searchValue, onSearchChange, searchPlaceholder, searchAriaLabel, name, hideName, description, options, isClearable, onClear, isSelected, className, isEmpty, isLoading, onClickFilterButton, disabledOptionTooltip, "data-test-id": testId, size, disabled, enableVirtualization, ...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) => JSX.Element;
30
32
  export { Filter };
31
33
  export type { FilterProps };
32
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,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;CACxB,CAAC;AAEF,QAAA,MAAM,MAAM,mSAsBT,WAAW,gBA2Cb,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,gBA6Cb,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -11,6 +11,7 @@ type FilterButtonProps = {
11
11
  disabled?: boolean;
12
12
  onClickFilterButton?(): void;
13
13
  'data-test-id'?: string;
14
+ ariaLabel?: string;
14
15
  };
15
16
  declare const FilterButton: import("react").ForwardRefExoticComponent<FilterButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
16
17
  export { FilterButton };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../src/FilterButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAc,MAAM,OAAO,CAAC;AAWnE,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,QAAA,MAAM,YAAY,iHAwEhB,CAAC;AAQH,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../src/FilterButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAc,MAAM,OAAO,CAAC;AAWnE,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,IAAI,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,QAAA,MAAM,YAAY,iHAyEhB,CAAC;AAQH,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -15,6 +15,7 @@ type FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' |
15
15
  onClearFilter?(): void;
16
16
  enableSearch?: boolean;
17
17
  searchValue?: string;
18
+ searchId?: string;
18
19
  searchPlaceholder?: string;
19
20
  searchAriaLabel?: string;
20
21
  onSearchChange?(event: ChangeEvent<HTMLInputElement>): void;
@@ -22,7 +23,7 @@ type FilterMenuProps = Pick<MenuProps<string>, 'enableVirtualization' | 'size' |
22
23
  isLoading?: boolean;
23
24
  disabledOptionTooltip?: string;
24
25
  };
25
- declare const FilterMenu: ({ options, onClearFilter, enableSearch, searchValue, searchPlaceholder, searchAriaLabel, 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) => JSX.Element;
26
27
  export { FilterMenu };
27
28
  export type { FilterOption, FilterMenuProps };
28
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,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,+MAcb,eAAe,gBA0DjB,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,gBA2DjB,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
package/dist/index.es.js CHANGED
@@ -73,6 +73,7 @@ const FilterMenu = ({
73
73
  searchValue,
74
74
  searchPlaceholder,
75
75
  searchAriaLabel,
76
+ searchId,
76
77
  onSelect,
77
78
  onSearchChange,
78
79
  isLoading = false,
@@ -101,6 +102,7 @@ const FilterMenu = ({
101
102
  onSelect,
102
103
  children: [enableSearch && /* @__PURE__ */ jsx(MenuSearch, {
103
104
  value: searchValue,
105
+ id: searchId,
104
106
  placeholder: searchPlaceholder,
105
107
  onChange: onSearchChange,
106
108
  ariaLabel: searchAriaLabel
@@ -138,6 +140,7 @@ const AppliedFilter = ({
138
140
  onClickFilterButton,
139
141
  onClearFilter,
140
142
  searchAriaLabel,
143
+ searchId,
141
144
  "data-test-id": testId = "applied-filter",
142
145
  ...props
143
146
  }) => {
@@ -158,6 +161,7 @@ const AppliedFilter = ({
158
161
  searchPlaceholder,
159
162
  enableSearch,
160
163
  searchAriaLabel,
164
+ searchId,
161
165
  onSearchChange,
162
166
  onClearFilter,
163
167
  isLoading
@@ -177,6 +181,7 @@ const FilterButton = forwardRef((props, ref) => {
177
181
  onClickFilterButton,
178
182
  className,
179
183
  "data-test-id": testId = "filter-button",
184
+ ariaLabel = "Clear filter",
180
185
  ...rest
181
186
  } = props;
182
187
  const nameId = useId();
@@ -221,7 +226,7 @@ const FilterButton = forwardRef((props, ref) => {
221
226
  targetClassName: styles.clearTooltip,
222
227
  content: clearTooltip2,
223
228
  children: /* @__PURE__ */ jsx(IconButton, {
224
- "aria-label": "Clear filter",
229
+ "aria-label": ariaLabel,
225
230
  className: styles.clear,
226
231
  "data-test-id": "clear-filter-button",
227
232
  icon: /* @__PURE__ */ jsx(Close, {
@@ -252,6 +257,7 @@ const Filter = ({
252
257
  isSelected,
253
258
  className,
254
259
  isEmpty,
260
+ searchId,
255
261
  isLoading,
256
262
  onClickFilterButton,
257
263
  disabledOptionTooltip,
@@ -259,6 +265,7 @@ const Filter = ({
259
265
  size,
260
266
  disabled,
261
267
  enableVirtualization,
268
+ clearAriaLabel,
262
269
  ...props
263
270
  }) => {
264
271
  const enableSearch = onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);
@@ -280,9 +287,11 @@ const Filter = ({
280
287
  disabled,
281
288
  isSelected,
282
289
  onClickFilterButton,
290
+ ariaLabel: clearAriaLabel,
283
291
  children: description2
284
292
  }), /* @__PURE__ */ jsx(FilterMenu, {
285
293
  options,
294
+ searchId,
286
295
  searchValue,
287
296
  searchPlaceholder,
288
297
  searchAriaLabel,
@@ -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 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 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 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 '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 '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\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\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};\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 ...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=\"Clear filter\"\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 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};\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 isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\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 >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\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","onSelect","onSearchChange","isLoading","disabledOptionTooltip","enableVirtualization","filterOptions","value","isDisabled","_Fragment","Button","tabIndex","filterClearButton","kind","Menu","MenuSearch","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","id","Tooltip","content","IconButton","clear","Close","defaultProps","Filter","dropdownClasses","filter","handleClear","targetTestId"],"mappings":"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"}
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":"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"}
package/dist/index.js CHANGED
@@ -75,6 +75,7 @@ const FilterMenu = ({
75
75
  searchValue,
76
76
  searchPlaceholder,
77
77
  searchAriaLabel,
78
+ searchId,
78
79
  onSelect,
79
80
  onSearchChange,
80
81
  isLoading = false,
@@ -103,6 +104,7 @@ const FilterMenu = ({
103
104
  onSelect,
104
105
  children: [enableSearch && /* @__PURE__ */ jsxRuntime.jsx(menu.MenuSearch, {
105
106
  value: searchValue,
107
+ id: searchId,
106
108
  placeholder: searchPlaceholder,
107
109
  onChange: onSearchChange,
108
110
  ariaLabel: searchAriaLabel
@@ -140,6 +142,7 @@ const AppliedFilter = ({
140
142
  onClickFilterButton,
141
143
  onClearFilter,
142
144
  searchAriaLabel,
145
+ searchId,
143
146
  "data-test-id": testId = "applied-filter",
144
147
  ...props
145
148
  }) => {
@@ -160,6 +163,7 @@ const AppliedFilter = ({
160
163
  searchPlaceholder,
161
164
  enableSearch,
162
165
  searchAriaLabel,
166
+ searchId,
163
167
  onSearchChange,
164
168
  onClearFilter,
165
169
  isLoading
@@ -179,6 +183,7 @@ const FilterButton = react.forwardRef((props, ref) => {
179
183
  onClickFilterButton,
180
184
  className,
181
185
  "data-test-id": testId = "filter-button",
186
+ ariaLabel = "Clear filter",
182
187
  ...rest
183
188
  } = props;
184
189
  const nameId = react.useId();
@@ -223,7 +228,7 @@ const FilterButton = react.forwardRef((props, ref) => {
223
228
  targetClassName: styles.clearTooltip,
224
229
  content: clearTooltip2,
225
230
  children: /* @__PURE__ */ jsxRuntime.jsx(button$1.IconButton, {
226
- "aria-label": "Clear filter",
231
+ "aria-label": ariaLabel,
227
232
  className: styles.clear,
228
233
  "data-test-id": "clear-filter-button",
229
234
  icon: /* @__PURE__ */ jsxRuntime.jsx(icons.Close, {
@@ -254,6 +259,7 @@ const Filter = ({
254
259
  isSelected,
255
260
  className,
256
261
  isEmpty,
262
+ searchId,
257
263
  isLoading,
258
264
  onClickFilterButton,
259
265
  disabledOptionTooltip,
@@ -261,6 +267,7 @@ const Filter = ({
261
267
  size,
262
268
  disabled,
263
269
  enableVirtualization,
270
+ clearAriaLabel,
264
271
  ...props
265
272
  }) => {
266
273
  const enableSearch = onSearchChange && (!!searchValue || options.length > SEARCH_INPUT_THRESHOLD || !isEmpty);
@@ -282,9 +289,11 @@ const Filter = ({
282
289
  disabled,
283
290
  isSelected,
284
291
  onClickFilterButton,
292
+ ariaLabel: clearAriaLabel,
285
293
  children: description2
286
294
  }), /* @__PURE__ */ jsxRuntime.jsx(FilterMenu, {
287
295
  options,
296
+ searchId,
288
297
  searchValue,
289
298
  searchPlaceholder,
290
299
  searchAriaLabel,
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 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 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 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 '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 '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\n <FilterMenu\n options={options}\n searchValue={searchValue}\n searchPlaceholder={searchPlaceholder}\n enableSearch={enableSearch}\n searchAriaLabel={searchAriaLabel}\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};\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 ...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=\"Clear filter\"\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 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};\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 isLoading,\n onClickFilterButton,\n disabledOptionTooltip,\n 'data-test-id': testId = 'filter',\n size,\n disabled,\n enableVirtualization,\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 >\n {description}\n </FilterButton>\n <FilterMenu\n options={options}\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","onSelect","onSearchChange","isLoading","disabledOptionTooltip","enableVirtualization","filterOptions","value","isDisabled","_Fragment","Button","tabIndex","filterClearButton","kind","Menu","MenuSearch","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","id","Tooltip","content","IconButton","clear","Close","defaultProps","Filter","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":["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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchpad-ui/filter",
3
- "version": "0.5.21",
3
+ "version": "0.5.23",
4
4
  "status": "beta",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -31,7 +31,7 @@
31
31
  "@launchpad-ui/button": "~0.8.12",
32
32
  "@launchpad-ui/dropdown": "~0.6.47",
33
33
  "@launchpad-ui/icons": "~0.8.6",
34
- "@launchpad-ui/menu": "~0.8.10",
34
+ "@launchpad-ui/menu": "~0.8.11",
35
35
  "@launchpad-ui/tokens": "~0.5.6",
36
36
  "@launchpad-ui/tooltip": "~0.7.11"
37
37
  },