/*global URLify*/ "use strict"; { const $ = django.jQuery; $.fn.prepopulate = function (dependencies, maxLength, allowUnicode) { /* Depends on urlify.js Populates a selected field with the values of the dependent fields, URLifies and shortens the string. dependencies - array of dependent fields ids maxLength - maximum length of the URLify'd string allowUnicode - Unicode support of the URLify'd string */ return this.each(function () { const prepopulatedField = $(this); const populate = function () { // Bail if the field's value has been changed by the user if (prepopulatedField.data("_changed")) { return; } const values = []; $.each(dependencies, function (i, field) { field = $(field); if (field.val().length > 0) { values.push(field.val()); } }); prepopulatedField.val( URLify(values.join(" "), maxLength, allowUnicode), ); }; prepopulatedField.data("_changed", false); prepopulatedField.on("change", function () { prepopulatedField.data("_changed", true); }); if (!prepopulatedField.val()) { $(dependencies.join(",")).on("keyup change focus", populate); } }); }; }