summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/groups/new_group_child.js
diff options
context:
space:
mode:
authorMike Greiling <mike@pixelcog.com>2017-10-24 07:52:21 +0000
committerMike Greiling <mike@pixelcog.com>2017-10-24 07:52:21 +0000
commitf7bdfe5098c9a5a3a426344ba1d7dd668212cf7e (patch)
tree5a1cb2a90b0a2b5114f6f23712b68724b3e8a7e0 /app/assets/javascripts/groups/new_group_child.js
parent9cd528aa7ac5066570cb50b909951a6c6b723935 (diff)
parente16add2267648d3d3ef1d98f9b53f67a29428791 (diff)
downloadgitlab-ce-es-module-autosave.tar.gz
Merge branch 'master' into 'es-module-autosave'es-module-autosave
# Conflicts: # app/assets/javascripts/issuable_form.js # app/assets/javascripts/notes.js
Diffstat (limited to 'app/assets/javascripts/groups/new_group_child.js')
-rw-r--r--app/assets/javascripts/groups/new_group_child.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/app/assets/javascripts/groups/new_group_child.js b/app/assets/javascripts/groups/new_group_child.js
new file mode 100644
index 00000000000..8e273579aae
--- /dev/null
+++ b/app/assets/javascripts/groups/new_group_child.js
@@ -0,0 +1,62 @@
+import DropLab from '../droplab/drop_lab';
+import ISetter from '../droplab/plugins/input_setter';
+
+const InputSetter = Object.assign({}, ISetter);
+
+const NEW_PROJECT = 'new-project';
+const NEW_SUBGROUP = 'new-subgroup';
+
+export default class NewGroupChild {
+ constructor(buttonWrapper) {
+ this.buttonWrapper = buttonWrapper;
+ this.newGroupChildButton = this.buttonWrapper.querySelector('.js-new-group-child');
+ this.dropdownToggle = this.buttonWrapper.querySelector('.js-dropdown-toggle');
+ this.dropdownList = this.buttonWrapper.querySelector('.dropdown-menu');
+
+ this.newGroupPath = this.buttonWrapper.dataset.projectPath;
+ this.subgroupPath = this.buttonWrapper.dataset.subgroupPath;
+
+ this.init();
+ }
+
+ init() {
+ this.initDroplab();
+ this.bindEvents();
+ }
+
+ initDroplab() {
+ this.droplab = new DropLab();
+ this.droplab.init(
+ this.dropdownToggle,
+ this.dropdownList,
+ [InputSetter],
+ this.getDroplabConfig(),
+ );
+ }
+
+ getDroplabConfig() {
+ return {
+ InputSetter: [{
+ input: this.newGroupChildButton,
+ valueAttribute: 'data-value',
+ inputAttribute: 'data-action',
+ }, {
+ input: this.newGroupChildButton,
+ valueAttribute: 'data-text',
+ }],
+ };
+ }
+
+ bindEvents() {
+ this.newGroupChildButton
+ .addEventListener('click', this.onClickNewGroupChildButton.bind(this));
+ }
+
+ onClickNewGroupChildButton(e) {
+ if (e.target.dataset.action === NEW_PROJECT) {
+ gl.utils.visitUrl(this.newGroupPath);
+ } else if (e.target.dataset.action === NEW_SUBGROUP) {
+ gl.utils.visitUrl(this.subgroupPath);
+ }
+ }
+}