gitlab-org--gitlab-foss/app/assets/javascripts/protected_branches/protected_branch_create.js

68 lines
2.3 KiB
JavaScript
Raw Normal View History

import $ from 'jquery';
2017-07-19 12:44:15 +00:00
import ProtectedBranchAccessDropdown from './protected_branch_access_dropdown';
import CreateItemDropdown from '../create_item_dropdown';
import AccessorUtilities from '../lib/utils/accessor';
2017-07-19 12:44:15 +00:00
export default class ProtectedBranchCreate {
constructor() {
this.$form = $('.js-new-protected-branch');
this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe();
this.currentProjectUserDefaults = {};
2017-07-19 12:44:15 +00:00
this.buildDropdowns();
}
buildDropdowns() {
const $allowedToMergeDropdown = this.$form.find('.js-allowed-to-merge');
const $allowedToPushDropdown = this.$form.find('.js-allowed-to-push');
const $protectedBranchDropdown = this.$form.find('.js-protected-branch-select');
2017-07-19 12:44:15 +00:00
// 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,
});
this.createItemDropdown = new CreateItemDropdown({
$dropdown: $protectedBranchDropdown,
defaultToggleLabel: 'Protected Branch',
fieldName: 'protected_branch[name]',
2017-07-19 12:44:15 +00:00
onSelect: this.onSelectCallback,
getData: ProtectedBranchCreate.getProtectedBranches,
2017-07-19 12:44:15 +00:00
});
}
// This will run after clicked callback
onSelect() {
// Enable submit button
const $branchInput = this.$form.find('input[name="protected_branch[name]"]');
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]"]',
);
2017-09-26 21:14:25 +00:00
const completedForm = !(
2017-10-04 21:56:20 +00:00
$branchInput.val() &&
$allowedToMergeInput.length &&
$allowedToPushInput.length
);
2018-02-20 22:20:48 +00:00
this.$form.find('input[type="submit"]').prop('disabled', completedForm);
}
static getProtectedBranches(term, callback) {
callback(gon.open_branches);
}
2017-07-19 12:44:15 +00:00
}