11import { expect } from '@vaadin/chai-plugins' ;
2- import { resetMouse , sendKeys , sendMouse , sendMouseToElement } from '@vaadin/test-runner-commands' ;
3- import { fixtureSync , nextRender } from '@vaadin/testing-helpers' ;
2+ import { resetMouse , sendKeys , sendMouse , sendMouseToElement , setViewport } from '@vaadin/test-runner-commands' ;
3+ import { click , fixtureSync , nextRender } from '@vaadin/testing-helpers' ;
44import '@vaadin/combo-box/src/vaadin-combo-box.js' ;
55import '@vaadin/custom-field/src/vaadin-custom-field.js' ;
66import '@vaadin/date-picker/src/vaadin-date-picker.js' ;
@@ -9,13 +9,13 @@ import '@vaadin/grid-pro/src/vaadin-grid-pro.js';
99import '@vaadin/grid-pro/src/vaadin-grid-pro-edit-column.js' ;
1010import '@vaadin/text-field/src/vaadin-text-field.js' ;
1111import '@vaadin/time-picker/src/vaadin-time-picker.js' ;
12- import { untilOverlayRendered } from '@vaadin/date-picker/test/helpers.js' ;
13- import { flushGrid , getContainerCell } from '@vaadin/grid-pro/test/helpers.js' ;
12+ import { untilOverlayRendered , untilOverlayScrolled } from '@vaadin/date-picker/test/helpers.js' ;
13+ import { dblclick , flushGrid , getContainerCell } from '@vaadin/grid-pro/test/helpers.js' ;
1414
1515describe ( 'grid-pro custom editor' , ( ) => {
1616 let grid , cell ;
1717
18- function createGrid ( path ) {
18+ function createGrid ( path , autoOpen = false ) {
1919 grid = fixtureSync ( `
2020 <vaadin-grid-pro>
2121 <vaadin-grid-pro-edit-column path="${ path } " editor-type="custom"></vaadin-grid-pro-edit-column>
@@ -37,7 +37,7 @@ describe('grid-pro custom editor', () => {
3737 case 'date' :
3838 column . editModeRenderer = ( root , _ , model ) => {
3939 root . innerHTML = `
40- <vaadin-date-picker value="${ model . item . date } " auto-open-disabled></vaadin-date-picker>
40+ <vaadin-date-picker value="${ model . item . date } " ${ ! autoOpen ? ' auto-open-disabled' : '' } ></vaadin-date-picker>
4141 ` ;
4242 } ;
4343 break ;
@@ -174,6 +174,63 @@ describe('grid-pro custom editor', () => {
174174 expect ( editor ) . to . be . ok ;
175175 expect ( editor . value ) . to . equal ( '1984-01-12' ) ;
176176 } ) ;
177+
178+ describe ( 'mobile' , ( ) => {
179+ let width , height ;
180+
181+ before ( ( ) => {
182+ width = window . innerWidth ;
183+ height = window . innerHeight ;
184+ } ) ;
185+
186+ beforeEach ( async ( ) => {
187+ await setViewport ( { width : 420 , height : 1020 } ) ;
188+ grid = createGrid ( 'date' , true ) ;
189+ await nextRender ( ) ;
190+ cell = getContainerCell ( grid . $ . items , 0 , 0 ) ;
191+ await sendMouse ( { type : 'click' , position : [ 10 , 10 ] } ) ;
192+ } ) ;
193+
194+ after ( async ( ) => {
195+ await setViewport ( { width, height } ) ;
196+ } ) ;
197+
198+ it ( 'should open date picker on double click' , async ( ) => {
199+ dblclick ( cell ) ;
200+ const datePicker = cell . _content . querySelector ( 'vaadin-date-picker' ) ;
201+ expect ( datePicker ) . to . be . ok ;
202+ await untilOverlayRendered ( datePicker ) ;
203+ expect ( datePicker . opened ) . to . be . ok ;
204+ } ) ;
205+
206+ it ( 'should close date picker on selecting a date in the overlay' , async ( ) => {
207+ dblclick ( cell ) ;
208+ const datePicker = cell . _content . querySelector ( 'vaadin-date-picker' ) ;
209+ await untilOverlayRendered ( datePicker ) ;
210+
211+ const todayButton = datePicker . _overlayElement . querySelector ( '[slot=today-button]' ) ;
212+ click ( todayButton ) ; // Fist click to scroll to current month
213+ await untilOverlayScrolled ( datePicker ) ;
214+ click ( todayButton ) ; // Second click to select today's date
215+
216+ await nextRender ( ) ;
217+ const TODAY_DATE = new Date ( ) . toISOString ( ) . split ( 'T' ) [ 0 ] ;
218+ expect ( TODAY_DATE ) . to . be . equal ( cell . _content . textContent ) ;
219+ } ) ;
220+
221+ it ( 'should restore previous cell content if overlay is closed' , async ( ) => {
222+ const previousContent = cell . _content . textContent ;
223+
224+ dblclick ( cell ) ;
225+ const datePicker = cell . _content . querySelector ( 'vaadin-date-picker' ) ;
226+ await untilOverlayRendered ( datePicker ) ;
227+
228+ sendMouse ( { type : 'click' , position : [ 10 , 10 ] } ) ;
229+ await nextRender ( ) ;
230+ expect ( cell . _content . querySelector ( 'vaadin-date-picker' ) ) . to . not . be . ok ;
231+ expect ( previousContent ) . to . be . equal ( cell . _content . textContent ) ;
232+ } ) ;
233+ } ) ;
177234 } ) ;
178235
179236 describe ( 'combo-box' , ( ) => {
0 commit comments