react-spectrum icon indicating copy to clipboard operation
react-spectrum copied to clipboard

Add support for nested filtering in useListData

Open gijsroge opened this issue 1 year ago โ€ข 6 comments

Closes 4930

โœ… Pull Request Checklist:

  • [x] Included link to corresponding React Spectrum GitHub Issue.
  • [x] Added/updated unit tests and storybook for this change (for new code or code which already has tests).
  • [ ] Filled out test instructions.
  • [ ] Updated documentation (if it already exists for this component).
  • [ ] Looked at the Accessibility Practices for this feature - Aria Practices

๐Ÿ“ Test Instructions:

There is no example of the normal filter feature for useListData, if you want I can add a ListBox example in Spectrum's Storybook.

Alternatively you can test it using jest: yarn jest -t "useListData should support filtering nested items"

๐Ÿงข Your Project:

gijsroge avatar Mar 29 '24 16:03 gijsroge

GET_BUILD

snowystinger avatar Apr 01 '24 23:04 snowystinger

@devongovett to address your valid concerns about having assumptions about the users data structure, i've added a filterKey option instead.

Example in storybook https://github.com/adobe/react-spectrum/blob/5ffd5e1dc3e45bf8137adc89dc4fac3640056367/packages/%40react-spectrum/listbox/stories/ListBox.stories.tsx#L1054-L1078

cc @snowystinger @reidbarber

gijsroge avatar May 02 '24 19:05 gijsroge

GET_BUILD

snowystinger avatar May 08 '24 02:05 snowystinger

## API Changes

unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any', access: 'private' } unknown top level export { type: 'any', access: 'private' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'identifier', name: 'Column' } unknown top level export { type: 'identifier', name: 'Column' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown type { type: 'link' } unknown type { type: 'link' } unknown type { type: 'link' } unknown type { type: 'link' } unknown type { type: 'link' } unknown type { type: 'link' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' } unknown top level export { type: 'any' }

@react-stately/data

ListOptions

 ListOptions<T> {
   filter?: (T, string) => boolean
+  filterKey?: string
   getKey?: (T) => Key
   initialFilterText?: string
   initialItems?: Array<T>
   initialSelectedKeys?: 'all' | Iterable<Key>
 

it changed:

  • useListData

rspbot avatar May 08 '24 02:05 rspbot