diff options
Diffstat (limited to 'app/assets/javascripts/issuable/issuable_label_selector.js')
-rw-r--r-- | app/assets/javascripts/issuable/issuable_label_selector.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/app/assets/javascripts/issuable/issuable_label_selector.js b/app/assets/javascripts/issuable/issuable_label_selector.js new file mode 100644 index 00000000000..ad8bbf04d6f --- /dev/null +++ b/app/assets/javascripts/issuable/issuable_label_selector.js @@ -0,0 +1,56 @@ +import Vue from 'vue'; +import VueApollo from 'vue-apollo'; +import createDefaultClient from '~/lib/graphql'; +import { + DropdownVariant, + LabelType, +} from '~/sidebar/components/labels/labels_select_widget/constants'; +import { WorkspaceType } from '~/issues/constants'; +import IssuableLabelSelector from '~/vue_shared/issuable/create/components/issuable_label_selector.vue'; + +Vue.use(VueApollo); + +const apolloProvider = new VueApollo({ + defaultClient: createDefaultClient(), +}); + +export default () => { + const el = document.querySelector('.js-issuable-form-label-selector'); + + if (!el) { + return false; + } + + const { + fieldName, + fullPath, + initialLabels, + issuableType, + labelsFilterBasePath, + labelsManagePath, + } = el.dataset; + + return new Vue({ + el, + apolloProvider, + provide: { + allowLabelCreate: true, + allowLabelEdit: true, + allowLabelRemove: true, + allowScopedLabels: true, + attrWorkspacePath: fullPath, + fieldName, + fullPath, + initialLabels: JSON.parse(initialLabels), + issuableType, + labelType: LabelType.project, + labelsFilterBasePath, + labelsManagePath, + variant: DropdownVariant.Embedded, + workspaceType: WorkspaceType.project, + }, + render(createElement) { + return createElement(IssuableLabelSelector); + }, + }); +}; |