diff --git a/app/assets/javascripts/projects/new_v2/components/app.vue b/app/assets/javascripts/projects/new_v2/components/app.vue
index 8176c11c4e9b4d425de112260d1e290e78b87155..f851a37f1dcfb709705570fc02fd69899e2f614f 100644
--- a/app/assets/javascripts/projects/new_v2/components/app.vue
+++ b/app/assets/javascripts/projects/new_v2/components/app.vue
@@ -11,6 +11,7 @@ import { OPTIONS } from '../constants';
import NewProjectDestinationSelect from './project_destination_select.vue';
import Breadcrumb from './form_breadcrumb.vue';
import CommandLine from './command_line.vue';
+import ImportByUrlForm from './import_by_url_form.vue';
export default {
OPTIONS,
@@ -26,79 +27,49 @@ export default {
NewProjectDestinationSelect,
Breadcrumb,
CommandLine,
+ ImportByUrlForm,
},
directives: {
SafeHtml,
},
- inject: ['userNamespaceId', 'canCreateProject'],
- props: {
+ inject: {
rootPath: {
- type: String,
- required: false,
default: '/',
},
projectsUrl: {
- type: String,
- required: false,
default: null,
},
- parentGroupUrl: {
- type: String,
- required: false,
+ userNamespaceId: {
default: null,
},
- parentGroupName: {
- type: String,
- required: false,
- default: null,
- },
- hasErrors: {
- type: Boolean,
- required: false,
+ isCiCdAvailable: {
default: false,
},
- isCiCdAvailable: {
- type: Boolean,
- required: false,
+ canCreateProject: {
default: false,
},
canImportProjects: {
- type: Boolean,
- required: false,
default: false,
},
importSourcesEnabled: {
- type: Boolean,
- required: false,
default: false,
},
canSelectNamespace: {
- type: Boolean,
- required: false,
default: false,
},
namespaceFullPath: {
- type: String,
- required: false,
default: null,
},
namespaceId: {
- type: String,
- required: false,
default: null,
},
trackLabel: {
- type: String,
- required: false,
default: null,
},
userProjectLimit: {
- type: Number,
- required: true,
+ default: 0,
},
newProjectGuidelines: {
- type: String,
- required: false,
default: null,
},
},
@@ -280,8 +251,12 @@ export default {
v-if="currentStep === 2"
:key="selectedProjectOption.key"
:option="selectedProjectOption"
+ :namespace-id="selectedNamespace"
data-testid="new-project-step2"
@back="onBack"
+ @next="onNext"
/>
+
+
diff --git a/app/assets/javascripts/projects/new_v2/components/import_by_url_form.vue b/app/assets/javascripts/projects/new_v2/components/import_by_url_form.vue
new file mode 100644
index 0000000000000000000000000000000000000000..b0cd6b9e9018b7c297439dd92e92cbd0cbcad23d
--- /dev/null
+++ b/app/assets/javascripts/projects/new_v2/components/import_by_url_form.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ {{ __('Next step') }}
+
+
+
+
+ {{ __('Go back') }}
+
+
+
+
diff --git a/app/assets/javascripts/projects/new_v2/components/import_project_form.vue b/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
index 340e91a10718b1615bb8c8908b447a8efd1e1b8c..3824ab085f47c80d92d09dc9fcaef0731a9e81c7 100644
--- a/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
+++ b/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
@@ -1,11 +1,71 @@
-
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+ {{ __('Next step') }}
+
+
{{ __('Next step') }}
diff --git a/app/assets/javascripts/projects/new_v2/index.js b/app/assets/javascripts/projects/new_v2/index.js
index 204451672e9524ac300b053caef0ff7c378063d3..c35ba8d2e3507d51417e3e77d75dc6f3e943d405 100644
--- a/app/assets/javascripts/projects/new_v2/index.js
+++ b/app/assets/javascripts/projects/new_v2/index.js
@@ -1,7 +1,7 @@
import Vue from 'vue';
import VueApollo from 'vue-apollo';
-import createDefaultClient from '~/lib/graphql';
import { parseBoolean } from '~/lib/utils/common_utils';
+import createDefaultClient from '~/lib/graphql';
import NewProjectFormApp from './components/app.vue';
export function initNewProjectForm() {
@@ -12,63 +12,90 @@ export function initNewProjectForm() {
}
const {
+ namespaceFullPath,
+ namespaceId,
+ userNamespaceId,
+ newProjectGuidelines,
pushToCreateProjectCommand,
- projectHelpPath,
- hasErrors,
- isCiCdAvailable,
- parentGroupUrl,
- parentGroupName,
rootPath,
projectsUrl,
+ parentGroupUrl,
+ parentGroupName,
+ projectHelpPath,
+ isCiCdAvailable,
canImportProjects,
importSourcesEnabled,
- namespaceFullPath,
- namespaceId,
- userNamespaceId,
trackLabel,
canSelectNamespace,
canCreateProject,
userProjectLimit,
- newProjectGuidelines,
+ importHistoryPath,
+ importGitlabEnabled,
+ importGitlabImportPath,
+ importGithubEnabled,
+ importGithubImportPath,
+ importBitbucketEnabled,
+ importBitbucketImportPath,
+ importBitbucketImportConfigured,
+ importBitbucketDisabledMessage,
+ importBitbucketServerEnabled,
+ importBitbucketServerImportPath,
+ importFogbugzEnabled,
+ importFogbugzImportPath,
+ importGiteaEnabled,
+ importGiteaImportPath,
+ importGitEnabled,
+ importManifestEnabled,
+ importManifestImportPath,
} = el.dataset;
- const props = {
- hasErrors: parseBoolean(hasErrors),
- isCiCdAvailable: parseBoolean(isCiCdAvailable),
- parentGroupUrl,
- parentGroupName,
- rootPath,
- projectsUrl,
- canImportProjects: parseBoolean(canImportProjects),
- importSourcesEnabled: parseBoolean(importSourcesEnabled),
+ const provide = {
namespaceFullPath,
namespaceId,
- trackLabel,
- canSelectNamespace: parseBoolean(canSelectNamespace),
- userProjectLimit: parseInt(userProjectLimit, 10),
+ userNamespaceId,
newProjectGuidelines,
- };
-
- const provide = {
- canCreateProject: parseBoolean(canCreateProject),
- projectHelpPath,
pushToCreateProjectCommand,
- namespaceId,
- userNamespaceId,
rootPath,
+ projectsUrl,
parentGroupUrl,
parentGroupName,
- projectsUrl,
+ projectHelpPath,
+ trackLabel,
+ isCiCdAvailable: parseBoolean(isCiCdAvailable),
+ importSourcesEnabled: parseBoolean(importSourcesEnabled),
+ canImportProjects: parseBoolean(canImportProjects),
+ canSelectNamespace: parseBoolean(canSelectNamespace),
+ canCreateProject: parseBoolean(canCreateProject),
+ userProjectLimit,
+ importHistoryPath,
+ importGitlabEnabled: parseBoolean(importGitlabEnabled),
+ importGitlabImportPath,
+ importGithubEnabled: parseBoolean(importGithubEnabled),
+ importGithubImportPath,
+ importBitbucketEnabled: parseBoolean(importBitbucketEnabled),
+ importBitbucketImportPath,
+ importBitbucketImportConfigured: parseBoolean(importBitbucketImportConfigured),
+ importBitbucketDisabledMessage,
+ importBitbucketServerEnabled: parseBoolean(importBitbucketServerEnabled),
+ importBitbucketServerImportPath,
+ importFogbugzEnabled: parseBoolean(importFogbugzEnabled),
+ importFogbugzImportPath,
+ importGiteaEnabled: parseBoolean(importGiteaEnabled),
+ importGiteaImportPath,
+ importGitEnabled: parseBoolean(importGitEnabled),
+ importManifestEnabled: parseBoolean(importManifestEnabled),
+ importManifestImportPath,
};
return new Vue({
el,
+ name: 'NewProjectFormRoot',
apolloProvider: new VueApollo({
defaultClient: createDefaultClient(),
}),
provide,
render(h) {
- return h(NewProjectFormApp, { props });
+ return h(NewProjectFormApp);
},
});
}
diff --git a/app/assets/javascripts/vue_shared/components/multiple_choice_selector_item.vue b/app/assets/javascripts/vue_shared/components/multiple_choice_selector_item.vue
index 9ae9263f1059b18a93a3531eb865dfa346098653..651b7b6f355d31f21fc47f838e802d0e68f4a445 100644
--- a/app/assets/javascripts/vue_shared/components/multiple_choice_selector_item.vue
+++ b/app/assets/javascripts/vue_shared/components/multiple_choice_selector_item.vue
@@ -1,8 +1,12 @@