react-native-number-please
Version:
React Native number picker
53 lines • 8.02 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const React = __importStar(require("react"));
const react_native_1 = require("react-native");
const lodash_find_1 = __importDefault(require("lodash.find"));
const lodash_findindex_1 = __importDefault(require("lodash.findindex"));
const immer_1 = __importDefault(require("immer"));
const range_1 = __importDefault(require("./utils/range"));
const PickerFactory = ({ pickerProps, selectedValue, onChange, pickerStyle, itemStyle, }) => {
const { id, label = '', min, max } = pickerProps;
const numbers = range_1.default(min, max);
return (<react_native_1.Picker style={{ ...styles.picker, ...pickerStyle }} selectedValue={selectedValue} onValueChange={(value) => onChange({ id, value })} itemStyle={itemStyle}>
{numbers.map((number, index) => (<react_native_1.Picker.Item key={`${id}-${number}-${index}`} value={number} label={`${number} ${label}`}/>))}
</react_native_1.Picker>);
};
const NumberPlease = ({ digits, values, onChange, ...rest }) => {
const onChangeHandle = (value) => {
const nextValues = immer_1.default(values, (draft) => {
const index = lodash_findindex_1.default(draft, { id: value.id });
draft[index] = value;
});
onChange(nextValues);
};
return (<react_native_1.View style={styles.container}>
{digits.map((picker, index) => {
const pickerValues = lodash_find_1.default(values, { id: picker.id });
return (<PickerFactory key={`${picker.id}-picker-${index}`} pickerProps={picker} selectedValue={pickerValues?.value} onChange={onChangeHandle} {...rest}/>);
})}
</react_native_1.View>);
};
const styles = react_native_1.StyleSheet.create({
container: {
flexDirection: 'row',
width: '100%',
justifyContent: 'center',
alignItems: 'center',
},
picker: {
height: '100%', width: 90,
},
});
exports.default = NumberPlease;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyUGxlYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL051bWJlclBsZWFzZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLCtDQUF3RDtBQUN4RCw4REFBK0I7QUFDL0Isd0VBQXlDO0FBQ3pDLGtEQUE0QjtBQUU1QiwwREFBa0M7QUFFbEMsTUFBTSxhQUFhLEdBQWtCLENBQUMsRUFDcEMsV0FBVyxFQUNYLGFBQWEsRUFDYixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsR0FDTCxFQUFFLEVBQUU7SUFDUixNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLFdBQVcsQ0FBQztJQUNqRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRWhDLE9BQU8sQ0FDTCxDQUFDLHFCQUFNLENBQ0wsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUM1QyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FDN0IsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3ZELFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUVyQjtNQUFBLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQzlCLENBQUMscUJBQU0sQ0FBQyxJQUFJLENBQ1YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDLENBQ2hDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUNkLEtBQUssQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDLEVBQzVCLENBQ0gsQ0FBQyxDQUNKO0lBQUEsRUFBRSxxQkFBTSxDQUFDLENBQ1YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFpQyxDQUFDLEVBQ2xELE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLEdBQUcsSUFBSSxFQUNILEVBQUUsRUFBRTtJQUNSLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7UUFDdkMsTUFBTSxVQUFVLEdBQUcsZUFBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBQ2hELE1BQU0sS0FBSyxHQUFHLDBCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUNMLENBQUMsbUJBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQzVCO01BQUEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBVyxFQUFFLEtBQVUsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLHFCQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FDTCxDQUFDLGFBQWEsQ0FDWixHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxFQUFFLFdBQVcsS0FBSyxFQUFFLENBQUMsQ0FDcEMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ3BCLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FDbkMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQ3pCLElBQUksSUFBSSxDQUFDLEVBQ1QsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQ0o7SUFBQSxFQUFFLG1CQUFJLENBQUMsQ0FDUixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcseUJBQVUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsU0FBUyxFQUFFO1FBQ1QsYUFBYSxFQUFFLEtBQUs7UUFDcEIsS0FBSyxFQUFFLE1BQU07UUFDYixjQUFjLEVBQUUsUUFBUTtRQUN4QixVQUFVLEVBQUUsUUFBUTtLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7S0FDMUI7Q0FDRixDQUFDLENBQUM7QUFFSCxrQkFBZSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBWaWV3LCBTdHlsZVNoZWV0LCBQaWNrZXIgfSBmcm9tICdyZWFjdC1uYXRpdmUnO1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoLmZpbmQnO1xuaW1wb3J0IGZpbmRJbmRleCBmcm9tICdsb2Rhc2guZmluZGluZGV4JztcbmltcG9ydCBwcm9kdWNlIGZyb20gJ2ltbWVyJztcbmltcG9ydCB7IElOdW1iZXJQbGVhc2VQcm9wcywgSVZhbHVlIH0gZnJvbSAnLi9OdW1iZXJQbGVhc2UuaW50ZXJmYWNlJztcbmltcG9ydCByYW5nZSBmcm9tICcuL3V0aWxzL3JhbmdlJztcblxuY29uc3QgUGlja2VyRmFjdG9yeTogUmVhY3QuRkM8YW55PiA9ICh7XG4gIHBpY2tlclByb3BzLFxuICBzZWxlY3RlZFZhbHVlLFxuICBvbkNoYW5nZSxcbiAgcGlja2VyU3R5bGUsXG4gIGl0ZW1TdHlsZSxcbn06IGFueSkgPT4ge1xuICBjb25zdCB7IGlkLCBsYWJlbCA9ICcnLCBtaW4sIG1heCB9ID0gcGlja2VyUHJvcHM7XG4gIGNvbnN0IG51bWJlcnMgPSByYW5nZShtaW4sIG1heCk7XG5cbiAgcmV0dXJuIChcbiAgICA8UGlja2VyXG4gICAgICBzdHlsZT17eyAuLi5zdHlsZXMucGlja2VyLCAuLi5waWNrZXJTdHlsZSB9fVxuICAgICAgc2VsZWN0ZWRWYWx1ZT17c2VsZWN0ZWRWYWx1ZX1cbiAgICAgIG9uVmFsdWVDaGFuZ2U9eyh2YWx1ZTogYW55KSA9PiBvbkNoYW5nZSh7IGlkLCB2YWx1ZSB9KX1cbiAgICAgIGl0ZW1TdHlsZT17aXRlbVN0eWxlfVxuICAgID5cbiAgICAgIHtudW1iZXJzLm1hcCgobnVtYmVyLCBpbmRleCkgPT4gKFxuICAgICAgICA8UGlja2VyLkl0ZW1cbiAgICAgICAgICBrZXk9e2Ake2lkfS0ke251bWJlcn0tJHtpbmRleH1gfVxuICAgICAgICAgIHZhbHVlPXtudW1iZXJ9XG4gICAgICAgICAgbGFiZWw9e2Ake251bWJlcn0gJHtsYWJlbH1gfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgPC9QaWNrZXI+XG4gICk7XG59O1xuXG5jb25zdCBOdW1iZXJQbGVhc2U6IFJlYWN0LkZDPElOdW1iZXJQbGVhc2VQcm9wcz4gPSAoe1xuICBkaWdpdHMsXG4gIHZhbHVlcyxcbiAgb25DaGFuZ2UsXG4gIC4uLnJlc3Rcbn06IGFueSkgPT4ge1xuICBjb25zdCBvbkNoYW5nZUhhbmRsZSA9ICh2YWx1ZTogSVZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV4dFZhbHVlcyA9IHByb2R1Y2UodmFsdWVzLCAoZHJhZnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBmaW5kSW5kZXgoZHJhZnQsIHsgaWQ6IHZhbHVlLmlkIH0pO1xuICAgICAgZHJhZnRbaW5kZXhdID0gdmFsdWU7XG4gICAgfSk7XG5cbiAgICBvbkNoYW5nZShuZXh0VmFsdWVzKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgIHtkaWdpdHMubWFwKChwaWNrZXI6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBwaWNrZXJWYWx1ZXMgPSBmaW5kKHZhbHVlcywgeyBpZDogcGlja2VyLmlkIH0pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQaWNrZXJGYWN0b3J5XG4gICAgICAgICAgICBrZXk9e2Ake3BpY2tlci5pZH0tcGlja2VyLSR7aW5kZXh9YH1cbiAgICAgICAgICAgIHBpY2tlclByb3BzPXtwaWNrZXJ9XG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlPXtwaWNrZXJWYWx1ZXM/LnZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlSGFuZGxlfVxuICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvVmlldz5cbiAgKTtcbn07XG5cbmNvbnN0IHN0eWxlcyA9IFN0eWxlU2hlZXQuY3JlYXRlKHtcbiAgY29udGFpbmVyOiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH0sXG4gIHBpY2tlcjoge1xuICAgIGhlaWdodDogJzEwMCUnLCB3aWR0aDogOTAsXG4gIH0sXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyUGxlYXNlO1xuIl19