@devrue/rn-select
Version:
Custom typescript only select component for react native
91 lines (90 loc) • 4.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = SearchBox;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _ChevronLeftIcon = _interopRequireDefault(require("../icons/ChevronLeftIcon"));
var _CloseIcon = _interopRequireDefault(require("../icons/CloseIcon"));
var _useStyles = _interopRequireDefault(require("../hooks/useStyles"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function SearchBox({
onBackPress,
onChangeText,
placeholder,
searchContainerStyle,
searchInputStyle,
searchBackIconStyle,
searchClearIconStyle,
...rest
}) {
const ref = (0, _react.useRef)(null);
const [value, setValue] = (0, _react.useState)('');
const styles = (0, _useStyles.default)(({
tokens: {
size
}
}) => ({
container: {
borderRadius: size.xs,
flexDirection: 'row',
alignItems: 'center',
paddingHorizontal: size.sm
},
inputWrapper: {
flex: 1,
height: size.xl
},
input: {
flex: 1,
backgroundColor: '#f9f9f9',
borderRadius: size.xs,
paddingRight: size.lg,
paddingLeft: size.sm
},
close: {
marginLeft: -size.lg,
width: (searchClearIconStyle === null || searchClearIconStyle === void 0 ? void 0 : searchClearIconStyle.fontSize) ?? size.md,
height: (searchClearIconStyle === null || searchClearIconStyle === void 0 ? void 0 : searchClearIconStyle.fontSize) ?? size.md
},
back: {
width: (searchBackIconStyle === null || searchBackIconStyle === void 0 ? void 0 : searchBackIconStyle.fontSize) ?? size.lg,
height: (searchBackIconStyle === null || searchBackIconStyle === void 0 ? void 0 : searchBackIconStyle.fontSize) ?? size.lg
}
}), []);
const clearText = () => {
var _ref$current;
(_ref$current = ref.current) === null || _ref$current === void 0 || _ref$current.clear();
setValue('');
onChangeText === null || onChangeText === void 0 || onChangeText('');
};
return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: [styles.container, searchContainerStyle]
}, onBackPress && /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
onPress: onBackPress
}, /*#__PURE__*/_react.default.createElement(_ChevronLeftIcon.default, {
stroke: (searchBackIconStyle === null || searchBackIconStyle === void 0 ? void 0 : searchBackIconStyle.color) ?? '#c5c5c5',
style: styles.back
})), /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
style: styles.inputWrapper
}, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, _extends({
ref: ref
}, rest, {
placeholder: placeholder ?? 'Search...',
style: [styles.input, searchInputStyle],
onChangeText: v => {
setValue(v);
onChangeText === null || onChangeText === void 0 || onChangeText(v);
}
}))), !!value && /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
onPress: clearText
}, /*#__PURE__*/_react.default.createElement(_CloseIcon.default, {
stroke: (searchClearIconStyle === null || searchClearIconStyle === void 0 ? void 0 : searchClearIconStyle.color) ?? '#c5c5c5',
style: styles.close
})));
}
//# sourceMappingURL=SearchBox.js.map