Skip to content
This repository has been archived by the owner on Feb 25, 2023. It is now read-only.

Popup style updates #1066

Merged
merged 5 commits into from
Nov 26, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions ext/bg/data/options-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
"popupScaleRelativeToVisualViewport",
"showGuide",
"compactTags",
"compactGlossaries",
"glossaryLayoutMode",
"mainDictionary",
"popupTheme",
"popupOuterTheme",
Expand Down Expand Up @@ -198,9 +198,10 @@
"type": "boolean",
"default": false
},
"compactGlossaries": {
"type": "boolean",
"default": false
"glossaryLayoutMode": {
"type": "string",
"enum": ["default", "compact"],
"default": "default"
},
"mainDictionary": {
"type": "string"
Expand Down
9 changes: 5 additions & 4 deletions ext/bg/js/anki-note-builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class AnkiNoteBuilder {
checkForDuplicates=true,
duplicateScope='collection',
resultOutputMode='split',
compactGlossaries=false,
glossaryLayoutMode='default',
compactTags=false,
modeOptions: {fields, deck, model},
audioDetails=null,
Expand Down Expand Up @@ -71,7 +71,7 @@ class AnkiNoteBuilder {
}
};

const data = this._createNoteData(definition, mode, context, resultOutputMode, compactGlossaries, compactTags);
const data = this._createNoteData(definition, mode, context, resultOutputMode, glossaryLayoutMode, compactTags);
const formattedFieldValuePromises = [];
for (const [, fieldValue] of fieldEntries) {
const formattedFieldValuePromise = this._formatField(fieldValue, data, templates, errors);
Expand Down Expand Up @@ -105,7 +105,7 @@ class AnkiNoteBuilder {

// Private

_createNoteData(definition, mode, context, resultOutputMode, compactGlossaries, compactTags) {
_createNoteData(definition, mode, context, resultOutputMode, glossaryLayoutMode, compactTags) {
const pitches = DictionaryDataUtil.getPitchAccentInfos(definition);
const pitchCount = pitches.reduce((i, v) => i + v.pitches.length, 0);
return {
Expand All @@ -118,7 +118,8 @@ class AnkiNoteBuilder {
modeTermKanji: mode === 'term-kanji',
modeTermKana: mode === 'term-kana',
modeKanji: mode === 'kanji',
compactGlossaries,
compactGlossaries: (glossaryLayoutMode === 'compact'),
glossaryLayoutMode,
compactTags,
context
};
Expand Down
3 changes: 3 additions & 0 deletions ext/bg/js/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -614,10 +614,13 @@ class OptionsUtil {
// Updated handlebars templates to include "conjugation" definition.
// Added global option showPopupPreview.
// Added anki.checkForDuplicates.
// Added general.glossaryLayoutMode; removed general.compactGlossaries.
await this._addFieldTemplatesToOptions(options, '/bg/data/anki-field-templates-upgrade-v6.handlebars');
options.global.showPopupPreview = false;
for (const profile of options.profiles) {
profile.options.anki.checkForDuplicates = true;
profile.options.general.glossaryLayoutMode = (profile.options.general.compactGlossaries ? 'compact' : 'default');
delete profile.options.general.compactGlossaries;
const fieldTemplates = profile.options.anki.fieldTemplates;
if (typeof fieldTemplates === 'string') {
profile.options.anki.fieldTemplates = this._updateVersion6AnkiTemplatesCompactTags(fieldTemplates);
Expand Down
4 changes: 2 additions & 2 deletions ext/bg/js/settings/anki-templates-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -184,14 +184,14 @@ class AnkiTemplatesController {
const ankiNoteBuilder = new AnkiNoteBuilder({
renderTemplate: this._renderTemplate.bind(this)
});
const {general: {resultOutputMode, compactGlossaries, compactTags}} = options;
const {general: {resultOutputMode, glossaryLayoutMode, compactTags}} = options;
const note = await ankiNoteBuilder.createNote({
definition,
mode,
context,
templates,
resultOutputMode,
compactGlossaries,
glossaryLayoutMode,
compactTags,
modeOptions: {
fields: {field},
Expand Down
2 changes: 1 addition & 1 deletion ext/bg/search.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en" data-yomichan-page="search">
<html lang="en" data-page-type="popup">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
Expand Down
31 changes: 19 additions & 12 deletions ext/bg/settings.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,10 +144,6 @@ <h3>General Options</h3>
<label><input type="checkbox" id="compact-tags" data-setting="general.compactTags"> Compact tags</label>
</div>

<div class="checkbox">
<label><input type="checkbox" id="compact-glossaries" data-setting="general.compactGlossaries"> Compact glossaries</label>
</div>

<div class="checkbox">
<label><input type="checkbox" id="show-advanced-options" data-setting="general.showAdvanced" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-general-show-advanced"> Show advanced options</label>
</div>
Expand Down Expand Up @@ -205,14 +201,6 @@ <h3>General Options</h3>
</select>
</div>

<div class="form-group">
<label for="popup-display-mode">Popup display mode</label>
<select class="form-control" id="popup-display-mode" data-setting="general.popupDisplayMode">
<option value="default">Default</option>
<option value="full-width">Full width</option>
</select>
</div>

<div class="form-group">
<label for="popup-scaling-factor">Popup size multiplier</label>
<input type="number" min="0" id="popup-scaling-factor" data-setting="general.popupScalingFactor" class="form-control">
Expand Down Expand Up @@ -284,6 +272,25 @@ <h3>General Options</h3>
</div>
</div>

<div class="form-group">
<div class="row">
<div class="col-xs-6">
<label for="popup-display-mode">Popup display mode</label>
<select class="form-control" id="popup-display-mode" data-setting="general.popupDisplayMode">
<option value="default">Default</option>
<option value="full-width">Full width</option>
</select>
</div>
<div class="col-xs-6">
<label for="glossary-layout-mode">Glossary layout mode</label>
<select class="form-control" id="glossary-layout-mode" data-setting="general.glossaryLayoutMode">
<option value="default">Default</option>
<option value="compact">Compact</option>
</select>
</div>
</div>
</div>

<div class="form-group">
<div class="row">
<div class="col-xs-6">
Expand Down
4 changes: 2 additions & 2 deletions ext/fg/css/client.css
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ iframe.yomichan-float {
box-sizing: border-box;
}

iframe.yomichan-float[data-yomichan-theme=dark],
iframe.yomichan-float[data-yomichan-theme=auto][data-yomichan-site-color=dark] {
iframe.yomichan-float[data-outer-theme=dark],
iframe.yomichan-float[data-outer-theme=auto][data-site-color=dark] {
background-color: #1e1e1e;
border: 1px solid #666;
box-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
Expand Down
2 changes: 1 addition & 1 deletion ext/fg/float.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en" data-yomichan-page="float">
<html lang="en" data-page-type="popup">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
Expand Down
6 changes: 4 additions & 2 deletions ext/fg/js/popup.js
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,10 @@ class Popup extends EventDispatcher {
}

updateTheme() {
this._frame.dataset.yomichanTheme = this._options.general.popupOuterTheme;
this._frame.dataset.yomichanSiteColor = this._getSiteColor();
const {popupTheme, popupOuterTheme} = this._options.general;
this._frame.dataset.theme = popupTheme;
this._frame.dataset.outerTheme = popupOuterTheme;
this._frame.dataset.siteColor = this._getSiteColor();
}

async setCustomOuterCss(css, useWebExtensionApi) {
Expand Down
65 changes: 36 additions & 29 deletions ext/mixed/css/display.css
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,10 @@
--default-text-color: #333333;
--light-text-color: #777777;
--very-light-text-color: #999999;
--popuplar-kanji-text-color: var(--accent-color);

--kanji-text-color: var(--default-text-color);
--kanji-popular-text-color: var(--accent-color);
--kanji-rare-text-color: var(--very-light-text-color);
--kanji-furigana-text-color: inherit;
--reason-text-color: var(--light-text-color);

--light-border-color: #eeeeee;
Expand Down Expand Up @@ -115,7 +117,7 @@
--progress-bar-indicator-color: var(--accent-color);
--entry-current-indicator-color: var(--accent-color);
}
:root[data-yomichan-theme=dark] {
:root[data-theme=dark] {
/* Colors */
--background-color: #1e1e1e;
--glossary-image-background-color: #2f2f2f;
Expand All @@ -126,8 +128,10 @@
--default-text-color: #d4d4d4;
--light-text-color: #888888;
--very-light-text-color: #666666;
--popuplar-kanji-text-color: var(--accent-color);

--kanji-text-color: var(--default-text-color);
--kanji-popular-text-color: var(--accent-color);
--kanji-rare-text-color: var(--very-light-text-color);
--kanji-furigana-text-color: inherit;
--reason-text-color: var(--light-text-color);

--light-border-color: #2f2f2f;
Expand Down Expand Up @@ -179,8 +183,8 @@


/* General */
:root[data-yomichan-page=float]:not([data-yomichan-theme]),
:root[data-yomichan-page=float]:not([data-yomichan-theme]) body {
:root[data-page-type=popup]:not([data-theme]),
:root[data-page-type=popup]:not([data-theme]) body {
background-color: transparent;
}
:root {
Expand Down Expand Up @@ -227,25 +231,25 @@ a {


/* Scrollbars */
:root:not([data-yomichan-theme=light]) .scrollbar {
:root:not([data-theme=default]) .scrollbar {
scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color);
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar {
width: auto;
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar-button {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar-button {
height: 0;
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar-thumb {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar-thumb {
background-color: var(--scrollbar-thumb-color);
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar-track {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar-track {
background-color: var(--scrollbar-thumb-color);
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar-track-piece {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar-track-piece {
background-color: var(--scrollbar-track-color);
}
:root:not([data-yomichan-theme=light]) .scrollbar::-webkit-scrollbar-corner {
:root:not([data-theme=default]) .scrollbar::-webkit-scrollbar-corner {
background-color: var(--scrollbar-track-color);
}

Expand Down Expand Up @@ -586,17 +590,20 @@ button.action-button {
}
.term-expression .kanji-link {
border-bottom: var(--expression-thin-border-size) dashed var(--kanji-border-color);
color: var(--default-text-color);
color: var(--kanji-text-color);
text-decoration: none;
cursor: pointer;
}
.term-expression[data-frequency=popular] .term-expression-text,
.term-expression[data-frequency=popular] .term-expression-text .kanji-link {
color: var(--popuplar-kanji-text-color);
color: var(--kanji-popular-text-color);
}
.term-expression[data-frequency=rare] .term-expression-text,
.term-expression[data-frequency=rare] .term-expression-text .kanji-link {
color: var(--very-light-text-color);
color: var(--kanji-rare-text-color);
}
.term-expression-text>ruby>rt {
color: var(--kanji-furigana-text-color);
}
.entry-header2,
.entry-header3 {
Expand Down Expand Up @@ -770,19 +777,19 @@ button.action-button {
:root[data-audio-enabled=false] .action-play-audio {
display: none;
}
:root[data-compact-glossaries=true] .term-definition-tag-list,
:root[data-compact-glossaries=true] .term-definition-disambiguation-list:not([data-count="0"]) {
:root[data-glossary-layout-mode=compact] .term-definition-tag-list,
:root[data-glossary-layout-mode=compact] .term-definition-disambiguation-list:not([data-count="0"]) {
display: inline;
}
:root[data-compact-glossaries=true] .term-glossary-list {
:root[data-glossary-layout-mode=compact] .term-glossary-list {
display: inline;
list-style: none;
padding-left: 0;
}
:root[data-compact-glossaries=true] .term-glossary-list>li {
:root[data-glossary-layout-mode=compact] .term-glossary-list>li {
display: inline;
}
:root[data-compact-glossaries=true] .term-glossary-list>li:not(:first-child)::before {
:root[data-glossary-layout-mode=compact] .term-glossary-list>li:not(:first-child)::before {
white-space: pre-wrap;
content: " | ";
display: inline;
Expand Down Expand Up @@ -1022,29 +1029,29 @@ button.action-button {
content: "]";
}

:root[data-compact-glossaries=true] .term-glossary-image-container {
:root[data-glossary-layout-mode=compact] .term-glossary-image-container {
display: none;
position: absolute;
left: 0;
top: 100%;
z-index: 1;
}
:root[data-compact-glossaries=true] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .term-glossary-image-container {
:root[data-glossary-layout-mode=compact] .entry:nth-last-of-type(1):not(:nth-of-type(1)) .term-glossary-image-container {
bottom: 100%;
top: auto;
}
:root[data-compact-glossaries=true] .term-glossary-image-link {
:root[data-glossary-layout-mode=compact] .term-glossary-image-link {
position: relative;
display: inline-block;
}
:root[data-compact-glossaries=true] .term-glossary-image-link:hover .term-glossary-image-container,
:root[data-compact-glossaries=true] .term-glossary-image-link:focus .term-glossary-image-container {
:root[data-glossary-layout-mode=compact] .term-glossary-image-link:hover .term-glossary-image-container,
:root[data-glossary-layout-mode=compact] .term-glossary-image-link:focus .term-glossary-image-container {
display: block;
}
:root:not([data-compact-glossaries=true]) .term-glossary-image-link-text {
:root:not([data-glossary-layout-mode=compact]) .term-glossary-image-link-text {
display: none;
}
:root:not([data-compact-glossaries=true]) .term-glossary-image-description {
:root:not([data-glossary-layout-mode=compact]) .term-glossary-image-description {
display: block;
}

Expand Down
2 changes: 1 addition & 1 deletion ext/mixed/css/search.css
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
:root[data-loaded=true] {
--animation-duration: 0.125s;
}
:root[data-yomichan-theme=dark] {
:root[data-theme=dark] {
--text-color-default: #d8d8d8;
--background-color: #1e1e1e;
--shadow-color: rgba(255, 255, 255, 0.185);
Expand Down
8 changes: 4 additions & 4 deletions ext/mixed/js/display.js
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,7 @@ class Display extends EventDispatcher {
const data = document.documentElement.dataset;
data.ankiEnabled = `${options.anki.enable}`;
data.audioEnabled = `${options.audio.enabled && options.audio.sources.length > 0}`;
data.compactGlossaries = `${options.general.compactGlossaries}`;
data.glossaryLayoutMode = `${options.general.glossaryLayoutMode}`;
data.compactTags = `${options.general.compactTags}`;
data.enableSearchTags = `${options.scanning.enableSearchTags}`;
data.showPitchAccentDownstepNotation = `${options.general.showPitchAccentDownstepNotation}`;
Expand All @@ -796,7 +796,7 @@ class Display extends EventDispatcher {
}

_updateTheme(themeName) {
document.documentElement.dataset.yomichanTheme = themeName;
document.documentElement.dataset.theme = themeName;
}

async _findDefinitions(isTerms, source, wildcardsEnabled, optionsContext) {
Expand Down Expand Up @@ -1461,7 +1461,7 @@ class Display extends EventDispatcher {

async _createNote(definition, mode, context, options, templates, injectMedia) {
const {
general: {resultOutputMode, compactGlossaries, compactTags},
general: {resultOutputMode, glossaryLayoutMode, compactTags},
anki: {tags, checkForDuplicates, duplicateScope, kanji, terms, screenshot: {format, quality}},
audio: {sources, customSourceUrl}
} = options;
Expand Down Expand Up @@ -1501,7 +1501,7 @@ class Display extends EventDispatcher {
checkForDuplicates,
duplicateScope,
resultOutputMode,
compactGlossaries,
glossaryLayoutMode,
compactTags,
modeOptions
});
Expand Down
2 changes: 1 addition & 1 deletion test/test-options-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ function createProfileOptionsUpdatedTestData1() {
popupScaleRelativeToVisualViewport: true,
showGuide: true,
compactTags: false,
compactGlossaries: false,
glossaryLayoutMode: 'default',
mainDictionary: '',
popupTheme: 'default',
popupOuterTheme: 'default',
Expand Down