From 5eefae0d226f2f8256bfbe688351c8d00b637fbc Mon Sep 17 00:00:00 2001 From: ProSolvo Date: Sun, 9 Feb 2020 22:12:08 +0200 Subject: [PATCH] feature(modal) add select multiple select. --- README.md | 1 + components/ModalDropdown.js | 14 ++++++++++++-- package.json | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f863606..4439a49 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ Prop | Type | Optional | Default | Description `onSelect` | func | Yes | | Trigger when option row touched with selected `index` and `value`. **Return `false` can cancel the event.** `accessible` | bool | Yes | true | Set accessibility of dropdown modal and dropdown rows `keyboardShouldPersistTaps` | enum('always', 'never', 'handled') | Yes | 'never' | See react-native `ScrollView` props +`multipleSelect` | bool | Yes | false | Remove event closing modal when calling onSelect. ### Methods Method | Description diff --git a/components/ModalDropdown.js b/components/ModalDropdown.js index ace1472..9dcae4a 100644 --- a/components/ModalDropdown.js +++ b/components/ModalDropdown.js @@ -34,6 +34,7 @@ const TOUCHABLE_ELEMENTS = [ export default class ModalDropdown extends Component { static propTypes = { disabled: PropTypes.bool, + multipleSelect: PropTypes.bool, scrollEnabled: PropTypes.bool, defaultIndex: PropTypes.number, defaultValue: PropTypes.string, @@ -62,6 +63,7 @@ export default class ModalDropdown extends Component { static defaultProps = { disabled: false, + multipleSelect: false, scrollEnabled: true, defaultIndex: -1, defaultValue: 'Please select...', @@ -370,7 +372,12 @@ export default class ModalDropdown extends Component { }; _onRowPress(rowData, sectionID, rowID, highlightRow) { - const {onSelect, renderButtonText, onDropdownWillHide} = this.props; + const { + onSelect, + renderButtonText, + onDropdownWillHide, + multipleSelect + } = this.props; if (!onSelect || onSelect(rowID, rowData) !== false) { highlightRow(sectionID, rowID); const value = renderButtonText && renderButtonText(rowData) || rowData.toString(); @@ -381,7 +388,10 @@ export default class ModalDropdown extends Component { selectedIndex: rowID }); } - if (!onDropdownWillHide || onDropdownWillHide() !== false) { + + if (!multipleSelect && + (!onDropdownWillHide || onDropdownWillHide() !== false) + ) { this.setState({ showDropdown: false }); diff --git a/package.json b/package.json index db7820b..d8e25a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-modal-dropdown", - "version": "0.7.0", + "version": "0.7.1", "description": "A react-native dropdown component for both iOS and Android.", "keywords": [ "react",