@@ -338,6 +338,28 @@ define(function (require, exports, module) {
338338 }
339339 }
340340
341+ /**
342+ * this function is responsible to handle tab key press in textarea to insert tab character instead of moving focus
343+ *
344+ * @param {Event } e - The keydown event
345+ * @param {HTMLElement } textarea - The textarea element
346+ */
347+ function handleTextareaTabKey ( e , textarea ) {
348+ // check if the key that is pressed is a tab key
349+ if ( e . keyCode === 9 || e . which === 9 ) {
350+ e . preventDefault ( ) ; // to prevent focus change
351+
352+ const start = textarea . selectionStart ;
353+ const end = textarea . selectionEnd ;
354+ const value = textarea . value ;
355+
356+ // to insert the tab character
357+ textarea . value = value . substring ( 0 , start ) + "\t" + value . substring ( end ) ;
358+ textarea . selectionStart = textarea . selectionEnd = start + 1 ;
359+ $ ( textarea ) . trigger ( 'input' ) ;
360+ }
361+ }
362+
341363 exports . toggleSaveButtonDisability = toggleSaveButtonDisability ;
342364 exports . createHintItem = createHintItem ;
343365 exports . clearAllInputFields = clearAllInputFields ;
@@ -355,4 +377,5 @@ define(function (require, exports, module) {
355377 exports . getEditSnippetData = getEditSnippetData ;
356378 exports . toggleEditSaveButtonDisability = toggleEditSaveButtonDisability ;
357379 exports . clearEditInputFields = clearEditInputFields ;
380+ exports . handleTextareaTabKey = handleTextareaTabKey ;
358381} ) ;
0 commit comments