5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【MUI】TextFieldのstartAdornmentとendAdornmentを簡単にまとめる

Last updated at Posted at 2022-01-07

textFieldによくいる「Adornment」これはなにか?

startAdornmentとendAdornment。TextFieldコンポーネントについているが直感的にわからず、10分くらい検索して調べることがあったので、簡単に理解できるようにここで簡単にまとめておきます。

Adornment

翻訳すると「装飾品」 MUIにある説明を翻訳すると、「主な方法は、InputAdornmentを使用することです。これを使用して、プレフィックス、サフィックス、またはアクションを入力に追加できます。たとえば、アイコンボタンを使用して、パスワードを非表示または表示できます。」

TextFiledに単位などの装飾をつけたり、アイコンボタンを併用してパスワード表示非表示のファンクションを仕込めるようです。

実例を見ていきましょう!

startAdornment

inputPropにstartAdornmentを渡したら、こんな感じ。(MUIのものを引用)

image.png

startAdronment.js
<TextField
   label="With normal TextField"
   id="outlined-start-adornment"
   sx={{ m: 1, width: '25ch' }}
   InputProps={{
     startAdornment: <InputAdornment position="start">kg</InputAdornment>,
   }}
 />

endAdornment

inputPropにendAdornmentを渡したら、こんな感じ。(MUIのものを引用)

image.png

endAdronment.js
<TextField
  label="With normal TextField"
  id="outlined-start-adornment"
  sx={{ m: 1, width: '25ch' }}
  InputProps={{
    ebdAdornment: <InputAdornment position="start">kg</InputAdornment>,
  }}
/>

passwordTextField

passwordのTextFieldによくついてる●にON/OFF機能を付けたやつはこんな感じ(MUIのものを引用)

image.png

image.png

●のON/OFFをstateで切り替えをしており、それぞれICONと●表示を制御しています。
また、handleClickShowPasswordでAdornment押下時にON/OFFを逆にセットできるようになっています。

passwordTextField.js
export function PasswordTextField({ label, value, setValue, helperText }) {
  const classes = useStyles();
  const [showPassword, setShowPassword] = useState(false);

  function handleClickShowPassword() {
    setShowPassword(!(showPassword))
  }

  function handleMouseDownPassword (event) {
    event.preventDefault();
  };

  return (
    <div>
      {
      <form className={classes.root} noValidate autoComplete="off">
        <TextField
            id="outlined-basic"
            label={label}
            variant="outlined"
            fullWidth
            value={value}
            helperText={helperText}
            type={showPassword ? 'text' : 'password'}
            InputProps={{
              endAdornment:
                <InputAdornment position="end">
                  <IconButton
                    aria-label="toggle password visibility"
                    onClick={handleClickShowPassword}
                    onMouseDown={handleMouseDownPassword}
                    edge="end"
                  >
                    {showPassword ? <VisibilityOff /> : <Visibility />}
                  </IconButton>
                </InputAdornment>
            }}
            onChange={(event) => handleChange(event)}
            onKeyDown={(event) => {
              if (event.key === 'Enter') {
                event.preventDefault();
                onKeyDown(event)
              }
            }
            }
          />
        </form>
      }
    </div>
  )
}

参考

5
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?