|
13 | 13 | // Make sure window.crud exists before we try to use it |
14 | 14 | window.crud = window.crud || {}; |
15 | 15 | window.crud.tableConfigs = window.crud.tableConfigs || {}; |
16 | | - window.crud.checkedItems = window.crud.checkedItems || []; |
| 16 | + |
| 17 | + // Intercept changes to crud.checkedItems to sync with tableConfigs |
| 18 | + if (!Object.getOwnPropertyDescriptor(window.crud, 'checkedItems')?.get) { |
| 19 | + let _checkedItems = window.crud.checkedItems || []; |
| 20 | + |
| 21 | + Object.defineProperty(window.crud, 'checkedItems', { |
| 22 | + get: function() { |
| 23 | + return _checkedItems; |
| 24 | + }, |
| 25 | + set: function(value) { |
| 26 | + _checkedItems = value; |
| 27 | + |
| 28 | + // Sync with the main table config if it exists |
| 29 | + // This handles the case where legacy bulk buttons clear crud.checkedItems |
| 30 | + if (window.crud.table && window.crud.table.table && window.crud.table.table().node) { |
| 31 | + let tableId = window.crud.table.table().node().id; |
| 32 | + if (window.crud.tableConfigs[tableId]) { |
| 33 | + if (Array.isArray(value) && value.length === 0) { |
| 34 | + window.crud.tableConfigs[tableId].checkedItems = []; |
| 35 | + } |
| 36 | + } |
| 37 | + } |
| 38 | + }, |
| 39 | + configurable: true |
| 40 | + }); |
| 41 | + } |
17 | 42 |
|
18 | 43 | if (typeof window.crud.addOrRemoveCrudCheckedItem !== 'function') { |
19 | 44 | window.crud.addOrRemoveCrudCheckedItem = function(element, tableId) { |
|
182 | 207 | |
183 | 208 | const tableSpecificContainers = [ |
184 | 209 | document.querySelector(`#bottom_buttons_${tableId}`), |
185 | | - document.querySelector(`#datatable_button_stack_${tableId}`) |
| 210 | + document.querySelector(`#datatable_button_stack_${tableId}`), |
| 211 | + document.querySelector(`.top_buttons_${tableId}`) |
186 | 212 | ]; |
187 | 213 | |
188 | 214 | for (const container of tableSpecificContainers) { |
|
255 | 281 | tableConfig.checkedItems = Array.isArray(tableConfig.checkedItems) ? tableConfig.checkedItems : []; |
256 | 282 | window.crud.checkedItems = Array.isArray(window.crud.checkedItems) ? window.crud.checkedItems : []; |
257 | 283 | |
258 | | - // For default table or primary tables, sync with the global crud.checkedItems |
259 | | - if (tableId === 'crudTable' || tableId.startsWith('crudTable_')) { |
260 | | - // Copy items from tableConfig to global crud object |
261 | | - window.crud.checkedItems = [...tableConfig.checkedItems]; |
262 | | - } |
| 284 | + // Copy items from tableConfig to global crud object |
| 285 | + window.crud.checkedItems = [...tableConfig.checkedItems]; |
263 | 286 | } |
264 | 287 | } |
265 | 288 |
|
|
0 commit comments