![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
moebel-material-ui-superselectfield
Advanced tools
original Material-UI's SelectField component enhanced with autocompletion, multiselection, custom renderers, and infinite loading.
PUBLIC NOTE: Do not use this fork. Instead use original
This component requires 3 dependencies :
... so make sure they are installed in your project, or install them as well ;)
npm i material-ui-superselectfield
Name | Type | Default | Description |
---|---|---|---|
name | string | Required to differentiate between multiple instances of superSelectField in same page. | |
floatingLabel | string or node | The content to use for the floating label element. | |
hintText | string | 'Click me' | Placeholder text for the main selections display. |
hintTextAutocomplete | string | 'Type something' | Placeholder text for the autocomplete. |
errorText | string or node | '' | Include this property to show an error warning. |
noMatchFound | string | 'No match found' | Placeholder text when the autocomplete filter fails. |
anchorOrigin | object | { vertical: 'top', horizontal: 'left' } | Anchor position of the menu, accepted values: top, bottom / left, right |
checkPosition | string | Position of the checkmark in multiple mode. Accepted values: '', left, right | |
canAutoPosition | bool | true | If present, this property allows the inner Popover component to position the menu in such way options are not hidden by the screen edges. |
multiple | bool | false | Include this property to turn superSelectField into a multi-selection dropdown. Checkboxes will appear. |
openImmediately | bool | false | Makes the menu opened on page load. |
keepSearchOnSelect | bool | false | Prevents the autocomplete field's value to be reset after each selection. |
disabled | bool | false | Include this property to disable superSelectField. |
value | null, object, object[] | null | Selected value(s). /!\ REQUIRED: each object must expose a 'value' property. |
onChange | function | () => {} | Triggers when selecting/unselecting an option from the Menu. signature: (selectedValues, name) with selectedValues array of selected values based on selected nodes' value property, and name the value of the superSelectField instance's name property |
onRequestClose | function | () => {} | If multiple is set triggers when clicking away |
onMenuOpen | function | () => {} | Triggers when opening the Menu. |
onAutoCompleteTyping | function | () => {} | Exposes the word typed in AutoComplete. Useful for triggering onType API requests. |
children | any | [] | Datasource is an array of any type of nodes, styled at your convenience. /!\ REQUIRED: each node must expose a value property. This value property will be used by default for both option's value and label.A label property can be provided to specify a different value than value . |
nb2show | number | 5 | Number of options displayed from the menu. |
elementHeight | number, number[] | 36 | Height in pixels of each option element. If elements have different heights, you can provide them in an array. |
showAutocompleteThreshold | number | 10 | Maximum number of options from which to display the autocomplete search field. For example, if autoComplete textfield need to be disabled, just set this prop with a value higher than children length. |
autocompleteFilter | function | see below | Provide your own filtering parser. Default: case insensitive. The search field will appear only if there are more than 10 children (see showAutocompleteThreshold ).By default, the parser will check for label props, 'value' otherwise. |
useLayerForClickAway | bool | false | If true, the popover dropdown will render on top of an invisible layer, which will prevent clicks to the underlying elements, and trigger an onRequestClose('clickAway') call. |
if multiple is set, value must be at least an empty Array.
For single value mode, you can set value to null.
When using objects, make sure they expose a non-null value property.
PropTypes should raise warnings if implementing otherwise.
Name | Type | Default | Description |
---|---|---|---|
style | object | {} | Insert your own inlined styles, applied to the root component. |
menuStyle | object | {} | Styles applied to the comtainer which will receive your children components. |
menuGroupStyle | object | {} | Styles applied to the MenuItems hosting your <optgroup/>. |
innerDivStyle | object | {} | Styles applied to the inner div of MenuItems hosting each of your children components. |
menuFooterStyle | object | {} | Styles applied to the Menu's footer. |
menuCloseButton | node | A button for an explicit closing of the menu. Useful on mobiles. Note If defined click outside will not close the super select field | |
menuCancelButton | node | A button for an explicit closing of the menu and resetting selected values to initial state. Can be used as "reset". Note If defined click outside will not close the super select field | |
selectedMenuItemStyle | object | {color: muiTheme.menuItem.selectedTextColor} | Styles to be applied to the selected MenuItem. |
selectionsRenderer | function | see below | Provide your own renderer for selected options. Defaults to concatenating children's values text. Check CodeExample4 for a more advanced renderer example. |
checkedIcon | SVGicon | see below | The SvgIcon to use for the checked state. This is useful to create icon toggles. |
unCheckedIcon | SVGicon | see below | The SvgIcon to use for the unchecked state. This is useful to create icon toggles. |
hoverColor | string | 'rgba(69, 90, 100, 0.1)' | Overrides the hover background color. |
floatingLabelStyle | object | Allows to change the styles of the floating label. | |
floatingLabelFocusStyle | object | Allows to change the styles of the floating label when focused. | |
noMatchFoundStyle | object | {} | Allows to change the style of the noMatchFound list item. |
errorStyle | object | {color: 'red'} | Allows to change the style of error message's container. Will resolve only if errorText is defined. |
underlineErrorStyle | object | {borderColor: 'red'} | Allows to change the style of the underline in error state. Will resolve only if errorText is defined. |
underlineStyle | object | Allows to change the styles of the underline. | |
underlineFocusStyle | object | Allows to change the styles of the underline when focused. | |
autocompleteUnderlineStyle | object | Allows to change the styles of the searchTextField's underline. | |
autocompleteUnderlineFocusStyle | object | Allows to change the styles of the searchTextField's underline when focused. |
Name | Default function |
---|---|
checkedIcon | <CheckedIcon style={{ top: 'calc(50% - 12px)' }} /> |
unCheckedIcon | <UnCheckedIcon style={{ top: 'calc(50% - 12px)' }} /> |
autocompleteFilter | ```(searchText, text) => !text |
selectionsRenderer |
(values, hintText) => { if (!values) return hintText const { value, label } = values if (Array.isArray(values)) { return values.length ? values.map(({ value, label }) => label || value).join(', ') : hintText } else if (label || value) return label || value else return hintText }
Check the CodeExampleX.js
provided in the repository.
You can build the project with :
git clone https://github.com/Sharlaan/material-ui-superselectfield.git
npm i && npm start
It should open a new page on your default browser @ localhost:3000
npm test
In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
implement onClose handler for multiple mode, to allow registering selected values in oneshot instead of exposing values at each selection (ie one single server request)
set autoWidth to false automatically if width prop has a value
add a css rule for this.root :focus { outline: 'none' }, and :hover { darken }
add tests for focus states/styles when tabbing between multiple superSelectFields
add tests for keystrokes
add proptypes checking for value and children
support of <optgroup />
check rendering performance with 200 MenuItems (integrate react-infinite)
implement the container for errors (absolutely positioned below the focusedLine)
Expose more props :
add props.disableAutoComplete (default: false), or a nbItems2showAutocomplete (default: null, meaning never show the searchTextField)
make Autocomplete appears only if current numberOfMenuItems > props.autocompleteTreshold
implement a checkboxRenderer for MenuItem (or expose 2 properties CheckIconFalse & CheckIconTrue)
make a PR reimplementing MenuItem.insetChildren replaced with checkPosition={'left'(default) or 'right'}
add an example with GooglePlaces
FAQs
original Material-UI's SelectField component enhanced with autocompletion, multiselection, custom renderers, and infinite loading.
The npm package moebel-material-ui-superselectfield receives a total of 1 weekly downloads. As such, moebel-material-ui-superselectfield popularity was classified as not popular.
We found that moebel-material-ui-superselectfield demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.