@eslam-elmeniawy/react-native-common-components
Version:
Common `ReactNative` components packed in library for usage in projects.
98 lines (94 loc) • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _reactNativePaper = require("react-native-paper");
var _lodash = require("lodash");
var _TextInputStyles = _interopRequireDefault(require("./TextInput.styles.js"));
var _ResponsiveDimensions = _interopRequireDefault(require("../../utils/ResponsiveDimensions.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
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 && {}.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; }
// External imports.
// Types imports.
// Internal imports.
const getLabel = props => {
const {
topLabelProps,
isRequired,
label
} = props;
if (topLabelProps) {
return undefined;
}
if (label && typeof label === 'string') {
return isRequired ? `${label} *` : label;
}
return label;
};
const getPlaceholder = props => {
const {
isRequired,
placeholder
} = props;
return placeholder && isRequired ? `${placeholder} *` : placeholder;
};
const DefaultInput = /*#__PURE__*/React.memo(props => {
const {
dense,
autoCapitalize,
autoCorrect,
error,
errorProps,
multiline,
numberOfLines,
returnKeyType,
style,
keyboardType,
onChangeText,
secureTextEntry,
positiveNumbersOnly,
hasPasswordToggle,
scrollEnabled,
...other
} = props;
const _newProps = (0, _lodash.omit)(other, ['topLabelProps', 'isRequired', 'label', 'placeholder']);
const _label = getLabel(props);
const _isPassword = secureTextEntry === true || hasPasswordToggle === true;
const _defaultNumberOfLines = multiline ? undefined : 1;
const _handleTextChange = text => {
let editedText = text;
if (keyboardType === 'decimal-pad' || keyboardType === 'number-pad' || keyboardType === 'name-phone-pad' || keyboardType === 'numbers-and-punctuation' || keyboardType === 'numeric' || keyboardType === 'phone-pad') {
editedText = editedText.replaceAll('٠', '0').replaceAll('١', '1').replaceAll('٢', '2').replaceAll('٣', '3').replaceAll('٤', '4').replaceAll('٥', '5').replaceAll('٦', '6').replaceAll('٧', '7').replaceAll('٨', '8').replaceAll('٩', '9');
}
if (positiveNumbersOnly) {
editedText = editedText.replace(/[^0-9]/g, '');
}
onChangeText?.(editedText);
};
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativePaper.TextInput, {
dense: dense ?? true,
autoCapitalize: autoCapitalize ?? 'none',
autoCorrect: autoCorrect ?? false,
error: errorProps?.errorMessage ? true : error,
label: _label,
placeholder: getPlaceholder(props),
multiline: multiline,
numberOfLines: _isPassword ? 1 : numberOfLines ?? _defaultNumberOfLines,
returnKeyType: returnKeyType ?? 'done',
style: _reactNative.StyleSheet.flatten([_TextInputStyles.default.input, {
minHeight: multiline ? _ResponsiveDimensions.default.vs(70) : undefined
}, style]),
keyboardType: keyboardType,
onChangeText: _handleTextChange,
secureTextEntry: secureTextEntry,
scrollEnabled: scrollEnabled ?? (_isPassword ? false : multiline),
..._newProps
});
});
var _default = exports.default = DefaultInput;
//# sourceMappingURL=DefaultInput.js.map