diff --git a/src/bundle/Resources/public/js/scripts/admin.table.js b/src/bundle/Resources/public/js/scripts/admin.table.js index 3ed8cedc17..171253eeba 100644 --- a/src/bundle/Resources/public/js/scripts/admin.table.js +++ b/src/bundle/Resources/public/js/scripts/admin.table.js @@ -1,5 +1,5 @@ (function(global, doc, $, ibexa) { - const tablesWithBulkCheckbox = doc.querySelectorAll('.ibexa-table.ibexa-table--has-bulk-checkbox'); + const ibexaTables = doc.querySelectorAll('.ibexa-table'); const setMainCheckboxState = (mainCheckbox, subCheckboxes, event) => { const isFromJS = event?.detail?.isFromJS ?? false; @@ -48,12 +48,18 @@ const addTableCheckboxesListeners = (table) => { const tableBody = table.querySelector('.ibexa-table__body'); const headCells = table.querySelectorAll('.ibexa-table__header-cell'); - const headCellsWithCheckboxes = table.querySelectorAll('.ibexa-table__header-cell--checkbox'); + const headCellsWithCheckbox = table.querySelectorAll('.ibexa-table__header-cell--checkbox'); const checkboxesChangeListeners = new Map(); - headCellsWithCheckboxes.forEach((headCellsWithCheckbox) => { - const mainCheckboxIndex = [...headCells].indexOf(headCellsWithCheckbox); - const mainCheckbox = headCellsWithCheckbox.querySelector('.ibexa-input--checkbox'); + headCellsWithCheckbox.forEach((headCellWithCheckbox) => { + const isCustomInit = !!headCellWithCheckbox.querySelector('.ibexa-table__header-cell-checkbox.ibexa-table__header-cell-checkbox--custom-init'); + + if (isCustomInit) { + return; + } + + const mainCheckboxIndex = [...headCells].indexOf(headCellWithCheckbox); + const mainCheckbox = headCellWithCheckbox.querySelector('.ibexa-input--checkbox'); const subCheckboxes = tableBody.querySelectorAll( `.ibexa-table__cell--has-checkbox:nth-child(${mainCheckboxIndex + 1}) .ibexa-input--checkbox` ); @@ -90,7 +96,13 @@ tablesCheckboxesChangeListeners.delete(table); }; - tablesWithBulkCheckbox.forEach((table) => { + ibexaTables.forEach((table) => { + const tableHasBulkCheckbox = !!table.querySelector('.ibexa-table__header-cell-checkbox:not(.ibexa-table__header-cell-checkbox--custom-init)'); + + if (!tableHasBulkCheckbox) { + return; + } + addTableCheckboxesListeners(table); table.addEventListener( diff --git a/src/bundle/Resources/views/themes/admin/content/tab/url/custom_urls_table.html.twig b/src/bundle/Resources/views/themes/admin/content/tab/url/custom_urls_table.html.twig index d99f2c3a6e..368ba99bb9 100644 --- a/src/bundle/Resources/views/themes/admin/content/tab/url/custom_urls_table.html.twig +++ b/src/bundle/Resources/views/themes/admin/content/tab/url/custom_urls_table.html.twig @@ -5,16 +5,20 @@ {% if custom_urls_pager.currentPageResults is not empty %} {% for custom_url in custom_urls_pager.currentPageResults %} {% set body_row_cols = [] %} + {% set has_checkbox = false %} {% set col_raw %} {% if can_edit_custom_url %} {{ form_widget(form_custom_url_remove.url_aliases[custom_url.id]) }} + + {% set has_checkbox = true %} {% else %} {% do form_custom_url_remove.url_aliases.setRendered %} {% endif %} {% endset %} {% set body_row_cols = body_row_cols|merge([{ content: col_raw, + has_checkbox, raw: true, }]) %} diff --git a/src/bundle/Resources/views/themes/admin/ui/component/table/table_head_cell.html.twig b/src/bundle/Resources/views/themes/admin/ui/component/table/table_head_cell.html.twig index f7efbb275a..e221fdb69e 100644 --- a/src/bundle/Resources/views/themes/admin/ui/component/table/table_head_cell.html.twig +++ b/src/bundle/Resources/views/themes/admin/ui/component/table/table_head_cell.html.twig @@ -11,7 +11,10 @@ > {%- block content -%} {%- if has_checkbox|default(false) -%} - + {%- endif -%} {this.renderBasicColumnsHeader()} @@ -303,7 +303,7 @@ export default class TableViewComponent extends Component { return (
- +
{this.renderHead()} {renderedItems}