diff --git a/src/types/preferences.d.ts b/src/types/preferences.d.ts index 33a4c29..5a710b4 100644 --- a/src/types/preferences.d.ts +++ b/src/types/preferences.d.ts @@ -1,5 +1,6 @@ export type PreferenceSetting = { default: any; + optionsGroup?: string; options?: {[index: string]: string}; multipleOptions?: {[index: string]: string}; unsupported?: string | boolean; diff --git a/src/utils/preferences.ts b/src/utils/preferences.ts index c1c1b0d..27c1d9f 100644 --- a/src/utils/preferences.ts +++ b/src/utils/preferences.ts @@ -130,6 +130,7 @@ export class Preferences { label: t('bypass-region-restriction'), note: '⚠️ ' + t('use-this-at-your-own-risk'), default: 'off', + optionsGroup: t('region'), options: Object.assign({ 'off': t('off'), }, BypassServers), diff --git a/src/utils/settings.ts b/src/utils/settings.ts index d7a811a..06d813a 100644 --- a/src/utils/settings.ts +++ b/src/utils/settings.ts @@ -30,11 +30,20 @@ export class SettingElement { // title: setting.label, tabindex: 0, }) as HTMLSelectElement; + + let $parent: HTMLElement; + if (setting.optionsGroup) { + $parent = CE('optgroup', {'label': setting.optionsGroup}); + $control.appendChild($parent); + } else { + $parent = $control; + } + for (let value in setting.options) { const label = setting.options[value]; const $option = CE('option', {value: value}, label); - $control.appendChild($option); + $parent.appendChild($option); } $control.value = currentValue;