Comments (10)
Working on this first 😁 I think it will help with other updates moving forward.
from downshift.
For the size of the package it's probably not a priority or performance-relevant.
Have mostly noticed the pattern in much larger utility-kit packages, like d3
or lodash
.
from downshift.
Done with #22 🎉
from downshift.
I've thought about it. Open a PR and we'll see what it looks like. Thanks!
from downshift.
+1
I think this is always a good idea.
Unless I'm mistaken, this would require importing the full module before destructuring the desired export:
import { SpecificExport } from 'some-package';
whereas this only imports the specific module (if it is available as a unique file):
import SpecificExport from 'package/SpecificExport';
As the library grows, this could help users to not bloat their bundle sizes.
(Basing above knowledge on having read it a few times: https://hackernoon.com/optimising-your-application-bundle-size-with-webpack-e85b00bab579. Not 100% sure of actually under-the-hood process.)
from downshift.
This only exports one component for right now, but after this is done, it could open up the possibility of using components like Menu
and Item
regardless of the Autocomplete
component.
from downshift.
Thanks for the input @erikfox.
As the library grows, this could help users to not bloat their bundle sizes.
I really don't expect the library to grow much more than it is currently. Maybe only in ways that are desireable (like for accessibility). I don't think that you'd ever want to just import some of the components and not others, so that's not something that we'll be working on.
from downshift.
@souporserious What about using Autocomplete
without Menu
or Item
? I think every component should have its own file, and index.js
should be nothing but this:
import Autocomplete from './Autocomplete'
import Menu from './Menu'
import Item from './Item'
// ...etc
module.exports = {
Autocomplete,
Menu,
Item,
// ...etc
}
// or export default with other exports
from downshift.
@kentcdodds Understood. 👍 I'm behind sticking to that intended use case. Just wanted to raise the option if it hadn't been previously considered.
from downshift.
Thanks. I've considered making each component individually importable, but I personally prefer referencing things as Autocomplete.Menu
rather than simply Menu
... But open to enabling the individual import as well..
from downshift.
Related Issues (20)
- v10
- Is it possible to use JS to set the value of a React + downshift autocomplete dropdown? HOT 1
- Errors in `typings/index.d.ts`
- Select / highlight first item, that is not disabled when using arrow keys to open the menu
- Screen readers read out object code when using useMultipleSelection hook HOT 1
- useCombobox focus-ring during keyboard navigation HOT 3
- aria-selected returned as string instead of boolean
- `onSelectedItemChange` triggers multiple times when `onMouseMove` and `onClick` happens in the same frame
- CodeSandbox examples broken, and workaround also broken HOT 2
- Disabled items are highlighted and are selectable by pressing enter after input value change HOT 4
- Dropdown items are not selectable on mobile devices when rendering to a portal element HOT 2
- Pressing shift + tab selects highlighted item HOT 2
- setActiveIndex seems like not working in new Next.js v15 and React 19
- Request: Update/Remove `prop-types` Usage
- Combobox is not reading the items in JAWS HOT 1
- Incorrect use of <label for=FORM_ELEMENT> HOT 7
- Type for `item` property to `useCombobox` too strict HOT 1
- Document Types for Passing Getter-Props Down to Other Components
- closeMenu for useSelect not working as expected HOT 3
- [useMultipleSelection] Backspace/Delete on selected items does not progress focus on tags correctly
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from downshift.