mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-02-15 19:53:12 +00:00
Fix accessibility of email-input
Placeholder is not accessible https://www.smashingmagazine.com/2018/06/placeholder-attribute/ Using label and styling using empty placeholder with :placeholder-shown
This commit is contained in:
@@ -61,6 +61,7 @@ export default class InviteForm extends React.Component {
|
||||
|
||||
const inputClasses = classSet({
|
||||
input: true,
|
||||
"invite-form__input": true,
|
||||
"has-success": this.state.submitted,
|
||||
"has-error": this.state.error,
|
||||
});
|
||||
@@ -91,22 +92,30 @@ export default class InviteForm extends React.Component {
|
||||
|
||||
return (
|
||||
<form className={formClasses} onSubmit={this.onSubmit}>
|
||||
<input
|
||||
className={inputClasses}
|
||||
type="text"
|
||||
name="email"
|
||||
placeholder="Email"
|
||||
value={this.state.email}
|
||||
onChange={this.onChange}
|
||||
/>
|
||||
<button
|
||||
className="btn btn__submit"
|
||||
type="submit"
|
||||
title="Lähetä"
|
||||
disabled={this.state.error || this.state.submitted}
|
||||
>
|
||||
Lähetä
|
||||
</button>
|
||||
<div className="form__field">
|
||||
<input
|
||||
className={inputClasses}
|
||||
type="text"
|
||||
name="email"
|
||||
id="email-field"
|
||||
// Placeholder is not accessible way to provide information
|
||||
// Used here for :placeholder-shown -styles
|
||||
placeholder=" "
|
||||
value={this.state.email}
|
||||
onChange={this.onChange}
|
||||
/>
|
||||
<label className="label" htmlFor="email-field">
|
||||
Email
|
||||
</label>
|
||||
<button
|
||||
className="btn btn__submit"
|
||||
type="submit"
|
||||
title="Lähetä"
|
||||
disabled={this.state.error || this.state.submitted}
|
||||
>
|
||||
Lähetä
|
||||
</button>
|
||||
</div>
|
||||
<div className="invite-form__loader">
|
||||
<Loader />
|
||||
</div>
|
||||
|
||||
@@ -125,12 +125,41 @@ section:first-child
|
||||
display block
|
||||
.invite-form
|
||||
position relative
|
||||
.form__field
|
||||
display flex
|
||||
flex-flow column-reverse
|
||||
margin-bottom 1em
|
||||
.invite-form__input
|
||||
padding-right 5em
|
||||
.input,
|
||||
.label
|
||||
transition all 0.2s
|
||||
.input:placeholder-shown + .label
|
||||
max-width 66.66%
|
||||
white-space nowrap
|
||||
overflow hidden
|
||||
text-overflow ellipsis
|
||||
transform-origin left bottom
|
||||
transform translate(18px, 36px) scale(1.2)
|
||||
cursor text
|
||||
font-weight 400
|
||||
opacity 0.6
|
||||
.input:not(:placeholder-shown) + .label,
|
||||
.input:focus + .label
|
||||
transform translate(0, 0) scale(1)
|
||||
cursor pointer
|
||||
font-weight 600
|
||||
opacity 1
|
||||
.input::-webkit-input-placeholder
|
||||
opacity 0
|
||||
.input:focus::-webkit-input-placeholder
|
||||
opacity 1
|
||||
.btn
|
||||
height 32px
|
||||
padding 0 10px
|
||||
position absolute
|
||||
right 8px
|
||||
top 7px
|
||||
bottom 7px
|
||||
color #fff
|
||||
&:active
|
||||
border-bottom 0
|
||||
|
||||
Reference in New Issue
Block a user