@@ -20,6 +20,10 @@ import 'ui/range_slider';
2020import windowModule from 'core/utils/window' ;
2121import Form from 'ui/form' ;
2222import TextEditorBase from 'ui/text_box/ui.text_editor.base.js' ;
23+ import {
24+ TEXTEDITOR_INPUT_CLASS
25+ } from '__internal/ui/text_box/m_text_editor.base' ;
26+
2327
2428import {
2529 FIELD_ITEM_CLASS ,
@@ -57,6 +61,7 @@ import themes from 'ui/themes';
5761import registerKeyHandlerTestHelper from '../../helpers/registerKeyHandlerTestHelper.js' ;
5862import responsiveBoxScreenMock from '../../helpers/responsiveBoxScreenMock.js' ;
5963import { isDefined } from 'core/utils/type.js' ;
64+ import { TABPANEL_CLASS } from '__internal/ui/tab_panel/m_tab_panel' ;
6065
6166const INVALID_CLASS = 'dx-invalid' ;
6267const FORM_GROUP_CONTENT_CLASS = 'dx-form-group-content' ;
@@ -95,9 +100,9 @@ if(device.current().deviceType === 'desktop') {
95100 } ) ;
96101}
97102
98- QUnit . testInActiveWindow ( 'Form\'s inputs saves value on refresh' , function ( assert ) {
103+ QUnit . testInActiveWindow ( 'Form\'s textbox input saves value on refresh (T404958) ' , function ( assert ) {
99104 let screen = 'md' ;
100- const $formContainer = $ ( '#form' ) . dxForm ( {
105+ const $form = $ ( '#form' ) . dxForm ( {
101106 screenByWidth : function ( ) {
102107 return screen ;
103108 } ,
@@ -113,17 +118,48 @@ QUnit.testInActiveWindow('Form\'s inputs saves value on refresh', function(asser
113118 ]
114119 } ) ;
115120
116- $ ( '# form input' )
121+ $form . find ( `. ${ TEXTEDITOR_INPUT_CLASS } ` )
117122 . first ( )
118123 . focus ( )
119124 . val ( 'test' ) ;
120125
121126 screen = 'sm' ;
122127 resizeCallbacks . fire ( ) ;
123128
124- const formData = $formContainer . dxForm ( 'instance' ) . option ( 'formData' ) ;
129+ const formData = $form . dxForm ( 'instance' ) . option ( 'formData' ) ;
125130
126- assert . deepEqual ( formData , { name : 'test' } , 'value updates' ) ;
131+ assert . deepEqual ( formData , { name : 'test' } , 'textbox value updates' ) ;
132+ } ) ;
133+
134+ QUnit . testInActiveWindow ( 'Form\'s textarea input saves value on refresh (T404958)' , function ( assert ) {
135+ let screen = 'md' ;
136+ const $form = $ ( '#form' ) . dxForm ( {
137+ screenByWidth : function ( ) {
138+ return screen ;
139+ } ,
140+ colCountByScreen : {
141+ sm : 1 ,
142+ md : 2
143+ } ,
144+ items : [
145+ {
146+ dataField : 'name' ,
147+ editorType : 'dxTextArea'
148+ }
149+ ]
150+ } ) ;
151+
152+ $form . find ( `.${ TEXTEDITOR_INPUT_CLASS } ` )
153+ . first ( )
154+ . focus ( )
155+ . val ( 'test' ) ;
156+
157+ screen = 'sm' ;
158+ resizeCallbacks . fire ( ) ;
159+
160+ const formData = $form . dxForm ( 'instance' ) . option ( 'formData' ) ;
161+
162+ assert . deepEqual ( formData , { name : 'test' } , 'textarea value updates' ) ;
127163} ) ;
128164
129165QUnit . test ( 'Check field width on render form with colspan' , function ( assert ) {
@@ -4916,39 +4952,124 @@ QUnit.module('reset', () => {
49164952 assert . strictEqual ( summaryItemsAfterValidate . length , 2 , 'form has validation summary after validation' ) ;
49174953 } ) ;
49184954
4919- QUnit . test ( 'DropDownBox should not lose its value if form resized (T1196835)' , function ( assert ) {
4920- let screen = 'lg' ;
4921-
4922- const value = 'VINET' ;
4923- const text = 'Vins et alcools Chevalier (France)' ;
4924- const $form = $ ( '#form' ) . dxForm ( {
4925- formData : { CustomerID : value } ,
4926- screenByWidth : function ( ) { return screen ; } ,
4927- colCountByScreen : {
4928- sm : 1 ,
4929- lg : 2
4930- } ,
4931- items : [
4932- {
4933- itemType : 'simple' ,
4934- cssClass : 'test-ddbox' ,
4935- dataField : 'CustomerID' ,
4936- editorOptions : {
4937- displayExpr : 'Text' ,
4938- valueExpr : 'Value' ,
4939- showClearButton : true ,
4940- dataSource : [ { Value : value , Text : text } ] ,
4955+ [
4956+ 'dxSelectBox' ,
4957+ 'dxDropDownBox'
4958+ ] . forEach ( ( editorType ) => {
4959+ QUnit . test ( `Focused ${ editorType } should not lose its value when the form is resized (T1196835)` , function ( assert ) {
4960+ let screen = 'lg' ;
4961+
4962+ const name = 'VINET' ;
4963+ const value = 'Vins et alcools Chevalier (France)' ;
4964+ const form = $ ( '#form' ) . dxForm ( {
4965+ formData : { name : name } ,
4966+ screenByWidth : function ( ) { return screen ; } ,
4967+ colCountByScreen : {
4968+ sm : 1 ,
4969+ lg : 2
4970+ } ,
4971+ items : [
4972+ {
4973+ itemType : 'simple' ,
4974+ dataField : 'name' ,
4975+ editorOptions : {
4976+ displayExpr : 'Text' ,
4977+ valueExpr : 'Value' ,
4978+ showClearButton : true ,
4979+ dataSource : [ { Value : name , Text : value } ] ,
4980+ } ,
4981+ editorType,
49414982 } ,
4942- editorType : 'dxDropDownBox' ,
4983+ ]
4984+ } ) . dxForm ( 'instance' ) ;
4985+
4986+ const dropDownEditor = form . getEditor ( 'name' ) ;
4987+
4988+ screen = 'sm' ;
4989+ dropDownEditor . focus ( ) ;
4990+ resizeCallbacks . fire ( ) ;
4991+
4992+ assert . strictEqual ( $ ( form . getEditor ( 'name' ) . field ( ) ) . val ( ) , value , `${ editorType } contains expected value` ) ;
4993+ } ) ;
4994+
4995+ QUnit . test ( `Focused ${ editorType } inside a tabbed item should not lose its value when the form is resized (T1196835)` , function ( assert ) {
4996+ let screen = 'lg' ;
4997+
4998+ const name = 'VINET' ;
4999+ const value = 'Vins et alcools Chevalier (France)' ;
5000+ const form = $ ( '#form' ) . dxForm ( {
5001+ formData : { name : name } ,
5002+ screenByWidth : function ( ) { return screen ; } ,
5003+ colCountByScreen : {
5004+ sm : 1 ,
5005+ lg : 2
49435006 } ,
4944- ]
5007+ items : [ {
5008+ itemType : 'tabbed' ,
5009+ tabs : [ {
5010+ title : 'Phone' ,
5011+ colCount : 1 ,
5012+ items : [ {
5013+ itemType : 'simple' ,
5014+ dataField : 'name' ,
5015+ editorOptions : {
5016+ displayExpr : 'Text' ,
5017+ valueExpr : 'Value' ,
5018+ showClearButton : true ,
5019+ dataSource : [ { Value : name , Text : value } ] ,
5020+ } ,
5021+ editorType,
5022+ } ] ,
5023+ } ] ,
5024+ } ] ,
5025+ } ) . dxForm ( 'instance' ) ;
5026+
5027+ const dropDownEditor = form . getEditor ( 'name' ) ;
5028+
5029+ screen = 'sm' ;
5030+ dropDownEditor . focus ( ) ;
5031+ resizeCallbacks . fire ( ) ;
5032+
5033+ assert . strictEqual ( $ ( form . getEditor ( 'name' ) . field ( ) ) . val ( ) , value , `${ editorType } contains expected value` ) ;
49455034 } ) ;
4946- const $input = $form . find ( `.test-ddbox .${ EDITOR_INPUT_CLASS } ` ) ;
49475035
4948- screen = 'sm' ;
4949- $input . focus ( ) ;
4950- resizeCallbacks . fire ( ) ;
5036+ QUnit . test ( `${ editorType } inside a tabbed item and focused tab should not lose its value when the form is resized (T1196835)` , function ( assert ) {
5037+ let screen = 'lg' ;
49515038
4952- assert . strictEqual ( $input . val ( ) , text , 'ddBox contain correct value' ) ;
5039+ const name = 'VINET' ;
5040+ const value = 'Vins et alcools Chevalier (France)' ;
5041+ const form = $ ( '#form' ) . dxForm ( {
5042+ formData : { name : name } ,
5043+ screenByWidth : function ( ) { return screen ; } ,
5044+ colCountByScreen : {
5045+ sm : 1 ,
5046+ lg : 2
5047+ } ,
5048+ items : [ {
5049+ itemType : 'tabbed' ,
5050+ tabs : [ {
5051+ title : 'Phone' ,
5052+ colCount : 1 ,
5053+ items : [ {
5054+ itemType : 'simple' ,
5055+ dataField : 'name' ,
5056+ editorOptions : {
5057+ displayExpr : 'Text' ,
5058+ valueExpr : 'Value' ,
5059+ showClearButton : true ,
5060+ dataSource : [ { Value : name , Text : value } ] ,
5061+ } ,
5062+ editorType,
5063+ } ] ,
5064+ } ] ,
5065+ } ] ,
5066+ } ) . dxForm ( 'instance' ) ;
5067+
5068+ screen = 'sm' ;
5069+ $ ( form . element ( ) ) . find ( `.${ TABPANEL_CLASS } ` ) . focus ( ) ;
5070+ resizeCallbacks . fire ( ) ;
5071+
5072+ assert . strictEqual ( $ ( form . getEditor ( 'name' ) . field ( ) ) . val ( ) , value , `${ editorType } contains expected value` ) ;
5073+ } ) ;
49535074 } ) ;
49545075} ) ;
0 commit comments