UNPKG

@arpitbhalla/rneui-base-dev

Version:
257 lines (256 loc) 13.2 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SearchBarIOS = void 0; var react_1 = __importStar(require("react")); var react_native_1 = require("react-native"); var Input_1 = require("../Input"); var Icon_1 = require("../Icon"); var helpers_1 = require("../helpers"); var defaultSearchIcon = function (theme) { var _a, _b, _c; return ({ type: 'ionicon', size: 20, name: 'ios-search', color: (_c = (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _a === void 0 ? void 0 : _a.platform) === null || _b === void 0 ? void 0 : _b.ios) === null || _c === void 0 ? void 0 : _c.grey, }); }; var defaultClearIcon = function (theme) { var _a, _b, _c; return ({ type: 'ionicon', name: 'ios-close-circle', size: 20, color: (_c = (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _a === void 0 ? void 0 : _a.platform) === null || _b === void 0 ? void 0 : _b.ios) === null || _c === void 0 ? void 0 : _c.grey, }); }; var SearchBarIOS = (function (_super) { __extends(SearchBarIOS, _super); function SearchBarIOS(props) { var _this = _super.call(this, props) || this; _this.focus = function () { _this.input.focus(); }; _this.blur = function () { _this.input.blur(); }; _this.clear = function () { _this.input.clear(); _this.onChangeText(''); _this.props.onClear(); }; _this.cancel = function () { _this.onChangeText(''); if (_this.props.showCancel) { react_native_1.LayoutAnimation.configureNext(react_native_1.LayoutAnimation.Presets.easeInEaseOut); _this.setState({ hasFocus: false }); } setTimeout(function () { _this.blur(); _this.props.onCancel(); }, 0); }; _this.onFocus = function (event) { _this.props.onFocus(event); react_native_1.LayoutAnimation.configureNext(react_native_1.LayoutAnimation.Presets.easeInEaseOut); _this.setState({ hasFocus: true, isEmpty: _this.props.value === '', }); }; _this.onBlur = function (event) { _this.props.onBlur(event); if (!_this.props.showCancel) { react_native_1.LayoutAnimation.configureNext(react_native_1.LayoutAnimation.Presets.easeInEaseOut); _this.setState({ hasFocus: false, }); } }; _this.onChangeText = function (text) { _this.props.onChangeText(text); _this.setState({ isEmpty: text === '' }); }; var value = props.value; _this.state = { hasFocus: false, isEmpty: value ? value === '' : true, cancelButtonWidth: null, }; return _this; } SearchBarIOS.prototype.render = function () { var _this = this; var _a, _b, _c, _d, _e, _f, _g; var _h = this.props, _j = _h.theme, theme = _j === void 0 ? helpers_1.defaultTheme : _j, cancelButtonProps = _h.cancelButtonProps, cancelButtonTitle = _h.cancelButtonTitle, clearIcon = _h.clearIcon, containerStyle = _h.containerStyle, leftIconContainerStyle = _h.leftIconContainerStyle, rightIconContainerStyle = _h.rightIconContainerStyle, inputContainerStyle = _h.inputContainerStyle, inputStyle = _h.inputStyle, placeholderTextColor = _h.placeholderTextColor, showLoading = _h.showLoading, loadingProps = _h.loadingProps, searchIcon = _h.searchIcon, showCancel = _h.showCancel, attributes = __rest(_h, ["theme", "cancelButtonProps", "cancelButtonTitle", "clearIcon", "containerStyle", "leftIconContainerStyle", "rightIconContainerStyle", "inputContainerStyle", "inputStyle", "placeholderTextColor", "showLoading", "loadingProps", "searchIcon", "showCancel"]); var _k = this.state, hasFocus = _k.hasFocus, isEmpty = _k.isEmpty; var loadingStyle = loadingProps.style, otherLoadingProps = __rest(loadingProps, ["style"]); var buttonStyle = cancelButtonProps.buttonStyle, buttonTextStyle = cancelButtonProps.buttonTextStyle, buttonColor = cancelButtonProps.color, buttonDisabled = cancelButtonProps.disabled, buttonDisabledStyle = cancelButtonProps.buttonDisabledStyle, buttonDisabledTextStyle = cancelButtonProps.buttonDisabledTextStyle, otherCancelButtonProps = __rest(cancelButtonProps, ["buttonStyle", "buttonTextStyle", "color", "disabled", "buttonDisabledStyle", "buttonDisabledTextStyle"]); return (react_1.default.createElement(react_native_1.View, { testID: "RNE__SearchBar-wrapper", style: react_native_1.StyleSheet.flatten([ styles.container, { backgroundColor: (_a = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _a === void 0 ? void 0 : _a.background }, containerStyle, ]) }, react_1.default.createElement(Input_1.Input, __assign({ testID: "RNE__SearchBar", renderErrorMessage: false }, attributes, { onFocus: this.onFocus, onBlur: this.onBlur, onChangeText: this.onChangeText, ref: function (input) { _this.input = input; }, inputStyle: react_native_1.StyleSheet.flatten([styles.input, inputStyle]), containerStyle: { paddingHorizontal: 0, }, inputContainerStyle: react_native_1.StyleSheet.flatten([ styles.inputContainer, { backgroundColor: (_d = (_c = (_b = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _b === void 0 ? void 0 : _b.platform) === null || _c === void 0 ? void 0 : _c.ios) === null || _d === void 0 ? void 0 : _d.searchBg }, hasFocus && { marginRight: this.state.cancelButtonWidth ? this.state.cancelButtonWidth : 0, }, inputContainerStyle, ]), leftIcon: (0, helpers_1.renderNode)(Icon_1.Icon, searchIcon, defaultSearchIcon(theme)), leftIconContainerStyle: react_native_1.StyleSheet.flatten([ styles.leftIconContainerStyle, leftIconContainerStyle, ]), placeholderTextColor: placeholderTextColor || ((_g = (_f = (_e = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _e === void 0 ? void 0 : _e.platform) === null || _f === void 0 ? void 0 : _f.ios) === null || _g === void 0 ? void 0 : _g.grey), rightIcon: react_1.default.createElement(react_native_1.View, { style: { flexDirection: 'row' } }, showLoading && (react_1.default.createElement(react_native_1.ActivityIndicator, __assign({ key: "loading", style: react_native_1.StyleSheet.flatten([{ marginRight: 5 }, loadingStyle]) }, otherLoadingProps))), !isEmpty && (0, helpers_1.renderNode)(Icon_1.Icon, clearIcon, __assign(__assign({}, defaultClearIcon(theme)), { key: 'cancel', onPress: this.clear }))), rightIconContainerStyle: react_native_1.StyleSheet.flatten([ styles.rightIconContainerStyle, rightIconContainerStyle, ]) })), react_1.default.createElement(react_native_1.View, { style: react_native_1.StyleSheet.flatten([ styles.cancelButtonContainer, { opacity: this.state.cancelButtonWidth === null ? 0 : 1, right: hasFocus ? 0 : this.state.cancelButtonWidth && -this.state.cancelButtonWidth, }, ]), onLayout: function (event) { return _this.setState({ cancelButtonWidth: event.nativeEvent.layout.width }); }, testID: "RNE__SearchBar-cancelButtonContainer" }, react_1.default.createElement(react_native_1.Pressable, __assign({ accessibilityRole: "button", onPress: this.cancel, disabled: buttonDisabled }, otherCancelButtonProps), react_1.default.createElement(react_native_1.View, { style: react_native_1.StyleSheet.flatten([ buttonStyle, buttonDisabled && buttonDisabledStyle, ]), testID: "RNE__SearchBar-cancelButton" }, react_1.default.createElement(react_native_1.Text, { style: react_native_1.StyleSheet.flatten([ styles.buttonTextStyle, buttonColor && { color: buttonColor }, buttonTextStyle, buttonDisabled && (buttonDisabledTextStyle || styles.buttonTextDisabled), ]) }, cancelButtonTitle)))))); }; SearchBarIOS.defaultProps = { value: '', cancelButtonTitle: 'Cancel', loadingProps: {}, cancelButtonProps: {}, showLoading: false, onClear: function () { return null; }, onCancel: function () { return null; }, onFocus: function () { return null; }, onBlur: function () { return null; }, onChangeText: function () { return null; }, searchIcon: { name: 'ios-search' }, clearIcon: { name: 'ios-close-circle' }, showCancel: false, }; return SearchBarIOS; }(react_1.Component)); exports.SearchBarIOS = SearchBarIOS; var styles = react_native_1.StyleSheet.create({ container: { paddingBottom: 13, paddingTop: 13, flexDirection: 'row', overflow: 'hidden', alignItems: 'center', }, input: { marginLeft: 6, overflow: 'hidden', }, inputContainer: { borderBottomWidth: 0, borderRadius: 9, minHeight: 36, marginLeft: 8, marginRight: 8, }, rightIconContainerStyle: { marginRight: 8, }, leftIconContainerStyle: { marginLeft: 8, }, buttonTextStyle: { color: '#007aff', textAlign: 'center', padding: 8, fontSize: 18, }, buttonTextDisabled: { color: '#cdcdcd', }, cancelButtonContainer: { position: 'absolute', }, });