2018-03-09 20:18:59 +00:00
|
|
|
import $ from 'jquery';
|
2017-08-03 20:31:53 +00:00
|
|
|
import _ from 'underscore';
|
2017-03-27 01:33:47 +00:00
|
|
|
import '../commons/bootstrap';
|
|
|
|
|
2016-07-27 03:32:10 +00:00
|
|
|
// Requires Input behavior
|
|
|
|
//
|
|
|
|
// When called on a form with input fields with the `required` attribute, the
|
|
|
|
// form's submit button will be disabled until all required fields have values.
|
|
|
|
//
|
|
|
|
// ### Example Markup
|
|
|
|
//
|
|
|
|
// <form class="js-requires-input">
|
|
|
|
// <input type="text" required="required">
|
|
|
|
// <input type="submit" value="Submit">
|
|
|
|
// </form>
|
|
|
|
//
|
2016-07-24 20:45:11 +00:00
|
|
|
|
2017-03-27 01:33:47 +00:00
|
|
|
$.fn.requiresInput = function requiresInput() {
|
|
|
|
const $form = $(this);
|
|
|
|
const $button = $('button[type=submit], input[type=submit]', $form);
|
2018-10-10 06:09:55 +00:00
|
|
|
const fieldSelector =
|
|
|
|
'input[required=required], select[required=required], textarea[required=required]';
|
2017-03-27 01:33:47 +00:00
|
|
|
|
|
|
|
function requireInput() {
|
|
|
|
// Collect the input values of *all* required fields
|
|
|
|
const values = _.map($(fieldSelector, $form), field => field.value);
|
|
|
|
|
|
|
|
// Disable the button if any required fields are empty
|
2019-09-24 12:06:20 +00:00
|
|
|
if (values.length && _.some(values, _.isEmpty)) {
|
2017-03-27 01:33:47 +00:00
|
|
|
$button.disable();
|
|
|
|
} else {
|
|
|
|
$button.enable();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set initial button state
|
|
|
|
requireInput();
|
|
|
|
$form.on('change input', fieldSelector, requireInput);
|
|
|
|
};
|
|
|
|
|
|
|
|
// Hide or Show the help block when creating a new project
|
|
|
|
// based on the option selected
|
|
|
|
function hideOrShowHelpBlock(form) {
|
|
|
|
const selected = $('.js-select-namespace option:selected');
|
2018-02-20 22:20:48 +00:00
|
|
|
if (selected.length && selected.data('optionsParent') === 'groups') {
|
2018-04-11 18:26:37 +00:00
|
|
|
form.find('.form-text.text-muted').hide();
|
2017-03-27 01:33:47 +00:00
|
|
|
} else if (selected.length) {
|
2018-04-11 18:26:37 +00:00
|
|
|
form.find('.form-text.text-muted').show();
|
2017-03-27 01:33:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$(() => {
|
2018-11-19 15:03:58 +00:00
|
|
|
$('form.js-requires-input').each((i, el) => {
|
|
|
|
const $form = $(el);
|
|
|
|
|
2017-08-03 20:31:53 +00:00
|
|
|
$form.requiresInput();
|
|
|
|
hideOrShowHelpBlock($form);
|
|
|
|
$('.select2.js-select-namespace').change(() => hideOrShowHelpBlock($form));
|
2018-11-19 15:03:58 +00:00
|
|
|
});
|
2017-03-27 01:33:47 +00:00
|
|
|
});
|