Skip to content

Commit c3cdb4f

Browse files
committed
IBX-6845: Matrix field columns table header not present until saved
1 parent 8319006 commit c3cdb4f

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

src/bundle/Resources/public/js/scripts/admin.contenttype.matrix.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@
2323
const settingsNode = event.target.closest(SELECTOR_SETTINGS_COLUMNS);
2424
const template = settingsNode.querySelector(SELECTOR_TEMPLATE).innerHTML;
2525
const node = settingsNode.querySelector(SELECTOR_COLUMNS_CONTAINER);
26-
const emptyPlaceholder = node.querySelector('.ibexa-table__empty-table-cell');
26+
const table = settingsNode.querySelector('.ibexa-table');
27+
const tableHead = table.querySelector('.ibexa-table thead');
28+
const emptyPlaceholder = table.querySelector('.ibexa-table__empty-table-cell');
2729

2830
if (emptyPlaceholder) {
2931
emptyPlaceholder.closest('.ibexa-table__row').remove();
32+
33+
tableHead.hidden = false;
3034
}
3135

3236
node.insertAdjacentHTML('beforeend', template.replace(NUMBER_PLACEHOLDER, getNextIndex(node)));
@@ -37,12 +41,28 @@
3741
};
3842
const removeItems = (event) => {
3943
const settingsNode = event.target.closest(SELECTOR_SETTINGS_COLUMNS);
44+
const checkedRows = findCheckedColumns(settingsNode);
45+
const allRows = settingsNode.querySelectorAll(':not(.ibexa-table__template--empty-row) .ibexa-table__row');
46+
const tableHead = settingsNode.querySelector('.ibexa-table thead');
47+
const tableBody = settingsNode.querySelector('.ibexa-table__body');
48+
const emptyPlaceholder = settingsNode.querySelector('.ibexa-table__template--empty-row')?.content.cloneNode(true);
49+
const removedAllRows = checkedRows.length === allRows.length;
4050

41-
findCheckedColumns(settingsNode).forEach((checkbox) => {
42-
checkbox.checked = false;
43-
checkbox.dispatchEvent(new Event('change'));
44-
checkbox.closest(SELECTOR_COLUMN).remove();
45-
});
51+
if (removedAllRows) {
52+
tableBody.appendChild(emptyPlaceholder);
53+
}
54+
55+
setTimeout(() => {
56+
if (removedAllRows) {
57+
tableHead.hidden = true;
58+
}
59+
60+
checkedRows.forEach((checkbox) => {
61+
checkbox.checked = false;
62+
checkbox.dispatchEvent(new Event('change'));
63+
checkbox.closest(SELECTOR_COLUMN).remove();
64+
});
65+
}, 1);
4666

4767
initColumns(settingsNode);
4868
};

0 commit comments

Comments
 (0)