diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-14 18:09:40 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-14 18:09:40 +0300 |
commit | fde3e0435c496af7dc37527f465573abd5657f5a (patch) | |
tree | 378395c009c4e9b40c3c509189531511494539e5 /app/assets/javascripts/groups | |
parent | 95671fac6e66cd23da4669706a619c1139eb1f14 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/groups')
-rw-r--r-- | app/assets/javascripts/groups/components/visibility_level_dropdown.vue | 48 | ||||
-rw-r--r-- | app/assets/javascripts/groups/visibility_level.js | 24 |
2 files changed, 72 insertions, 0 deletions
diff --git a/app/assets/javascripts/groups/components/visibility_level_dropdown.vue b/app/assets/javascripts/groups/components/visibility_level_dropdown.vue new file mode 100644 index 00000000000..ff0f8c3ff46 --- /dev/null +++ b/app/assets/javascripts/groups/components/visibility_level_dropdown.vue @@ -0,0 +1,48 @@ +<script> +import { GlDropdown, GlDropdownItem } from '@gitlab/ui'; + +export default { + components: { + GlDropdown, + GlDropdownItem, + }, + props: { + visibilityLevelOptions: { + type: Array, + required: true, + }, + defaultLevel: { + type: Number, + required: true, + }, + }, + data() { + return { + selectedOption: this.getDefaultOption(), + }; + }, + methods: { + getDefaultOption() { + return this.visibilityLevelOptions.find(option => option.level === this.defaultLevel); + }, + onClick(option) { + this.selectedOption = option; + }, + }, +}; +</script> +<template> + <div> + <input type="hidden" name="group[visibility_level]" :value="selectedOption.level" /> + <gl-dropdown :text="selectedOption.label" class="gl-w-full" menu-class="gl-w-full! gl-mb-0"> + <gl-dropdown-item + v-for="option in visibilityLevelOptions" + :key="option.level" + :secondary-text="option.description" + @click="onClick(option)" + > + <div class="gl-font-weight-bold gl-mb-1">{{ option.label }}</div> + </gl-dropdown-item> + </gl-dropdown> + </div> +</template> diff --git a/app/assets/javascripts/groups/visibility_level.js b/app/assets/javascripts/groups/visibility_level.js new file mode 100644 index 00000000000..d570b5e65ac --- /dev/null +++ b/app/assets/javascripts/groups/visibility_level.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import VisibilityLevelDropdown from './components/visibility_level_dropdown.vue'; + +export default () => { + const el = document.querySelector('.js-visibility-level-dropdown'); + + if (!el) { + return null; + } + + const { visibilityLevelOptions, defaultLevel } = el.dataset; + + return new Vue({ + el, + render(createElement) { + return createElement(VisibilityLevelDropdown, { + props: { + visibilityLevelOptions: JSON.parse(visibilityLevelOptions), + defaultLevel: Number(defaultLevel), + }, + }); + }, + }); +}; |