diff options
Diffstat (limited to 'app/assets/javascripts/pages/projects/shared/permissions/components')
2 files changed, 22 insertions, 14 deletions
diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/project_feature_setting.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/project_feature_setting.vue index 9fb8be3fdb9..b2d32c2c943 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/project_feature_setting.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/project_feature_setting.vue @@ -44,6 +44,15 @@ export default { }, }, computed: { + internalValue: { + get() { + return this.value; + }, + set(value) { + this.$emit('change', value); + }, + }, + featureEnabled() { return this.value !== 0; }, @@ -68,10 +77,6 @@ export default { this.$emit('change', firstOptionValue); } }, - - selectOption(e) { - this.$emit('change', Number(e.target.value)); - }, }, }; </script> @@ -93,15 +98,14 @@ export default { /> <div class="select-wrapper gl-flex-grow-1"> <select + v-model="internalValue" :disabled="displaySelectInput" class="form-control project-repo-select select-control" - @change="selectOption" > <option v-for="[optionValue, optionName] in displayOptions" :key="optionValue" :value="optionValue" - :selected="optionValue === value" > {{ optionName }} </option> diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 184bda4410f..03bab0fa773 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -9,7 +9,6 @@ import { featureAccessLevelMembers, featureAccessLevelEveryone, featureAccessLevel, - featureAccessLevelNone, CVE_ID_REQUEST_BUTTON_I18N, featureAccessLevelDescriptions, } from '../constants'; @@ -225,8 +224,6 @@ export default { }, operationsFeatureAccessLevelOptions() { - if (!this.operationsEnabled) return [featureAccessLevelNone]; - return this.featureAccessLevelOptions.filter( ([value]) => value <= this.operationsAccessLevel, ); @@ -251,10 +248,6 @@ export default { return options; }, - metricsOptionsDropdownDisabled() { - return this.operationsFeatureAccessLevelOptions.length < 2 || !this.operationsEnabled; - }, - operationsEnabled() { return this.operationsAccessLevel > featureAccessLevel.NOT_ENABLED; }, @@ -392,6 +385,15 @@ export default { else if (oldValue === featureAccessLevel.NOT_ENABLED) toggleHiddenClassBySelector('.merge-requests-feature', false); }, + + operationsAccessLevel(value, oldValue) { + if (value < oldValue) { + // sub-features cannot have more permissive access level + this.metricsDashboardAccessLevel = Math.min(this.metricsDashboardAccessLevel, value); + } else if (oldValue === 0) { + this.metricsDashboardAccessLevel = value; + } + }, }, methods: { @@ -590,7 +592,9 @@ export default { :help-path="packagesHelpPath" :label="$options.i18n.packagesLabel" :help-text=" - s__('ProjectSettings|Every project can have its own space to store its packages.') + s__( + 'ProjectSettings|Every project can have its own space to store its packages. Note: The Package Registry is always visible when a project is public.', + ) " > <gl-toggle |