diff options
Diffstat (limited to 'app/assets/javascripts/projects/new/index.js')
-rw-r--r-- | app/assets/javascripts/projects/new/index.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/app/assets/javascripts/projects/new/index.js b/app/assets/javascripts/projects/new/index.js new file mode 100644 index 00000000000..572d3276e4f --- /dev/null +++ b/app/assets/javascripts/projects/new/index.js @@ -0,0 +1,66 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { parseBoolean } from '~/lib/utils/common_utils'; +import NewProjectCreationApp from './components/app.vue'; +import NewProjectUrlSelect from './components/new_project_url_select.vue'; + +export function initNewProjectCreation() { + const el = document.querySelector('.js-new-project-creation'); + + const { + pushToCreateProjectCommand, + workingWithProjectsHelpPath, + newProjectGuidelines, + hasErrors, + isCiCdAvailable, + } = el.dataset; + + const props = { + hasErrors: parseBoolean(hasErrors), + isCiCdAvailable: parseBoolean(isCiCdAvailable), + newProjectGuidelines, + }; + + const provide = { + workingWithProjectsHelpPath, + pushToCreateProjectCommand, + }; + + return new Vue({ + el, + provide, + render(h) { + return h(NewProjectCreationApp, { props }); + }, + }); +} + +export function initNewProjectUrlSelect() { + const elements = document.querySelectorAll('.js-vue-new-project-url-select'); + + if (!elements.length) { + return; + } + + Vue.use(VueApollo); + + elements.forEach( + (el) => + new Vue({ + el, + apolloProvider: new VueApollo({ + defaultClient: createDefaultClient({}, { assumeImmutableResults: true }), + }), + provide: { + namespaceFullPath: el.dataset.namespaceFullPath, + namespaceId: el.dataset.namespaceId, + rootUrl: el.dataset.rootUrl, + trackLabel: el.dataset.trackLabel, + userNamespaceFullPath: el.dataset.userNamespaceFullPath, + userNamespaceId: el.dataset.userNamespaceId, + }, + render: (createElement) => createElement(NewProjectUrlSelect), + }), + ); +} |