| 22 | 22 | export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>'; |
| 23 | 23 | |
| 24 | 24 | export const localizePagination = function(container) { |
| 25 | 25 | container.find('[title="Next page"]').attr('title', translate('t`Next page')`); |
| 26 | 26 | container.find('[title="Previous page"]').attr('title', translate('t`Previous page')`); |
| 27 | 27 | }; |
| 28 | 28 | |
| 29 | +/** |
| 30 | + * Renders a dropdown for selecting page size in pagination. |
| 31 | + * @param {number} pageSize Page size |
| 32 | + * @param {number[]} sizeChangerOptions Array of page size options |
| 33 | + * @returns {string} The rendered dropdown element as a string |
| 34 | + */ |
| 29 | 35 | export const renderPaginationDropdown = function(pageSize, sizeChangerOptions) { |
| 30 | | - let sizeSelect = '<select class="J-paginationjs-size-select">'; |
| 36 | + const sizeSelect = document.createElement('select'); |
| 37 | + sizeSelect.classList.add('J-paginationjs-size-select'); |
| 38 | + |
| 31 | 39 | if (sizeChangerOptions.indexOf(pageSize) === -1) { |
| 32 | 40 | sizeChangerOptions.unshift(pageSize); |
| 33 | 41 | sizeChangerOptions.sort((a, b) => a - b); |
| 34 | 42 | } |
| 43 | + |
| 35 | 44 | for (let i = 0; i < sizeChangerOptions.length; i++) { |
| 36 | | - sizeSelect += `<option value="${sizeChangerOptions[i]}"${(sizeChangerOptions[i] === pageSize ? ' selected' : '')}>${sizeChangerOptions[i]} ` + t`/ page` + '</option>'; |
| 45 | + const option = document.createElement('option'); |
| 46 | + option.value = `${sizeChangerOptions[i]}`; |
| 47 | + option.textContent = `${sizeChangerOptions[i]} ${t`/ page`}`; |
| 48 | + if (sizeChangerOptions[i] === pageSize) { |
| 49 | + option.setAttribute('selected', 'selected'); |
| 50 | + } |
| 51 | + sizeSelect.appendChild(option); |
| 37 | 52 | } |
| 38 | | - sizeSelect += '</select>'; |
| 53 | + |
| 39 | 54 | return sizeSelect.outerHTML; |
| 40 | 55 | }; |
| 41 | 56 | |
| 42 | 57 | export const paginationDropdownChangeHandler = function(event, size) { |