debian-mirror-gitlab/app/assets/javascripts/protected_branches/protected_branch_create.js

69 lines
2.3 KiB
JavaScript
Raw Normal View History

2018-05-09 12:01:36 +05:30
import $ from 'jquery';
2017-09-10 17:25:29 +05:30
import ProtectedBranchAccessDropdown from './protected_branch_access_dropdown';
2018-03-17 18:26:18 +05:30
import CreateItemDropdown from '../create_item_dropdown';
import AccessorUtilities from '../lib/utils/accessor';
2019-07-31 22:56:46 +05:30
import { __ } from '~/locale';
2018-03-17 18:26:18 +05:30
2017-09-10 17:25:29 +05:30
export default class ProtectedBranchCreate {
constructor() {
this.$form = $('.js-new-protected-branch');
2018-03-17 18:26:18 +05:30
this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe();
this.currentProjectUserDefaults = {};
2017-09-10 17:25:29 +05:30
this.buildDropdowns();
}
buildDropdowns() {
const $allowedToMergeDropdown = this.$form.find('.js-allowed-to-merge');
const $allowedToPushDropdown = this.$form.find('.js-allowed-to-push');
2018-03-17 18:26:18 +05:30
const $protectedBranchDropdown = this.$form.find('.js-protected-branch-select');
2017-09-10 17:25:29 +05:30
// Cache callback
this.onSelectCallback = this.onSelect.bind(this);
// Allowed to Merge dropdown
this.protectedBranchMergeAccessDropdown = new ProtectedBranchAccessDropdown({
$dropdown: $allowedToMergeDropdown,
data: gon.merge_access_levels,
onSelect: this.onSelectCallback,
});
// Allowed to Push dropdown
this.protectedBranchPushAccessDropdown = new ProtectedBranchAccessDropdown({
$dropdown: $allowedToPushDropdown,
data: gon.push_access_levels,
onSelect: this.onSelectCallback,
});
2018-03-17 18:26:18 +05:30
this.createItemDropdown = new CreateItemDropdown({
$dropdown: $protectedBranchDropdown,
2019-07-31 22:56:46 +05:30
defaultToggleLabel: __('Protected Branch'),
2018-03-17 18:26:18 +05:30
fieldName: 'protected_branch[name]',
2017-09-10 17:25:29 +05:30
onSelect: this.onSelectCallback,
2018-03-17 18:26:18 +05:30
getData: ProtectedBranchCreate.getProtectedBranches,
2017-09-10 17:25:29 +05:30
});
}
// This will run after clicked callback
onSelect() {
// Enable submit button
const $branchInput = this.$form.find('input[name="protected_branch[name]"]');
2018-12-13 13:39:08 +05:30
const $allowedToMergeInput = this.$form.find(
'input[name="protected_branch[merge_access_levels_attributes][0][access_level]"]',
);
const $allowedToPushInput = this.$form.find(
'input[name="protected_branch[push_access_levels_attributes][0][access_level]"]',
);
2018-03-17 18:26:18 +05:30
const completedForm = !(
$branchInput.val() &&
$allowedToMergeInput.length &&
$allowedToPushInput.length
);
2018-03-27 19:54:05 +05:30
this.$form.find('input[type="submit"]').prop('disabled', completedForm);
2018-03-17 18:26:18 +05:30
}
static getProtectedBranches(term, callback) {
callback(gon.open_branches);
}
2017-09-10 17:25:29 +05:30
}