diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-01-21 01:29:24 +0100 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-02-09 01:06:42 +0100 |
commit | 8be4704e1125b6eb6fe17a58c8b54c651fa40c0c (patch) | |
tree | efad38860b0004efb2b3831ad2c4d2d75756dd2c /apps/files/src/utils | |
parent | e62c5d719de2a50f944246dee8f0990ccd84beec (diff) | |
download | nextcloud-server-8be4704e1125b6eb6fe17a58c8b54c651fa40c0c.tar.gz nextcloud-server-8be4704e1125b6eb6fe17a58c8b54c651fa40c0c.zip |
enh(files): Add modal to set filename before creating new files in the fileslist
* Reactive `openfile` query
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/files/src/utils')
-rw-r--r-- | apps/files/src/utils/newNodeDialog.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/apps/files/src/utils/newNodeDialog.ts b/apps/files/src/utils/newNodeDialog.ts new file mode 100644 index 00000000000..f53694fc68c --- /dev/null +++ b/apps/files/src/utils/newNodeDialog.ts @@ -0,0 +1,57 @@ +/** + * @copyright Copyright (c) 2024 Ferdinand Thiessen <opensource@fthiessen.de> + * + * @author Ferdinand Thiessen <opensource@fthiessen.de> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import type { Node } from '@nextcloud/files' +import { spawnDialog } from '@nextcloud/dialogs' +import NewNodeDialog from '../components/NewNodeDialog.vue' + +interface ILabels { + /** + * Dialog heading, defaults to "New folder name" + */ + name?: string + /** + * Label for input box, defaults to "New folder" + */ + label?: string +} + +/** + * Ask user for file or folder name + * @param defaultName Default name to use + * @param folderContent Nodes with in the current folder to check for unique name + * @param labels Labels to set on the dialog + * @return string if successfull otherwise null if aborted + */ +export function newNodeName(defaultName: string, folderContent: Node[], labels: ILabels = {}) { + const contentNames = folderContent.map((node: Node) => node.basename) + + return new Promise<string|null>((resolve) => { + spawnDialog(NewNodeDialog, { + ...labels, + defaultName, + otherNames: contentNames, + }, (folderName) => { + resolve(folderName as string|null) + }) + }) +} |