allow to view password during registration
This commit is contained in:
committed by
Pete Matsyburka
parent
0a105490fe
commit
d15fd1fb84
@@ -24,6 +24,7 @@ import SubmitForm from './elements/submit_form'
|
||||
import PromptPassword from './elements/prompt_password'
|
||||
import EmailsTextarea from './elements/emails_textarea'
|
||||
import ToggleOnSubmit from './elements/toggle_on_submit'
|
||||
import PasswordInput from './elements/password_input'
|
||||
|
||||
import * as TurboInstantClick from './lib/turbo_instant_click'
|
||||
|
||||
@@ -85,6 +86,7 @@ safeRegisterElement('prompt-password', PromptPassword)
|
||||
safeRegisterElement('emails-textarea', EmailsTextarea)
|
||||
safeRegisterElement('toggle-cookies', ToggleCookies)
|
||||
safeRegisterElement('toggle-on-submit', ToggleOnSubmit)
|
||||
safeRegisterElement('password-input', PasswordInput)
|
||||
|
||||
safeRegisterElement('template-builder', class extends HTMLElement {
|
||||
connectedCallback () {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import { target, targetable } from '@github/catalyst/lib/targetable'
|
||||
|
||||
export default targetable(class extends HTMLElement {
|
||||
static [target.static] = [
|
||||
'visiblePasswordIcon',
|
||||
'hiddenPasswordIcon',
|
||||
'passwordInput',
|
||||
'togglePasswordVisibility'
|
||||
]
|
||||
|
||||
connectedCallback () {
|
||||
this.togglePasswordVisibility.addEventListener('click', this.handleTogglePasswordVisibility)
|
||||
document.addEventListener('turbo:submit-start', this.setInitialPasswordType)
|
||||
}
|
||||
|
||||
disconnectedCallback () {
|
||||
this.togglePasswordVisibility.removeEventListener('click', this.handleTogglePasswordVisibility)
|
||||
document.removeEventListener('turbo:submit-start', this.setInitialPasswordType)
|
||||
}
|
||||
|
||||
handleTogglePasswordVisibility = () => {
|
||||
this.passwordInput.type = this.passwordInput.type === 'password' ? 'text' : 'password'
|
||||
this.toggleIcon()
|
||||
}
|
||||
|
||||
setInitialPasswordType = () => {
|
||||
this.passwordInput.type = 'password'
|
||||
this.toggleIcon()
|
||||
}
|
||||
|
||||
toggleIcon = () => {
|
||||
this.visiblePasswordIcon.classList.toggle('hidden', this.passwordInput.type === 'password')
|
||||
this.hiddenPasswordIcon.classList.toggle('hidden', this.passwordInput.type === 'text')
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="<%= local_assigns[:class] %>" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
|
||||
<path d="M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 431 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="<%= local_assigns[:class] %>" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
<path d="M10.585 10.587a2 2 0 0 0 2.829 2.828" />
|
||||
<path d="M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87" />
|
||||
<path d="M3 3l18 18" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 572 B |
@@ -34,7 +34,17 @@
|
||||
<%= fields_for @user do |ff| %>
|
||||
<div class="form-control">
|
||||
<%= ff.label :password, class: 'label' %>
|
||||
<%= ff.password_field :password, required: true, placeholder: '************', class: 'base-input' %>
|
||||
<password-input class="block relative">
|
||||
<%= ff.password_field :password, required: true, placeholder: '************', class: 'base-input w-full pr-10', data: { target: 'password-input.passwordInput' } %>
|
||||
<button data-target="password-input.togglePasswordVisibility" type="button" class="absolute inset-y-0 h-12 right-0 pr-3 flex items-center">
|
||||
<span data-target="password-input.hiddenPasswordIcon">
|
||||
<%= svg_icon('eye_off', class: 'w-6 h-6 shrink-0 bg-white') %>
|
||||
</span>
|
||||
<span data-target="password-input.visiblePasswordIcon" class="hidden">
|
||||
<%= svg_icon('eye', class: 'w-6 h-6 shrink-0 bg-white') %>
|
||||
</span>
|
||||
</button>
|
||||
</password-input>
|
||||
</div>
|
||||
<% end %>
|
||||
<%= fields_for @encrypted_config do |ff| %>
|
||||
|
||||
Reference in New Issue
Block a user