@eslam-elmeniawy/react-native-common-components
Version:
Common `ReactNative` components packed in library for usage in projects.
90 lines (87 loc) • 2.92 kB
JavaScript
;
// External imports.
import * as React from 'react';
import { StyleSheet } from 'react-native';
import { omit } from 'lodash';
// Types imports.
// Internal imports.
import styles from "./TextInput.styles.js";
import ResponsiveDimensions from "../../utils/ResponsiveDimensions.js";
import { TextInput } from "../wrappers/index.js";
import { jsx as _jsx } from "react/jsx-runtime";
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 = 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__*/_jsx(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: StyleSheet.flatten([styles.input, {
minHeight: multiline ? ResponsiveDimensions.vs(70) : undefined
}, style]),
keyboardType: keyboardType,
onChangeText: _handleTextChange,
secureTextEntry: secureTextEntry,
scrollEnabled: scrollEnabled ?? (_isPassword ? false : multiline),
..._newProps
});
});
export default DefaultInput;
//# sourceMappingURL=DefaultInput.js.map