fix(core): linked doc named input box has excessive desire to select all (#8861)

Fix issue [AF-1706](https://linear.app/affine-design/issue/AF-1706).
This commit is contained in:
akumatus 2024-11-20 06:25:36 +00:00
parent 2857568f03
commit b0ca3c6d58
No known key found for this signature in database
GPG Key ID: D1FD534C6C29FE19
3 changed files with 16 additions and 12 deletions

View File

@ -21,7 +21,7 @@ export const useAutoFocus = <T extends HTMLElement = HTMLElement>(
export const useAutoSelect = <T extends HTMLInputElement = HTMLInputElement>(
autoSelect?: boolean
) => {
const ref = useAutoFocus<T>(autoSelect);
const ref = useRef<T | null>(null);
useLayoutEffect(() => {
if (ref.current && autoSelect) {

View File

@ -45,17 +45,20 @@ export const RowInput = forwardRef<HTMLInputElement, RowInputProps>(
const focusRef = useAutoFocus<HTMLInputElement>(autoFocus);
const selectRef = useAutoSelect<HTMLInputElement>(autoSelect);
const inputRef = (el: HTMLInputElement | null) => {
focusRef.current = el;
selectRef.current = el;
if (upstreamRef) {
if (typeof upstreamRef === 'function') {
upstreamRef(el);
} else {
upstreamRef.current = el;
const inputRef = useCallback(
(el: HTMLInputElement | null) => {
focusRef.current = el;
selectRef.current = el;
if (upstreamRef) {
if (typeof upstreamRef === 'function') {
upstreamRef(el);
} else {
upstreamRef.current = el;
}
}
}
};
},
[focusRef, selectRef, upstreamRef]
);
// use native blur event to get event after unmount
// don't use useLayoutEffect here, because the cleanup function will be called before unmount

View File

@ -169,10 +169,10 @@ export function patchNotificationService({
<div>
<span style={{ marginBottom: 12 }}>{toReactNode(message)}</span>
<Input
autoSelect={true}
placeholder={placeholder}
defaultValue={value}
onChange={e => (value = e)}
ref={input => input?.select()}
/>
</div>
);
@ -190,6 +190,7 @@ export function patchNotificationService({
onCancel: () => {
resolve(null);
},
autoFocusConfirm: false,
});
abort?.addEventListener('abort', () => {
resolve(null);