tuya-panel-kit
Version:
a functional component library for developing tuya device panels!
113 lines (107 loc) • 3.12 kB
JavaScript
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { ViewPropTypes } from 'react-native';
import TYText from '../TYText';
import Footer from './footer';
import {
StyledContainer,
StyledContent,
StyledTitle,
StyledSubTitle,
StyledInputContainer,
StyledInput,
} from './styled';
export default class Password extends Component {
static propTypes = {
style: ViewPropTypes.style,
contentStyle: ViewPropTypes.style,
titleNumberOfLines: PropTypes.number,
title: PropTypes.string.isRequired,
titleStyle: TYText.propTypes.style,
subTitle: PropTypes.string,
subTitleStyle: TYText.propTypes.style,
footerWrapperStyle: ViewPropTypes.style,
cancelText: PropTypes.string.isRequired,
cancelTextStyle: TYText.propTypes.style,
cancelAccessibilityLabel: PropTypes.string,
confirmText: PropTypes.string.isRequired,
confirmTextStyle: TYText.propTypes.style,
confirmAccessibilityLabel: PropTypes.string,
onCancel: PropTypes.func,
onConfirm: PropTypes.func,
};
static defaultProps = {
style: null,
contentStyle: null,
titleNumberOfLines: 2,
titleStyle: null,
subTitle: '',
subTitleStyle: null,
footerWrapperStyle: null,
cancelTextStyle: null,
cancelAccessibilityLabel: 'Dialog.Cancel',
confirmTextStyle: null,
confirmAccessibilityLabel: 'Dialog.Confirm',
onCancel: null,
onConfirm: null,
};
_handleConfirm = () => {
const { onConfirm } = this.props;
onConfirm && onConfirm();
};
renderPassword() {
return (
<StyledInputContainer>
<StyledInput
// style={inputStyle}
// {...TextInputProps}
maxLength={6}
secureTextEntry={true}
value={typeof value !== 'undefined' ? this.state.value : undefined}
onChangeText={this._handleChangeText}
/>
</StyledInputContainer>
);
}
render() {
const {
style,
contentStyle,
titleNumberOfLines,
title,
titleStyle,
subTitle,
subTitleStyle,
confirmText,
confirmTextStyle,
confirmAccessibilityLabel,
footerWrapperStyle,
cancelText,
cancelTextStyle,
cancelAccessibilityLabel,
onCancel,
} = this.props;
return (
<StyledContainer style={style}>
<StyledContent style={contentStyle}>
<StyledTitle style={titleStyle} numberOfLines={titleNumberOfLines}>
{title}
</StyledTitle>
{!!subTitle && <StyledSubTitle style={subTitleStyle}>{subTitle}</StyledSubTitle>}
{this.renderPassword()}
</StyledContent>
<Footer
style={footerWrapperStyle}
cancelTextStyle={cancelTextStyle}
confirmTextStyle={confirmTextStyle}
cancelText={cancelText}
confirmText={confirmText}
cancelAccessibilityLabel={cancelAccessibilityLabel}
confirmAccessibilityLabel={confirmAccessibilityLabel}
onCancel={onCancel}
onConfirm={this._handleConfirm}
/>
</StyledContainer>
);
}
}