-
Notifications
You must be signed in to change notification settings - Fork 64
/
registerBlockInputFields.js
39 lines (31 loc) · 1.07 KB
/
registerBlockInputFields.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* eslint-env jquery */
require('jquery')
module.exports = function () {
var $selectableInputs = $('label[class*=block-label]')
$selectableInputs
.find('input[type=radio], input[type=checkbox]')
.map(function (index, input) {
var $input = $(input)
if ($input.is(':checked')) {
$input.closest('label').addClass('selected')
}
return input
})
.on('focus click', function (event) {
var $label = $(event.target).closest('label')
$label.addClass('add-focus')
$selectableInputs.not($label).removeClass('add-focus')
})
.on('change', function (event) {
var $input = $(event.target)
if ($input.attr('type') === 'radio') {
$("input[name='" + $input.prop('name') + "']").map(function (index, inputWithSameName) {
$(inputWithSameName).closest('label').removeClass('selected')
})
}
$input.closest('label').toggleClass('selected', $input.prop('checked'))
})
.on('blur', function (event) {
$(event.target).closest('label').removeClass('add-focus')
})
}