mirror of
https://github.com/plankanban/planka.git
synced 2025-07-19 13:19:44 +02:00
feat: Add multiple task creation with Ctrl+Enter (#921)
This commit is contained in:
parent
14dff96434
commit
f372113def
1 changed files with 28 additions and 15 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,
|
||||||
|
@ -63,8 +77,7 @@ const Add = React.forwardRef(({ children, onCreate }, ref) => {
|
||||||
(event) => {
|
(event) => {
|
||||||
if (event.key === 'Enter') {
|
if (event.key === 'Enter') {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
submit(event.ctrlKey);
|
||||||
submit();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[submit],
|
[submit],
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue