mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-21 20:16:26 +08:00
3d855647c7
## Button
- Remove props withoutHoverStyle
refactor hover impl with independent layer, so that hover-color won't affect the background even if is overridden outside
- Update `type` (renamed to `variant`):
- remove `processing` and `warning`
- rename `default` with `secondary`
- Remove `shape` props
- Remove `icon` and `iconPosition`, replaced with `prefix: ReactNode` and `suffix: ReactNode`
- Integrate tooltip for more convenient usage
- New Storybook document
- Focus style
## IconButton
- A Wrapper base on `<Button />`
- Override Button size and variant
- size: `'12' | '14' | '16' | '20' | '24' | number`
These presets size are referenced from the design system.
- variant: `'plain' | 'solid' | 'danger' | 'custom'`
- Inset icon via Button 's prefix
## Fix
- fix some button related issues
- close AF-1159, AF-1160, AF-1161, AF-1162, AF-1163, AF-1158, AF-1157
## Storybook

54 lines
1.5 KiB
TypeScript
54 lines
1.5 KiB
TypeScript
import type { PasswordLimitsFragment } from '@affine/graphql';
|
|
import { useI18n } from '@affine/i18n';
|
|
import type { FC } from 'react';
|
|
import { useCallback, useRef, useState } from 'react';
|
|
|
|
import { Button } from '../../ui/button';
|
|
import { Wrapper } from '../../ui/layout';
|
|
import { PasswordInput } from './password-input';
|
|
|
|
export const SetPassword: FC<{
|
|
passwordLimits: PasswordLimitsFragment;
|
|
showLater?: boolean;
|
|
onLater?: () => void;
|
|
onSetPassword: (password: string) => void;
|
|
}> = ({ passwordLimits, onLater, onSetPassword, showLater = false }) => {
|
|
const t = useI18n();
|
|
|
|
const [passwordPass, setPasswordPass] = useState(false);
|
|
const passwordRef = useRef('');
|
|
|
|
return (
|
|
<>
|
|
<Wrapper marginTop={30} marginBottom={42}>
|
|
<PasswordInput
|
|
passwordLimits={passwordLimits}
|
|
onPass={useCallback(password => {
|
|
setPasswordPass(true);
|
|
passwordRef.current = password;
|
|
}, [])}
|
|
onPrevent={useCallback(() => {
|
|
setPasswordPass(false);
|
|
}, [])}
|
|
/>
|
|
</Wrapper>
|
|
<Button
|
|
variant="primary"
|
|
size="large"
|
|
disabled={!passwordPass}
|
|
style={{ marginRight: 20 }}
|
|
onClick={useCallback(() => {
|
|
onSetPassword(passwordRef.current);
|
|
}, [onSetPassword])}
|
|
>
|
|
{t['com.affine.auth.set.password.save']()}
|
|
</Button>
|
|
{showLater ? (
|
|
<Button variant="plain" size="large" onClick={onLater}>
|
|
{t['com.affine.auth.later']()}
|
|
</Button>
|
|
) : null}
|
|
</>
|
|
);
|
|
};
|