111 lines
3.0 KiB
JavaScript
Executable File
111 lines
3.0 KiB
JavaScript
Executable File
(function ($) {
|
|
"use strict";
|
|
|
|
wp.customize.controlConstructor["bloglo-spacing"] =
|
|
wp.customize.Control.extend({
|
|
ready: function () {
|
|
"use strict";
|
|
|
|
var control = this;
|
|
|
|
// Linked button.
|
|
control.container.on("click", ".bloglo-spacing-linked", function () {
|
|
// Set up variables.
|
|
var $this = $(this);
|
|
|
|
// Remove linked class.
|
|
$this.closest("ul").find(".spacing-input").removeClass("linked");
|
|
|
|
// Remove class.
|
|
$this.parent(".spacing-link-values").removeClass("unlinked");
|
|
});
|
|
|
|
// Unlinked button.
|
|
control.container.on("click", ".bloglo-spacing-unlinked", function () {
|
|
// Set up variables.
|
|
var $this = $(this);
|
|
|
|
// Remove linked class.
|
|
$this.closest("ul").find(".spacing-input").addClass("linked");
|
|
|
|
// Remove class.
|
|
$this.parent(".spacing-link-values").addClass("unlinked");
|
|
});
|
|
|
|
// Values linked inputs.
|
|
control.container.on("input", ".linked input", function () {
|
|
var $val = $(this).val();
|
|
$(this)
|
|
.closest(".spacing-input")
|
|
.siblings(".linked")
|
|
.find("input")
|
|
.val($val)
|
|
.change();
|
|
});
|
|
|
|
// Change unit.
|
|
control.container
|
|
.find('.bloglo-control-unit input[type="radio"]')
|
|
.on("change", function () {
|
|
control.save_value();
|
|
});
|
|
|
|
// Store new inputs.
|
|
control.container.on(
|
|
"change input",
|
|
".spacing-input input",
|
|
function () {
|
|
control.save_value();
|
|
}
|
|
);
|
|
|
|
// Reset default values.
|
|
control.container.find(".reset-defaults").on("click", function () {
|
|
control.container.find('input[type="number"]').each(function () {
|
|
$(this).val($(this).data("default"));
|
|
});
|
|
|
|
control.save_value();
|
|
});
|
|
},
|
|
|
|
save_value: function () {
|
|
var new_val = {},
|
|
devices = this.params.responsive,
|
|
choices = this.params.choices,
|
|
choice,
|
|
device,
|
|
units = this.container.find(".bloglo-control-unit");
|
|
|
|
if (devices === undefined || devices.length == 0) {
|
|
for (choice in choices) {
|
|
new_val[choice] = this.container
|
|
.find('[data-spacing-choice="' + choice + '"]')
|
|
.val();
|
|
}
|
|
} else {
|
|
for (device in devices) {
|
|
new_val[device] = {};
|
|
for (choice in choices) {
|
|
new_val[device][choice] = this.container
|
|
.find(
|
|
".control-responsive." +
|
|
device +
|
|
' [data-spacing-choice="' +
|
|
choice +
|
|
'"]'
|
|
)
|
|
.val();
|
|
}
|
|
}
|
|
}
|
|
|
|
if (units.length) {
|
|
new_val.unit = units.find('input[type="radio"]:checked').val();
|
|
}
|
|
|
|
this.setting.set(new_val);
|
|
},
|
|
});
|
|
})(jQuery);
|