Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.{yml,yaml,json}]
[*.{yml,yaml,js,json}]
indent_size = 2

[*.md]
Expand Down
158 changes: 79 additions & 79 deletions hypha/addressfield/static/address_form.js
Original file line number Diff line number Diff line change
@@ -1,91 +1,91 @@
(function ($) {
// add the require attribute to the field configs
function addRequiredToKey(fields, findKey) {
$.each(fields, (index, value) => {
var fieldName = Object.keys(value)[0];
var data = value[fieldName];
if (fieldName === findKey) {
data.required = true;
} else if (Array.isArray(data)) {
// Handle nested fields
addRequiredToKey(data, findKey);
}
});
}
// add the require attribute to the field configs
function addRequiredToKey(fields, findKey) {
$.each(fields, (index, value) => {
var fieldName = Object.keys(value)[0];
var data = value[fieldName];
if (fieldName === findKey) {
data.required = true;
} else if (Array.isArray(data)) {
// Handle nested fields
addRequiredToKey(data, findKey);
}
});
}

// hook into the transform to update with the required attribute
var oldTransform = $.fn.addressfield.transform;
$.fn.addressfield.transform = function (data) {
var mappedData = oldTransform.call(this, data);
$.each(mappedData, (key, value) => {
$.each(value.required, (index, field) => {
addRequiredToKey(mappedData[key].fields, field);
});
});
return mappedData;
};
// hook into the transform to update with the required attribute
var oldTransform = $.fn.addressfield.transform;
$.fn.addressfield.transform = function (data) {
var mappedData = oldTransform.call(this, data);
$.each(mappedData, (key, value) => {
$.each(value.required, (index, field) => {
addRequiredToKey(mappedData[key].fields, field);
});
});
return mappedData;
};

function labelFor(field) {
return $('label[for="' + $(field).attr("id") + '"]');
}
function labelFor(field) {
return $('label[for="' + $(field).attr("id") + '"]');
}

function makeFieldNotRequired(field) {
var $field = $(field);
$field.removeAttr("required");
var $label = labelFor($field);
$label.children("span").remove();
}
function makeFieldNotRequired(field) {
var $field = $(field);
$field.removeAttr("required");
var $label = labelFor($field);
$label.children("span").remove();
}

function makeFieldRequired(field) {
var $field = $(field);
$field.prop("required", true);
var $label = labelFor($field);
$label.append('<span class="form__required">*</span>');
}
function makeFieldRequired(field) {
var $field = $(field);
$field.prop("required", true);
var $label = labelFor($field);
$label.append('<span class="form__required">*</span>');
}

// Hook into the validate process to update the required display
var oldValidate = $.fn.addressfield.validate;
$.fn.addressfield.validate = function (field, config) {
if (config.required) {
makeFieldRequired(this);
} else {
makeFieldNotRequired(this);
}
oldValidate.call(this, field, config);
};
// Hook into the validate process to update the required display
var oldValidate = $.fn.addressfield.validate;
$.fn.addressfield.validate = function (field, config) {
if (config.required) {
makeFieldRequired(this);
} else {
makeFieldNotRequired(this);
}
oldValidate.call(this, field, config);
};

var selectWrap = '<div class="form__select"></div>';
var selectWrap = '<div class="form__select"></div>';

// Hook into the select builder to update the display
var oldConvertToSelect = $.fn.addressfield.convertToSelect;
$.fn.addressfield.convertToSelect = function () {
var $select = oldConvertToSelect.call(this);
$select.wrap(selectWrap);
return $select;
};
// Hook into the select builder to update the display
var oldConvertToSelect = $.fn.addressfield.convertToSelect;
$.fn.addressfield.convertToSelect = function () {
var $select = oldConvertToSelect.call(this);
$select.wrap(selectWrap);
return $select;
};

// Hook into the text builder to update the display
var oldConvertToText = $.fn.addressfield.convertToText;
$.fn.addressfield.convertToText = function () {
var $text = oldConvertToText.call(this);
$text.unwrap();
return $text;
};
// Hook into the text builder to update the display
var oldConvertToText = $.fn.addressfield.convertToText;
$.fn.addressfield.convertToText = function () {
var $text = oldConvertToText.call(this);
$text.unwrap();
return $text;
};

$(document).ready(function formReady() {
$(".form div.address").each(function () {
$(".form div#" + this.id).addressfield({
json: "/static/addressfield.min.json",
fields: {
country: ".country",
thoroughfare: ".thoroughfare",
premise: ".premise",
locality: ".locality",
localityname: ".localityname",
administrativearea: ".administrativearea",
postalcode: ".postalcode",
},
});
});
$(document).ready(function formReady() {
$(".form div.address").each(function () {
$(".form div#" + this.id).addressfield({
json: "/static/addressfield.min.json",
fields: {
country: ".country",
thoroughfare: ".thoroughfare",
premise: ".premise",
locality: ".locality",
localityname: ".localityname",
administrativearea: ".administrativearea",
postalcode: ".postalcode",
},
});
});
});
})(jQuery);
67 changes: 31 additions & 36 deletions hypha/apply/dashboard/static/js/django_select2-checkboxes.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,34 @@
(function ($) {
$.fn.select2.amd.require(
[
"select2/multi-checkboxes/selection",
"select2/multi-checkboxes/results",
],
function (SelectionAdapter, ResultsAdapter) {
$(function () {
$(".django-select2-checkboxes").each(function (i, element) {
var $element = $(element);
$element.select2({
placeholder: $element.data("placeholder"),
closeOnSelect: false,
templateSelection: function (data) {
let filterType = $element.data("placeholder");
$.fn.select2.amd.require(
["select2/multi-checkboxes/selection", "select2/multi-checkboxes/results"],
function (SelectionAdapter, ResultsAdapter) {
$(function () {
$(".django-select2-checkboxes").each(function (i, element) {
var $element = $(element);
$element.select2({
placeholder: $element.data("placeholder"),
closeOnSelect: false,
templateSelection: function (data) {
let filterType = $element.data("placeholder");

if (!data.selected.length) {
return filterType;
} else if (
data.selected.length == data.all.length
) {
return "All " + filterType + " selected";
}
return (
data.selected.length +
" of " +
data.all.length +
" " +
filterType
);
},
selectionAdapter: SelectionAdapter,
returnesultsAdapter: ResultsAdapter,
});
});
});
}
);
if (!data.selected.length) {
return filterType;
} else if (data.selected.length == data.all.length) {
return "All " + filterType + " selected";
}
return (
data.selected.length +
" of " +
data.all.length +
" " +
filterType
);
},
selectionAdapter: SelectionAdapter,
returnesultsAdapter: ResultsAdapter,
});
});
});
}
);
})(this.jQuery);
Loading
Loading