diff --git a/client/styles/components/_editor.scss b/client/styles/components/_editor.scss index a7d26f5a6a..fe71106be5 100644 --- a/client/styles/components/_editor.scss +++ b/client/styles/components/_editor.scss @@ -121,14 +121,6 @@ pre.CodeMirror-line { height: 100%; } -.CodeMirror-find-div { - padding: 0; - display: flex; - justify-content: flex-start; - align-items: center; - flex-wrap: nowrap; -} - .CodeMirror-search-modifiers { margin-left: #{10 / $base-font-size}rem; } @@ -142,12 +134,22 @@ pre.CodeMirror-line { .CodeMirror-find-controls { display: flex; } - +.CodeMirror-search-inputs { + width: 30%; + margin-left: 10px; +} .CodeMirror-replace-div { display: flex; justify-content: flex-start; align-items: center; } +.CodeMirror-search-controls { + width: 60%; + display: flex; + flex-wrap: wrap-reverse; + justify-content: flex-start; + align-items: flex-end; +} .CodeMirror-replace-controls { display: flex; margin-left: #{10 / $base-font-size}rem; diff --git a/client/utils/codemirror-search.js b/client/utils/codemirror-search.js index 013d06a394..1aaad797ad 100644 --- a/client/utils/codemirror-search.js +++ b/client/utils/codemirror-search.js @@ -82,6 +82,7 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { var state = getSearchState(cm); CodeMirror.on(searchField, "keyup", function (e) { + state.replaceStarted = false; if (e.keyCode !== 13 && searchField.value.length > 1) { // not enter and more than 1 character to search startSearch(cm, getSearchState(cm), searchField.value); } else if (searchField.value.length < 1) { @@ -154,30 +155,30 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { } function toggleReplace(open) { - var replaceDivHeightOpened = "45px", replaceDivHeightClosed = "0px"; var toggleButtonHeightOpened = "80px", toggleButtonHeightClosed = "40px"; if (open) { - replaceDiv.style.height = replaceDivHeightOpened; + replaceFieldDiv.style.display = replaceControlsDiv.style.display = ''; toggleReplaceBtnDiv.style.height = toggleButtonHeightOpened; - showReplaceButton.style.height = toggleButtonHeightOpened; - showReplaceButton.innerHTML = triangleArrowDown; + toggleReplaceBtn.style.height = toggleButtonHeightOpened; + toggleReplaceBtn.innerHTML = triangleArrowDown; } else { - replaceDiv.style.height = replaceDivHeightClosed; + replaceFieldDiv.style.display = replaceControlsDiv.style.display = 'none'; toggleReplaceBtnDiv.style.height = toggleButtonHeightClosed; - showReplaceButton.style.height = toggleButtonHeightClosed; - showReplaceButton.innerHTML = triangleArrowRight; + toggleReplaceBtn.style.height = toggleButtonHeightClosed; + toggleReplaceBtn.innerHTML = triangleArrowRight; } } - var showReplaceButton = dialog.getElementsByClassName("CodeMirror-replace-toggle-button")[0]; - var toggleReplaceBtnDiv = dialog.getElementsByClassName("Toggle-replace-btn-div")[0]; - var replaceDiv = dialog.getElementsByClassName("CodeMirror-replace-div")[0]; + var toggleReplaceBtnDiv = document.getElementById('Btn-Toggle-replace-div'); + var toggleReplaceBtn = document.getElementById('Btn-Toggle-replace') + var replaceFieldDiv = document.getElementById('Replace-input-div'); + var replaceControlsDiv = document.getElementById('Replace-controls-div'); if (replaceOpened) { toggleReplace(true); } - CodeMirror.on(showReplaceButton, "click", function () { - if (replaceDiv.style.height === "0px") { + CodeMirror.on(toggleReplaceBtn, "click", function () { + if (replaceFieldDiv.style.display === "none") { toggleReplace(true); } else { toggleReplace(false); @@ -186,10 +187,6 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { var replaceField = document.getElementById('Replace-input-field'); CodeMirror.on(replaceField, "keyup", function (e) { - if (!searchField.value) { - searchField.focus(); - return; - } var state = getSearchState(cm); var query = parseQuery(searchField.value, state); var withText = parseString(replaceField.value); @@ -232,6 +229,7 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { if (match) { cm.setSelection(cursor.from(), cursor.to()); doReplace(match, cursor, query, withText); + doReplaceButton.focus(); } } else { startSearch(cm, state, searchField.value); @@ -239,6 +237,7 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { cm.focus(); CodeMirror.commands.findNext(cm); searchField.blur(); + doReplaceButton.focus(); } }) @@ -251,6 +250,9 @@ function persistentDialog(cm, text, deflt, onEnter, replaceOpened, onKeyDown) { var state = getSearchState(cm); var query = parseQuery(searchField.value, state); var withText = parseString(replaceField.value); + if (searchField.value.length > 1) { + state.replaceStarted = true; + } if (state.replaceStarted) { replaceAll(cm, query, withText); state.replaceStarted = false; @@ -491,11 +493,11 @@ function replaceAll(cm, query, text) { var getQueryDialog = function() { return (`
-
+
-
-
-
- -
-
-
- - - -
-
-

${i18n.t('CodemirrorFindAndReplace.NoResults')}

- - -
-
- -
-
+
+
+
-
+ +
+ +
+
+ +
+
+

${i18n.t('CodemirrorFindAndReplace.NoResults')}

+ + +
+
+
diff --git a/translations/locales/en-US/translations.json b/translations/locales/en-US/translations.json index b1960f4eea..6a3505854a 100644 --- a/translations/locales/en-US/translations.json +++ b/translations/locales/en-US/translations.json @@ -50,6 +50,7 @@ } }, "CodemirrorFindAndReplace": { + "ToggleReplace": "Toggle Replace", "Find": "Find", "FindPlaceholder": "Find in files", "Replace": "Replace", diff --git a/translations/locales/es-419/translations.json b/translations/locales/es-419/translations.json index c579d97866..2c4d711eb6 100644 --- a/translations/locales/es-419/translations.json +++ b/translations/locales/es-419/translations.json @@ -50,6 +50,7 @@ } }, "CodemirrorFindAndReplace": { + "ToggleReplace": "Alternar reemplazar", "Find": "Buscar", "FindPlaceholder": "Buscar en archivos", "Replace": "Reemplazar", diff --git a/translations/locales/ja/translations.json b/translations/locales/ja/translations.json index a23dac941e..17ce4af396 100644 --- a/translations/locales/ja/translations.json +++ b/translations/locales/ja/translations.json @@ -50,6 +50,7 @@ } }, "CodemirrorFindAndReplace": { + "ToggleReplace": "置換の切り替え", "Find": "検索", "FindPlaceholder": "ファイル内検索", "Replace": "置換",