Material-ui: [TextField] ν…μŠ€νŠΈ ν•„λ“œμ— μ•„μ΄μ½˜ μ†Œν’ˆ μΆ”κ°€

에 λ§Œλ“  2016λ…„ 01μ›” 14일  Β·  30μ½”λ©˜νŠΈ  Β·  좜처: mui-org/material-ui

#2416μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ ν˜„μž¬ ν…μŠ€νŠΈ ν•„λ“œ ꡬ성 μš”μ†Œμ— μ™Όμͺ½ μ•„μ΄μ½˜μ„ μΆ”κ°€ν•  방법이 μ—†μŠ΅λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ PR을 ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

TextFieldλŠ” <TextField icon={icon} /> 와 같이 호좜되며 μž…λ ₯ 전에 textField의 μ™Όμͺ½μ— μžˆλŠ” μ•„μ΄μ½˜μ„ λ Œλ”λ§ν•©λ‹ˆλ‹€.

TextField enhancement good first issue

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν…μŠ€νŠΈ ν•„λ“œμ— μΈμ ‘ν•œ μ•„μ΄μ½˜μ„ μ–»λŠ” κ°€μž₯ μ‰¬μš΄ 방법은 μ ˆλŒ€ μœ„μΉ˜ μ•„μ΄μ½˜μ„ 포함할 수 μžˆλŠ” 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>

search-bar-with-icon

μ™Όμͺ½μ— ν‘œμ‹œν•˜λ €λ©΄ ν•„λ“œμ— 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>

search-bar-with-left-icon

동적 μ•„μ΄μ½˜μ„ μ‚¬μš©ν•˜λ €λ©΄ onChange λ©”μ†Œλ“œ ν•„λ“œλ₯Ό λ³€κ²½ν•˜μ—¬ μ•„μ΄μ½˜μ„ λ³€κ²½ν•  수 μžˆλŠ” μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•˜μ‹­μ‹œμ˜€. 이것을 더 κΉ”λ”ν•˜κ²Œ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ 이것을 ꡬ성 μš”μ†Œμ— λ„£κ³  λ‹€μŒκ³Ό 같이 IconTextField라고 λΆ€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. } ....기타 속성 />

λͺ¨λ“  30 λŒ“κΈ€

#3032μ—μ„œ μ§€μ ν•œ κ²ƒμ²˜λŸΌ λ‹€μŒκ³Ό 같이 보일 수 μžˆμŠ΅λ‹ˆλ‹€.
screen shot 2016-01-24 at 12 55 58 pm
그리고 #3038 μ™Όμͺ½κ³Ό 였λ₯Έμͺ½μ— μ•„μ΄μ½˜μ„ μΆ”κ°€ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

접두사와 접미사λ₯Ό λ³΄λŠ” 것도 쒋을 κ²ƒμž…λ‹ˆλ‹€.
image

λ‚˜λŠ” 이것과 같은 것을 μ›ν•œλ‹€. 이 μž‘μ—…μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

이게 μΆœμ‹œλ˜λ €λ©΄ μ–Όλ§ˆλ‚˜ κ±Έλ¦΄κΉŒμš”?

λ‚˜λŠ” 이것이 μžλ™ μ™„μ„± μž…λ ₯μœΌλ‘œλ„ ν™•μž₯λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•˜λŠ”λ° 맀우 μœ μš©ν•  κ²ƒμž…λ‹ˆλ‹€.

TextField μœ νš¨μ„± 검사/였λ₯˜μ™€ ν•¨κ»˜ μ•„μ΄μ½˜μ„ μΆ”κ°€ν•˜λŠ” 방법도 μžˆμŠ΅λ‹ˆκΉŒ?
screen shot 2016-07-05 at 1 19 31 pm

slice 1

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κ³Ό μ€‘μ²©λœ ν…μŠ€νŠΈ ν•„λ“œλ₯Ό μ‚¬μš©ν•  λ•Œμ˜ λ¬Έμ œλŠ”... λ‚΄κ°€ λˆ„λ½λœ 것이 μ—†μœΌλ©΄ μ–‘μ‹μ˜ λ‹€μŒ ν…μŠ€νŠΈ ν•„λ“œλ‘œ νƒ­ν•˜λŠ” 것이 λΆˆκ°€λŠ₯ν•΄μ§„λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 이유둜 λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. @oliviertassinari λ˜λŠ” λ‹¨μˆœνžˆ μ„€μ •ν•  μˆ˜μžˆλŠ” μΆ”κ°€ μ†Œν’ˆμ΄ μ œμ•ˆν•œλŒ€λ‘œ , ν›„μžλŠ” #4027에 μ˜ν•΄ λ‚™λ‹΄ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ. λˆ„κ΅¬λ‚˜ ν•΄κ²° 방법을 μ°Ύμ•˜μŠ΅λ‹ˆκΉŒ?

μ›λž˜ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 진행 μƒν™©μ΄λ‚˜ μž„μ‹œ 해결책이 μžˆμŠ΅λ‹ˆκΉŒ?

@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>

search-bar-with-icon

μ™Όμͺ½μ— ν‘œμ‹œν•˜λ €λ©΄ ν•„λ“œμ— 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>

search-bar-with-left-icon

동적 μ•„μ΄μ½˜μ„ μ‚¬μš©ν•˜λ €λ©΄ onChange λ©”μ†Œλ“œ ν•„λ“œλ₯Ό λ³€κ²½ν•˜μ—¬ μ•„μ΄μ½˜μ„ λ³€κ²½ν•  수 μžˆλŠ” μƒνƒœλ₯Ό μ—…λ°μ΄νŠΈν•˜μ‹­μ‹œμ˜€. 이것을 더 κΉ”λ”ν•˜κ²Œ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄ 이것을 ꡬ성 μš”μ†Œμ— λ„£κ³  λ‹€μŒκ³Ό 같이 IconTextField라고 λΆ€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. } ....기타 속성 />

@bradrisse λŠ”

μ†Œν’ˆμœΌλ‘œ μΆ”κ°€ κ°€λŠ₯ν•œκ°€μš”?
_ floatLabelText='λ ˆμ΄λΈ”'
νžŒνŠΈν…μŠ€νŠΈ='νžŒνŠΈν…μŠ€νŠΈ'
errorText={ ${<MoreVertIcon />} Error Text }
μ—¬λŸ¬ 쀄
/>_

import ActionHome from 'material-ui/svg-icons/action/home';
<TextField
floatingLabelText={<SvgIconComponent/>}
floatingLabelFixed={true}
/>

// μ•„μ΄μ½˜μ΄ μžˆλŠ” ν…μŠ€νŠΈ ν•„λ“œ
const IconTextField = (μ†Œν’ˆ) => (

icon={"μ‚¬λžŒ"}
νžŒνŠΈν…μŠ€νŠΈ={μ†Œν’ˆ.라벨}
μœ ν˜•={μ†Œν’ˆ.μœ ν˜• ?
전체 λ„ˆλΉ„={true}
/>

)

λ‚˜λŠ” 이것이 λ‹«νž 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ? https://material-ui-next.com/demos/text-fields/#input - μž₯식

@stunaz λ‚˜λŠ” 그것이 μ‚¬λžŒλ“€μ΄ μ—¬κΈ°μ„œ μš”κ΅¬ν•˜λŠ” 것이라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@oliviertassinari μ‚¬μ–‘μ—μ„œ λ³Ό 수 μžˆλŠ” μœ μΌν•œ λ‹€λ₯Έ μœ ν˜•μ€ "Icon signifier"μž…λ‹ˆλ‹€.

μ•„μ΄μ½˜ 기호

μ•„μ΄μ½˜μ€ ν…μŠ€νŠΈ ν•„λ“œμ— ν•„μš”ν•œ μž…λ ₯ μœ ν˜•μ„ μ„€λͺ…ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ ν•„λ“œ μ™Όμͺ½μ— ν‘œμ‹œλ©λ‹ˆλ‹€.

λͺ‡ μ€„μ˜ μ½”λ“œλ§ŒμœΌλ‘œ 달성할 수 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

image

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 이 λ¬Έμ œλŠ” 이 문제 사둀λ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ νŠΉμ • ꡬ성 μš”μ†Œλ₯Ό λ…ΈμΆœν•˜λŠ” 것에 κ΄€ν•œ κ²ƒμž…λ‹ˆλ‹€. λ‚˜λŠ” πŸ’― %κ°€ λ‹€μŒ 두 가지 λŒ€μ•ˆμ΄ ν•„μš”ν•˜λ‹€κ³  ν™•μ‹ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό μ’…λ£Œν•  수 μžˆλ„λ‘ μ„€λͺ…μ„œμ— 데λͺ¨λ₯Ό μΆ”κ°€ν•˜κ³  싢은 μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

capture d ecran 2018-03-27 a 21 02 12
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);
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰