#2416μμ μΈκΈνλ―μ΄ νμ¬ ν μ€νΈ νλ κ΅¬μ± μμμ μΌμͺ½ μμ΄μ½μ μΆκ°ν λ°©λ²μ΄ μμ΅λλ€. μ΄λ₯Ό μν΄ PRμ νκ³ μΆμ΅λλ€.
TextFieldλ <TextField icon={icon} />
μ κ°μ΄ νΈμΆλλ©° μ
λ ₯ μ μ textFieldμ μΌμͺ½μ μλ μμ΄μ½μ λ λλ§ν©λλ€.
#3032μμ μ§μ ν κ²μ²λΌ λ€μκ³Ό κ°μ΄ λ³΄μΌ μ μμ΅λλ€.
κ·Έλ¦¬κ³ #3038 μΌμͺ½κ³Ό μ€λ₯Έμͺ½μ μμ΄μ½μ μΆκ°ν μ μμ΄μΌ ν©λλ€.
μ λμ¬μ μ λ―Έμ¬λ₯Ό 보λ κ²λ μ’μ κ²μ
λλ€.
λλ μ΄κ²κ³Ό κ°μ κ²μ μνλ€. μ΄ μμ μ νκ³ μμ΅λκΉ?
μ΄κ² μΆμλλ €λ©΄ μΌλ§λ 걸릴κΉμ?
λλ μ΄κ²μ΄ μλ μμ± μ λ ₯μΌλ‘λ νμ₯λμ΄μΌ νλ€κ³ μκ°νλλ° λ§€μ° μ μ©ν κ²μ λλ€.
TextField μ ν¨μ± κ²μ¬/μ€λ₯μ ν¨κ» μμ΄μ½μ μΆκ°νλ λ°©λ²λ μμ΅λκΉ?
SelectFieldλ₯Ό ν¬ν¨ν λͺ¨λ "μμ" νλμ μ μ©λμ΄μΌ νλ€κ³ μκ°ν©λλ€.
ListItem λλ MenuItem λ΄μμ TextFieldλ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό μνν©λλ€. ListItem μμ TextFieldλ₯Ό λ£μ λ€μ leftIcon λλ rightIcon μνμ μ¬μ©νμ¬ μ΄λ₯Ό λ¬μ±ν©λλ€.
ListItem λλ MenuItem λ΄μμ TextFieldλ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό μνν©λλ€.
μ¬λ°λ₯Έ μ κ·Όμ΄λΌκ³ μκ°ν©λλ€. μ°¨λΌλ¦¬ TextField
μΆκ° λ
Όλ¦¬λ³΄λ€ ν©μ±μ μ¬μ©νκ³ μΆμ΅λλ€.
κ·Έλ¬λ ListItem
λλ MenuItem
κ° μ΄ μ¬μ© μ¬λ‘λ₯Ό μΌλμ λκ³ μ€κ³λμλμ§ κΆκΈν©λλ€.
λλ μ°λ¦¬κ° κ·Έκ²μ νκΈ° μν΄ λ ꡬ체μ μΈ κ΅¬μ± μμλ₯Ό κ°μ§ μ μλ€κ³ μκ°ν©λλ€. <TextFieldIcon />
μ²λΌ
https://material.google.com/components/text-fields.html#text -fields-single-line-μ νμλ κ²μ²λΌ ListItem
μ²λΌ 보μ΄λ κ²μ΄ κ°μ₯ μ’μ΅λλ€. ν
μ€νΈ νλ
κ·Έλ¦¬κ³ μλ§λ rightCheckbox
μ λΉμ·ν μ΅μ
μΌλ‘ κ°μ§ μ μμ§λ§ rightField
μ μ΅λ λ°°μ΄μ μ 곡νλ κ°λ₯ν μ§μμ
λλ€. TextField
λ°/λλ SelectField
μ κ°μ 2κ°μ μμ(μ TextField
μ ν/μΊλ¦°λ μμ).
μ΄λ κ² νλ©΄ νΉν λͺ¨λ°μΌμμ λ§μ 곡κ°μ μ μ½ν μ μκ³ λͺ¨λ κ²μ μ λ ¬νκΈ° μν΄ CSSλ₯Ό λ°λ‘ μ‘°μ ν νμκ° μμ΄ λ²κ±°λ‘μ΅λλ€.
ListItemκ³Ό μ€μ²©λ ν μ€νΈ νλλ₯Ό μ¬μ©ν λμ λ¬Έμ λ... λ΄κ° λλ½λ κ²μ΄ μμΌλ©΄ μμμ λ€μ ν μ€νΈ νλλ‘ ννλ κ²μ΄ λΆκ°λ₯ν΄μ§λ€λ κ²μ λλ€.
μ΄λ¬ν μ΄μ λ‘ λ¨λ
μΌλ‘ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
μλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν μ§ν μν©μ΄λ μμ ν΄κ²°μ± μ΄ μμ΅λκΉ?
@iamzhouyi λ μλ μμ± κ²½νμ μν΄ μ΄μ κ°μ κ²μ μ¬μ©νλ €κ³ ν©λλ€.
<Menu disableAutoFocus>
<MenuItem leftIcon={<SearchIcon color='#fff'/>} disabled>
<AutoComplete hintText='Search' />
</MenuItem>
</Menu>
μ΄κ²μ μ§μ μ΄ μλ μ¬λμ΄ μμ΅λκΉ? λκ΅°κ°κ° μμνλ€λ©΄ λ΄κ° λκ³ μΆμ΅λλ€. κ·Έλ μ§ μλ€λ©΄ μ€μ€λ‘ μμ©λμ΄λ₯Ό μΌμΌν€κ² μ΅λκΉ?
@oshalygin μ²λΌ 보μ΄μ§ μμ§λ§ #6566μ 체ν¬λ¦¬μ€νΈμ μΆκ°λμμΌλ―λ‘ μ§ν μν©μ μΆμ νκ³ μΆμ μλ μμ΅λλ€!
ν° λμμ΄ λ κ²μ λλ€.
@oshalygin μ΄κ²μ μ‘°μ¬νλ €λ©΄ next
λΆκΈ°μμ μμ
νλ κ²μ΄ μ’μ΅λλ€. μ°λ¦¬λ master
μλ‘μ΄ κΈ°λ₯μ μ°μ μμλ₯Ό λμ§ μμ΅λλ€. λν κ΅¬μ± κ°λ₯ν κ΅¬μ± μμλ‘ κ΅¬μ±λμ΄ μκΈ° λλ¬Έμ λ μ½κ² μ°Ύμ μ μμ΅λλ€.
ν μ€νΈ νλ κ°μ μ€μκ°μΌλ‘ νμΈν μ μλλ‘ ν μ€νΈ νλμ μν μ§νμ νλ κ²λ μ’μ κ² κ°μ΅λλ€.
μ, 1.5λ μ μ μ€νν κ±Έ 보λ! μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ? μ΄λ€ μ’ λ₯μ μμ μ CSS ν΄νΉ(&before content)μ μΆκ°νλ €κ³ μλνμ§λ§ μ€νμΌμ μΆκ°λ‘ μ§μ νκ³ μνμ λ°λΌ μ¬λΌμ§κ±°λ μ¬λΌμ§κ² νκ³ λ ꡬ체μ μΌλ‘ ν μ€νΈ νλ μμ μμ΄μΌ νλ―λ‘ λ³΄λ€ μΈλ°ν μ μ΄κ° νμν©λλ€. . HintText/placeholderλ₯Ό μ¬μ©νμ¬ λ°μ΄μ¬λ¦°μ μλνμ§λ§ μ΄ λͺ¨λ κ²μ΄ μλ‘ μμ ν μΆ©λνκ³ νΌλμ€λ½μ΅λλ€. π
ν μ€νΈ νλμ μΈμ ν μμ΄μ½μ μ»λ κ°μ₯ μ¬μ΄ λ°©λ²μ μ λ μμΉ μμ΄μ½μ ν¬ν¨ν μ μλ divμ νλμ μμ΄μ½μ λννλ κ²μ λλ€.
<div style={{position: 'relative', display: 'inline-block'}}>
<SearchIcon style={{position: 'absolute', right: 0, top: 15, width: 20, height: 20}}/>
<TextField
hintText="Search by Name"
onChange={_.debounce((event, value) => this.handleSearch(value), 500)}
/>
</div>
μΌμͺ½μ νμνλ €λ©΄ νλμ textIndentλ₯Ό μΆκ°νκ³ μμΉλ₯Ό μΌμͺ½μΌλ‘ λ³κ²½νκΈ°λ§ νλ©΄ λ©λλ€.
<div style={{position: 'relative', display: 'inline-block'}}>
<SearchIcon style={{position: 'absolute', left: 0, top: 15, width: 20, height: 20}}/>
<TextField
style={{textIndent: 30}}
hintText="Search by Name"
onChange={_.debounce((event, value) => this.handleSearch(value), 500)}
/>
</div>
λμ μμ΄μ½μ μ¬μ©νλ €λ©΄ onChange λ©μλ νλλ₯Ό λ³κ²½νμ¬ μμ΄μ½μ λ³κ²½ν μ μλ μνλ₯Ό μ
λ°μ΄νΈνμμμ€. μ΄κ²μ λ κΉλνκ² λ§λ€κ³ μΆλ€λ©΄ μ΄κ²μ κ΅¬μ± μμμ λ£κ³ λ€μκ³Ό κ°μ΄ IconTextFieldλΌκ³ λΆλ₯Ό μ μμ΅λλ€.
@bradrisse λ
μνμΌλ‘ μΆκ° κ°λ₯νκ°μ?
_
ννΈν
μ€νΈ='ννΈν
μ€νΈ'
errorText={ ${<MoreVertIcon />} Error Text
}
μ¬λ¬ μ€
/>_
import ActionHome from 'material-ui/svg-icons/action/home';
<TextField
floatingLabelText={<SvgIconComponent/>}
floatingLabelFixed={true}
/>
// μμ΄μ½μ΄ μλ ν
μ€νΈ νλ
const IconTextField = (μν) => (
ννΈν
μ€νΈ={μν.λΌλ²¨}
μ ν={μν.μ ν ?
μ 체 λλΉ={true}
/>
)
λλ μ΄κ²μ΄ λ«ν μ μλ€κ³ μκ°ν©λλ€. λ§μ΅λκΉ? https://material-ui-next.com/demos/text-fields/#input - μ₯μ
@stunaz λλ κ·Έκ²μ΄ μ¬λλ€μ΄ μ¬κΈ°μ μꡬνλ κ²μ΄λΌκ³ μκ°νμ§ μμ΅λλ€.
@oliviertassinari μ¬μμμ λ³Ό μ μλ μ μΌν λ€λ₯Έ μ νμ "Icon signifier"μ λλ€.
μμ΄μ½ κΈ°νΈ
μμ΄μ½μ ν μ€νΈ νλμ νμν μ λ ₯ μ νμ μ€λͺ ν©λλ€. ν μ€νΈ νλ μΌμͺ½μ νμλ©λλ€.
λͺ μ€μ μ½λλ§μΌλ‘ λ¬μ±ν μ μλ κ² κ°μ΅λλ€.
const styles = theme => ({
icon: {
margin: '20px 16px 0 0',
color: theme.palette.action.active,
},
});
[...]
<div>
<Person className={classes.icon} />
<TextField label="Name" />
</div>
λ¬Έμμ μλ₯Ό ν΅ν΄ μ΄ λ¬Έμ λ₯Ό μ’ λ£ν μ μμ΅λκΉ?
@mbrooks μμ΄λμ΄κ° μμ΅λλ€. ν μ€νΈ νλκ° μμ΄μ½ λ°μ½λ μ΄ν°λ₯Ό μνλ μ μΌν κ΅¬μ± μμκ° μλκΈ° λλ¬Έμ μμμ μμ΄μ½μ μΆκ°νλ λνΌλ₯Ό λ§λ€ μ μμ΅λλ€.
<IconDecorator icon={<PeopleIcon/>} position="left" iconStyle={customStyle}>
<TextField label="Name"/>
</IconDecorator>
<IconDecorator icon={<ArrowRightIcon/>} position="right" iconStyle={customStyle}>
<Button raised={true}>Go</Button>
</IconDecorator>
μ΄ λ©μλλ νμ¬ APIλ₯Ό μμμν€κ±°λ μ€μΌμν€μ§ μμΌλ―λ‘ μ£Όμ λ³κ²½ μ¬νμ΄ μμ΅λλ€.
μ΄ IconDecorator
κ° κ΅¬νλμ΄μΌ νλ€λ©΄ μ΄ λΌμ΄λΈλ¬λ¦¬μ ν¬ν¨λμ΄μΌ ν©λκΉ μλλ©΄ λ€λ₯Έ μΈλΆ λΌμ΄λΈλ¬λ¦¬μ ν¬ν¨λμ΄μΌ ν©λκΉ?
@wongjiahau λ΄κ° λ³Ό μμλ ν κ°μ§ μ΄λ €μμ μμ§ μ λ ¬μ΄ κ΅¬μ± μμμ λ°λΌ λ€λ₯΄λ―λ‘ νμ μ νμ νμΈνκ³ μ¬λ°±μ μ μ νκ² μ‘°μ ν΄μΌνμ§λ§ λ¬μ± ν μ μλ€λ κ²μ λλ€.
μ΄κ²μ΄ κ³μλλ€λ©΄ MUIμ μΌλΆκ° λλ κ²μ΄ ν©λ¦¬μ μ λλ€.
@oliviertassinari νμ΄μ§λ₯Ό
μμ§ μ΄λ € μλ κ² κ°μ£ ? μ«κ²¨λ¬λμ μλλ©΄ μμ§ ν΄κ²°λ κΈ°λ―Έκ° λ³΄μ΄λμ?
@BlakeBurnette μ΄ λ¬Έμ λ μ΄ λ¬Έμ μ¬λ‘λ₯Ό μ²λ¦¬νκΈ° μν΄ νΉμ κ΅¬μ± μμλ₯Ό λ ΈμΆνλ κ²μ κ΄ν κ²μ λλ€. λλ π― %κ° λ€μ λ κ°μ§ λμμ΄ νμνλ€κ³ νμ νμ§ μμ΅λλ€. μ΄ λ¬Έμ λ₯Ό μ’ λ£ν μ μλλ‘ μ€λͺ μμ λ°λͺ¨λ₯Ό μΆκ°νκ³ μΆμ μ¬λμ΄ μμ΅λκΉ?
https://codesandbox.io/s/29yj0lr7p
import React from "react";
import PropTypes from "prop-types";
import { withStyles } from "material-ui/styles";
import Input, { InputLabel, InputAdornment } from "material-ui/Input";
import { FormControl } from "material-ui/Form";
import TextField from "material-ui/TextField";
import Grid from "material-ui/Grid";
import AccountCircle from "material-ui-icons/AccountCircle";
const styles = theme => ({
margin: {
margin: theme.spacing.unit
}
});
function TextFieldIcons(props) {
const { classes } = props;
return (
<div>
<FormControl className={classes.margin}>
<InputLabel htmlFor="demo1">First Name</InputLabel>
<Input
id="demo1"
startAdornment={
<InputAdornment position="start">
<AccountCircle />
</InputAdornment>
}
/>
</FormControl>
<TextField
className={classes.margin}
id="demo2"
label="First Name"
InputProps={{
startAdornment: (
<InputAdornment position="start">
<AccountCircle />
</InputAdornment>
)
}}
/>
<div className={classes.margin}>
<Grid container spacing={8} alignItems="flex-end">
<Grid item>
<AccountCircle />
</Grid>
<Grid item>
<TextField id="demo2" label="First Name" />
</Grid>
</Grid>
</div>
</div>
);
}
TextFieldIcons.propTypes = {
classes: PropTypes.object.isRequired
};
export default withStyles(styles)(TextFieldIcons);
κ°μ₯ μ μ©ν λκΈ
ν μ€νΈ νλμ μΈμ ν μμ΄μ½μ μ»λ κ°μ₯ μ¬μ΄ λ°©λ²μ μ λ μμΉ μμ΄μ½μ ν¬ν¨ν μ μλ divμ νλμ μμ΄μ½μ λννλ κ²μ λλ€.
μΌμͺ½μ νμνλ €λ©΄ νλμ textIndentλ₯Ό μΆκ°νκ³ μμΉλ₯Ό μΌμͺ½μΌλ‘ λ³κ²½νκΈ°λ§ νλ©΄ λ©λλ€.
λμ μμ΄μ½μ μ¬μ©νλ €λ©΄ onChange λ©μλ νλλ₯Ό λ³κ²½νμ¬ μμ΄μ½μ λ³κ²½ν μ μλ μνλ₯Ό μ λ°μ΄νΈνμμμ€. μ΄κ²μ λ κΉλνκ² λ§λ€κ³ μΆλ€λ©΄ μ΄κ²μ κ΅¬μ± μμμ λ£κ³ λ€μκ³Ό κ°μ΄ IconTextFieldλΌκ³ λΆλ₯Ό μ μμ΅λλ€. } ....κΈ°ν μμ± />