Make the option of behavior when text is selected a radio button
This commit is contained in:
parent
3744262d6e
commit
a388f5dcfa
|
@ -35,17 +35,26 @@
|
||||||
"ifShowCandidateCaptionLabel": {
|
"ifShowCandidateCaptionLabel": {
|
||||||
"message": "Show multiple translation candidates when a single word is translated."
|
"message": "Show multiple translation candidates when a single word is translated."
|
||||||
},
|
},
|
||||||
"ifAutoTranslate": {
|
"whenSelectTextLabel": {
|
||||||
"message": "Automatically display translation panel"
|
"message": "Behavior when selecting text"
|
||||||
},
|
},
|
||||||
"ifAutoTranslateLabel": {
|
"ifAutoTranslateLabel": {
|
||||||
|
"message": "Display translation panel"
|
||||||
|
},
|
||||||
|
"ifAutoTranslateCaptionLabel": {
|
||||||
"message": "Directly display the translation panel without displaying the button."
|
"message": "Directly display the translation panel without displaying the button."
|
||||||
},
|
},
|
||||||
"ifShowButtonLabel": {
|
"ifShowButtonLabel": {
|
||||||
"message": "Display the button when text is selected"
|
"message": "Display translation button"
|
||||||
},
|
},
|
||||||
"ifShowButtonCaptionLabel": {
|
"ifShowButtonCaptionLabel": {
|
||||||
"message": "Display the translation button when text is selected on the web page."
|
"message": "Display the translation button to open the panel when clicked."
|
||||||
|
},
|
||||||
|
"dontshowbuttonlabel": {
|
||||||
|
"message": "Don't display button or panel"
|
||||||
|
},
|
||||||
|
"dontshowbuttonCaptionlabel": {
|
||||||
|
"message": "Don't display the translation button or the translation panel."
|
||||||
},
|
},
|
||||||
"ifCheckLangLabel": {
|
"ifCheckLangLabel": {
|
||||||
"message": "Do not display the button if translation is not required"
|
"message": "Do not display the button if translation is not required"
|
||||||
|
|
|
@ -47,12 +47,6 @@
|
||||||
"ifCheckLangCaptionLabel": {
|
"ifCheckLangCaptionLabel": {
|
||||||
"message": "選択したテキストの言語を検出し,翻訳先言語と同じ場合はボタンを表示しません。"
|
"message": "選択したテキストの言語を検出し,翻訳先言語と同じ場合はボタンを表示しません。"
|
||||||
},
|
},
|
||||||
"ifAutoTranslate": {
|
|
||||||
"message": "自動的に翻訳パネルを表示する"
|
|
||||||
},
|
|
||||||
"ifAutoTranslateLabel": {
|
|
||||||
"message": "ボタンを表示せずに直接翻訳パネルを表示します。"
|
|
||||||
},
|
|
||||||
"ifShowMenuLabel": {
|
"ifShowMenuLabel": {
|
||||||
"message": "コンテキストメニューを表示する"
|
"message": "コンテキストメニューを表示する"
|
||||||
},
|
},
|
||||||
|
|
|
@ -141,6 +141,10 @@ hr {
|
||||||
padding: 10px 0px 10px 0px;
|
padding: 10px 0px 10px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.optionContainer.reverse {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
}
|
||||||
|
|
||||||
.buttonsContainer {
|
.buttonsContainer {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -166,6 +170,11 @@ hr {
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reverse .optionForm {
|
||||||
|
flex-basis: 40px;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
#importClear {
|
#importClear {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 10px;
|
left: 10px;
|
||||||
|
@ -315,6 +324,48 @@ input[type="checkbox"]:checked + .checkbox::after {
|
||||||
border-right: 3px solid var(--highlight);
|
border-right: 3px solid var(--highlight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input[type="radio"] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.radio {
|
||||||
|
padding-left: 20px;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.radio::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -2px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
border: 1px solid var(--button);
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.radio:hover::before {
|
||||||
|
border-color: var(--highlight);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"]:checked + .radio {
|
||||||
|
color: var(--highlight);
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="radio"]:checked + .radio::after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 6px;
|
||||||
|
left: 4px;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: var(--highlight);
|
||||||
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
-moz-appearance: none;
|
-moz-appearance: none;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
|
|
|
@ -79,18 +79,48 @@
|
||||||
<ul class=categoryElements>
|
<ul class=categoryElements>
|
||||||
<li class=optionContainer>
|
<li class=optionContainer>
|
||||||
<div class=optionText>
|
<div class=optionText>
|
||||||
<p class=ifShowButtonLabel>テキスト選択時にボタンを表示する</p>
|
<p class=whenSelectTextLabel>テキスト選択時の動作</p>
|
||||||
<p class="caption ifShowButtonCaptionLabel">webページ上のテキストを選択した時に翻訳ボタンを表示します。</p>
|
|
||||||
</div>
|
|
||||||
<div class=optionForm>
|
|
||||||
<label>
|
|
||||||
<input type=checkbox id=ifShowButton class=saveByChange checked>
|
|
||||||
<span class=checkbox></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<ul class=childElements>
|
<ul class=childElements>
|
||||||
<li class=optionContainer>
|
<li class=optionContainer>
|
||||||
|
<div class=optionText>
|
||||||
|
<p class=ifShowButtonLabel>翻訳ボタンを表示する</p>
|
||||||
|
<p class="caption ifShowButtonCaptionLabel">クリックすると翻訳パネルが開くボタンを表示します。</p>
|
||||||
|
</div>
|
||||||
|
<div class=optionForm>
|
||||||
|
<label>
|
||||||
|
<input type=radio name=whenSelectText value=showButton class=saveByChange>
|
||||||
|
<span class=radio></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class="optionContainer new">
|
||||||
|
<div class=optionText>
|
||||||
|
<p class=ifAutoTranslateLabel>翻訳パネルを表示する</p>
|
||||||
|
<p class="caption ifAutoTranslateCaptionLabel">ボタンを表示せずに直接翻訳パネルを表示します。</p>
|
||||||
|
</div>
|
||||||
|
<div class=optionForm>
|
||||||
|
<label>
|
||||||
|
<input type=radio name=whenSelectText value=showPanel class=saveByChange>
|
||||||
|
<span class=radio></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li class=optionContainer>
|
||||||
|
<div class=optionText>
|
||||||
|
<p class=dontShowButtonLabel>ボタンやパネルを表示しない</p>
|
||||||
|
<p class="caption dontShowButtonCaptionLabel">翻訳ボタンや翻訳パネルを表示しません。</p>
|
||||||
|
</div>
|
||||||
|
<div class=optionForm>
|
||||||
|
<label>
|
||||||
|
<input type=radio name=whenSelectText value=dontShowButton class=saveByChange checked>
|
||||||
|
<span class=radio></span>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<hr>
|
||||||
|
<li class="optionContainer">
|
||||||
<div class=optionText>
|
<div class=optionText>
|
||||||
<p class=ifCheckLangLabel>翻訳の必要がなければボタンを表示しない</p>
|
<p class=ifCheckLangLabel>翻訳の必要がなければボタンを表示しない</p>
|
||||||
<p class="caption ifCheckLangCaptionLabel">選択したテキストの言語を判定し,翻訳先言語と同じ場合はボタンを表示しません。</p>
|
<p class="caption ifCheckLangCaptionLabel">選択したテキストの言語を判定し,翻訳先言語と同じ場合はボタンを表示しません。</p>
|
||||||
|
@ -102,18 +132,6 @@
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class=optionContainer>
|
|
||||||
<div class=optionText>
|
|
||||||
<p class=ifAutoTranslate>自動的に翻訳パネルを表示する</p>
|
|
||||||
<p class="caption ifAutoTranslateCaptionLabel">ボタンを表示せずに直接翻訳パネルを表示します。</p>
|
|
||||||
</div>
|
|
||||||
<div class=optionForm>
|
|
||||||
<label>
|
|
||||||
<input type=checkbox id=ifAutoTranslate class=saveByChange>
|
|
||||||
<span class=checkbox></span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -15,7 +15,6 @@ window.addEventListener("mouseup", Select, false);
|
||||||
function Select(e) {
|
function Select(e) {
|
||||||
hidePanel(e);
|
hidePanel(e);
|
||||||
setTimeout(function () { //誤動作防止の為ディレイを設ける
|
setTimeout(function () { //誤動作防止の為ディレイを設ける
|
||||||
//selectionWord = String(window.getSelection());
|
|
||||||
if (e.target.tagName == "INPUT" || e.target.tagName == "TEXTAREA") {
|
if (e.target.tagName == "INPUT" || e.target.tagName == "TEXTAREA") {
|
||||||
selectionWord = e.target.value.substring(e.target.selectionStart, e.target.selectionEnd);
|
selectionWord = e.target.value.substring(e.target.selectionStart, e.target.selectionEnd);
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,17 +23,24 @@ function Select(e) {
|
||||||
|
|
||||||
if ((selectionWord.length !== 0) && (e.button == 0) && (e.target.id !== "simple-translate-panel") && (e.target.parentElement.id !== "simple-translate-panel")) { //選択範囲が存在かつ左クリックかつパネル以外のとき
|
if ((selectionWord.length !== 0) && (e.button == 0) && (e.target.id !== "simple-translate-panel") && (e.target.parentElement.id !== "simple-translate-panel")) { //選択範囲が存在かつ左クリックかつパネル以外のとき
|
||||||
clickPosition = e;
|
clickPosition = e;
|
||||||
if (S.get().ifShowButton) {
|
|
||||||
checkLang().then(function (results) {
|
checkLang().then(function (results) {
|
||||||
if (results && S.get().ifAutoTranslate) { // 自動翻訳パネル表示がOnならshowPanel()
|
if (results) {
|
||||||
|
console.log(S.get().whenSelectText);
|
||||||
|
switch (S.get().whenSelectText) {
|
||||||
|
case 'showButton':
|
||||||
|
popupButton(e);
|
||||||
|
break;
|
||||||
|
case 'showPanel':
|
||||||
translate();
|
translate();
|
||||||
showPanel(e);
|
showPanel(e);
|
||||||
} else if (results) { // Offならボタンを表示
|
break;
|
||||||
popupButton(e);
|
case 'dontShowButton':
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue