From e56d510b39aee2f8919090a4e1cd33024fad7fa3 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Sun, 12 May 2019 17:51:05 +0200 Subject: [PATCH] feat: rename project (#3955) * feat: project rename * chore: use a pen icon for rename button --- .../apollo-server/connectors/projects.js | 6 + .../cli-ui/apollo-server/schema/project.js | 2 + packages/@vue/cli-ui/locales/en.json | 9 + .../components/app/ProjectQuickDropdown.vue | 163 ++++++++++-------- .../project-manager/ProjectRename.vue | 79 +++++++++ .../project-manager/ProjectSelectListItem.vue | 26 +++ .../cli-ui/src/components/view/ViewNav.vue | 25 +-- 7 files changed, 230 insertions(+), 80 deletions(-) create mode 100644 packages/@vue/cli-ui/src/components/project-manager/ProjectRename.vue diff --git a/packages/@vue/cli-ui/apollo-server/connectors/projects.js b/packages/@vue/cli-ui/apollo-server/connectors/projects.js index c4b41679d..5ed8b02c9 100644 --- a/packages/@vue/cli-ui/apollo-server/connectors/projects.js +++ b/packages/@vue/cli-ui/apollo-server/connectors/projects.js @@ -431,6 +431,11 @@ function setFavorite ({ id, favorite }, context) { return findOne(id, context) } +function rename ({ id, name }, context) { + context.db.get('projects').find({ id }).assign({ name }).write() + return findOne(id, context) +} + function getType (project, context) { if (typeof project === 'string') { project = findByPath(project, context) @@ -483,6 +488,7 @@ module.exports = { remove, resetCwd, setFavorite, + rename, initCreator, removeCreator, getType, diff --git a/packages/@vue/cli-ui/apollo-server/schema/project.js b/packages/@vue/cli-ui/apollo-server/schema/project.js index 3a4c182d6..cf6a36b12 100644 --- a/packages/@vue/cli-ui/apollo-server/schema/project.js +++ b/packages/@vue/cli-ui/apollo-server/schema/project.js @@ -20,6 +20,7 @@ extend type Mutation { projectRemove (id: ID!): Boolean! projectCwdReset: String projectSetFavorite (id: ID!, favorite: Int!): Project! + projectRename (id: ID!, name: String!): Project! presetApply (id: ID!): ProjectCreation featureSetEnabled (id: ID!, enabled: Boolean): Feature } @@ -105,6 +106,7 @@ exports.resolvers = { projectRemove: (root, { id }, context) => projects.remove(id, context), projectCwdReset: (root, args, context) => projects.resetCwd(context), projectSetFavorite: (root, args, context) => projects.setFavorite(args, context), + projectRename: (root, args, context) => projects.rename(args, context), presetApply: (root, { id }, context) => projects.applyPreset(id, context), featureSetEnabled: (root, args, context) => projects.setFeatureEnabled(args, context) } diff --git a/packages/@vue/cli-ui/locales/en.json b/packages/@vue/cli-ui/locales/en.json index 1228e1c7c..1f82556a3 100644 --- a/packages/@vue/cli-ui/locales/en.json +++ b/packages/@vue/cli-ui/locales/en.json @@ -3,6 +3,7 @@ "vue": { "common": { "close": "Close", + "cancel": "Cancel", "back": "Go back", "more-info": "More info", "show-more": "Show more", @@ -111,6 +112,14 @@ "open-in-editor": "Open in editor" } }, + "project-rename": { + "title": "Rename", + "name-field": { + "title": "Name", + "subtitle": "Enter the new name" + }, + "submit": "Rename" + }, "project-plugin-item": { "version": "version", "latest": "latest", diff --git a/packages/@vue/cli-ui/src/components/app/ProjectQuickDropdown.vue b/packages/@vue/cli-ui/src/components/app/ProjectQuickDropdown.vue index 12bb80b8d..be2a1beea 100644 --- a/packages/@vue/cli-ui/src/components/app/ProjectQuickDropdown.vue +++ b/packages/@vue/cli-ui/src/components/app/ProjectQuickDropdown.vue @@ -1,84 +1,98 @@ diff --git a/packages/@vue/cli-ui/src/components/project-manager/ProjectSelectListItem.vue b/packages/@vue/cli-ui/src/components/project-manager/ProjectSelectListItem.vue index 9f90b4865..6259dad52 100644 --- a/packages/@vue/cli-ui/src/components/project-manager/ProjectSelectListItem.vue +++ b/packages/@vue/cli-ui/src/components/project-manager/ProjectSelectListItem.vue @@ -44,6 +44,13 @@ @click.stop /> + + + +