@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.
- package/components/animation.js +12 -11
- package/components/checkbox.js +2 -0
- package/components/ion-datetime.js +2 -2
- package/components/ion-fab.js +1 -1
- package/components/ion-input.js +4 -2
- package/components/ion-menu.js +0 -12
- package/components/ion-range.js +2 -0
- package/components/ion-reorder.js +2 -2
- package/components/ion-select.js +4 -2
- package/components/ion-skeleton-text.js +14 -1
- package/components/ion-textarea.js +4 -2
- package/components/ion-toggle.js +2 -0
- package/components/item.js +2 -2
- package/components/label.js +2 -2
- package/components/radio.js +2 -0
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{animation-c8bdd3c7.js → animation-1a53c50e.js} +12 -11
- package/dist/cjs/{index-5e7529f6.js → index-4eedbc59.js} +1 -1
- package/dist/cjs/{index-eccba000.js → index-d0fdb56d.js} +2 -2
- package/dist/cjs/index.cjs.js +5 -5
- package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-app_8.cjs.entry.js +1 -1
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -0
- package/dist/cjs/ion-datetime_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-input.cjs.entry.js +4 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +17 -4
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +2 -14
- package/dist/cjs/ion-modal.cjs.entry.js +2 -2
- package/dist/cjs/ion-nav_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -0
- package/dist/cjs/ion-range.cjs.entry.js +2 -0
- package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +4 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +4 -2
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -0
- package/dist/cjs/{ios.transition-5af5991e.js → ios.transition-2af7c625.js} +2 -2
- package/dist/cjs/{md.transition-1e740a6a.js → md.transition-992379b5.js} +2 -2
- package/dist/collection/components/checkbox/checkbox.js +2 -0
- package/dist/collection/components/datetime/datetime.ios.css +1 -0
- package/dist/collection/components/datetime/datetime.md.css +1 -0
- package/dist/collection/components/fab/fab.css +36 -24
- package/dist/collection/components/input/input.ios.css +14 -14
- package/dist/collection/components/input/input.js +2 -0
- package/dist/collection/components/input/input.md.css +4 -16
- package/dist/collection/components/item/item.ios.css +25 -3
- package/dist/collection/components/item/item.md.css +25 -3
- package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
- package/dist/collection/components/label/label.ios.css +14 -3
- package/dist/collection/components/label/label.md.css +14 -3
- package/dist/collection/components/menu/menu.js +0 -12
- package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
- package/dist/collection/components/radio/radio.js +2 -0
- package/dist/collection/components/range/range.js +2 -0
- package/dist/collection/components/reorder/reorder.ios.css +34 -1
- package/dist/collection/components/reorder/reorder.md.css +34 -1
- package/dist/collection/components/select/select.ios.css +19 -11
- package/dist/collection/components/select/select.js +2 -0
- package/dist/collection/components/select/select.md.css +9 -13
- package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
- package/dist/collection/components/textarea/textarea.ios.css +18 -18
- package/dist/collection/components/textarea/textarea.js +2 -0
- package/dist/collection/components/textarea/textarea.md.css +14 -20
- package/dist/collection/components/toggle/toggle.js +2 -0
- package/dist/collection/utils/animation/animation.js +12 -11
- package/dist/docs.json +1 -1
- package/dist/esm/{animation-92066c62.js → animation-a9cdd18b.js} +12 -11
- package/dist/esm/{index-a09eac70.js → index-533d569d.js} +2 -2
- package/dist/esm/{index-df55802d.js → index-5c647d55.js} +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-app_8.entry.js +1 -1
- package/dist/esm/ion-checkbox.entry.js +2 -0
- package/dist/esm/ion-datetime_3.entry.js +3 -3
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +4 -2
- package/dist/esm/ion-item_8.entry.js +17 -4
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +2 -14
- package/dist/esm/ion-modal.entry.js +2 -2
- package/dist/esm/ion-nav_2.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -0
- package/dist/esm/ion-range.entry.js +2 -0
- package/dist/esm/ion-refresher_2.entry.js +1 -1
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +4 -2
- package/dist/esm/ion-textarea.entry.js +4 -2
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/ion-toggle.entry.js +2 -0
- package/dist/esm/{ios.transition-4d1322d6.js → ios.transition-b3053722.js} +2 -2
- package/dist/esm/{md.transition-66b425d0.js → md.transition-bdf2eec2.js} +2 -2
- package/dist/esm-es5/{animation-92066c62.js → animation-a9cdd18b.js} +1 -1
- package/dist/esm-es5/{index-a09eac70.js → index-533d569d.js} +1 -1
- package/dist/esm-es5/{index-df55802d.js → index-5c647d55.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/{ios.transition-4d1322d6.js → ios.transition-b3053722.js} +1 -1
- package/dist/esm-es5/md.transition-bdf2eec2.js +4 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-de68588d.js → p-074d4971.js} +1 -1
- package/dist/ionic/p-0866bf93.entry.js +4 -0
- package/dist/ionic/{p-c679fcb5.entry.js → p-0ae4c173.entry.js} +1 -1
- package/dist/ionic/{p-bd68ea5d.entry.js → p-0b24c4e7.entry.js} +1 -1
- package/dist/ionic/{p-372f1f80.system.entry.js → p-12445803.system.entry.js} +1 -1
- package/dist/ionic/{p-1f260a7b.entry.js → p-22beb08d.entry.js} +1 -1
- package/dist/ionic/p-23f57624.system.entry.js +4 -0
- package/dist/ionic/{p-54200074.entry.js → p-27381a03.entry.js} +1 -1
- package/dist/ionic/{p-62e7d4fa.js → p-2743fb40.js} +1 -1
- package/dist/ionic/{p-0e3b9926.entry.js → p-307b0e77.entry.js} +1 -1
- package/dist/ionic/p-31a8fd9a.entry.js +4 -0
- package/dist/ionic/{p-cbc8d5c6.entry.js → p-32d17eee.entry.js} +1 -1
- package/dist/ionic/{p-7d3fe69c.system.entry.js → p-408e5ee6.system.entry.js} +1 -1
- package/dist/ionic/p-449f4377.js +4 -0
- package/dist/ionic/{p-35b26732.entry.js → p-49367d48.entry.js} +1 -1
- package/dist/ionic/p-4ba4bbf8.entry.js +4 -0
- package/dist/ionic/p-4f97c112.entry.js +4 -0
- package/dist/ionic/p-505cc23b.entry.js +4 -0
- package/dist/ionic/{p-e028178a.system.js → p-5416c18a.system.js} +1 -1
- package/dist/ionic/{p-97afc3e8.system.entry.js → p-5a12d57c.system.entry.js} +1 -1
- package/dist/ionic/{p-091c8792.system.js → p-5ffd6742.system.js} +1 -1
- package/dist/ionic/{p-0f217f27.entry.js → p-623dd07e.entry.js} +1 -1
- package/dist/ionic/{p-2a8eeef7.system.js → p-64416e79.system.js} +1 -1
- package/dist/ionic/{p-ad48dd13.system.js → p-64b36ecd.system.js} +1 -1
- package/dist/ionic/{p-9825577f.system.entry.js → p-69613961.system.entry.js} +1 -1
- package/dist/ionic/p-6b097e5f.entry.js +4 -0
- package/dist/ionic/p-755b2917.system.js +1 -1
- package/dist/ionic/p-75cba889.entry.js +4 -0
- package/dist/ionic/p-7a4bb59b.entry.js +4 -0
- package/dist/ionic/{p-5db56c84.system.entry.js → p-7b3cfd36.system.entry.js} +1 -1
- package/dist/ionic/{p-2d8caacb.entry.js → p-7c08106a.entry.js} +1 -1
- package/dist/ionic/p-7c6a16c1.system.entry.js +4 -0
- package/dist/ionic/{p-00853890.system.entry.js → p-7e77a185.system.entry.js} +1 -1
- package/dist/ionic/p-7f8844bd.system.entry.js +4 -0
- package/dist/ionic/p-8277369c.entry.js +4 -0
- package/dist/ionic/{p-e0f0d55f.system.js → p-8286f6d4.system.js} +1 -1
- package/dist/ionic/p-87c3c4ec.entry.js +4 -0
- package/dist/ionic/p-9d93e024.system.entry.js +4 -0
- package/dist/ionic/{p-3e2ddf5e.system.entry.js → p-aac723ac.system.entry.js} +1 -1
- package/dist/ionic/{p-2a40090a.system.entry.js → p-acbcc508.system.entry.js} +1 -1
- package/dist/ionic/{p-ecb860e5.system.entry.js → p-ad12e632.system.entry.js} +2 -2
- package/dist/ionic/p-b20b49ba.js +4 -0
- package/dist/ionic/{p-5f2cd7d2.system.entry.js → p-b45118c0.system.entry.js} +1 -1
- package/dist/ionic/p-b77734e0.entry.js +4 -0
- package/dist/ionic/p-c2e6cc69.entry.js +4 -0
- package/dist/ionic/p-c7612d99.system.entry.js +4 -0
- package/dist/ionic/p-d0c77b0e.system.entry.js +4 -0
- package/dist/ionic/{p-c44fe9fd.js → p-d625ae76.js} +1 -1
- package/dist/ionic/p-d6f6b311.system.entry.js +4 -0
- package/dist/ionic/{p-d29dcf9b.system.entry.js → p-ec4f26da.system.entry.js} +1 -1
- package/dist/ionic/{p-db6fb00c.system.entry.js → p-f094de62.system.entry.js} +1 -1
- package/dist/ionic/p-f63446a2.system.entry.js +4 -0
- package/dist/ionic/{p-1d17ce29.system.entry.js → p-f6c370f4.system.entry.js} +2 -2
- package/dist/ionic/p-f735392d.system.js +4 -0
- package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
- package/dist/types/components.d.ts +4 -0
- package/dist/types/utils/animation/animation-interface.d.ts +4 -4
- package/hydrate/index.js +54 -38
- package/package.json +1 -1
- package/dist/collection/components/fab/test/safe-area/fab.e2e.js +0 -63
- package/dist/collection/components/item/test/text/item.e2e.js +0 -14
- package/dist/collection/components/split-pane/test/multiple/split-pane.e2e.js +0 -31
- package/dist/esm-es5/md.transition-66b425d0.js +0 -4
- package/dist/ionic/p-0001660a.system.entry.js +0 -4
- package/dist/ionic/p-015187e5.system.js +0 -4
- package/dist/ionic/p-017631df.system.entry.js +0 -4
- package/dist/ionic/p-33e10fbe.system.entry.js +0 -4
- package/dist/ionic/p-3bc2289f.system.entry.js +0 -4
- package/dist/ionic/p-446230d7.js +0 -4
- package/dist/ionic/p-496a045c.entry.js +0 -4
- package/dist/ionic/p-4eb15462.entry.js +0 -4
- package/dist/ionic/p-79aeaba4.system.entry.js +0 -4
- package/dist/ionic/p-7b48cf4f.system.entry.js +0 -4
- package/dist/ionic/p-7d58a178.entry.js +0 -4
- package/dist/ionic/p-803cd5c3.entry.js +0 -4
- package/dist/ionic/p-8b1237b9.entry.js +0 -4
- package/dist/ionic/p-a38ec116.entry.js +0 -4
- package/dist/ionic/p-a46ca692.entry.js +0 -4
- package/dist/ionic/p-a7f83510.entry.js +0 -4
- package/dist/ionic/p-c9f70283.entry.js +0 -4
- package/dist/ionic/p-cf67c66c.entry.js +0 -4
- package/dist/ionic/p-e1d13a71.system.entry.js +0 -4
- package/dist/ionic/p-e81634c7.entry.js +0 -4
- package/dist/ionic/p-eb7d0922.js +0 -4
- package/dist/ionic/p-ebdf4f41.entry.js +0 -4
- 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
|
-
|
|
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-
|
|
54
|
-
|
|
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
|
-
|
|
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-
|
|
54
|
-
|
|
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;
|
|
@@ -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:
|
|
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:
|
|
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
|
}
|
|
@@ -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
|
|
@@ -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
|
-
|
|
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
|
@@ -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
|
-
|
|
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-
|
|
14
|
-
const mdTransitionAnimation = () => import('./md.transition-
|
|
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-
|
|
8
|
+
import { c as createAnimation } from './animation-a9cdd18b.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* baseAnimation
|