mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 13:19:44 +02:00
ref: Refactoring
This commit is contained in:
parent
2067a1ac58
commit
4749ea1f34
1 changed files with 30 additions and 21 deletions
|
@ -13,6 +13,8 @@ const DEFAULT_DATA = {
|
||||||
name: '',
|
name: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const MULTIPLE_REGEX = /\s*\r?\n\s*/;
|
||||||
|
|
||||||
const Add = React.forwardRef(({ children, onCreate }, ref) => {
|
const Add = React.forwardRef(({ children, onCreate }, ref) => {
|
||||||
const [t] = useTranslation();
|
const [t] = useTranslation();
|
||||||
const [isOpened, setIsOpened] = useState(false);
|
const [isOpened, setIsOpened] = useState(false);
|
||||||
|
@ -29,22 +31,34 @@ const Add = React.forwardRef(({ children, onCreate }, ref) => {
|
||||||
setIsOpened(false);
|
setIsOpened(false);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const submit = useCallback(() => {
|
const submit = useCallback(
|
||||||
const cleanData = {
|
(isMultiple = false) => {
|
||||||
...data,
|
const cleanData = {
|
||||||
name: data.name.trim(),
|
...data,
|
||||||
};
|
name: data.name.trim(),
|
||||||
|
};
|
||||||
|
|
||||||
if (!cleanData.name) {
|
if (!cleanData.name) {
|
||||||
nameField.current.ref.current.select();
|
nameField.current.ref.current.select();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
onCreate(cleanData);
|
if (isMultiple) {
|
||||||
|
cleanData.name.split(MULTIPLE_REGEX).forEach((name) => {
|
||||||
|
onCreate({
|
||||||
|
...cleanData,
|
||||||
|
name,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
onCreate(cleanData);
|
||||||
|
}
|
||||||
|
|
||||||
setData(DEFAULT_DATA);
|
setData(DEFAULT_DATA);
|
||||||
focusNameField();
|
focusNameField();
|
||||||
}, [onCreate, data, setData, focusNameField]);
|
},
|
||||||
|
[onCreate, data, setData, focusNameField],
|
||||||
|
);
|
||||||
|
|
||||||
useImperativeHandle(
|
useImperativeHandle(
|
||||||
ref,
|
ref,
|
||||||
|
@ -61,17 +75,12 @@ const Add = React.forwardRef(({ children, onCreate }, ref) => {
|
||||||
|
|
||||||
const handleFieldKeyDown = useCallback(
|
const handleFieldKeyDown = useCallback(
|
||||||
(event) => {
|
(event) => {
|
||||||
if (event.ctrlKey && event.key === 'Enter') {
|
if (event.key === 'Enter') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const lines = data.name.split('\n').filter(line => line.trim() !== '');
|
submit(event.ctrlKey);
|
||||||
lines.forEach(line => onCreate({ name: line.trim() }));
|
|
||||||
setData({ ...data, name: '' });
|
|
||||||
} else if (event.key === 'Enter') {
|
|
||||||
event.preventDefault();
|
|
||||||
submit();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[data, onCreate, submit],
|
[submit],
|
||||||
);
|
);
|
||||||
|
|
||||||
const [handleFieldBlur, handleControlMouseOver, handleControlMouseOut] = useClosableForm(
|
const [handleFieldBlur, handleControlMouseOver, handleControlMouseOut] = useClosableForm(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue