mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-15 17:56:07 +01:00
Properly handle Collections that specify a custom key, rather than falling back to indexed list (#632)
This commit is contained in:
@@ -68,13 +68,14 @@ export default class CollectionsField {
|
|||||||
items.each((index, item) => {
|
items.each((index, item) => {
|
||||||
item = $(item);
|
item = $(item);
|
||||||
let observed = item.find('[data-key-observe]');
|
let observed = item.find('[data-key-observe]');
|
||||||
|
let observedValue = observed.val();
|
||||||
let hasCustomKey = observed.length;
|
let hasCustomKey = observed.length;
|
||||||
let currentKey = item.data('collection-key-backup');
|
let currentKey = item.data('collection-key-backup');
|
||||||
|
|
||||||
item.attr('data-collection-key', hasCustomKey ? observed.val() : index);
|
item.attr('data-collection-key', hasCustomKey ? observedValue : index);
|
||||||
|
|
||||||
['name', 'data-grav-field-name', 'for', 'id'].forEach((prop) => {
|
['name', 'data-grav-field-name', 'for', 'id'].forEach((prop) => {
|
||||||
item.find('[' + prop + ']').each(function() {
|
item.find('[' + prop + '], [_' + prop + ']').each(function() {
|
||||||
let element = $(this);
|
let element = $(this);
|
||||||
let indexes = [];
|
let indexes = [];
|
||||||
let regexps = [
|
let regexps = [
|
||||||
@@ -82,6 +83,17 @@ export default class CollectionsField {
|
|||||||
new RegExp('\\.(\\d+|\\*|' + currentKey + ')\\.', 'g')
|
new RegExp('\\.(\\d+|\\*|' + currentKey + ')\\.', 'g')
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if (!observedValue) {
|
||||||
|
element.attr(`_${prop}`, element.attr(prop));
|
||||||
|
element.attr(prop, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.attr(`_${prop}`)) {
|
||||||
|
element.attr(prop, element.attr(`_${prop}`));
|
||||||
|
element.attr(`_${prop}`, null);
|
||||||
|
}
|
||||||
|
|
||||||
element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key')));
|
element.parents('[data-collection-key]').map((idx, parent) => indexes.push($(parent).attr('data-collection-key')));
|
||||||
indexes.reverse();
|
indexes.reverse();
|
||||||
|
|
||||||
|
|||||||
28
themes/grav/js/admin.min.js
vendored
28
themes/grav/js/admin.min.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user