Use objects for pagination select creation

1e573426398b00adb49316dd8a1eab7d9618b0c1

Cohee <18619528+Cohee1207@users.noreply.github.com>

2 files changed, +23 -7Showing whitespace changes
public/scripts/utils.js+22 -7
@@ -14,7 +14,7 @@ import { Popup, POPUP_RESULT, POPUP_TYPE } from './popup.js';
14import { SlashCommandClosure } from './slash-commands/SlashCommandClosure.js';14import { SlashCommandClosure } from './slash-commands/SlashCommandClosure.js';
15import { getTagsList } from './tags.js';15import { getTagsList } from './tags.js';
16import { groups, selected_group } from './group-chats.js';16import { groups, selected_group } from './group-chats.js';
17import { getCurrentLocale, t, translate } from './i18n.js';17import { getCurrentLocale, t } from './i18n.js';
1818
19/**19/**
20 * Function returning pagination status string template.20 * Function returning pagination status string template.
@@ -22,21 +22,36 @@ import { getCurrentLocale, t, translate } from './i18n.js';
22export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>';22export const PAGINATION_TEMPLATE = '<%= rangeStart %>-<%= rangeEnd %> .. <%= totalNumber %>';
2323
24export const localizePagination = function(container) {24export const localizePagination = function(container) {
25 container.find('[title="Next page"]').attr('title', translate('Next page'));25 container.find('[title="Next page"]').attr('title', t`Next page`);
26 container.find('[title="Previous page"]').attr('title', translate('Previous page'));26 container.find('[title="Previous page"]').attr('title', t`Previous page`);
27};27};
2828
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 */
29export const renderPaginationDropdown = function(pageSize, sizeChangerOptions) {35export 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 if (sizeChangerOptions.indexOf(pageSize) === -1) {39 if (sizeChangerOptions.indexOf(pageSize) === -1) {
32 sizeChangerOptions.unshift(pageSize);40 sizeChangerOptions.unshift(pageSize);
33 sizeChangerOptions.sort((a, b) => a - b);41 sizeChangerOptions.sort((a, b) => a - b);
34 }42 }
43
35 for (let i = 0; i < sizeChangerOptions.length; i++) {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 return sizeSelect;54 return sizeSelect.outerHTML;
40};55};
4156
42export const paginationDropdownChangeHandler = function(event, size) {57export const paginationDropdownChangeHandler = function(event, size) {
public/style.css+1 -0
@@ -5715,6 +5715,7 @@ body:not(.movingUI) .drawer-content.maximized {
5715 width: unset;5715 width: unset;
5716 margin: 0;5716 margin: 0;
5717 font-size: calc(var(--mainFontSize) * 0.85);5717 font-size: calc(var(--mainFontSize) * 0.85);
5718 padding-right: 20px;
5718}5719}
57195720
5720.paginationjs-pages ul li a {5721.paginationjs-pages ul li a {