@ionic/core 8.8.18-dev.11786385944.17aca7e5 → 8.8.18-dev.11786399582.1d58c37d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/p-DRxvM2Ic.js +4 -0
- package/components/{p-BMaKgJFV.js → p-gYiraiT_.js} +1 -1
- package/components/p-yEQxMl70.js +4 -0
- package/dist/cjs/{animation-BJq0kcy2.js → animation-Ch16T-Nb.js} +1 -1
- package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-Dd89e0MR.js} +1 -1
- package/dist/cjs/{button-active-0mPOKmV2.js → button-active-COnxOe4X.js} +1 -1
- package/dist/cjs/{config-xninhj0J.js → config-D6C-KlA9.js} +1 -1
- package/dist/cjs/{format-PxvGiOik.js → format-BUFWn4Bn.js} +1 -1
- package/dist/cjs/{framework-delegate-BtICZDHr.js → framework-delegate-BgU6U9Ez.js} +1 -1
- package/dist/cjs/{hardware-back-button-iUuF_76h.js → hardware-back-button-CXmUnTJC.js} +1 -1
- package/dist/cjs/{helpers-Cv23MFHM.js → helpers-gntk8bfm.js} +1 -1
- package/dist/cjs/{index-BERfRao3.js → index-BS2uhvhT.js} +4 -4
- package/dist/cjs/{index-Ct7gcRif.js → index-BfaXsATC.js} +237 -2
- package/dist/cjs/{index-D81eLYUM.js → index-BhhuJ1Yx.js} +2 -2
- package/dist/cjs/{index-Dqpns5vP.js → index-BiRrzGDi.js} +2 -2
- package/dist/cjs/{index-aC4x3Fk3.js → index-ooS8B4p9.js} +5 -5
- package/dist/cjs/index.cjs.js +12 -12
- package/dist/cjs/{input-shims-DpA1zUN9.js → input-shims-Bn1cXfCM.js} +3 -3
- package/dist/cjs/{input.utils-DetjmtH2.js → input.utils-BwhxZooW.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
- package/dist/cjs/ion-alert.cjs.entry.js +9 -9
- package/dist/cjs/ion-app_8.cjs.entry.js +65 -15
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +15 -12
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +8 -8
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +59 -19
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-column.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +8 -8
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-select_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +8 -8
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
- package/dist/cjs/{ionic-global-B-cA6LkY.js → ionic-global-BerQGEpE.js} +1 -1
- package/dist/cjs/ionic.cjs.js +4 -4
- package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-IMJRwn29.js} +4 -4
- package/dist/cjs/{item-multiple-inputs-D-gyg57c.js → item-multiple-inputs-jOJZE_I0.js} +1 -1
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-B8-wBZqt.js → md.transition-CgQZxcoT.js} +4 -4
- package/dist/cjs/{notch-controller-18PzRGXd.js → notch-controller-_SwR025y.js} +1 -1
- package/dist/cjs/{overlays-DdtIYQUH.js → overlays-DuSEMhIW.js} +5 -5
- package/dist/cjs/{status-tap-N1kaBbuk.js → status-tap-CSvBT7FV.js} +3 -3
- package/dist/cjs/{swipe-back-C0GCB18x.js → swipe-back-CuIiziaa.js} +2 -2
- package/dist/collection/components/content/content.js +55 -4
- package/dist/collection/components/datetime/datetime.js +8 -5
- package/dist/collection/components/modal/modal.js +16 -11
- package/dist/collection/components/modal/safe-area-utils.js +35 -0
- package/dist/docs.json +2 -2
- package/dist/esm/index-tcQvqkiX.js +218 -1
- package/dist/esm/ion-app_8.entry.js +54 -4
- package/dist/esm/ion-datetime_3.entry.js +7 -4
- package/dist/esm/ion-modal.entry.js +50 -10
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/html.html-data.json +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-5e2f73ee.entry.js +4 -0
- package/dist/ionic/p-9fa3c405.entry.js +4 -0
- package/dist/ionic/p-ea56626d.entry.js +4 -0
- package/dist/types/components/content/content.d.ts +12 -0
- package/dist/types/components/datetime/datetime.d.ts +5 -1
- package/dist/types/components/modal/modal.d.ts +5 -3
- package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
- package/dist/types/components.d.ts +2 -2
- package/hydrate/index.js +93 -17
- package/hydrate/index.mjs +93 -17
- package/package.json +3 -2
- package/components/p-BvmB20aD.js +0 -4
- package/components/p-scxfI1Dd.js +0 -4
- package/dist/ionic/p-15c9319c.entry.js +0 -4
- package/dist/ionic/p-5018dfc8.entry.js +0 -4
- package/dist/ionic/p-d1aac015.entry.js +0 -4
|
@@ -250,7 +250,224 @@ var loadModule = (cmpMeta, hostRef, hmrVersionId) => {
|
|
|
250
250
|
if (module) {
|
|
251
251
|
return module[exportName];
|
|
252
252
|
}
|
|
253
|
-
|
|
253
|
+
|
|
254
|
+
if (!hmrVersionId || !BUILD.hotModuleReplacement) {
|
|
255
|
+
const processMod = importedModule => {
|
|
256
|
+
cmpModules.set(bundleId, importedModule);
|
|
257
|
+
return importedModule[exportName];
|
|
258
|
+
}
|
|
259
|
+
switch(bundleId) {
|
|
260
|
+
|
|
261
|
+
case 'ion-action-sheet':
|
|
262
|
+
return import(
|
|
263
|
+
/* webpackMode: "lazy" */
|
|
264
|
+
'./ion-action-sheet.entry.js').then(processMod, consoleError);
|
|
265
|
+
case 'ion-alert':
|
|
266
|
+
return import(
|
|
267
|
+
/* webpackMode: "lazy" */
|
|
268
|
+
'./ion-alert.entry.js').then(processMod, consoleError);
|
|
269
|
+
case 'ion-back-button':
|
|
270
|
+
return import(
|
|
271
|
+
/* webpackMode: "lazy" */
|
|
272
|
+
'./ion-back-button.entry.js').then(processMod, consoleError);
|
|
273
|
+
case 'ion-backdrop':
|
|
274
|
+
return import(
|
|
275
|
+
/* webpackMode: "lazy" */
|
|
276
|
+
'./ion-backdrop.entry.js').then(processMod, consoleError);
|
|
277
|
+
case 'ion-checkbox':
|
|
278
|
+
return import(
|
|
279
|
+
/* webpackMode: "lazy" */
|
|
280
|
+
'./ion-checkbox.entry.js').then(processMod, consoleError);
|
|
281
|
+
case 'ion-chip':
|
|
282
|
+
return import(
|
|
283
|
+
/* webpackMode: "lazy" */
|
|
284
|
+
'./ion-chip.entry.js').then(processMod, consoleError);
|
|
285
|
+
case 'ion-input':
|
|
286
|
+
return import(
|
|
287
|
+
/* webpackMode: "lazy" */
|
|
288
|
+
'./ion-input.entry.js').then(processMod, consoleError);
|
|
289
|
+
case 'ion-textarea':
|
|
290
|
+
return import(
|
|
291
|
+
/* webpackMode: "lazy" */
|
|
292
|
+
'./ion-textarea.entry.js').then(processMod, consoleError);
|
|
293
|
+
case 'ion-loading':
|
|
294
|
+
return import(
|
|
295
|
+
/* webpackMode: "lazy" */
|
|
296
|
+
'./ion-loading.entry.js').then(processMod, consoleError);
|
|
297
|
+
case 'ion-modal':
|
|
298
|
+
return import(
|
|
299
|
+
/* webpackMode: "lazy" */
|
|
300
|
+
'./ion-modal.entry.js').then(processMod, consoleError);
|
|
301
|
+
case 'ion-img':
|
|
302
|
+
return import(
|
|
303
|
+
/* webpackMode: "lazy" */
|
|
304
|
+
'./ion-img.entry.js').then(processMod, consoleError);
|
|
305
|
+
case 'ion-popover':
|
|
306
|
+
return import(
|
|
307
|
+
/* webpackMode: "lazy" */
|
|
308
|
+
'./ion-popover.entry.js').then(processMod, consoleError);
|
|
309
|
+
case 'ion-progress-bar':
|
|
310
|
+
return import(
|
|
311
|
+
/* webpackMode: "lazy" */
|
|
312
|
+
'./ion-progress-bar.entry.js').then(processMod, consoleError);
|
|
313
|
+
case 'ion-range':
|
|
314
|
+
return import(
|
|
315
|
+
/* webpackMode: "lazy" */
|
|
316
|
+
'./ion-range.entry.js').then(processMod, consoleError);
|
|
317
|
+
case 'ion-ripple-effect':
|
|
318
|
+
return import(
|
|
319
|
+
/* webpackMode: "lazy" */
|
|
320
|
+
'./ion-ripple-effect.entry.js').then(processMod, consoleError);
|
|
321
|
+
case 'ion-searchbar':
|
|
322
|
+
return import(
|
|
323
|
+
/* webpackMode: "lazy" */
|
|
324
|
+
'./ion-searchbar.entry.js').then(processMod, consoleError);
|
|
325
|
+
case 'ion-spinner':
|
|
326
|
+
return import(
|
|
327
|
+
/* webpackMode: "lazy" */
|
|
328
|
+
'./ion-spinner.entry.js').then(processMod, consoleError);
|
|
329
|
+
case 'ion-split-pane':
|
|
330
|
+
return import(
|
|
331
|
+
/* webpackMode: "lazy" */
|
|
332
|
+
'./ion-split-pane.entry.js').then(processMod, consoleError);
|
|
333
|
+
case 'ion-text':
|
|
334
|
+
return import(
|
|
335
|
+
/* webpackMode: "lazy" */
|
|
336
|
+
'./ion-text.entry.js').then(processMod, consoleError);
|
|
337
|
+
case 'ion-toast':
|
|
338
|
+
return import(
|
|
339
|
+
/* webpackMode: "lazy" */
|
|
340
|
+
'./ion-toast.entry.js').then(processMod, consoleError);
|
|
341
|
+
case 'ion-toggle':
|
|
342
|
+
return import(
|
|
343
|
+
/* webpackMode: "lazy" */
|
|
344
|
+
'./ion-toggle.entry.js').then(processMod, consoleError);
|
|
345
|
+
case 'ion-button_2':
|
|
346
|
+
return import(
|
|
347
|
+
/* webpackMode: "lazy" */
|
|
348
|
+
'./ion-button_2.entry.js').then(processMod, consoleError);
|
|
349
|
+
case 'ion-infinite-scroll_2':
|
|
350
|
+
return import(
|
|
351
|
+
/* webpackMode: "lazy" */
|
|
352
|
+
'./ion-infinite-scroll_2.entry.js').then(processMod, consoleError);
|
|
353
|
+
case 'ion-nav_2':
|
|
354
|
+
return import(
|
|
355
|
+
/* webpackMode: "lazy" */
|
|
356
|
+
'./ion-nav_2.entry.js').then(processMod, consoleError);
|
|
357
|
+
case 'ion-radio_2':
|
|
358
|
+
return import(
|
|
359
|
+
/* webpackMode: "lazy" */
|
|
360
|
+
'./ion-radio_2.entry.js').then(processMod, consoleError);
|
|
361
|
+
case 'ion-refresher_2':
|
|
362
|
+
return import(
|
|
363
|
+
/* webpackMode: "lazy" */
|
|
364
|
+
'./ion-refresher_2.entry.js').then(processMod, consoleError);
|
|
365
|
+
case 'ion-reorder_2':
|
|
366
|
+
return import(
|
|
367
|
+
/* webpackMode: "lazy" */
|
|
368
|
+
'./ion-reorder_2.entry.js').then(processMod, consoleError);
|
|
369
|
+
case 'ion-segment_2':
|
|
370
|
+
return import(
|
|
371
|
+
/* webpackMode: "lazy" */
|
|
372
|
+
'./ion-segment_2.entry.js').then(processMod, consoleError);
|
|
373
|
+
case 'ion-tab_2':
|
|
374
|
+
return import(
|
|
375
|
+
/* webpackMode: "lazy" */
|
|
376
|
+
'./ion-tab_2.entry.js').then(processMod, consoleError);
|
|
377
|
+
case 'ion-tab-bar_2':
|
|
378
|
+
return import(
|
|
379
|
+
/* webpackMode: "lazy" */
|
|
380
|
+
'./ion-tab-bar_2.entry.js').then(processMod, consoleError);
|
|
381
|
+
case 'ion-accordion_2':
|
|
382
|
+
return import(
|
|
383
|
+
/* webpackMode: "lazy" */
|
|
384
|
+
'./ion-accordion_2.entry.js').then(processMod, consoleError);
|
|
385
|
+
case 'ion-breadcrumb_2':
|
|
386
|
+
return import(
|
|
387
|
+
/* webpackMode: "lazy" */
|
|
388
|
+
'./ion-breadcrumb_2.entry.js').then(processMod, consoleError);
|
|
389
|
+
case 'ion-avatar_3':
|
|
390
|
+
return import(
|
|
391
|
+
/* webpackMode: "lazy" */
|
|
392
|
+
'./ion-avatar_3.entry.js').then(processMod, consoleError);
|
|
393
|
+
case 'ion-datetime_3':
|
|
394
|
+
return import(
|
|
395
|
+
/* webpackMode: "lazy" */
|
|
396
|
+
'./ion-datetime_3.entry.js').then(processMod, consoleError);
|
|
397
|
+
case 'ion-fab_3':
|
|
398
|
+
return import(
|
|
399
|
+
/* webpackMode: "lazy" */
|
|
400
|
+
'./ion-fab_3.entry.js').then(processMod, consoleError);
|
|
401
|
+
case 'ion-col_3':
|
|
402
|
+
return import(
|
|
403
|
+
/* webpackMode: "lazy" */
|
|
404
|
+
'./ion-col_3.entry.js').then(processMod, consoleError);
|
|
405
|
+
case 'ion-item-option_3':
|
|
406
|
+
return import(
|
|
407
|
+
/* webpackMode: "lazy" */
|
|
408
|
+
'./ion-item-option_3.entry.js').then(processMod, consoleError);
|
|
409
|
+
case 'ion-menu_3':
|
|
410
|
+
return import(
|
|
411
|
+
/* webpackMode: "lazy" */
|
|
412
|
+
'./ion-menu_3.entry.js').then(processMod, consoleError);
|
|
413
|
+
case 'ion-select_3':
|
|
414
|
+
return import(
|
|
415
|
+
/* webpackMode: "lazy" */
|
|
416
|
+
'./ion-select_3.entry.js').then(processMod, consoleError);
|
|
417
|
+
case 'ion-route_4':
|
|
418
|
+
return import(
|
|
419
|
+
/* webpackMode: "lazy" */
|
|
420
|
+
'./ion-route_4.entry.js').then(processMod, consoleError);
|
|
421
|
+
case 'ion-card_5':
|
|
422
|
+
return import(
|
|
423
|
+
/* webpackMode: "lazy" */
|
|
424
|
+
'./ion-card_5.entry.js').then(processMod, consoleError);
|
|
425
|
+
case 'ion-app_8':
|
|
426
|
+
return import(
|
|
427
|
+
/* webpackMode: "lazy" */
|
|
428
|
+
'./ion-app_8.entry.js').then(processMod, consoleError);
|
|
429
|
+
case 'ion-item_8':
|
|
430
|
+
return import(
|
|
431
|
+
/* webpackMode: "lazy" */
|
|
432
|
+
'./ion-item_8.entry.js').then(processMod, consoleError);
|
|
433
|
+
case 'ion-datetime-button':
|
|
434
|
+
return import(
|
|
435
|
+
/* webpackMode: "lazy" */
|
|
436
|
+
'./ion-datetime-button.entry.js').then(processMod, consoleError);
|
|
437
|
+
case 'ion-input-otp':
|
|
438
|
+
return import(
|
|
439
|
+
/* webpackMode: "lazy" */
|
|
440
|
+
'./ion-input-otp.entry.js').then(processMod, consoleError);
|
|
441
|
+
case 'ion-input-password-toggle':
|
|
442
|
+
return import(
|
|
443
|
+
/* webpackMode: "lazy" */
|
|
444
|
+
'./ion-input-password-toggle.entry.js').then(processMod, consoleError);
|
|
445
|
+
case 'ion-segment-content':
|
|
446
|
+
return import(
|
|
447
|
+
/* webpackMode: "lazy" */
|
|
448
|
+
'./ion-segment-content.entry.js').then(processMod, consoleError);
|
|
449
|
+
case 'ion-segment-view':
|
|
450
|
+
return import(
|
|
451
|
+
/* webpackMode: "lazy" */
|
|
452
|
+
'./ion-segment-view.entry.js').then(processMod, consoleError);
|
|
453
|
+
case 'ion-picker':
|
|
454
|
+
return import(
|
|
455
|
+
/* webpackMode: "lazy" */
|
|
456
|
+
'./ion-picker.entry.js').then(processMod, consoleError);
|
|
457
|
+
case 'ion-picker-column':
|
|
458
|
+
return import(
|
|
459
|
+
/* webpackMode: "lazy" */
|
|
460
|
+
'./ion-picker-column.entry.js').then(processMod, consoleError);
|
|
461
|
+
case 'ion-picker-column-option':
|
|
462
|
+
return import(
|
|
463
|
+
/* webpackMode: "lazy" */
|
|
464
|
+
'./ion-picker-column-option.entry.js').then(processMod, consoleError);
|
|
465
|
+
case 'ion-select-modal':
|
|
466
|
+
return import(
|
|
467
|
+
/* webpackMode: "lazy" */
|
|
468
|
+
'./ion-select-modal.entry.js').then(processMod, consoleError);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
254
471
|
return import(
|
|
255
472
|
/* @vite-ignore */
|
|
256
473
|
/* webpackInclude: /\.entry\.js$/ */
|
|
@@ -6,7 +6,7 @@ import { shouldUseCloseWatcher } from './hardware-back-button-B93Gru0Y.js';
|
|
|
6
6
|
import { a as isPlatform, b as getIonMode } from './ionic-global-Cp_eT4sZ.js';
|
|
7
7
|
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-HEqiOzXb.js';
|
|
8
8
|
import { i as isRTL } from './dir-C53feagD.js';
|
|
9
|
-
import {
|
|
9
|
+
import { h as hostContext, c as createColorClasses } from './theme-DiVJyqlX.js';
|
|
10
10
|
import { b as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-Dw-wN0Ja.js';
|
|
11
11
|
import { c as createKeyboardController } from './keyboard-controller-BaaVITYt.js';
|
|
12
12
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
@@ -224,6 +224,9 @@ const Content = class {
|
|
|
224
224
|
*/
|
|
225
225
|
this.scrollEvents = false;
|
|
226
226
|
}
|
|
227
|
+
fullscreenChanged() {
|
|
228
|
+
this.setupFullscreenResizeObserver();
|
|
229
|
+
}
|
|
227
230
|
componentWillLoad() {
|
|
228
231
|
this.inheritedAttributes = inheritAriaAttributes(this.el);
|
|
229
232
|
}
|
|
@@ -263,6 +266,12 @@ const Content = class {
|
|
|
263
266
|
closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
|
|
264
267
|
}
|
|
265
268
|
}
|
|
269
|
+
// Re-observe on reattach, since componentDidLoad only fires once.
|
|
270
|
+
this.setupFullscreenResizeObserver();
|
|
271
|
+
}
|
|
272
|
+
componentDidLoad() {
|
|
273
|
+
// The custom elements build assigns fullscreen after connectedCallback.
|
|
274
|
+
this.setupFullscreenResizeObserver();
|
|
266
275
|
}
|
|
267
276
|
disconnectedCallback() {
|
|
268
277
|
this.onScrollEnd();
|
|
@@ -284,6 +293,42 @@ const Content = class {
|
|
|
284
293
|
clearTimeout(this.resizeTimeout);
|
|
285
294
|
this.resizeTimeout = null;
|
|
286
295
|
}
|
|
296
|
+
this.destroyFullscreenResizeObserver();
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Header and footer sizes can change after load without a window resize
|
|
300
|
+
* firing, so the `resize` listener alone misses those changes.
|
|
301
|
+
*
|
|
302
|
+
* Popover content is excluded because `contain: none` lets its offsets drive
|
|
303
|
+
* the host's own height, which would feed back into the observer.
|
|
304
|
+
*/
|
|
305
|
+
setupFullscreenResizeObserver() {
|
|
306
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
if (!this.fullscreen || hostContext('ion-popover', this.el)) {
|
|
310
|
+
this.destroyFullscreenResizeObserver();
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
this.fullscreenResizeObserver = new ResizeObserver(() => {
|
|
317
|
+
// A hidden page reports a 0x0 box, which would zero the offsets. Same
|
|
318
|
+
// reasoning as the guard in onResize, minus its debounce so the
|
|
319
|
+
// correction lands in the next frame instead of 100ms later.
|
|
320
|
+
if (this.el.offsetParent === null) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
this.resize();
|
|
324
|
+
});
|
|
325
|
+
this.fullscreenResizeObserver.observe(this.el);
|
|
326
|
+
}
|
|
327
|
+
destroyFullscreenResizeObserver() {
|
|
328
|
+
if (this.fullscreenResizeObserver !== undefined) {
|
|
329
|
+
this.fullscreenResizeObserver.disconnect();
|
|
330
|
+
this.fullscreenResizeObserver = undefined;
|
|
331
|
+
}
|
|
287
332
|
}
|
|
288
333
|
/**
|
|
289
334
|
* Rotating certain devices can update
|
|
@@ -522,7 +567,7 @@ const Content = class {
|
|
|
522
567
|
const forceOverscroll = this.shouldForceOverscroll();
|
|
523
568
|
const transitionShadow = mode === 'ios';
|
|
524
569
|
this.resize();
|
|
525
|
-
return (h(Host, Object.assign({ key: '
|
|
570
|
+
return (h(Host, Object.assign({ key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
|
|
526
571
|
[mode]: true,
|
|
527
572
|
'content-fullscreen': this.fullscreen,
|
|
528
573
|
'content-sizing': hostContext('ion-popover', this.el),
|
|
@@ -531,14 +576,19 @@ const Content = class {
|
|
|
531
576
|
}), style: {
|
|
532
577
|
'--offset-top': `${this.cTop}px`,
|
|
533
578
|
'--offset-bottom': `${this.cBottom}px`,
|
|
534
|
-
} }, inheritedAttributes), h("div", { key: '
|
|
579
|
+
} }, inheritedAttributes), h("div", { key: 'c6de8fd226f0d10a534eb107fe032ac155fbe68e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '082fc2936061360060b48221ecb1c864a3711fa0', class: {
|
|
535
580
|
'inner-scroll': true,
|
|
536
581
|
'scroll-x': scrollX,
|
|
537
582
|
'scroll-y': scrollY,
|
|
538
583
|
overscroll: (scrollX || scrollY) && forceOverscroll,
|
|
539
|
-
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '
|
|
584
|
+
}, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '0d2286206facb22696a9ca7e74a3f6b7d2397aab' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
|
|
540
585
|
}
|
|
541
586
|
get el() { return getElement(this); }
|
|
587
|
+
static get watchers() { return {
|
|
588
|
+
"fullscreen": [{
|
|
589
|
+
"fullscreenChanged": 0
|
|
590
|
+
}]
|
|
591
|
+
}; }
|
|
542
592
|
};
|
|
543
593
|
const getParentElement = (el) => {
|
|
544
594
|
var _a;
|
|
@@ -771,6 +771,10 @@ const Datetime = class {
|
|
|
771
771
|
* Set true only by `visibleCallback`. Lets `hiddenCallback` ignore the
|
|
772
772
|
* synthetic "not intersecting" entry IntersectionObserver fires on
|
|
773
773
|
* `observe()` when the host mounts offscreen.
|
|
774
|
+
*
|
|
775
|
+
* Don't reset this in `disconnectedCallback`. Overlays disconnect and
|
|
776
|
+
* reconnect the host without re-creating the observers, so a reset there
|
|
777
|
+
* makes `hiddenCallback` miss the dismissal.
|
|
774
778
|
*/
|
|
775
779
|
this.hasBeenIntersecting = false;
|
|
776
780
|
this.prevPresentation = null;
|
|
@@ -789,7 +793,7 @@ const Datetime = class {
|
|
|
789
793
|
/**
|
|
790
794
|
* The color to use from your application's color palette.
|
|
791
795
|
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
792
|
-
* For more information on colors,
|
|
796
|
+
* For more information on colors, refer to [theming](/docs/theming/basics).
|
|
793
797
|
*/
|
|
794
798
|
this.color = 'primary';
|
|
795
799
|
/**
|
|
@@ -1654,7 +1658,6 @@ const Datetime = class {
|
|
|
1654
1658
|
this.clearFocusVisible = undefined;
|
|
1655
1659
|
}
|
|
1656
1660
|
this.loadTimeoutCleanup();
|
|
1657
|
-
this.hasBeenIntersecting = false;
|
|
1658
1661
|
}
|
|
1659
1662
|
initializeListeners() {
|
|
1660
1663
|
this.initializeCalendarListener();
|
|
@@ -2465,7 +2468,7 @@ const Datetime = class {
|
|
|
2465
2468
|
const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
|
|
2466
2469
|
const hasWheelVariant = hasDatePresentation && preferWheel;
|
|
2467
2470
|
renderHiddenInput(true, el, name, formatValue(value), disabled);
|
|
2468
|
-
return (h(Host, { key: '
|
|
2471
|
+
return (h(Host, { key: '48555ab73ae3f22b56d15e83ff5e29b854ccc2ef', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses(color, {
|
|
2469
2472
|
[mode]: true,
|
|
2470
2473
|
['datetime-readonly']: readonly,
|
|
2471
2474
|
['datetime-disabled']: disabled,
|
|
@@ -2475,7 +2478,7 @@ const Datetime = class {
|
|
|
2475
2478
|
[`datetime-size-${size}`]: true,
|
|
2476
2479
|
[`datetime-prefer-wheel`]: hasWheelVariant,
|
|
2477
2480
|
[`datetime-grid`]: isGridStyle,
|
|
2478
|
-
})) }, h("div", { key: '
|
|
2481
|
+
})) }, h("div", { key: 'd09134c540f93a8cc92cdf41ad5d3623632d144f', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
|
|
2479
2482
|
}
|
|
2480
2483
|
get el() { return getElement(this); }
|
|
2481
2484
|
static get watchers() { return {
|
|
@@ -1695,6 +1695,41 @@ const getRootSafeAreaTop = () => {
|
|
|
1695
1695
|
}
|
|
1696
1696
|
return value;
|
|
1697
1697
|
};
|
|
1698
|
+
/**
|
|
1699
|
+
* Calls back when the resolved root `--ion-safe-area-top` changes, which no
|
|
1700
|
+
* event and no window resize covers. The probe's height tracks the variable, so
|
|
1701
|
+
* a change to it becomes a size change the observer can see.
|
|
1702
|
+
*/
|
|
1703
|
+
const onRootSafeAreaTopChange = (callback) => {
|
|
1704
|
+
const doc = win === null || win === void 0 ? void 0 : win.document;
|
|
1705
|
+
if (!(doc === null || doc === void 0 ? void 0 : doc.body) || typeof ResizeObserver === 'undefined') {
|
|
1706
|
+
return () => undefined;
|
|
1707
|
+
}
|
|
1708
|
+
const probe = doc.createElement('div');
|
|
1709
|
+
probe.style.cssText =
|
|
1710
|
+
'position:fixed;visibility:hidden;pointer-events:none;top:0;left:0;width:0;' +
|
|
1711
|
+
'height:var(--ion-safe-area-top,0px);';
|
|
1712
|
+
doc.body.appendChild(probe);
|
|
1713
|
+
/**
|
|
1714
|
+
* Seeded with the value the caller has already applied, so a change that
|
|
1715
|
+
* lands before the observer's first delivery still gets reported. Comparing
|
|
1716
|
+
* against an unset value instead would consume that first delivery and treat
|
|
1717
|
+
* the new inset as the baseline.
|
|
1718
|
+
*/
|
|
1719
|
+
let lastHeight = getRootSafeAreaTop();
|
|
1720
|
+
const observer = new ResizeObserver((entries) => {
|
|
1721
|
+
const { height } = entries[0].contentRect;
|
|
1722
|
+
if (height !== lastHeight) {
|
|
1723
|
+
lastHeight = height;
|
|
1724
|
+
callback(height);
|
|
1725
|
+
}
|
|
1726
|
+
});
|
|
1727
|
+
observer.observe(probe);
|
|
1728
|
+
return () => {
|
|
1729
|
+
observer.disconnect();
|
|
1730
|
+
probe.remove();
|
|
1731
|
+
};
|
|
1732
|
+
};
|
|
1698
1733
|
/**
|
|
1699
1734
|
* True when the modal host declares BOTH a non-fullscreen `--width` AND a
|
|
1700
1735
|
* non-fullscreen `--height` (i.e. a centered-dialog-like modal that doesn't
|
|
@@ -2847,16 +2882,18 @@ const Modal = class {
|
|
|
2847
2882
|
// Set the internal offset property with the resolved root safe-area-top value
|
|
2848
2883
|
if (context.isSheetModal) {
|
|
2849
2884
|
this.updateSheetOffsetTop();
|
|
2885
|
+
this.unsubscribeRootSafeAreaTop = onRootSafeAreaTopChange((safeAreaTop) => this.updateSheetOffsetTop(safeAreaTop));
|
|
2850
2886
|
}
|
|
2851
2887
|
}
|
|
2852
2888
|
/**
|
|
2853
|
-
*
|
|
2854
|
-
*
|
|
2855
|
-
* Called on present
|
|
2889
|
+
* Sets the internal --ion-modal-offset-top property on the host element,
|
|
2890
|
+
* resolving the current root --ion-safe-area-top when no value is given.
|
|
2891
|
+
* Called on present, on resize (e.g., device rotation changes safe-area),
|
|
2892
|
+
* and whenever the root safe-area value itself changes.
|
|
2856
2893
|
*/
|
|
2857
|
-
updateSheetOffsetTop() {
|
|
2858
|
-
const
|
|
2859
|
-
this.el.style.setProperty('--ion-modal-offset-top', `${
|
|
2894
|
+
updateSheetOffsetTop(safeAreaTop) {
|
|
2895
|
+
const value = safeAreaTop !== null && safeAreaTop !== void 0 ? safeAreaTop : getRootSafeAreaTop();
|
|
2896
|
+
this.el.style.setProperty('--ion-modal-offset-top', `${value}px`);
|
|
2860
2897
|
}
|
|
2861
2898
|
/**
|
|
2862
2899
|
* Updates safe-area overrides during dynamic state changes.
|
|
@@ -2955,7 +2992,10 @@ const Modal = class {
|
|
|
2955
2992
|
* Clears all safe-area overrides and padding.
|
|
2956
2993
|
*/
|
|
2957
2994
|
cleanupSafeAreaOverrides() {
|
|
2995
|
+
var _a;
|
|
2958
2996
|
clearSafeAreaOverrides(this.el);
|
|
2997
|
+
(_a = this.unsubscribeRootSafeAreaTop) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
2998
|
+
this.unsubscribeRootSafeAreaTop = undefined;
|
|
2959
2999
|
// Remove internal sheet offset property
|
|
2960
3000
|
this.el.style.removeProperty('--ion-modal-offset-top');
|
|
2961
3001
|
const { contentEl } = this.findContentAndFooter();
|
|
@@ -2968,11 +3008,11 @@ const Modal = class {
|
|
|
2968
3008
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2969
3009
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
2970
3010
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
2971
|
-
return (h(Host, Object.assign({ key: '
|
|
3011
|
+
return (h(Host, Object.assign({ key: 'c4b2713ebc788ac8672e18fdd5069e4253c4da34', "no-router": true,
|
|
2972
3012
|
// Allow the modal to be navigable when the handle is focusable
|
|
2973
3013
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
2974
3014
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2975
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
3015
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '2cc0afff8a815954492138afb0fca042243afddd', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '9844700b9436f9bfa1a69ba436e9ca46d70cf316', class: "modal-shadow" }), h("div", Object.assign({ key: 'ab1cd56ca956c773c9242fb42ff320bac7627b4b',
|
|
2976
3016
|
/*
|
|
2977
3017
|
role and aria-modal must be used on the
|
|
2978
3018
|
same element. They must also be set inside the
|
|
@@ -2985,9 +3025,9 @@ const Modal = class {
|
|
|
2985
3025
|
without the tabindex focus() would be a no-op and screen readers
|
|
2986
3026
|
may not properly announce the dialog and its content when it opens.
|
|
2987
3027
|
*/
|
|
2988
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
3028
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", tabIndex: -1, class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'c7706794e04a962178640e9a9a11c56288c45e08', class: "modal-handle",
|
|
2989
3029
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
2990
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
3030
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'c44fd9810cdd3286f096af98e5a4072f8f44c193', onSlotchange: this.onSlotChange }))));
|
|
2991
3031
|
}
|
|
2992
3032
|
get el() { return getElement(this); }
|
|
2993
3033
|
static get watchers() { return {
|