mirror of
https://gitlab.com/wheres-the-tp/ui-mobile.git
synced 2026-01-25 07:34:55 -06:00
- Orderby picker - Radius picker - Checkbox styling in ui-theme - handlers for cancel and apply
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
// @flow
|
|
import React from 'react';
|
|
import { Picker, View } from 'react-native';
|
|
import theme from '../ui-theme';
|
|
import { pure } from 'recompose';
|
|
import debounce from '../helpers/debounce';
|
|
|
|
const { picker: { color: selectedColor } } = theme;
|
|
const defaultColor = 'black';
|
|
|
|
const getItemColor = (selected, current) => (selected === current ? selectedColor : defaultColor);
|
|
|
|
export type Orderby = 'distance' | 'lastupdated' | 'quantity';
|
|
|
|
export const ORDER_BY = ['distance', 'lastupdated', 'quantity'];
|
|
|
|
export const getOrderbyText = (orderby: Orderby) => {
|
|
switch (orderby) {
|
|
case 'quantity':
|
|
return 'Quantity';
|
|
case 'lastupdated':
|
|
return 'Most Recently Updated';
|
|
default:
|
|
return 'Distance';
|
|
}
|
|
};
|
|
|
|
/* eslint-disable react/display-name */
|
|
const renderItem = (selected: Orderby) => (item: Orderby) => (
|
|
<Picker.Item key={item} label={getOrderbyText(item)} value={item} color={getItemColor(selected, item)} />
|
|
);
|
|
|
|
type orderbyPickerProps = { selected: Orderby, onValueChange: Function, style: Object };
|
|
const orderbyPicker = pure(({ selected, onValueChange, style }: orderbyPickerProps) => (
|
|
<View style={style}>
|
|
<Picker selectedValue={selected} onValueChange={debounce(onValueChange)} style={{ flex: 1 }}>
|
|
{ORDER_BY.map(renderItem(selected))}
|
|
</Picker>
|
|
</View>
|
|
));
|
|
|
|
export default orderbyPicker;
|