From 3fe8e8df4768a8e5a9092c4d20b56a1fc9170ada Mon Sep 17 00:00:00 2001 From: adids1221 Date: Thu, 6 Mar 2025 12:03:29 +0200 Subject: [PATCH 01/33] Picker selection control bar and toggle all items functionality --- .../screens/componentScreens/PickerScreen.tsx | 58 ++++++++++----- src/components/picker/PickerItemsList.tsx | 18 ++++- .../picker/PickerSelectionControlBar.tsx | 72 +++++++++++++++++++ .../picker/helpers/usePickerSelection.tsx | 8 ++- src/components/picker/index.tsx | 38 ++++++---- src/components/picker/types.ts | 51 +++++++++++++ src/index.ts | 3 +- 7 files changed, 212 insertions(+), 36 deletions(-) create mode 100644 src/components/picker/PickerSelectionControlBar.tsx diff --git a/demo/src/screens/componentScreens/PickerScreen.tsx b/demo/src/screens/componentScreens/PickerScreen.tsx index fa7459bffa..b2d92b312c 100644 --- a/demo/src/screens/componentScreens/PickerScreen.tsx +++ b/demo/src/screens/componentScreens/PickerScreen.tsx @@ -15,7 +15,8 @@ import { PanningProvider, PickerProps, RenderCustomModalProps, - PickerMethods + PickerMethods, + SegmentedControl } from 'react-native-ui-lib'; //eslint-disable-line import contactsData from '../../data/conversations'; import {longOptions} from './PickerScreenLongOptions'; @@ -24,6 +25,20 @@ const tagIcon = require('../../assets/icons/tags.png'); const dropdown = require('../../assets/icons/chevronDown.png'); const dropdownIcon = ; +const selectAllSegment = [ + {label: Picker.selectAllType.button}, + {label: Picker.selectAllType.checkbox}, + {label: Picker.selectAllType.none} +]; + +const buttonProps = { + onPress: (items: any) => console.log('onPress', items) +}; + +const checkboxProps = { + onValueChange: (value: boolean) => console.log('onValueChange', value) +}; + const renderContact = (contactValue: any, props: any) => { const contact = contacts[contactValue as number]; return ( @@ -107,7 +122,12 @@ export default class PickerScreen extends Component { filter: undefined, statOption: [], scheme: undefined, - contact: 0 + contact: 0, + selectAllType: Picker.selectAllType.button + }; + + _onSegmentChange = (index: number) => { + this.setState({selectAllType: Picker.selectAllType[selectAllSegment[index].label]}); }; renderDialog: PickerProps['renderOverlay'] = (modalProps: RenderCustomModalProps) => { @@ -148,7 +168,7 @@ export default class PickerScreen extends Component { Picker - + - Custom Top Element: + Selection Status: { - const allOptionsSelected = Array.isArray(value) && value.length === statusOptions.length; - return ( - -