From fede6050155edfbc356117f54a2fb30698ea8b2a Mon Sep 17 00:00:00 2001 From: Akhilbisht798 Date: Wed, 27 Sep 2023 21:14:01 +0530 Subject: [PATCH 1/3] added auto closing tags feature --- client/constants.js | 1 + client/modules/IDE/actions/preferences.js | 18 ++++++++++++++++++ client/modules/IDE/components/Editor/index.jsx | 3 +++ client/modules/IDE/reducers/preferences.js | 5 ++++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/client/constants.js b/client/constants.js index 565d716fa6..20b584b35a 100644 --- a/client/constants.js +++ b/client/constants.js @@ -73,6 +73,7 @@ export const SET_TEXT_OUTPUT = 'SET_TEXT_OUTPUT'; export const SET_GRID_OUTPUT = 'SET_GRID_OUTPUT'; export const SET_SOUND_OUTPUT = 'SET_SOUND_OUTPUT'; export const SET_AUTOCLOSE_BRACKETS_QUOTES = 'SET_AUTOCLOSE_BRACKETS_QUOTES'; +export const SET_AUTOCLOSE_TAGS = 'SET_AUTOCLOSE_TAGS'; export const SET_AUTOCOMPLETE_HINTER = 'SET_AUTOCOMPLETE_HINTER'; export const OPEN_PROJECT_OPTIONS = 'OPEN_PROJECT_OPTIONS'; diff --git a/client/modules/IDE/actions/preferences.js b/client/modules/IDE/actions/preferences.js index 700f676bdd..63180646a3 100644 --- a/client/modules/IDE/actions/preferences.js +++ b/client/modules/IDE/actions/preferences.js @@ -70,6 +70,24 @@ export function setAutocloseBracketsQuotes(value) { }; } +export function setAutocloseTags(value) { + return (dispatch, getState) => { + dispatch({ + type: ActionTypes.SET_AUTOCLOSE_TAGS, + value + }); + const state = getState(); + if (state.user.authenticated) { + const formParams = { + preferences: { + autoclosetags: value + } + }; + updatePreferences(formParams, dispatch); + } + }; +} + export function setAutocompleteHinter(value) { return (dispatch, getState) => { dispatch({ diff --git a/client/modules/IDE/components/Editor/index.jsx b/client/modules/IDE/components/Editor/index.jsx index 35e47248f8..4d38e3456a 100644 --- a/client/modules/IDE/components/Editor/index.jsx +++ b/client/modules/IDE/components/Editor/index.jsx @@ -33,6 +33,7 @@ import 'codemirror/addon/edit/matchbrackets'; import 'codemirror/addon/edit/closebrackets'; import 'codemirror/addon/selection/mark-selection'; import 'codemirror/addon/hint/css-hint'; +import 'codemirror/addon/edit/closetag'; import 'codemirror-colorpicker'; import { JSHINT } from 'jshint'; @@ -123,6 +124,7 @@ class Editor extends React.Component { autoRenameTags: true }, autoCloseBrackets: this.props.autocloseBracketsQuotes, + autoCloseTags: this.props.autoclosetags, styleSelectedText: true, lint: { onUpdateLinting: (annotations) => { @@ -588,6 +590,7 @@ class Editor extends React.Component { Editor.propTypes = { autocloseBracketsQuotes: PropTypes.bool.isRequired, + autoclosetags: PropTypes.bool.isRequired, autocompleteHinter: PropTypes.bool.isRequired, lineNumbers: PropTypes.bool.isRequired, lintWarning: PropTypes.bool.isRequired, diff --git a/client/modules/IDE/reducers/preferences.js b/client/modules/IDE/reducers/preferences.js index ed029620e1..778d85b2e6 100644 --- a/client/modules/IDE/reducers/preferences.js +++ b/client/modules/IDE/reducers/preferences.js @@ -12,7 +12,8 @@ const initialState = { autorefresh: false, language: 'en-US', autocloseBracketsQuotes: true, - autocompleteHinter: false + autocompleteHinter: false, + autoclosetags: true }; const preferences = (state = initialState, action) => { @@ -43,6 +44,8 @@ const preferences = (state = initialState, action) => { return Object.assign({}, state, { autocloseBracketsQuotes: action.value }); + case ActionTypes.SET_AUTOCLOSE_TAGS: + return Object.assign({}, state, { autoclosetags: action.value }); case ActionTypes.SET_AUTOCOMPLETE_HINTER: return Object.assign({}, state, { autocompleteHinter: action.value From 15d799ae048572da4e008bdace0cc5e503556f68 Mon Sep 17 00:00:00 2001 From: Akhilbisht798 Date: Wed, 27 Sep 2023 22:39:23 +0530 Subject: [PATCH 2/3] add ui for autoCloseTags in prefrence --- .../modules/IDE/components/Editor/index.jsx | 4 ++ .../IDE/components/Preferences/index.jsx | 48 ++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/client/modules/IDE/components/Editor/index.jsx b/client/modules/IDE/components/Editor/index.jsx index 4d38e3456a..59fdd2875a 100644 --- a/client/modules/IDE/components/Editor/index.jsx +++ b/client/modules/IDE/components/Editor/index.jsx @@ -266,6 +266,9 @@ class Editor extends React.Component { this.props.autocloseBracketsQuotes ); } + if (this.props.autoclosetags !== prevProps.autoclosetags) { + this._cm.setOption('autoCloseTags', this.props.autoclosetags); + } if (this.props.autocompleteHinter !== prevProps.autocompleteHinter) { if (!this.props.autocompleteHinter) { // close the hinter window once the preference is turned off @@ -498,6 +501,7 @@ class Editor extends React.Component { } render() { + console.log(this.props.autoclosetags); const editorSectionClass = classNames({ editor: true, 'sidebar--contracted': !this.props.isExpanded diff --git a/client/modules/IDE/components/Preferences/index.jsx b/client/modules/IDE/components/Preferences/index.jsx index fa5859400e..69c95fef7d 100644 --- a/client/modules/IDE/components/Preferences/index.jsx +++ b/client/modules/IDE/components/Preferences/index.jsx @@ -16,7 +16,8 @@ import { setLintWarning, setAutocloseBracketsQuotes, setAutocompleteHinter, - setLinewrap + setLinewrap, + setAutocloseTags } from '../../actions/preferences'; export default function Preferences() { @@ -34,7 +35,8 @@ export default function Preferences() { gridOutput, theme, autocloseBracketsQuotes, - autocompleteHinter + autocompleteHinter, + autoclosetags } = useSelector((state) => state.preferences); const [state, setState] = useState({ fontSize }); @@ -264,6 +266,48 @@ export default function Preferences() { + +
+

+ {/* {t('Preferences.AutocloseBracketsQuotes')} */} + Auto Close Tags +

+
+ dispatch(setAutocloseTags(true))} + aria-label={t('Preferences.AutocloseBracketsQuotesOnARIA')} + name="autoclosetagsquotes" + id="autoclosetagsquotes-on" + className="preference__radio-button" + value="On" + checked={autoclosetags} + /> + + dispatch(setAutocloseTags(false))} + aria-label={t('Preferences.AutocloseBracketsQuotesOffARIA')} + name="autoclosetagsquotes" + id="autoclosetagsquotes-off" + className="preference__radio-button" + value="Off" + checked={!autoclosetags} + /> + +
+
+

{t('Preferences.AutocompleteHinter')} From 8faed10c5efa019ed92cb6d6365c6a119d1c7c50 Mon Sep 17 00:00:00 2001 From: Akhilbisht798 Date: Thu, 28 Sep 2023 11:52:49 +0530 Subject: [PATCH 3/3] added translation for prefrence.AutocloseTags --- client/modules/IDE/components/Editor/index.jsx | 1 - client/modules/IDE/components/Preferences/index.jsx | 9 +++------ translations/locales/de/translations.json | 3 +++ translations/locales/en-US/translations.json | 3 +++ translations/locales/es-419/translations.json | 3 +++ translations/locales/fr-CA/translations.json | 3 +++ translations/locales/hi/translations.json | 3 +++ translations/locales/it/translations.json | 3 +++ translations/locales/ja/translations.json | 3 +++ translations/locales/ko/translations.json | 3 +++ translations/locales/pt-BR/translations.json | 3 +++ translations/locales/sv/translations.json | 3 +++ translations/locales/tr/translations.json | 3 +++ translations/locales/uk-UA/translations.json | 3 +++ translations/locales/zh-CN/translations.json | 3 +++ translations/locales/zh-TW/translations.json | 3 +++ 16 files changed, 45 insertions(+), 7 deletions(-) diff --git a/client/modules/IDE/components/Editor/index.jsx b/client/modules/IDE/components/Editor/index.jsx index 59fdd2875a..e528eed324 100644 --- a/client/modules/IDE/components/Editor/index.jsx +++ b/client/modules/IDE/components/Editor/index.jsx @@ -501,7 +501,6 @@ class Editor extends React.Component { } render() { - console.log(this.props.autoclosetags); const editorSectionClass = classNames({ editor: true, 'sidebar--contracted': !this.props.isExpanded diff --git a/client/modules/IDE/components/Preferences/index.jsx b/client/modules/IDE/components/Preferences/index.jsx index 69c95fef7d..8ec329e6a0 100644 --- a/client/modules/IDE/components/Preferences/index.jsx +++ b/client/modules/IDE/components/Preferences/index.jsx @@ -266,17 +266,15 @@ export default function Preferences() {

-

- {/* {t('Preferences.AutocloseBracketsQuotes')} */} - Auto Close Tags + {t('Preferences.AutocloseTags')}

dispatch(setAutocloseTags(true))} - aria-label={t('Preferences.AutocloseBracketsQuotesOnARIA')} + aria-label={t('Preferences.AutocloseTagsOnARIA')} name="autoclosetagsquotes" id="autoclosetagsquotes-on" className="preference__radio-button" @@ -292,7 +290,7 @@ export default function Preferences() { dispatch(setAutocloseTags(false))} - aria-label={t('Preferences.AutocloseBracketsQuotesOffARIA')} + aria-label={t('Preferences.AutocloseTagsOffARIA')} name="autoclosetagsquotes" id="autoclosetagsquotes-off" className="preference__radio-button" @@ -307,7 +305,6 @@ export default function Preferences() {
-

{t('Preferences.AutocompleteHinter')} diff --git a/translations/locales/de/translations.json b/translations/locales/de/translations.json index 071b45b0ed..975ff181fa 100644 --- a/translations/locales/de/translations.json +++ b/translations/locales/de/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "Klammern und Anführungszeichen automatisch schließen", "AutocloseBracketsQuotesOnARIA": "Klammern und Anführungszeichen automatisch schließen an", "AutocloseBracketsQuotesOffARIA": "Klammern und Anführungszeichen automatisch schließen aus", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Wortumbruch", "LineWrapOnARIA": "zeilenumbruch an", "LineWrapOffARIA": "zeilenumbruch aus", diff --git a/translations/locales/en-US/translations.json b/translations/locales/en-US/translations.json index 0d1b2979b3..e2b68ecbe7 100644 --- a/translations/locales/en-US/translations.json +++ b/translations/locales/en-US/translations.json @@ -155,6 +155,9 @@ "AutocloseBracketsQuotes": "Autoclose Brackets and Quotes", "AutocloseBracketsQuotesOnARIA": "autoclose brackets and quotes on", "AutocloseBracketsQuotesOffARIA": "autoclose brackets and quotes off", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "AutocompleteHinter": "Autocomplete Hinter", "AutocompleteHinterOnARIA": "autocomplete hinter on", "AutocompleteHinterOffARIA": "autocomplete hinter off", diff --git a/translations/locales/es-419/translations.json b/translations/locales/es-419/translations.json index 064d4fd74a..c1bbeb57fe 100644 --- a/translations/locales/es-419/translations.json +++ b/translations/locales/es-419/translations.json @@ -148,6 +148,9 @@ "AutocloseBracketsQuotes": "Cerrar automáticamente llaves y comillas", "AutocloseBracketsQuotesOnARIA": "Activar cierre automático de llaves y comillas", "AutocloseBracketsQuotesOffARIA": "Desactivar cierre automático de llaves y comillas", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "Off": "Desactivar", "AutosaveOffARIA": "Grabado automático desactivado", "WordWrap": "Ajuste automático de línea", diff --git a/translations/locales/fr-CA/translations.json b/translations/locales/fr-CA/translations.json index 2563820ba6..eb7894393c 100644 --- a/translations/locales/fr-CA/translations.json +++ b/translations/locales/fr-CA/translations.json @@ -151,6 +151,9 @@ "AutocloseBracketsQuotes": "Fermeture automatique des crochets et des guillemets", "AutocloseBracketsQuotesOnARIA": "fermeture automatique des crochets et des guillemets activée", "AutocloseBracketsQuotesOffARIA": "fermeture automatique des crochets et des guillemets désactivée", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Retour à la ligne automatique", "LineWrapOnARIA": "retour à la ligne automatique activé", "LineWrapOffARIA": "retour à la ligne automatique désactivé", diff --git a/translations/locales/hi/translations.json b/translations/locales/hi/translations.json index 55970b657a..f1b5c0481f 100644 --- a/translations/locales/hi/translations.json +++ b/translations/locales/hi/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "ऑटोक्लोज ब्रैकिट और क्वोट", "AutocloseBracketsQuotesOnARIA": "ऑटोक्लोज ब्रैकिट और क्वोट चालू", "AutocloseBracketsQuotesOffARIA": "ऑटोक्लोज ब्रैकिट और क्वोट बंद", + "AutocloseTags": "ऑटोक्लोज टैग", + "AutocloseTagsOnARIA": "ऑटोक्लोज टैग चालू", + "AutocloseTagsOffARIA": "ऑटोक्लोज टैग बंद", "WordWrap": "वर्ड रैप", "LineWrapOnARIA": "लाइनरैप चालू", "LineWrapOffARIA": "लाइनरैप बंद", diff --git a/translations/locales/it/translations.json b/translations/locales/it/translations.json index 2a0bd114b7..69e71de9e6 100644 --- a/translations/locales/it/translations.json +++ b/translations/locales/it/translations.json @@ -155,6 +155,9 @@ "AutocloseBracketsQuotes": "Auto-chiusura parentesi e virgolette", "AutocloseBracketsQuotesOnARIA": "Auto-chiusura parentesi e virgolette attivo", "AutocloseBracketsQuotesOffARIA": "Auto-chiusura parentesi e virgolette disabilitata", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Dividi parole", "LineWrapOnARIA": "dividi parole attivo", "LineWrapOffARIA": "dividi parole disabilitato", diff --git a/translations/locales/ja/translations.json b/translations/locales/ja/translations.json index ae7a03c817..882e494d0f 100644 --- a/translations/locales/ja/translations.json +++ b/translations/locales/ja/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "括弧を自動的に閉じる", "AutocloseBracketsQuotesOnARIA": "括弧を自動的に閉じる オン", "AutocloseBracketsQuotesOffARIA": "括弧を自動的に閉じる オフ", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "ワードラップ", "LineWrapOnARIA": "ラインラップ オン", "LineWrapOffARIA": "ラインラップ オフ", diff --git a/translations/locales/ko/translations.json b/translations/locales/ko/translations.json index b921b049ad..7df2017eb1 100644 --- a/translations/locales/ko/translations.json +++ b/translations/locales/ko/translations.json @@ -136,6 +136,9 @@ "AutocloseBracketsQuotes": "Autoclose Brackets and Quotes", "AutocloseBracketsQuotesOnARIA": "autoclose brackets and quotes on", "AutocloseBracketsQuotesOffARIA": "autoclose brackets and quotes off", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Word Wrap", "LineWrapOnARIA": "linewrap on", "LineWrapOffARIA": "linewrap off", diff --git a/translations/locales/pt-BR/translations.json b/translations/locales/pt-BR/translations.json index 58ab217f85..a637b4d2a3 100644 --- a/translations/locales/pt-BR/translations.json +++ b/translations/locales/pt-BR/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "Fechar automaticamente chaves e aspas", "AutocloseBracketsQuotesOnARIA": "fechar automaticamente chaves e aspas ativado", "AutocloseBracketsQuotesOffARIA": "fechar automaticamente chaves e aspas desativado", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Ajuste Automático de Linhas", "LineWrapOnARIA": "ajuste automático de linhas ativado", "LineWrapOffARIA": "ajuste automático de linhas desativado", diff --git a/translations/locales/sv/translations.json b/translations/locales/sv/translations.json index 245d3e6ac8..5776674254 100644 --- a/translations/locales/sv/translations.json +++ b/translations/locales/sv/translations.json @@ -153,6 +153,9 @@ "AutocloseBracketsQuotes": "Automatisk stängnging av parenteser och citattecken", "AutocloseBracketsQuotesOnARIA": "automatisk stängnging av parenteser och citattecken på", "AutocloseBracketsQuotesOffARIA": "automatisk stängnging av parenteser och citattecken av", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Radbrytning", "LineWrapOnARIA": "radbrytning på", "LineWrapOffARIA": "radbrytning av", diff --git a/translations/locales/tr/translations.json b/translations/locales/tr/translations.json index a5be5ece5b..c5d3ad45db 100644 --- a/translations/locales/tr/translations.json +++ b/translations/locales/tr/translations.json @@ -155,6 +155,9 @@ "AutocloseBracketsQuotes": "Parantez ve Tırnakları Otomatik Kapat", "AutocloseBracketsQuotesOnARIA": "parantez ve tırnakları otomatik kapatma açık", "AutocloseBracketsQuotesOffARIA": "parantez ve tırnakları otomatik kapatma kapalı", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Sözcük Kaydırma", "LineWrapOnARIA": "satır kaydırma açık", "LineWrapOffARIA": "satır kaydırma kapalı", diff --git a/translations/locales/uk-UA/translations.json b/translations/locales/uk-UA/translations.json index fa92ea25b4..16b44142f9 100644 --- a/translations/locales/uk-UA/translations.json +++ b/translations/locales/uk-UA/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "Автоматично закривати дужки та лапки", "AutocloseBracketsQuotesOnARIA": "автоматично закривати дужки та лапки", "AutocloseBracketsQuotesOffARIA": "автоматично закривати дужки та лапки", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "WordWrap": "Перенесення слів", "LineWrapOnARIA": "перенесення рядків увімкнено", "LineWrapOffARIA": "перенесення рядків вимкнено", diff --git a/translations/locales/zh-CN/translations.json b/translations/locales/zh-CN/translations.json index 509b1ff630..9ed63a6011 100644 --- a/translations/locales/zh-CN/translations.json +++ b/translations/locales/zh-CN/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "自动添加反括号和反引号", "AutocloseBracketsQuotesOnARIA": "打开自动添加反括号和反引号", "AutocloseBracketsQuotesOffARIA": "关闭自动添加反括号和反引号", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "AutocompleteHinter": "补全提示", "AutocompleteHinterOnARIA": "打开补全提示", "AutocompleteHinterOffARIA": "关闭补全提示", diff --git a/translations/locales/zh-TW/translations.json b/translations/locales/zh-TW/translations.json index a5318be06f..a5127555eb 100644 --- a/translations/locales/zh-TW/translations.json +++ b/translations/locales/zh-TW/translations.json @@ -150,6 +150,9 @@ "AutocloseBracketsQuotes": "自動加上括號與引號", "AutocloseBracketsQuotesOnARIA": "自動加上括號與引號", "AutocloseBracketsQuotesOffARIA": "不自動加上括號與引號", + "AutocloseTags": "Autoclose Tags", + "AutocloseTagsOnARIA": "autoclose tags on", + "AutocloseTagsOffARIA": "autoclose tags off", "AutocompleteHinter": "補全提示", "AutocompleteHinterOnARIA": "加上補全提示", "AutocompleteHinterOffARIA": "不加上補全提示",