Add PasswordInput component (#1090)
* feat: add PasswordHider * feat: add PasswordInput * fix typo and require requirement * merge state * use ...props and lnbits password required --------- Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
This commit is contained in:
parent
fbd3f8efed
commit
ecedbd1527
|
@ -29,6 +29,8 @@ import { AWS_S3_URL_REGEXP } from '@/lib/constants'
|
||||||
import { whenRange } from '@/lib/time'
|
import { whenRange } from '@/lib/time'
|
||||||
import { useFeeButton } from './fee-button'
|
import { useFeeButton } from './fee-button'
|
||||||
import Thumb from '@/svgs/thumb-up-fill.svg'
|
import Thumb from '@/svgs/thumb-up-fill.svg'
|
||||||
|
import Eye from '@/svgs/eye-fill.svg'
|
||||||
|
import EyeClose from '@/svgs/eye-close-line.svg'
|
||||||
import Info from './info'
|
import Info from './info'
|
||||||
|
|
||||||
export function SubmitButton ({
|
export function SubmitButton ({
|
||||||
|
@ -1052,5 +1054,35 @@ function Client (Component) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function PasswordHider ({ onClick, showPass }) {
|
||||||
|
return (
|
||||||
|
<InputGroup.Text
|
||||||
|
style={{ cursor: 'pointer' }}
|
||||||
|
onClick={onClick}
|
||||||
|
>
|
||||||
|
{!showPass
|
||||||
|
? <EyeClose
|
||||||
|
fill='var(--bs-body-color)' height={20} width={20}
|
||||||
|
/>
|
||||||
|
: <Eye
|
||||||
|
fill='var(--bs-body-color)' height={20} width={20}
|
||||||
|
/>}
|
||||||
|
</InputGroup.Text>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function PasswordInput ({ newPass, ...props }) {
|
||||||
|
const [showPass, setShowPass] = useState(false)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ClientInput
|
||||||
|
{...props}
|
||||||
|
type={showPass ? 'text' : 'password'}
|
||||||
|
autoComplete={newPass ? 'new-password' : 'current-password'}
|
||||||
|
append={<PasswordHider showPass={showPass} onClick={() => setShowPass(!showPass)} />}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export const ClientInput = Client(Input)
|
export const ClientInput = Client(Input)
|
||||||
export const ClientCheckbox = Client(Checkbox)
|
export const ClientCheckbox = Client(Checkbox)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { getGetServerSideProps } from '@/api/ssrApollo'
|
import { getGetServerSideProps } from '@/api/ssrApollo'
|
||||||
import { Form, ClientInput, ClientCheckbox } from '@/components/form'
|
import { Form, ClientInput, ClientCheckbox, PasswordInput } from '@/components/form'
|
||||||
import { CenterLayout } from '@/components/layout'
|
import { CenterLayout } from '@/components/layout'
|
||||||
import { WalletButtonBar, WalletCard } from '@/components/wallet-card'
|
import { WalletButtonBar, WalletCard } from '@/components/wallet-card'
|
||||||
import { lnbitsSchema } from '@/lib/validate'
|
import { lnbitsSchema } from '@/lib/validate'
|
||||||
|
@ -51,12 +51,12 @@ export default function LNbits () {
|
||||||
required
|
required
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
<ClientInput
|
<PasswordInput
|
||||||
initialValue={adminKey}
|
initialValue={adminKey}
|
||||||
type='password'
|
|
||||||
autoComplete='false'
|
|
||||||
label='admin key'
|
label='admin key'
|
||||||
name='adminKey'
|
name='adminKey'
|
||||||
|
newPass
|
||||||
|
required
|
||||||
/>
|
/>
|
||||||
<ClientCheckbox
|
<ClientCheckbox
|
||||||
disabled={!enabled || isDefault || enabledProviders.length === 1}
|
disabled={!enabled || isDefault || enabledProviders.length === 1}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { getGetServerSideProps } from '@/api/ssrApollo'
|
import { getGetServerSideProps } from '@/api/ssrApollo'
|
||||||
import { Form, ClientInput, ClientCheckbox } from '@/components/form'
|
import { Form, ClientCheckbox, PasswordInput } from '@/components/form'
|
||||||
import { CenterLayout } from '@/components/layout'
|
import { CenterLayout } from '@/components/layout'
|
||||||
import { WalletButtonBar, WalletCard } from '@/components/wallet-card'
|
import { WalletButtonBar, WalletCard } from '@/components/wallet-card'
|
||||||
import { nwcSchema } from '@/lib/validate'
|
import { nwcSchema } from '@/lib/validate'
|
||||||
|
@ -43,12 +43,11 @@ export default function NWC () {
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ClientInput
|
<PasswordInput
|
||||||
initialValue={nwcUrl}
|
initialValue={nwcUrl}
|
||||||
label='connection'
|
label='connection'
|
||||||
name='nwcUrl'
|
name='nwcUrl'
|
||||||
type='password'
|
newPass
|
||||||
autoComplete='new-password'
|
|
||||||
required
|
required
|
||||||
autoFocus
|
autoFocus
|
||||||
/>
|
/>
|
||||||
|
|
Loading…
Reference in New Issue