@ionic/core 7.5.2-dev.11697818830.1a33c881 → 7.5.2-dev.11697834896.1fed55cc

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.
Files changed (215) hide show
  1. package/components/animation.js +12 -11
  2. package/components/checkbox.js +2 -0
  3. package/components/ion-datetime.js +2 -2
  4. package/components/ion-fab.js +1 -1
  5. package/components/ion-input.js +4 -2
  6. package/components/ion-menu.js +0 -12
  7. package/components/ion-range.js +2 -0
  8. package/components/ion-reorder.js +2 -2
  9. package/components/ion-select.js +4 -2
  10. package/components/ion-skeleton-text.js +14 -1
  11. package/components/ion-textarea.js +4 -2
  12. package/components/ion-toggle.js +2 -0
  13. package/components/item.js +2 -2
  14. package/components/label.js +2 -2
  15. package/components/radio.js +2 -0
  16. package/css/core.css.map +1 -1
  17. package/css/ionic.bundle.css.map +1 -1
  18. package/dist/cjs/{animation-c8bdd3c7.js → animation-1a53c50e.js} +12 -11
  19. package/dist/cjs/{index-5e7529f6.js → index-4eedbc59.js} +1 -1
  20. package/dist/cjs/{index-eccba000.js → index-d0fdb56d.js} +2 -2
  21. package/dist/cjs/index.cjs.js +5 -5
  22. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  23. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  24. package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
  25. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -0
  26. package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
  27. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  28. package/dist/cjs/ion-input.cjs.entry.js +4 -2
  29. package/dist/cjs/ion-item_8.cjs.entry.js +17 -4
  30. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  31. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -14
  32. package/dist/cjs/ion-modal.cjs.entry.js +2 -2
  33. package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
  34. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  35. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -0
  36. package/dist/cjs/ion-range.cjs.entry.js +2 -0
  37. package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
  38. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  39. package/dist/cjs/ion-select_3.cjs.entry.js +4 -2
  40. package/dist/cjs/ion-textarea.cjs.entry.js +4 -2
  41. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  42. package/dist/cjs/ion-toggle.cjs.entry.js +2 -0
  43. package/dist/cjs/{ios.transition-5af5991e.js → ios.transition-2af7c625.js} +2 -2
  44. package/dist/cjs/{md.transition-1e740a6a.js → md.transition-992379b5.js} +2 -2
  45. package/dist/collection/components/checkbox/checkbox.js +2 -0
  46. package/dist/collection/components/datetime/datetime.ios.css +1 -0
  47. package/dist/collection/components/datetime/datetime.md.css +1 -0
  48. package/dist/collection/components/fab/fab.css +36 -24
  49. package/dist/collection/components/input/input.ios.css +14 -14
  50. package/dist/collection/components/input/input.js +2 -0
  51. package/dist/collection/components/input/input.md.css +4 -16
  52. package/dist/collection/components/item/item.ios.css +25 -3
  53. package/dist/collection/components/item/item.md.css +25 -3
  54. package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
  55. package/dist/collection/components/label/label.ios.css +14 -3
  56. package/dist/collection/components/label/label.md.css +14 -3
  57. package/dist/collection/components/menu/menu.js +0 -12
  58. package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
  59. package/dist/collection/components/radio/radio.js +2 -0
  60. package/dist/collection/components/range/range.js +2 -0
  61. package/dist/collection/components/reorder/reorder.ios.css +34 -1
  62. package/dist/collection/components/reorder/reorder.md.css +34 -1
  63. package/dist/collection/components/select/select.ios.css +19 -11
  64. package/dist/collection/components/select/select.js +2 -0
  65. package/dist/collection/components/select/select.md.css +9 -13
  66. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  67. package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
  68. package/dist/collection/components/textarea/textarea.ios.css +18 -18
  69. package/dist/collection/components/textarea/textarea.js +2 -0
  70. package/dist/collection/components/textarea/textarea.md.css +14 -20
  71. package/dist/collection/components/toggle/toggle.js +2 -0
  72. package/dist/collection/utils/animation/animation.js +12 -11
  73. package/dist/docs.json +1 -1
  74. package/dist/esm/{animation-92066c62.js → animation-a9cdd18b.js} +12 -11
  75. package/dist/esm/{index-a09eac70.js → index-533d569d.js} +2 -2
  76. package/dist/esm/{index-df55802d.js → index-5c647d55.js} +1 -1
  77. package/dist/esm/index.js +5 -5
  78. package/dist/esm/ion-action-sheet.entry.js +1 -1
  79. package/dist/esm/ion-alert.entry.js +1 -1
  80. package/dist/esm/ion-app_8.entry.js +1 -1
  81. package/dist/esm/ion-checkbox.entry.js +2 -0
  82. package/dist/esm/ion-datetime_3.entry.js +3 -3
  83. package/dist/esm/ion-fab_3.entry.js +1 -1
  84. package/dist/esm/ion-input.entry.js +4 -2
  85. package/dist/esm/ion-item_8.entry.js +17 -4
  86. package/dist/esm/ion-loading.entry.js +1 -1
  87. package/dist/esm/ion-menu_3.entry.js +2 -14
  88. package/dist/esm/ion-modal.entry.js +2 -2
  89. package/dist/esm/ion-nav_2.entry.js +1 -1
  90. package/dist/esm/ion-popover.entry.js +2 -2
  91. package/dist/esm/ion-radio_2.entry.js +2 -0
  92. package/dist/esm/ion-range.entry.js +2 -0
  93. package/dist/esm/ion-refresher_2.entry.js +1 -1
  94. package/dist/esm/ion-reorder_2.entry.js +2 -2
  95. package/dist/esm/ion-select_3.entry.js +4 -2
  96. package/dist/esm/ion-textarea.entry.js +4 -2
  97. package/dist/esm/ion-toast.entry.js +1 -1
  98. package/dist/esm/ion-toggle.entry.js +2 -0
  99. package/dist/esm/{ios.transition-4d1322d6.js → ios.transition-b3053722.js} +2 -2
  100. package/dist/esm/{md.transition-66b425d0.js → md.transition-bdf2eec2.js} +2 -2
  101. package/dist/esm-es5/{animation-92066c62.js → animation-a9cdd18b.js} +1 -1
  102. package/dist/esm-es5/{index-a09eac70.js → index-533d569d.js} +1 -1
  103. package/dist/esm-es5/{index-df55802d.js → index-5c647d55.js} +1 -1
  104. package/dist/esm-es5/index.js +1 -1
  105. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  106. package/dist/esm-es5/ion-alert.entry.js +1 -1
  107. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  108. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  109. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  110. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  111. package/dist/esm-es5/ion-input.entry.js +1 -1
  112. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  113. package/dist/esm-es5/ion-loading.entry.js +1 -1
  114. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  115. package/dist/esm-es5/ion-modal.entry.js +1 -1
  116. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  117. package/dist/esm-es5/ion-popover.entry.js +1 -1
  118. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  119. package/dist/esm-es5/ion-range.entry.js +1 -1
  120. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  121. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  122. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  123. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  124. package/dist/esm-es5/ion-toast.entry.js +1 -1
  125. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  126. package/dist/esm-es5/{ios.transition-4d1322d6.js → ios.transition-b3053722.js} +1 -1
  127. package/dist/esm-es5/md.transition-bdf2eec2.js +4 -0
  128. package/dist/ionic/index.esm.js +1 -1
  129. package/dist/ionic/ionic.esm.js +1 -1
  130. package/dist/ionic/{p-de68588d.js → p-074d4971.js} +1 -1
  131. package/dist/ionic/p-0866bf93.entry.js +4 -0
  132. package/dist/ionic/{p-c679fcb5.entry.js → p-0ae4c173.entry.js} +1 -1
  133. package/dist/ionic/{p-bd68ea5d.entry.js → p-0b24c4e7.entry.js} +1 -1
  134. package/dist/ionic/{p-372f1f80.system.entry.js → p-12445803.system.entry.js} +1 -1
  135. package/dist/ionic/{p-1f260a7b.entry.js → p-22beb08d.entry.js} +1 -1
  136. package/dist/ionic/p-23f57624.system.entry.js +4 -0
  137. package/dist/ionic/{p-54200074.entry.js → p-27381a03.entry.js} +1 -1
  138. package/dist/ionic/{p-62e7d4fa.js → p-2743fb40.js} +1 -1
  139. package/dist/ionic/{p-0e3b9926.entry.js → p-307b0e77.entry.js} +1 -1
  140. package/dist/ionic/p-31a8fd9a.entry.js +4 -0
  141. package/dist/ionic/{p-cbc8d5c6.entry.js → p-32d17eee.entry.js} +1 -1
  142. package/dist/ionic/{p-7d3fe69c.system.entry.js → p-408e5ee6.system.entry.js} +1 -1
  143. package/dist/ionic/p-449f4377.js +4 -0
  144. package/dist/ionic/{p-35b26732.entry.js → p-49367d48.entry.js} +1 -1
  145. package/dist/ionic/p-4ba4bbf8.entry.js +4 -0
  146. package/dist/ionic/p-4f97c112.entry.js +4 -0
  147. package/dist/ionic/p-505cc23b.entry.js +4 -0
  148. package/dist/ionic/{p-e028178a.system.js → p-5416c18a.system.js} +1 -1
  149. package/dist/ionic/{p-97afc3e8.system.entry.js → p-5a12d57c.system.entry.js} +1 -1
  150. package/dist/ionic/{p-091c8792.system.js → p-5ffd6742.system.js} +1 -1
  151. package/dist/ionic/{p-0f217f27.entry.js → p-623dd07e.entry.js} +1 -1
  152. package/dist/ionic/{p-2a8eeef7.system.js → p-64416e79.system.js} +1 -1
  153. package/dist/ionic/{p-ad48dd13.system.js → p-64b36ecd.system.js} +1 -1
  154. package/dist/ionic/{p-9825577f.system.entry.js → p-69613961.system.entry.js} +1 -1
  155. package/dist/ionic/p-6b097e5f.entry.js +4 -0
  156. package/dist/ionic/p-755b2917.system.js +1 -1
  157. package/dist/ionic/p-75cba889.entry.js +4 -0
  158. package/dist/ionic/p-7a4bb59b.entry.js +4 -0
  159. package/dist/ionic/{p-5db56c84.system.entry.js → p-7b3cfd36.system.entry.js} +1 -1
  160. package/dist/ionic/{p-2d8caacb.entry.js → p-7c08106a.entry.js} +1 -1
  161. package/dist/ionic/p-7c6a16c1.system.entry.js +4 -0
  162. package/dist/ionic/{p-00853890.system.entry.js → p-7e77a185.system.entry.js} +1 -1
  163. package/dist/ionic/p-7f8844bd.system.entry.js +4 -0
  164. package/dist/ionic/p-8277369c.entry.js +4 -0
  165. package/dist/ionic/{p-e0f0d55f.system.js → p-8286f6d4.system.js} +1 -1
  166. package/dist/ionic/p-87c3c4ec.entry.js +4 -0
  167. package/dist/ionic/p-9d93e024.system.entry.js +4 -0
  168. package/dist/ionic/{p-3e2ddf5e.system.entry.js → p-aac723ac.system.entry.js} +1 -1
  169. package/dist/ionic/{p-2a40090a.system.entry.js → p-acbcc508.system.entry.js} +1 -1
  170. package/dist/ionic/{p-ecb860e5.system.entry.js → p-ad12e632.system.entry.js} +2 -2
  171. package/dist/ionic/p-b20b49ba.js +4 -0
  172. package/dist/ionic/{p-5f2cd7d2.system.entry.js → p-b45118c0.system.entry.js} +1 -1
  173. package/dist/ionic/p-b77734e0.entry.js +4 -0
  174. package/dist/ionic/p-c2e6cc69.entry.js +4 -0
  175. package/dist/ionic/p-c7612d99.system.entry.js +4 -0
  176. package/dist/ionic/p-d0c77b0e.system.entry.js +4 -0
  177. package/dist/ionic/{p-c44fe9fd.js → p-d625ae76.js} +1 -1
  178. package/dist/ionic/p-d6f6b311.system.entry.js +4 -0
  179. package/dist/ionic/{p-d29dcf9b.system.entry.js → p-ec4f26da.system.entry.js} +1 -1
  180. package/dist/ionic/{p-db6fb00c.system.entry.js → p-f094de62.system.entry.js} +1 -1
  181. package/dist/ionic/p-f63446a2.system.entry.js +4 -0
  182. package/dist/ionic/{p-1d17ce29.system.entry.js → p-f6c370f4.system.entry.js} +2 -2
  183. package/dist/ionic/p-f735392d.system.js +4 -0
  184. package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
  185. package/dist/types/components.d.ts +4 -0
  186. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  187. package/hydrate/index.js +54 -38
  188. package/package.json +1 -1
  189. package/dist/collection/components/fab/test/safe-area/fab.e2e.js +0 -63
  190. package/dist/collection/components/item/test/text/item.e2e.js +0 -14
  191. package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +0 -31
  192. package/dist/esm-es5/md.transition-66b425d0.js +0 -4
  193. package/dist/ionic/p-0001660a.system.entry.js +0 -4
  194. package/dist/ionic/p-015187e5.system.js +0 -4
  195. package/dist/ionic/p-017631df.system.entry.js +0 -4
  196. package/dist/ionic/p-33e10fbe.system.entry.js +0 -4
  197. package/dist/ionic/p-3bc2289f.system.entry.js +0 -4
  198. package/dist/ionic/p-446230d7.js +0 -4
  199. package/dist/ionic/p-496a045c.entry.js +0 -4
  200. package/dist/ionic/p-4eb15462.entry.js +0 -4
  201. package/dist/ionic/p-79aeaba4.system.entry.js +0 -4
  202. package/dist/ionic/p-7b48cf4f.system.entry.js +0 -4
  203. package/dist/ionic/p-7d58a178.entry.js +0 -4
  204. package/dist/ionic/p-803cd5c3.entry.js +0 -4
  205. package/dist/ionic/p-8b1237b9.entry.js +0 -4
  206. package/dist/ionic/p-a38ec116.entry.js +0 -4
  207. package/dist/ionic/p-a46ca692.entry.js +0 -4
  208. package/dist/ionic/p-a7f83510.entry.js +0 -4
  209. package/dist/ionic/p-c9f70283.entry.js +0 -4
  210. package/dist/ionic/p-cf67c66c.entry.js +0 -4
  211. package/dist/ionic/p-e1d13a71.system.entry.js +0 -4
  212. package/dist/ionic/p-e81634c7.entry.js +0 -4
  213. package/dist/ionic/p-eb7d0922.js +0 -4
  214. package/dist/ionic/p-ebdf4f41.entry.js +0 -4
  215. package/dist/ionic/p-f15c9fd3.system.entry.js +0 -4
@@ -41,17 +41,24 @@
41
41
  font-family: var(--ion-font-family, inherit);
42
42
  font-size: inherit;
43
43
  text-overflow: ellipsis;
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ :host-context(.item-legacy) {
44
48
  white-space: nowrap;
45
49
  overflow: hidden;
46
- box-sizing: border-box;
50
+ }
51
+
52
+ :host-context(.item:not(.item-input):not(.item-legacy)) {
53
+ flex-grow: 1;
47
54
  }
48
55
 
49
56
  :host(.ion-color) {
50
57
  color: var(--ion-color-base);
51
58
  }
52
59
 
53
- :host(.ion-text-wrap) {
54
- white-space: normal;
60
+ :host(.ion-text-nowrap) {
61
+ overflow: hidden;
55
62
  }
56
63
 
57
64
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -70,6 +77,10 @@
70
77
  align-self: baseline;
71
78
  }
72
79
 
80
+ :host-context(.item-skeleton-text) {
81
+ overflow: hidden;
82
+ }
83
+
73
84
  :host(.label-fixed) {
74
85
  flex: 0 0 100px;
75
86
  width: 100px;
@@ -41,17 +41,24 @@
41
41
  font-family: var(--ion-font-family, inherit);
42
42
  font-size: inherit;
43
43
  text-overflow: ellipsis;
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ :host-context(.item-legacy) {
44
48
  white-space: nowrap;
45
49
  overflow: hidden;
46
- box-sizing: border-box;
50
+ }
51
+
52
+ :host-context(.item:not(.item-input):not(.item-legacy)) {
53
+ flex-grow: 1;
47
54
  }
48
55
 
49
56
  :host(.ion-color) {
50
57
  color: var(--ion-color-base);
51
58
  }
52
59
 
53
- :host(.ion-text-wrap) {
54
- white-space: normal;
60
+ :host(.ion-text-nowrap) {
61
+ overflow: hidden;
55
62
  }
56
63
 
57
64
  :host-context(.item-interactive-disabled:not(.item-multiple-inputs)) {
@@ -70,6 +77,10 @@
70
77
  align-self: baseline;
71
78
  }
72
79
 
80
+ :host-context(.item-skeleton-text) {
81
+ overflow: hidden;
82
+ }
83
+
73
84
  :host(.label-fixed) {
74
85
  flex: 0 0 100px;
75
86
  width: 100px;
@@ -173,18 +173,6 @@ export class Menu {
173
173
  this.contentEl = undefined;
174
174
  }
175
175
  onSplitPaneChanged(ev) {
176
- const { target } = ev;
177
- const closestSplitPane = this.el.closest('ion-split-pane');
178
- /**
179
- * Menu listens on the body for "ionSplitPaneVisible".
180
- * However, this means the callback will run any time
181
- * a SplitPane changes visibility. As a result, we only want
182
- * Menu's visibility state to update if its parent SplitPane
183
- * changes visibility.
184
- */
185
- if (target !== closestSplitPane) {
186
- return;
187
- }
188
176
  this.isPaneVisible = ev.detail.isPane(this.el);
189
177
  this.updateState();
190
178
  }
@@ -48,5 +48,48 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
48
48
  const note = page.locator('ion-note');
49
49
  await expect(note).toHaveScreenshot(screenshot(`note-item-divider-scale`));
50
50
  });
51
+ test('should wrap label to the next line without truncating', async ({ page }) => {
52
+ await page.setContent(`
53
+ <style>
54
+ html {
55
+ font-size: 310%;
56
+ }
57
+ </style>
58
+
59
+ <ion-list>
60
+ <ion-item>
61
+ <ion-note slot="start">Really really long note</ion-note>
62
+ <ion-label>Label</ion-label>
63
+ </ion-item>
64
+
65
+ <ion-item>
66
+ <ion-label>Label</ion-label>
67
+ <ion-note slot="end">Really really long note</ion-note>
68
+ </ion-item>
69
+
70
+ <ion-item>
71
+ <ion-note slot="start">Note</ion-note>
72
+ <ion-label>Really really long label</ion-label>
73
+ </ion-item>
74
+
75
+ <ion-item>
76
+ <ion-label>Really really long label</ion-label>
77
+ <ion-note slot="end">Note</ion-note>
78
+ </ion-item>
79
+
80
+ <ion-item>
81
+ <ion-note slot="start">Really really long note</ion-note>
82
+ <ion-label>Really really long label</ion-label>
83
+ </ion-item>
84
+
85
+ <ion-item>
86
+ <ion-label>Really really long label</ion-label>
87
+ <ion-note slot="end">Really really long note</ion-note>
88
+ </ion-item>
89
+ </ion-list>
90
+ `, config);
91
+ const list = page.locator('ion-list');
92
+ await expect(list).toHaveScreenshot(screenshot(`note-wrapping-label-scale`));
93
+ });
51
94
  });
52
95
  });
@@ -121,6 +121,8 @@ export class Radio {
121
121
  emitStyle() {
122
122
  const style = {
123
123
  'interactive-disabled': this.disabled,
124
+ // TODO(FW-3125): remove this
125
+ legacy: !!this.legacy,
124
126
  };
125
127
  if (this.legacyFormController.hasLegacyControl()) {
126
128
  style['radio-checked'] = this.checked;
@@ -226,6 +226,8 @@ export class Range {
226
226
  this.ionStyle.emit({
227
227
  interactive: true,
228
228
  'interactive-disabled': this.disabled,
229
+ // TODO(FW-2997): remove this
230
+ legacy: !!this.legacy,
229
231
  });
230
232
  }
231
233
  }
@@ -1,3 +1,36 @@
1
+ /**
2
+ * Convert a font size to a dynamic font size.
3
+ * Fonts that participate in Dynamic Type should use
4
+ * dynamic font sizes.
5
+ * @param size - The initial font size including the unit (i.e. px or pt)
6
+ * @param unit (optional) - The unit to convert to. Use this if you want to
7
+ * convert to a unit other than $baselineUnit.
8
+ */
9
+ /**
10
+ * Convert a font size to a dynamic font size but impose
11
+ * a maximum font size.
12
+ * @param size - The initial font size including the unit (i.e. px or pt)
13
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
+ * convert to a unit other than $baselineUnit.
16
+ */
17
+ /**
18
+ * Convert a font size to a dynamic font size but impose
19
+ * a minimum font size.
20
+ * @param size - The initial font size including the unit (i.e. px or pt)
21
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
+ * convert to a unit other than $baselineUnit.
24
+ */
25
+ /**
26
+ * Convert a font size to a dynamic font size but impose
27
+ * maximum and minimum font sizes.
28
+ * @param size - The initial font size including the unit (i.e. px or pt)
29
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
+ * convert to a unit other than $baselineUnit.
33
+ */
1
34
  :host([slot]) {
2
35
  display: none;
3
36
  line-height: 0;
@@ -13,7 +46,7 @@
13
46
  * icons resize with Dynamic Type.
14
47
  */
15
48
  ::slotted(ion-icon) {
16
- font-size: dynamic-font(16px);
49
+ font-size: 1rem;
17
50
  }
18
51
 
19
52
  /**
@@ -1,3 +1,36 @@
1
+ /**
2
+ * Convert a font size to a dynamic font size.
3
+ * Fonts that participate in Dynamic Type should use
4
+ * dynamic font sizes.
5
+ * @param size - The initial font size including the unit (i.e. px or pt)
6
+ * @param unit (optional) - The unit to convert to. Use this if you want to
7
+ * convert to a unit other than $baselineUnit.
8
+ */
9
+ /**
10
+ * Convert a font size to a dynamic font size but impose
11
+ * a maximum font size.
12
+ * @param size - The initial font size including the unit (i.e. px or pt)
13
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
+ * convert to a unit other than $baselineUnit.
16
+ */
17
+ /**
18
+ * Convert a font size to a dynamic font size but impose
19
+ * a minimum font size.
20
+ * @param size - The initial font size including the unit (i.e. px or pt)
21
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
+ * convert to a unit other than $baselineUnit.
24
+ */
25
+ /**
26
+ * Convert a font size to a dynamic font size but impose
27
+ * maximum and minimum font sizes.
28
+ * @param size - The initial font size including the unit (i.e. px or pt)
29
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
+ * convert to a unit other than $baselineUnit.
33
+ */
1
34
  :host([slot]) {
2
35
  display: none;
3
36
  line-height: 0;
@@ -13,7 +46,7 @@
13
46
  * icons resize with Dynamic Type.
14
47
  */
15
48
  ::slotted(ion-icon) {
16
- font-size: dynamic-font(16px);
49
+ font-size: 1rem;
17
50
  }
18
51
 
19
52
  /**
@@ -81,17 +81,6 @@
81
81
 
82
82
  :host(:not(.legacy-select)) {
83
83
  width: 100%;
84
- min-height: 44px;
85
- }
86
-
87
- /**
88
- * Since the label sits on top of the element,
89
- * the component needs to be taller otherwise the
90
- * label will appear too close to the select text.
91
- */
92
- :host(.select-label-placement-floating),
93
- :host(.select-label-placement-stacked) {
94
- min-height: 56px;
95
84
  }
96
85
 
97
86
  :host(.ion-color) {
@@ -110,6 +99,11 @@
110
99
  overflow: hidden;
111
100
  }
112
101
 
102
+ :host(.in-item:not(.legacy-select)) {
103
+ flex: 1 1 0;
104
+ width: 0;
105
+ }
106
+
113
107
  :host(.in-item.legacy-select) {
114
108
  position: static;
115
109
  max-width: 45%;
@@ -632,6 +626,20 @@ button {
632
626
  --padding-start: 16px;
633
627
  }
634
628
 
629
+ :host(:not(.legacy-select)) {
630
+ min-height: 44px;
631
+ }
632
+
633
+ /**
634
+ * Since the label sits on top of the element,
635
+ * the component needs to be taller otherwise the
636
+ * label will appear too close to the select text.
637
+ */
638
+ :host(.select-label-placement-floating),
639
+ :host(.select-label-placement-stacked) {
640
+ min-height: 56px;
641
+ }
642
+
635
643
  .select-icon {
636
644
  width: 1.125rem;
637
645
  height: 1.125rem;
@@ -465,6 +465,8 @@ export class Select {
465
465
  style['has-placeholder'] = this.placeholder !== undefined;
466
466
  style['has-value'] = this.hasValue();
467
467
  style['has-focus'] = this.isExpanded;
468
+ // TODO(FW-3194): remove this
469
+ style['legacy'] = !!this.legacy;
468
470
  }
469
471
  this.ionStyle.emit(style);
470
472
  }
@@ -81,17 +81,6 @@
81
81
 
82
82
  :host(:not(.legacy-select)) {
83
83
  width: 100%;
84
- min-height: 44px;
85
- }
86
-
87
- /**
88
- * Since the label sits on top of the element,
89
- * the component needs to be taller otherwise the
90
- * label will appear too close to the select text.
91
- */
92
- :host(.select-label-placement-floating),
93
- :host(.select-label-placement-stacked) {
94
- min-height: 56px;
95
84
  }
96
85
 
97
86
  :host(.ion-color) {
@@ -110,6 +99,11 @@
110
99
  overflow: hidden;
111
100
  }
112
101
 
102
+ :host(.in-item:not(.legacy-select)) {
103
+ flex: 1 1 0;
104
+ width: 0;
105
+ }
106
+
113
107
  :host(.in-item.legacy-select) {
114
108
  position: static;
115
109
  max-width: 45%;
@@ -664,7 +658,6 @@ button {
664
658
  --border-radius: 4px;
665
659
  --padding-start: 16px;
666
660
  --padding-end: 16px;
667
- min-height: 56px;
668
661
  }
669
662
 
670
663
  /**
@@ -785,7 +778,6 @@ button {
785
778
  --border-radius: 4px;
786
779
  --padding-start: 16px;
787
780
  --padding-end: 16px;
788
- min-height: 56px;
789
781
  }
790
782
 
791
783
  :host(.select-fill-outline.select-shape-round) {
@@ -1040,6 +1032,10 @@ button {
1040
1032
  --padding-start: 16px;
1041
1033
  }
1042
1034
 
1035
+ :host(:not(.legacy-select)) {
1036
+ min-height: 56px;
1037
+ }
1038
+
1043
1039
  .select-icon {
1044
1040
  width: 0.8125rem;
1045
1041
  transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);
@@ -27,7 +27,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
27
27
  await page.setContent(`
28
28
  <ion-item>
29
29
  <ion-label>Really long label should not wrap</ion-label>
30
- <ion-select value="wrap" class="ion-text-wrap">
30
+ <ion-select value="wrap" legacy="true" class="ion-text-wrap">
31
31
  <ion-select-option value="wrap">Should wrap value only when label exists and really long text exists to make it wrap the text</ion-select-option>
32
32
  </ion-select>
33
33
  </ion-item>
@@ -9,6 +9,18 @@ export class SkeletonText {
9
9
  constructor() {
10
10
  this.animated = false;
11
11
  }
12
+ componentWillLoad() {
13
+ this.emitStyle();
14
+ }
15
+ emitStyle() {
16
+ // The emitted property is used by item in order
17
+ // to add the item-skeleton-text class which applies
18
+ // overflow: hidden to its label
19
+ const style = {
20
+ 'skeleton-text': true,
21
+ };
22
+ this.ionStyle.emit(style);
23
+ }
12
24
  render() {
13
25
  const animated = this.animated && config.getBoolean('animated', true);
14
26
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
@@ -53,5 +65,32 @@ export class SkeletonText {
53
65
  }
54
66
  };
55
67
  }
68
+ static get events() {
69
+ return [{
70
+ "method": "ionStyle",
71
+ "name": "ionStyle",
72
+ "bubbles": true,
73
+ "cancelable": true,
74
+ "composed": true,
75
+ "docs": {
76
+ "tags": [{
77
+ "name": "internal",
78
+ "text": undefined
79
+ }],
80
+ "text": "Emitted when the styles change."
81
+ },
82
+ "complexType": {
83
+ "original": "StyleEventDetail",
84
+ "resolved": "StyleEventDetail",
85
+ "references": {
86
+ "StyleEventDetail": {
87
+ "location": "import",
88
+ "path": "../../interface",
89
+ "id": "src/interface.d.ts::StyleEventDetail"
90
+ }
91
+ }
92
+ }
93
+ }];
94
+ }
56
95
  static get elementRef() { return "el"; }
57
96
  }
@@ -88,24 +88,6 @@
88
88
  box-sizing: border-box;
89
89
  }
90
90
 
91
- :host(:not(.legacy-textarea)) {
92
- min-height: 44px;
93
- }
94
-
95
- /**
96
- * Since the label sits on top of the element,
97
- * the component needs to be taller otherwise the
98
- * label will appear too close to the textarea text.
99
- * Also, floating and stacked labels should not
100
- * push the label down since it it
101
- * sits on top of the textarea.
102
- */
103
- :host(.textarea-label-placement-floating),
104
- :host(.textarea-label-placement-stacked) {
105
- --padding-top: 0px;
106
- min-height: 56px;
107
- }
108
-
109
91
  /**
110
92
  * When the cols property is set we should
111
93
  * respect that width instead of defaulting
@@ -844,4 +826,22 @@
844
826
  :host(.legacy-textarea) .native-textarea[disabled],
845
827
  :host(.textarea-disabled) {
846
828
  opacity: 0.3;
829
+ }
830
+
831
+ :host(:not(.legacy-textarea)) {
832
+ min-height: 44px;
833
+ }
834
+
835
+ /**
836
+ * Since the label sits on top of the element,
837
+ * the component needs to be taller otherwise the
838
+ * label will appear too close to the textarea text.
839
+ * Also, floating and stacked labels should not
840
+ * push the label down since it it
841
+ * sits on top of the textarea.
842
+ */
843
+ :host(.textarea-label-placement-floating),
844
+ :host(.textarea-label-placement-stacked) {
845
+ --padding-top: 0px;
846
+ min-height: 56px;
847
847
  }
@@ -182,6 +182,8 @@ export class Textarea {
182
182
  'has-placeholder': this.placeholder !== undefined,
183
183
  'has-value': this.hasValue(),
184
184
  'has-focus': this.hasFocus,
185
+ // TODO(FW-2876): remove this
186
+ legacy: !!this.legacy,
185
187
  });
186
188
  }
187
189
  }
@@ -88,24 +88,6 @@
88
88
  box-sizing: border-box;
89
89
  }
90
90
 
91
- :host(:not(.legacy-textarea)) {
92
- min-height: 44px;
93
- }
94
-
95
- /**
96
- * Since the label sits on top of the element,
97
- * the component needs to be taller otherwise the
98
- * label will appear too close to the textarea text.
99
- * Also, floating and stacked labels should not
100
- * push the label down since it it
101
- * sits on top of the textarea.
102
- */
103
- :host(.textarea-label-placement-floating),
104
- :host(.textarea-label-placement-stacked) {
105
- --padding-top: 0px;
106
- min-height: 56px;
107
- }
108
-
109
91
  /**
110
92
  * When the cols property is set we should
111
93
  * respect that width instead of defaulting
@@ -856,7 +838,6 @@
856
838
  --border-radius: 4px;
857
839
  --padding-start: 16px;
858
840
  --padding-end: 16px;
859
- min-height: 56px;
860
841
  }
861
842
 
862
843
  /**
@@ -975,7 +956,6 @@
975
956
  --border-radius: 4px;
976
957
  --padding-start: 16px;
977
958
  --padding-end: 16px;
978
- min-height: 56px;
979
959
  }
980
960
 
981
961
  :host(.textarea-fill-outline.textarea-shape-round) {
@@ -1268,6 +1248,20 @@
1268
1248
  letter-spacing: 0.0333333333em;
1269
1249
  }
1270
1250
 
1251
+ :host(:not(.legacy-textarea)) {
1252
+ min-height: 56px;
1253
+ }
1254
+
1255
+ /**
1256
+ * Floating and stacked labels should not
1257
+ * push the label down since it it
1258
+ * sits on top of the textarea.
1259
+ */
1260
+ :host(.textarea-label-placement-floating),
1261
+ :host(.textarea-label-placement-stacked) {
1262
+ --padding-top: 0px;
1263
+ }
1264
+
1271
1265
  /**
1272
1266
  * When the textarea is focused the label should
1273
1267
  * take on the highlight color. This should
@@ -123,6 +123,8 @@ export class Toggle {
123
123
  if (this.legacyFormController.hasLegacyControl()) {
124
124
  this.ionStyle.emit({
125
125
  'interactive-disabled': this.disabled,
126
+ // TODO(FW-2990): remove this
127
+ legacy: !!this.legacy,
126
128
  });
127
129
  }
128
130
  }
@@ -449,6 +449,16 @@ export const createAnimation = (animationId) => {
449
449
  }
450
450
  }
451
451
  });
452
+ /**
453
+ * Clean up any value coercion before
454
+ * the user callbacks fire otherwise
455
+ * they may get stale values. For example,
456
+ * if someone calls progressStart(0) the
457
+ * animation may still be reversed.
458
+ */
459
+ forceDurationValue = undefined;
460
+ forceDirectionValue = undefined;
461
+ forceDelayValue = undefined;
452
462
  onFinishCallbacks.forEach((onFinishCallback) => {
453
463
  return onFinishCallback.c(currentStep, ani);
454
464
  });
@@ -652,17 +662,8 @@ export const createAnimation = (animationId) => {
652
662
  update(false, false);
653
663
  }
654
664
  }
655
- if (playTo !== undefined) {
656
- onFinish(() => {
657
- forceDurationValue = undefined;
658
- forceDirectionValue = undefined;
659
- forceDelayValue = undefined;
660
- }, {
661
- oneTimeCallback: true,
662
- });
663
- if (!parentAnimation) {
664
- play();
665
- }
665
+ if (playTo !== undefined && !parentAnimation) {
666
+ play();
666
667
  }
667
668
  return ani;
668
669
  };
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2023-10-20T16:22:43",
2
+ "timestamp": "2023-10-20T20:50:38",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.5.0",
@@ -572,6 +572,16 @@ const createAnimation = (animationId) => {
572
572
  }
573
573
  }
574
574
  });
575
+ /**
576
+ * Clean up any value coercion before
577
+ * the user callbacks fire otherwise
578
+ * they may get stale values. For example,
579
+ * if someone calls progressStart(0) the
580
+ * animation may still be reversed.
581
+ */
582
+ forceDurationValue = undefined;
583
+ forceDirectionValue = undefined;
584
+ forceDelayValue = undefined;
575
585
  onFinishCallbacks.forEach((onFinishCallback) => {
576
586
  return onFinishCallback.c(currentStep, ani);
577
587
  });
@@ -775,17 +785,8 @@ const createAnimation = (animationId) => {
775
785
  update(false, false);
776
786
  }
777
787
  }
778
- if (playTo !== undefined) {
779
- onFinish(() => {
780
- forceDurationValue = undefined;
781
- forceDirectionValue = undefined;
782
- forceDelayValue = undefined;
783
- }, {
784
- oneTimeCallback: true,
785
- });
786
- if (!parentAnimation) {
787
- play();
788
- }
788
+ if (playTo !== undefined && !parentAnimation) {
789
+ play();
789
790
  }
790
791
  return ani;
791
792
  };
@@ -10,8 +10,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
10
10
  const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
11
11
  const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
12
12
 
13
- const iosTransitionAnimation = () => import('./ios.transition-4d1322d6.js');
14
- const mdTransitionAnimation = () => import('./md.transition-66b425d0.js');
13
+ const iosTransitionAnimation = () => import('./ios.transition-b3053722.js');
14
+ const mdTransitionAnimation = () => import('./md.transition-bdf2eec2.js');
15
15
  // TODO(FW-2832): types
16
16
  const transition = (opts) => {
17
17
  return new Promise((resolve, reject) => {
@@ -5,7 +5,7 @@ import { p as printIonWarning } from './index-595d62c9.js';
5
5
  import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-39299f84.js';
6
6
  import { c as componentOnReady } from './helpers-3379ba19.js';
7
7
  import { b as getIonMode } from './ionic-global-246ca78f.js';
8
- import { c as createAnimation } from './animation-92066c62.js';
8
+ import { c as createAnimation } from './animation-a9cdd18b.js';
9
9
 
10
10
  /**
11
11
  * baseAnimation