Skip to content

Commit 292b145

Browse files
committed
Added: Tab's custom properties
- Custom title (inline editing) (#185) - Custom color (change via context menu)
1 parent e87e273 commit 292b145

16 files changed

+517
-217
lines changed

src/_locales/dict.common.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,22 @@ export const commonTranslations: Translations = {
733733
de: 'Andere Tabs schließen',
734734
zh_CN: '关闭其他标签页',
735735
},
736+
'menu.tab.edit': {
737+
en: 'Configure...',
738+
ru: 'Настроить...',
739+
},
740+
'menu.tab.edit_title': {
741+
en: 'Edit title',
742+
ru: 'Редактировать заголовок',
743+
},
744+
'menu.tab.colorize_': {
745+
en: 'Set color',
746+
ru: 'Задать цвет',
747+
},
748+
'menu.tab.colorize_colors': {
749+
en: 'Color...',
750+
ru: 'Цвет...',
751+
},
736752
// - Tabs panel
737753
'menu.tabs_panel.mute_all_audible': {
738754
en: 'Mute all audible tabs',

src/_locales/dict.sidebar.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,46 @@ export const sidebarTranslations: Translations = {
512512
ru: 'Сохранить',
513513
de: 'Speichern',
514514
},
515+
516+
// ---
517+
// -- Colors
518+
// -
519+
'colors.toolbar': {
520+
en: 'Default',
521+
ru: 'Стандартный',
522+
},
523+
'colors.blue': {
524+
en: 'Blue',
525+
ru: 'Синий',
526+
},
527+
'colors.turquoise': {
528+
en: 'Turquoise',
529+
ru: 'Бирюзовый',
530+
},
531+
'colors.green': {
532+
en: 'Green',
533+
ru: 'Зеленый',
534+
},
535+
'colors.yellow': {
536+
en: 'Yellow',
537+
ru: 'Желтый',
538+
},
539+
'colors.orange': {
540+
en: 'Orange',
541+
ru: 'Оранжевый',
542+
},
543+
'colors.red': {
544+
en: 'Red',
545+
ru: 'Красный',
546+
},
547+
'colors.pink': {
548+
en: 'Pink',
549+
ru: 'Розовый',
550+
},
551+
'colors.purple': {
552+
en: 'Purple',
553+
ru: 'Фиолетовый',
554+
},
515555
}
516556

517557
if (!window.translations) window.translations = sidebarTranslations

src/defaults/menu.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,17 @@ export const TABS_MENU: MenuConf = [
1111
name: '%menu.tab.reopen_in_sub_menu_name',
1212
opts: ['reopenInNewWin', 'reopenInWin', 'reopenInCtr', 'reopenInNewCtr'],
1313
},
14+
{
15+
name: '%menu.tab.colorize_',
16+
opts: ['colorizeTab'],
17+
},
1418
'separator-2',
1519
'pin',
1620
'duplicate',
1721
'discard',
1822
'copyTabsUrls',
1923
'copyTabsTitles',
24+
'editTabTitle',
2025
'separator-3',
2126
'group',
2227
'flatten',

src/page.setup/components/menu-editor.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ const TABS_MENU_OPTS: Record<string, string> = {
176176
discard: 'menu.tab.discard',
177177
copyTabsUrls: 'menu.copy_urls',
178178
copyTabsTitles: 'menu.copy_titles',
179+
editTabTitle: 'menu.tab.edit_title',
180+
colorizeTab: 'menu.tab.colorize_colors',
179181
group: 'menu.tab.group',
180182
flatten: 'menu.tab.flatten',
181183
clearCookies: 'menu.tab.clear_cookies',

src/services/menu.options.tabs.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Utils from 'src/utils'
2-
import { ASKID, CONTAINER_ID, Err, NEWID } from 'src/defaults'
2+
import { ASKID, COLOR_OPTS, CONTAINER_ID, Err, NEWID } from 'src/defaults'
33
import { MenuOption, Window, Tab } from 'src/types'
44
import { translate } from 'src/dict'
55
import { Tabs } from 'src/services/tabs.fg'
@@ -422,6 +422,33 @@ export const tabsMenuOptions: Record<string, () => MenuOption | MenuOption[] | u
422422
}
423423
},
424424

425+
colorizeTab: () => {
426+
const opts: MenuOption[] = []
427+
const selected = Selection.get()
428+
let usedColor
429+
if (selected.length === 1) usedColor = Tabs.byId[selected[0]]?.customColor ?? 'toolbar'
430+
for (const color of COLOR_OPTS) {
431+
if (usedColor && usedColor === color.color) continue
432+
const title = translate('colors.' + color.color)
433+
opts.push({
434+
label: title,
435+
color: color.color as browser.ColorName,
436+
icon: color.value === 'toolbar' ? 'icon_none' : 'circle',
437+
onClick: () => Tabs.setCustomColor(selected, color.value),
438+
})
439+
}
440+
441+
if (opts.length) return opts
442+
},
443+
444+
editTabTitle: () => {
445+
return {
446+
label: translate('menu.tab.edit_title'),
447+
icon: 'icon_edit',
448+
onClick: () => Tabs.editTabTitle(Selection.get()),
449+
}
450+
},
451+
425452
// ---
426453
// -- Panel options
427454
// -

0 commit comments

Comments
 (0)