@ionic/core 7.5.8-dev.11701806358.1ca1b519 → 7.5.8-dev.11701894917.1c1465bd
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/data.js +1 -1
- package/components/ion-datetime.js +30 -39
- package/components/ion-picker-column-internal.d.ts +11 -0
- package/components/ion-picker-column-internal.js +9 -0
- package/components/ion-picker-column.js +2 -2
- package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
- package/components/ion-picker-internal.js +9 -0
- package/components/ion-picker.js +309 -1
- package/components/overlays.js +3 -6
- package/components/picker-column-internal.js +390 -0
- package/components/picker-column.js +317 -363
- package/components/{picker.js → picker-internal.js} +16 -16
- package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- 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-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +35 -29
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +72 -105
- package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-e8e05b0e.js → overlays-2c6b1072.js} +3 -6
- package/dist/collection/collection-manifest.json +6 -7
- package/dist/collection/components/datetime/datetime.ios.css +13 -0
- package/dist/collection/components/datetime/datetime.js +16 -19
- package/dist/collection/components/datetime/datetime.md.css +13 -0
- package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/picker/picker.ios.css +205 -100
- package/dist/collection/components/picker/picker.js +743 -461
- package/dist/collection/components/picker/picker.md.css +194 -98
- package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
- package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
- package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
- package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
- package/dist/collection/components/picker-column/picker-column.ios.css +160 -120
- package/dist/collection/components/picker-column/picker-column.js +329 -514
- package/dist/collection/components/picker-column/picker-column.md.css +107 -134
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
- package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
- package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
- package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
- package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
- package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
- package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
- package/dist/collection/components/picker-internal/picker-internal.js +544 -0
- package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
- package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
- package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
- package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +22 -23
- package/dist/collection/utils/overlays.js +3 -6
- package/dist/docs.json +23 -487
- package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +34 -28
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +72 -105
- package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +1 -1
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-fbc5cab5.js → overlays-d23ea6e1.js} +3 -6
- 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-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.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-picker-column-internal.entry.js +4 -0
- package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/overlays-d23ea6e1.js +4 -0
- package/dist/html.html-data.json +1 -152
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-846ee227.entry.js → p-1e57bd24.entry.js} +1 -1
- package/dist/ionic/{p-26798a7b.system.entry.js → p-1f620cd4.system.entry.js} +1 -1
- package/dist/ionic/{p-5d42b6b4.entry.js → p-27ea6f4e.entry.js} +1 -1
- package/dist/ionic/{p-6b7c55cd.entry.js → p-2dc43d20.entry.js} +1 -1
- package/dist/ionic/{p-4a36430f.system.entry.js → p-2f2293da.system.entry.js} +1 -1
- package/dist/ionic/{p-21c3515a.entry.js → p-2f300cca.entry.js} +1 -1
- package/dist/ionic/{p-8017aad2.system.entry.js → p-39a335b6.system.entry.js} +1 -1
- package/dist/ionic/{p-4a081ea9.entry.js → p-3b568d18.entry.js} +1 -1
- package/dist/ionic/{p-c18de88a.system.entry.js → p-3e3d06a6.system.entry.js} +1 -1
- package/dist/ionic/{p-96dbbac1.system.entry.js → p-4df97e3c.system.entry.js} +1 -1
- package/dist/ionic/p-60502e3f.system.entry.js +4 -0
- package/dist/ionic/{p-563c41f0.system.entry.js → p-60b386c9.system.entry.js} +1 -1
- package/dist/ionic/p-67da080d.entry.js +4 -0
- package/dist/ionic/p-73ea8f82.system.entry.js +4 -0
- package/dist/ionic/p-80fa068e.entry.js +4 -0
- package/dist/ionic/{p-a8baa23e.entry.js → p-8780cc2a.entry.js} +1 -1
- package/dist/ionic/{p-f910cc73.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
- package/dist/ionic/p-ab11130c.system.js +4 -0
- package/dist/ionic/p-af16fe62.entry.js +4 -0
- package/dist/ionic/{p-73aa7604.entry.js → p-af19a573.entry.js} +1 -1
- package/dist/ionic/p-c14f8ac8.js +4 -0
- package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
- package/dist/ionic/{p-b133e9b4.entry.js → p-ddb30596.entry.js} +1 -1
- package/dist/ionic/{p-27bcbbc7.system.entry.js → p-e1e5afe1.system.entry.js} +1 -1
- package/dist/ionic/p-e3584231.system.js +1 -1
- package/dist/ionic/{p-fbf3a689.system.entry.js → p-e3ad9607.system.entry.js} +1 -1
- package/dist/ionic/{p-73190c5f.entry.js → p-f78efbd1.entry.js} +1 -1
- package/dist/ionic/{p-54dfc9b5.system.js → p-fff7a57e.system.js} +1 -1
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/picker/picker.d.ts +131 -74
- package/dist/types/components/picker-column/picker-column.d.ts +39 -105
- package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
- package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
- package/dist/types/components.d.ts +122 -163
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/utils/config.d.ts +2 -2
- package/dist/types/utils/overlays.d.ts +2 -5
- package/hydrate/index.js +1151 -1287
- package/package.json +1 -1
- package/components/ion-picker-column-option.d.ts +0 -11
- package/components/ion-picker-column-option.js +0 -9
- package/components/ion-picker-legacy-column.d.ts +0 -11
- package/components/ion-picker-legacy-column.js +0 -9
- package/components/ion-picker-legacy.js +0 -309
- package/components/picker-column-option.js +0 -122
- package/components/picker-column2.js +0 -379
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
- package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -113
- package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
- package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
- package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
- package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
- package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
- package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
- package/dist/collection/components/picker-legacy/picker.js +0 -817
- package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
- package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
- package/dist/esm/ion-picker-column-option.entry.js +0 -100
- package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
- package/dist/esm-es5/ion-picker-column.entry.js +0 -4
- package/dist/esm-es5/ion-picker.entry.js +0 -4
- package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
- package/dist/ionic/p-23672c82.system.entry.js +0 -4
- package/dist/ionic/p-8fa6583d.system.js +0 -4
- package/dist/ionic/p-9282b16f.entry.js +0 -4
- package/dist/ionic/p-9ba90516.system.entry.js +0 -4
- package/dist/ionic/p-afcf4620.entry.js +0 -4
- package/dist/ionic/p-c2910c78.entry.js +0 -4
- package/dist/ionic/p-c8f0a036.entry.js +0 -4
- package/dist/ionic/p-ca8938f4.js +0 -4
- package/dist/ionic/p-ca9d1792.system.entry.js +0 -4
- package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
- package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
- package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
- package/dist/types/components/picker-legacy/picker.d.ts +0 -158
- package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
- /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
- /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
- /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
- /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
- /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
- /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
- /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
- /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
- /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
- /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
|
@@ -54,61 +54,61 @@
|
|
|
54
54
|
* }
|
|
55
55
|
*/
|
|
56
56
|
:host {
|
|
57
|
-
display: flex;
|
|
58
|
-
position: relative;
|
|
59
|
-
align-items: center;
|
|
60
|
-
justify-content: center;
|
|
61
|
-
width: 100%;
|
|
62
|
-
height: 200px;
|
|
63
57
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
58
|
+
* @prop --background: Background of the picker
|
|
59
|
+
* @prop --background-rgb: Background of the picker in rgb format
|
|
60
|
+
*
|
|
61
|
+
* @prop --border-radius: Border radius of the picker
|
|
62
|
+
* @prop --border-color: Border color of the picker
|
|
63
|
+
* @prop --border-width: Border width of the picker
|
|
64
|
+
* @prop --border-style: Border style of the picker
|
|
65
|
+
*
|
|
66
|
+
* @prop --min-width: Minimum width of the picker
|
|
67
|
+
* @prop --width: Width of the picker
|
|
68
|
+
* @prop --max-width: Maximum width of the picker
|
|
69
|
+
*
|
|
70
|
+
* @prop --min-height: Minimum height of the picker
|
|
71
|
+
* @prop --height: Height of the picker
|
|
72
|
+
* @prop --max-height: Maximum height of the picker
|
|
73
|
+
*
|
|
74
|
+
* @prop --backdrop-opacity: Opacity of the backdrop
|
|
68
75
|
*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
:
|
|
79
|
-
:
|
|
76
|
+
--border-radius: 0;
|
|
77
|
+
--border-style: solid;
|
|
78
|
+
--min-width: auto;
|
|
79
|
+
--width: 100%;
|
|
80
|
+
--max-width: 500px;
|
|
81
|
+
--min-height: auto;
|
|
82
|
+
--max-height: auto;
|
|
83
|
+
-moz-osx-font-smoothing: grayscale;
|
|
84
|
+
-webkit-font-smoothing: antialiased;
|
|
85
|
+
top: 0;
|
|
86
|
+
display: block;
|
|
80
87
|
position: absolute;
|
|
81
88
|
width: 100%;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
z-index: 1;
|
|
89
|
-
pointer-events: none;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
:host .picker-before {
|
|
93
|
-
top: 0;
|
|
94
|
-
height: 83px;
|
|
89
|
+
height: 100%;
|
|
90
|
+
outline: none;
|
|
91
|
+
font-family: var(--ion-font-family, inherit);
|
|
92
|
+
contain: strict;
|
|
93
|
+
user-select: none;
|
|
94
|
+
z-index: 1001;
|
|
95
95
|
}
|
|
96
96
|
@supports (inset-inline-start: 0) {
|
|
97
|
-
:host
|
|
97
|
+
:host {
|
|
98
98
|
inset-inline-start: 0;
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
@supports not (inset-inline-start: 0) {
|
|
102
|
-
:host
|
|
102
|
+
:host {
|
|
103
103
|
left: 0;
|
|
104
104
|
}
|
|
105
|
-
:host-context([dir=rtl])
|
|
105
|
+
:host-context([dir=rtl]) {
|
|
106
106
|
left: unset;
|
|
107
107
|
right: unset;
|
|
108
108
|
right: 0;
|
|
109
109
|
}
|
|
110
110
|
@supports selector(:dir(rtl)) {
|
|
111
|
-
:host(:dir(rtl))
|
|
111
|
+
:host(:dir(rtl)) {
|
|
112
112
|
left: unset;
|
|
113
113
|
right: unset;
|
|
114
114
|
right: 0;
|
|
@@ -116,82 +116,69 @@
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
:host
|
|
120
|
-
|
|
121
|
-
height: 84px;
|
|
122
|
-
}
|
|
123
|
-
@supports (inset-inline-start: 0) {
|
|
124
|
-
:host .picker-after {
|
|
125
|
-
inset-inline-start: 0;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
@supports not (inset-inline-start: 0) {
|
|
129
|
-
:host .picker-after {
|
|
130
|
-
left: 0;
|
|
131
|
-
}
|
|
132
|
-
:host-context([dir=rtl]) .picker-after {
|
|
133
|
-
left: unset;
|
|
134
|
-
right: unset;
|
|
135
|
-
right: 0;
|
|
136
|
-
}
|
|
137
|
-
@supports selector(:dir(rtl)) {
|
|
138
|
-
:host(:dir(rtl)) .picker-after {
|
|
139
|
-
left: unset;
|
|
140
|
-
right: unset;
|
|
141
|
-
right: 0;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
119
|
+
:host(.overlay-hidden) {
|
|
120
|
+
display: none;
|
|
144
121
|
}
|
|
145
122
|
|
|
146
|
-
|
|
147
|
-
border-radius:
|
|
123
|
+
.picker-wrapper {
|
|
124
|
+
border-radius: var(--border-radius);
|
|
148
125
|
left: 0;
|
|
149
126
|
right: 0;
|
|
150
|
-
top: 50%;
|
|
151
127
|
bottom: 0;
|
|
152
128
|
-webkit-margin-start: auto;
|
|
153
129
|
margin-inline-start: auto;
|
|
154
130
|
-webkit-margin-end: auto;
|
|
155
131
|
margin-inline-end: auto;
|
|
156
|
-
margin-top:
|
|
157
|
-
margin-bottom:
|
|
132
|
+
margin-top: auto;
|
|
133
|
+
margin-bottom: auto;
|
|
134
|
+
transform: translate3d(0, 100%, 0);
|
|
135
|
+
display: flex;
|
|
158
136
|
position: absolute;
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
137
|
+
flex-direction: column;
|
|
138
|
+
width: var(--width);
|
|
139
|
+
min-width: var(--min-width);
|
|
140
|
+
max-width: var(--max-width);
|
|
141
|
+
height: var(--height);
|
|
142
|
+
min-height: var(--min-height);
|
|
143
|
+
max-height: var(--max-height);
|
|
144
|
+
border-width: var(--border-width);
|
|
145
|
+
border-style: var(--border-style);
|
|
146
|
+
border-color: var(--border-color);
|
|
147
|
+
background: var(--background);
|
|
148
|
+
contain: strict;
|
|
149
|
+
overflow: hidden;
|
|
150
|
+
z-index: 10;
|
|
164
151
|
}
|
|
165
152
|
|
|
166
|
-
|
|
167
|
-
position: absolute;
|
|
168
|
-
top: 0;
|
|
169
|
-
left: 0;
|
|
170
|
-
right: 0;
|
|
171
|
-
bottom: 0;
|
|
153
|
+
.picker-toolbar {
|
|
172
154
|
width: 100%;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
155
|
+
background: transparent;
|
|
156
|
+
contain: strict;
|
|
157
|
+
z-index: 1;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.picker-button {
|
|
176
161
|
border: 0;
|
|
177
|
-
|
|
178
|
-
clip: rect(0 0 0 0);
|
|
179
|
-
opacity: 0;
|
|
180
|
-
overflow: hidden;
|
|
181
|
-
-webkit-appearance: none;
|
|
182
|
-
-moz-appearance: none;
|
|
162
|
+
font-family: inherit;
|
|
183
163
|
}
|
|
184
164
|
|
|
185
|
-
:
|
|
186
|
-
|
|
165
|
+
.picker-button:active, .picker-button:focus {
|
|
166
|
+
outline: none;
|
|
187
167
|
}
|
|
188
168
|
|
|
189
|
-
|
|
190
|
-
|
|
169
|
+
.picker-columns {
|
|
170
|
+
display: flex;
|
|
171
|
+
position: relative;
|
|
172
|
+
justify-content: center;
|
|
173
|
+
margin-bottom: var(--ion-safe-area-bottom, 0);
|
|
174
|
+
contain: strict;
|
|
175
|
+
overflow: hidden;
|
|
191
176
|
}
|
|
192
177
|
|
|
193
|
-
|
|
194
|
-
|
|
178
|
+
.picker-above-highlight,
|
|
179
|
+
.picker-below-highlight {
|
|
180
|
+
display: none;
|
|
181
|
+
pointer-events: none;
|
|
195
182
|
}
|
|
196
183
|
|
|
197
184
|
/**
|
|
@@ -249,10 +236,119 @@
|
|
|
249
236
|
* }
|
|
250
237
|
* }
|
|
251
238
|
*/
|
|
252
|
-
:host
|
|
253
|
-
background:
|
|
239
|
+
:host {
|
|
240
|
+
--background: var(--ion-background-color, #fff);
|
|
241
|
+
--border-width: 0.55px 0 0;
|
|
242
|
+
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
|
|
243
|
+
--height: 260px;
|
|
244
|
+
--backdrop-opacity: var(--ion-backdrop-opacity, 0.26);
|
|
245
|
+
color: var(--ion-item-color, var(--ion-text-color, #000));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.picker-toolbar {
|
|
249
|
+
display: flex;
|
|
250
|
+
justify-content: flex-end;
|
|
251
|
+
height: 44px;
|
|
254
252
|
}
|
|
255
253
|
|
|
256
|
-
|
|
257
|
-
|
|
254
|
+
.picker-button,
|
|
255
|
+
.picker-button.ion-activated {
|
|
256
|
+
margin-left: 0;
|
|
257
|
+
margin-right: 0;
|
|
258
|
+
margin-top: 0;
|
|
259
|
+
margin-bottom: 0;
|
|
260
|
+
-webkit-padding-start: 1.1em;
|
|
261
|
+
padding-inline-start: 1.1em;
|
|
262
|
+
-webkit-padding-end: 1.1em;
|
|
263
|
+
padding-inline-end: 1.1em;
|
|
264
|
+
padding-top: 0;
|
|
265
|
+
padding-bottom: 0;
|
|
266
|
+
height: 44px;
|
|
267
|
+
background: transparent;
|
|
268
|
+
color: var(--ion-color-primary, #3880ff);
|
|
269
|
+
font-size: 14px;
|
|
270
|
+
font-weight: 500;
|
|
271
|
+
text-transform: uppercase;
|
|
272
|
+
box-shadow: none;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.picker-columns {
|
|
276
|
+
height: 216px;
|
|
277
|
+
perspective: 1800px;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.picker-above-highlight {
|
|
281
|
+
top: 0;
|
|
282
|
+
transform: translate3d(0, 0, 90px);
|
|
283
|
+
position: absolute;
|
|
284
|
+
width: 100%;
|
|
285
|
+
height: 81px;
|
|
286
|
+
border-bottom: 1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
|
|
287
|
+
background: linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);
|
|
288
|
+
z-index: 10;
|
|
289
|
+
}
|
|
290
|
+
@supports (inset-inline-start: 0) {
|
|
291
|
+
.picker-above-highlight {
|
|
292
|
+
inset-inline-start: 0;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
@supports not (inset-inline-start: 0) {
|
|
296
|
+
.picker-above-highlight {
|
|
297
|
+
left: 0;
|
|
298
|
+
}
|
|
299
|
+
:host-context([dir=rtl]) .picker-above-highlight {
|
|
300
|
+
left: unset;
|
|
301
|
+
right: unset;
|
|
302
|
+
right: 0;
|
|
303
|
+
}
|
|
304
|
+
[dir=rtl] .picker-above-highlight {
|
|
305
|
+
left: unset;
|
|
306
|
+
right: unset;
|
|
307
|
+
right: 0;
|
|
308
|
+
}
|
|
309
|
+
@supports selector(:dir(rtl)) {
|
|
310
|
+
.picker-above-highlight:dir(rtl) {
|
|
311
|
+
left: unset;
|
|
312
|
+
right: unset;
|
|
313
|
+
right: 0;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
.picker-below-highlight {
|
|
319
|
+
top: 115px;
|
|
320
|
+
transform: translate3d(0, 0, 90px);
|
|
321
|
+
position: absolute;
|
|
322
|
+
width: 100%;
|
|
323
|
+
height: 119px;
|
|
324
|
+
border-top: 1px solid var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
|
|
325
|
+
background: linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);
|
|
326
|
+
z-index: 11;
|
|
327
|
+
}
|
|
328
|
+
@supports (inset-inline-start: 0) {
|
|
329
|
+
.picker-below-highlight {
|
|
330
|
+
inset-inline-start: 0;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
@supports not (inset-inline-start: 0) {
|
|
334
|
+
.picker-below-highlight {
|
|
335
|
+
left: 0;
|
|
336
|
+
}
|
|
337
|
+
:host-context([dir=rtl]) .picker-below-highlight {
|
|
338
|
+
left: unset;
|
|
339
|
+
right: unset;
|
|
340
|
+
right: 0;
|
|
341
|
+
}
|
|
342
|
+
[dir=rtl] .picker-below-highlight {
|
|
343
|
+
left: unset;
|
|
344
|
+
right: unset;
|
|
345
|
+
right: 0;
|
|
346
|
+
}
|
|
347
|
+
@supports selector(:dir(rtl)) {
|
|
348
|
+
.picker-below-highlight:dir(rtl) {
|
|
349
|
+
left: unset;
|
|
350
|
+
right: unset;
|
|
351
|
+
right: 0;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
258
354
|
}
|
|
@@ -3,109 +3,23 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { expect } from "@playwright/test";
|
|
5
5
|
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
10
|
-
test.describe(title('picker: rendering'), () => {
|
|
11
|
-
test('inline pickers should not have visual regression', async ({ page }) => {
|
|
12
|
-
await page.goto(`/src/components/picker/test/basic`, config);
|
|
13
|
-
const fullStack = page.locator('#inline ion-picker-column-option[data-test-value="full-stack"]');
|
|
14
|
-
const onion = page.locator('#inline ion-picker-column-option[data-test-value="onion"]');
|
|
15
|
-
await expect(fullStack).toHaveClass(/option-active/);
|
|
16
|
-
await expect(onion).toHaveClass(/option-active/);
|
|
17
|
-
await page.waitForChanges();
|
|
18
|
-
await expect(page.locator('#inline')).toHaveScreenshot(screenshot(`picker-inline-diff`));
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
test.describe(title('picker: overlay rendering'), () => {
|
|
22
|
-
test('popover: should not have visual regression', async ({ page }) => {
|
|
23
|
-
await page.goto(`/src/components/picker/test/basic`, config);
|
|
24
|
-
const button = page.locator('#popover');
|
|
25
|
-
const didPresent = await page.spyOnEvent('ionPopoverDidPresent');
|
|
26
|
-
const picker = page.locator('ion-popover ion-picker');
|
|
27
|
-
await button.click();
|
|
28
|
-
await didPresent.next();
|
|
29
|
-
await expect(picker).toBeVisible();
|
|
30
|
-
const popoverContent = page.locator('ion-popover .ion-delegate-host');
|
|
31
|
-
await expect(popoverContent).toHaveScreenshot(screenshot(`picker-popover-diff`), {
|
|
32
|
-
/**
|
|
33
|
-
* Animations must be enabled to capture the screenshot.
|
|
34
|
-
* By default, animations are disabled with toHaveScreenshot,
|
|
35
|
-
* and when capturing the screenshot will call animation.finish().
|
|
36
|
-
* This will cause the popover to close and the screenshot capture
|
|
37
|
-
* to be invalid.
|
|
38
|
-
*/
|
|
39
|
-
animations: 'allow',
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
test('modal: should not have visual regression', async ({ page }) => {
|
|
6
|
+
configs().forEach(({ title, screenshot, config }) => {
|
|
7
|
+
test.describe(title('picker: basic'), () => {
|
|
8
|
+
test('should not have visual regressions', async ({ page }) => {
|
|
43
9
|
await page.goto('/src/components/picker/test/basic', config);
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
await button.click();
|
|
10
|
+
const didPresent = await page.spyOnEvent('ionPickerDidPresent');
|
|
11
|
+
const didDismiss = await page.spyOnEvent('ionPickerDidDismiss');
|
|
12
|
+
await page.click('#basic');
|
|
48
13
|
await didPresent.next();
|
|
49
|
-
await expect(picker).toBeVisible();
|
|
50
|
-
const modalContent = page.locator('ion-modal .ion-delegate-host');
|
|
51
|
-
await expect(modalContent).toHaveScreenshot(screenshot(`picker-modal-diff`), {
|
|
52
|
-
/**
|
|
53
|
-
* Animations must be enabled to capture the screenshot.
|
|
54
|
-
* By default, animations are disabled with toHaveScreenshot,
|
|
55
|
-
* and when capturing the screenshot will call animation.finish().
|
|
56
|
-
* This will cause the modal to close and the screenshot capture
|
|
57
|
-
* to be invalid.
|
|
58
|
-
*/
|
|
59
|
-
animations: 'allow',
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
/**
|
|
65
|
-
* This behavior does not vary across modes/directions.
|
|
66
|
-
*/
|
|
67
|
-
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
68
|
-
test.describe(title('picker: focus'), () => {
|
|
69
|
-
test.beforeEach(async ({ page }) => {
|
|
70
|
-
await page.setContent(`
|
|
71
|
-
<ion-picker>
|
|
72
|
-
<ion-picker-column value="full-stack" id="first">
|
|
73
|
-
<ion-picker-column-option value="minified">Minified</ion-picker-column-option>
|
|
74
|
-
<ion-picker-column-option value="responsive">Responsive</ion-picker-column-option>
|
|
75
|
-
<ion-picker-column-option value="full-stack">Full Stack</ion-picker-column-option>
|
|
76
|
-
<ion-picker-column-option value="mobile-first">Mobile First</ion-picker-column-option>
|
|
77
|
-
<ion-picker-column-option value="serverless">Serverless</ion-picker-column-option>
|
|
78
|
-
</ion-picker-column>
|
|
79
|
-
<ion-picker-column value="onion" id="second">
|
|
80
|
-
<ion-picker-column-option value="tomato">Tomato</ion-picker-column-option>
|
|
81
|
-
<ion-picker-column-option value="avocado">Avocado</ion-picker-column-option>
|
|
82
|
-
<ion-picker-column-option value="onion">Onion</ion-picker-column-option>
|
|
83
|
-
<ion-picker-column-option value="potato">Potato</ion-picker-column-option>
|
|
84
|
-
<ion-picker-column-option value="artichoke">Artichoke</ion-picker-column-option>
|
|
85
|
-
</ion-picker-column>
|
|
86
|
-
</ion-picker>
|
|
87
|
-
`, config);
|
|
88
|
-
});
|
|
89
|
-
test('tabbing should correctly move focus between columns', async ({ page }) => {
|
|
90
|
-
const firstColumn = page.locator('ion-picker-column#first');
|
|
91
|
-
const secondColumn = page.locator('ion-picker-column#second');
|
|
92
|
-
// Focus first column
|
|
93
|
-
await page.keyboard.press('Tab');
|
|
94
|
-
await expect(firstColumn).toBeFocused();
|
|
95
14
|
await page.waitForChanges();
|
|
96
|
-
|
|
97
|
-
await page.
|
|
98
|
-
await
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const secondColumn = page.locator('ion-picker-column#second');
|
|
103
|
-
await secondColumn.evaluate((el) => el.setFocus());
|
|
104
|
-
await expect(secondColumn).toBeFocused();
|
|
15
|
+
await expect(page).toHaveScreenshot(screenshot(`picker-basic`));
|
|
16
|
+
await page.click('.picker-opt:nth-child(2)');
|
|
17
|
+
await page.click('ion-picker .save-btn');
|
|
18
|
+
await didDismiss.next();
|
|
19
|
+
await page.click('#basic');
|
|
20
|
+
await didPresent.next();
|
|
105
21
|
await page.waitForChanges();
|
|
106
|
-
|
|
107
|
-
await page.keyboard.press('Shift+Tab');
|
|
108
|
-
await expect(firstColumn).toBeFocused();
|
|
22
|
+
await expect(page).toHaveScreenshot(screenshot(`picker-value-selected`));
|
|
109
23
|
});
|
|
110
24
|
});
|
|
111
25
|
});
|
|
@@ -9,10 +9,10 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
9
9
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
10
|
test.describe(title('picker: isOpen'), () => {
|
|
11
11
|
test('should open and close the picker', async ({ page }) => {
|
|
12
|
-
await page.goto('/src/components/picker
|
|
12
|
+
await page.goto('/src/components/picker/test/is-open', config);
|
|
13
13
|
const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
|
|
14
14
|
const ionPickerDidDismiss = await page.spyOnEvent('ionPickerDidDismiss');
|
|
15
|
-
const picker = page.locator('ion-picker
|
|
15
|
+
const picker = page.locator('ion-picker');
|
|
16
16
|
await page.click('#default');
|
|
17
17
|
await ionPickerDidPresent.next();
|
|
18
18
|
await expect(picker).toBeVisible();
|
|
@@ -21,8 +21,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
21
21
|
await expect(picker).toBeHidden();
|
|
22
22
|
});
|
|
23
23
|
test('should open if isOpen is true on load', async ({ page }) => {
|
|
24
|
-
await page.setContent('<ion-picker
|
|
25
|
-
await expect(page.locator('ion-picker
|
|
24
|
+
await page.setContent('<ion-picker is-open="true"></ion-picker>', config);
|
|
25
|
+
await expect(page.locator('ion-picker')).toBeVisible();
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
});
|
|
@@ -6,27 +6,27 @@ import { Picker } from "../picker";
|
|
|
6
6
|
it('picker should be assigned an incrementing id', async () => {
|
|
7
7
|
const page = await newSpecPage({
|
|
8
8
|
components: [Picker],
|
|
9
|
-
html: `<ion-picker
|
|
9
|
+
html: `<ion-picker is-open="true"></ion-picker>`,
|
|
10
10
|
});
|
|
11
11
|
let picker;
|
|
12
|
-
picker = page.body.querySelector('ion-picker
|
|
12
|
+
picker = page.body.querySelector('ion-picker');
|
|
13
13
|
expect(picker).not.toBe(null);
|
|
14
14
|
expect(picker.getAttribute('id')).toBe('ion-overlay-1');
|
|
15
15
|
// Remove the picker from the DOM
|
|
16
16
|
picker.remove();
|
|
17
17
|
await page.waitForChanges();
|
|
18
18
|
// Create a new picker to verify the id is incremented
|
|
19
|
-
picker = document.createElement('ion-picker
|
|
19
|
+
picker = document.createElement('ion-picker');
|
|
20
20
|
picker.isOpen = true;
|
|
21
21
|
page.body.appendChild(picker);
|
|
22
22
|
await page.waitForChanges();
|
|
23
|
-
picker = page.body.querySelector('ion-picker
|
|
23
|
+
picker = page.body.querySelector('ion-picker');
|
|
24
24
|
expect(picker.getAttribute('id')).toBe('ion-overlay-2');
|
|
25
25
|
// Presenting the same picker again should reuse the existing id
|
|
26
26
|
picker.isOpen = false;
|
|
27
27
|
await page.waitForChanges();
|
|
28
28
|
picker.isOpen = true;
|
|
29
29
|
await page.waitForChanges();
|
|
30
|
-
picker = page.body.querySelector('ion-picker
|
|
30
|
+
picker = page.body.querySelector('ion-picker');
|
|
31
31
|
expect(picker.getAttribute('id')).toBe('ion-overlay-2');
|
|
32
32
|
});
|
|
@@ -9,7 +9,7 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
9
9
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
10
|
test.describe(title('picker: trigger'), () => {
|
|
11
11
|
test.beforeEach(async ({ page }) => {
|
|
12
|
-
await page.goto('/src/components/picker
|
|
12
|
+
await page.goto('/src/components/picker/test/trigger', config);
|
|
13
13
|
});
|
|
14
14
|
test('should open the picker', async ({ page }) => {
|
|
15
15
|
const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
|