@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.
Files changed (196) hide show
  1. package/components/data.js +1 -1
  2. package/components/ion-datetime.js +30 -39
  3. package/components/ion-picker-column-internal.d.ts +11 -0
  4. package/components/ion-picker-column-internal.js +9 -0
  5. package/components/ion-picker-column.js +2 -2
  6. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  7. package/components/ion-picker-internal.js +9 -0
  8. package/components/ion-picker.js +309 -1
  9. package/components/overlays.js +3 -6
  10. package/components/picker-column-internal.js +390 -0
  11. package/components/picker-column.js +317 -363
  12. package/components/{picker.js → picker-internal.js} +16 -16
  13. package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
  14. package/dist/cjs/index.cjs.js +1 -1
  15. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  17. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  18. package/dist/cjs/ion-datetime_3.cjs.entry.js +35 -29
  19. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  20. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  22. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +72 -105
  23. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
  24. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  25. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  26. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  27. package/dist/cjs/ionic.cjs.js +1 -1
  28. package/dist/cjs/loader.cjs.js +1 -1
  29. package/dist/cjs/{overlays-e8e05b0e.js → overlays-2c6b1072.js} +3 -6
  30. package/dist/collection/collection-manifest.json +6 -7
  31. package/dist/collection/components/datetime/datetime.ios.css +13 -0
  32. package/dist/collection/components/datetime/datetime.js +16 -19
  33. package/dist/collection/components/datetime/datetime.md.css +13 -0
  34. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  35. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  36. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  37. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  38. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  39. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  40. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
  41. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  42. package/dist/collection/components/datetime/utils/data.js +1 -1
  43. package/dist/collection/components/picker/picker.ios.css +205 -100
  44. package/dist/collection/components/picker/picker.js +743 -461
  45. package/dist/collection/components/picker/picker.md.css +194 -98
  46. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  47. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  48. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  49. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  50. package/dist/collection/components/picker-column/picker-column.ios.css +160 -120
  51. package/dist/collection/components/picker-column/picker-column.js +329 -514
  52. package/dist/collection/components/picker-column/picker-column.md.css +107 -134
  53. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  54. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  55. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  56. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  57. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  58. package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
  59. package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
  60. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  61. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  62. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
  63. package/dist/collection/components/picker-internal/picker-internal.js +544 -0
  64. package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
  65. package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
  66. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  67. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +22 -23
  68. package/dist/collection/utils/overlays.js +3 -6
  69. package/dist/docs.json +23 -487
  70. package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
  71. package/dist/esm/index.js +1 -1
  72. package/dist/esm/ion-action-sheet.entry.js +1 -1
  73. package/dist/esm/ion-alert.entry.js +1 -1
  74. package/dist/esm/ion-datetime-button.entry.js +1 -1
  75. package/dist/esm/ion-datetime_3.entry.js +34 -28
  76. package/dist/esm/ion-loading.entry.js +1 -1
  77. package/dist/esm/ion-menu_3.entry.js +1 -1
  78. package/dist/esm/ion-modal.entry.js +1 -1
  79. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +72 -105
  80. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
  81. package/dist/esm/ion-popover.entry.js +1 -1
  82. package/dist/esm/ion-select_3.entry.js +1 -1
  83. package/dist/esm/ion-toast.entry.js +1 -1
  84. package/dist/esm/ionic.js +1 -1
  85. package/dist/esm/loader.js +1 -1
  86. package/dist/esm/{overlays-fbc5cab5.js → overlays-d23ea6e1.js} +3 -6
  87. package/dist/esm-es5/index.js +1 -1
  88. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  89. package/dist/esm-es5/ion-alert.entry.js +1 -1
  90. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  91. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  92. package/dist/esm-es5/ion-loading.entry.js +1 -1
  93. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  94. package/dist/esm-es5/ion-modal.entry.js +1 -1
  95. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  96. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  97. package/dist/esm-es5/ion-popover.entry.js +1 -1
  98. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  99. package/dist/esm-es5/ion-toast.entry.js +1 -1
  100. package/dist/esm-es5/ionic.js +1 -1
  101. package/dist/esm-es5/loader.js +1 -1
  102. package/dist/esm-es5/overlays-d23ea6e1.js +4 -0
  103. package/dist/html.html-data.json +1 -152
  104. package/dist/ionic/index.esm.js +1 -1
  105. package/dist/ionic/ionic.esm.js +1 -1
  106. package/dist/ionic/{p-846ee227.entry.js → p-1e57bd24.entry.js} +1 -1
  107. package/dist/ionic/{p-26798a7b.system.entry.js → p-1f620cd4.system.entry.js} +1 -1
  108. package/dist/ionic/{p-5d42b6b4.entry.js → p-27ea6f4e.entry.js} +1 -1
  109. package/dist/ionic/{p-6b7c55cd.entry.js → p-2dc43d20.entry.js} +1 -1
  110. package/dist/ionic/{p-4a36430f.system.entry.js → p-2f2293da.system.entry.js} +1 -1
  111. package/dist/ionic/{p-21c3515a.entry.js → p-2f300cca.entry.js} +1 -1
  112. package/dist/ionic/{p-8017aad2.system.entry.js → p-39a335b6.system.entry.js} +1 -1
  113. package/dist/ionic/{p-4a081ea9.entry.js → p-3b568d18.entry.js} +1 -1
  114. package/dist/ionic/{p-c18de88a.system.entry.js → p-3e3d06a6.system.entry.js} +1 -1
  115. package/dist/ionic/{p-96dbbac1.system.entry.js → p-4df97e3c.system.entry.js} +1 -1
  116. package/dist/ionic/p-60502e3f.system.entry.js +4 -0
  117. package/dist/ionic/{p-563c41f0.system.entry.js → p-60b386c9.system.entry.js} +1 -1
  118. package/dist/ionic/p-67da080d.entry.js +4 -0
  119. package/dist/ionic/p-73ea8f82.system.entry.js +4 -0
  120. package/dist/ionic/p-80fa068e.entry.js +4 -0
  121. package/dist/ionic/{p-a8baa23e.entry.js → p-8780cc2a.entry.js} +1 -1
  122. package/dist/ionic/{p-f910cc73.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
  123. package/dist/ionic/p-ab11130c.system.js +4 -0
  124. package/dist/ionic/p-af16fe62.entry.js +4 -0
  125. package/dist/ionic/{p-73aa7604.entry.js → p-af19a573.entry.js} +1 -1
  126. package/dist/ionic/p-c14f8ac8.js +4 -0
  127. package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
  128. package/dist/ionic/{p-b133e9b4.entry.js → p-ddb30596.entry.js} +1 -1
  129. package/dist/ionic/{p-27bcbbc7.system.entry.js → p-e1e5afe1.system.entry.js} +1 -1
  130. package/dist/ionic/p-e3584231.system.js +1 -1
  131. package/dist/ionic/{p-fbf3a689.system.entry.js → p-e3ad9607.system.entry.js} +1 -1
  132. package/dist/ionic/{p-73190c5f.entry.js → p-f78efbd1.entry.js} +1 -1
  133. package/dist/ionic/{p-54dfc9b5.system.js → p-fff7a57e.system.js} +1 -1
  134. package/dist/types/components/datetime/utils/data.d.ts +2 -2
  135. package/dist/types/components/picker/picker.d.ts +131 -74
  136. package/dist/types/components/picker-column/picker-column.d.ts +39 -105
  137. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  138. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  139. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  140. package/dist/types/components.d.ts +122 -163
  141. package/dist/types/interface.d.ts +1 -1
  142. package/dist/types/utils/config.d.ts +2 -2
  143. package/dist/types/utils/overlays.d.ts +2 -5
  144. package/hydrate/index.js +1151 -1287
  145. package/package.json +1 -1
  146. package/components/ion-picker-column-option.d.ts +0 -11
  147. package/components/ion-picker-column-option.js +0 -9
  148. package/components/ion-picker-legacy-column.d.ts +0 -11
  149. package/components/ion-picker-legacy-column.js +0 -9
  150. package/components/ion-picker-legacy.js +0 -309
  151. package/components/picker-column-option.js +0 -122
  152. package/components/picker-column2.js +0 -379
  153. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
  154. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -113
  155. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  156. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  157. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  158. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  159. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  160. package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
  161. package/dist/collection/components/picker-legacy/picker.js +0 -817
  162. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  163. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  164. package/dist/esm/ion-picker-column-option.entry.js +0 -100
  165. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  166. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  167. package/dist/esm-es5/ion-picker.entry.js +0 -4
  168. package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
  169. package/dist/ionic/p-23672c82.system.entry.js +0 -4
  170. package/dist/ionic/p-8fa6583d.system.js +0 -4
  171. package/dist/ionic/p-9282b16f.entry.js +0 -4
  172. package/dist/ionic/p-9ba90516.system.entry.js +0 -4
  173. package/dist/ionic/p-afcf4620.entry.js +0 -4
  174. package/dist/ionic/p-c2910c78.entry.js +0 -4
  175. package/dist/ionic/p-c8f0a036.entry.js +0 -4
  176. package/dist/ionic/p-ca8938f4.js +0 -4
  177. package/dist/ionic/p-ca9d1792.system.entry.js +0 -4
  178. package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
  179. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  180. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  181. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  182. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  183. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  184. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  185. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  186. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  187. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  188. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  189. /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
  190. /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
  191. /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
  192. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  193. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  194. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  195. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
  196. /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
@@ -53,166 +53,97 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- :host {
56
+ .picker-col {
57
57
  display: flex;
58
- align-items: center;
58
+ position: relative;
59
+ flex: 1;
59
60
  justify-content: center;
60
- max-width: 100%;
61
- height: 200px;
62
- font-size: 22px;
63
- text-align: center;
61
+ height: 100%;
62
+ box-sizing: content-box;
63
+ contain: content;
64
64
  }
65
65
 
66
66
  .picker-opts {
67
- /**
68
- * This padding must be set here and not on the
69
- * host to ensure that the focus highlight on the
70
- * column is not overly narrow.
71
- */
72
- -webkit-padding-start: 16px;
73
- padding-inline-start: 16px;
74
- -webkit-padding-end: 16px;
75
- padding-inline-end: 16px;
76
- padding-top: 0px;
77
- padding-bottom: 0px;
78
- /**
79
- * When using reactive data, such as in datetime's
80
- * wheel picker, there may be layout shifts between
81
- * individual columns in a picker as the columns
82
- * shrink to fit the widest item in the column.
83
- * Setting a minimum width avoids this layout shifting.
84
- *
85
- * Note that we need this min-width set on the same
86
- * element as the vertical padding (i.e. not on the
87
- * host).
88
- */
89
- min-width: 26px;
90
- max-height: 200px;
91
- outline: none;
92
- /**
93
- * Added so that text-align can be set on the host
94
- * from external components. For example, datetime
95
- * changes the alignment of specific columns in its
96
- * wheel pickers.
97
- */
98
- text-align: inherit;
99
- scroll-snap-type: y mandatory;
100
- /**
101
- * Need to explicitly set overflow-x: hidden
102
- * for older implementations of scroll snapping.
103
- */
104
- overflow-x: hidden;
105
- overflow-y: scroll;
106
- scrollbar-width: none;
107
- }
108
-
109
- /**
110
- * Hide scrollbars on Chrome and Safari
111
- */
112
- .picker-opts::-webkit-scrollbar {
113
- display: none;
67
+ position: relative;
68
+ flex: 1;
69
+ max-width: 100%;
114
70
  }
115
71
 
116
- ::slotted(ion-picker-column-option) {
72
+ .picker-opt {
73
+ top: 0;
117
74
  display: block;
118
- scroll-snap-align: center;
119
- }
120
-
121
- .picker-item-empty,
122
- :host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled) {
123
- scroll-snap-align: none;
124
- }
125
-
126
- ::slotted([slot=prefix]), ::slotted([slot=suffix]) {
127
- max-width: 200px;
75
+ position: absolute;
76
+ width: 100%;
77
+ border: 0;
78
+ text-align: center;
128
79
  text-overflow: ellipsis;
129
80
  white-space: nowrap;
81
+ contain: strict;
130
82
  overflow: hidden;
83
+ will-change: transform;
131
84
  }
132
-
133
- ::slotted([slot=prefix]) {
134
- /**
135
- * This is added in addition to the column's own padding so that there is white
136
- * space between the slot and the column's focus highlight.
137
- */
138
- -webkit-padding-start: 16px;
139
- padding-inline-start: 16px;
140
- -webkit-padding-end: 16px;
141
- padding-inline-end: 16px;
142
- padding-top: 0;
143
- padding-bottom: 0;
144
- justify-content: end;
85
+ @supports (inset-inline-start: 0) {
86
+ .picker-opt {
87
+ inset-inline-start: 0;
88
+ }
145
89
  }
146
-
147
- ::slotted([slot=suffix]) {
148
- /**
149
- * This is added in addition to the column's own padding so that there is white
150
- * space between the slot and the column's focus highlight.
151
- */
152
- -webkit-padding-start: 16px;
153
- padding-inline-start: 16px;
154
- -webkit-padding-end: 16px;
155
- padding-inline-end: 16px;
156
- padding-top: 0;
157
- padding-bottom: 0;
158
- justify-content: start;
90
+ @supports not (inset-inline-start: 0) {
91
+ .picker-opt {
92
+ left: 0;
93
+ }
94
+ :host-context([dir=rtl]) .picker-opt {
95
+ left: unset;
96
+ right: unset;
97
+ right: 0;
98
+ }
99
+ [dir=rtl] .picker-opt {
100
+ left: unset;
101
+ right: unset;
102
+ right: 0;
103
+ }
104
+ @supports selector(:dir(rtl)) {
105
+ .picker-opt:dir(rtl) {
106
+ left: unset;
107
+ right: unset;
108
+ right: 0;
109
+ }
110
+ }
159
111
  }
160
112
 
161
- :host .picker-item {
162
- padding-left: 0;
163
- padding-right: 0;
164
- padding-top: 0;
165
- padding-bottom: 0;
166
- margin-left: 0;
167
- margin-right: 0;
168
- margin-top: 0;
169
- margin-bottom: 0;
170
- display: block;
171
- width: 100%;
172
- height: 34px;
173
- border: 0px;
174
- outline: none;
175
- background: transparent;
176
- color: inherit;
177
- font-family: var(--ion-font-family, inherit);
178
- font-size: inherit;
179
- line-height: 34px;
180
- text-align: inherit;
181
- text-overflow: ellipsis;
182
- white-space: nowrap;
183
- cursor: pointer;
184
- overflow: hidden;
185
- scroll-snap-align: center;
113
+ .picker-opt.picker-opt-disabled {
114
+ pointer-events: none;
186
115
  }
187
116
 
188
- :host .picker-item-empty,
189
- :host .picker-item[disabled] {
190
- cursor: default;
117
+ .picker-opt-disabled {
118
+ opacity: 0;
191
119
  }
192
120
 
193
- :host .picker-item-empty,
194
- :host(:not([disabled])) .picker-item[disabled] {
195
- scroll-snap-align: none;
121
+ .picker-opts-left {
122
+ justify-content: flex-start;
196
123
  }
197
124
 
198
- :host([disabled]) {
199
- overflow-y: hidden;
125
+ .picker-opts-right {
126
+ justify-content: flex-end;
200
127
  }
201
128
 
202
- :host .picker-item[disabled] {
203
- opacity: 0.4;
129
+ .picker-opt:active, .picker-opt:focus {
130
+ outline: none;
204
131
  }
205
132
 
206
- :host(.picker-column-active) .picker-item.picker-item-active {
207
- color: var(--ion-color-base);
133
+ .picker-prefix {
134
+ position: relative;
135
+ flex: 1;
136
+ text-align: end;
137
+ white-space: nowrap;
208
138
  }
209
139
 
210
- @media (any-hover: hover) {
211
- :host(:focus) .picker-opts {
212
- outline: none;
213
- background: rgba(var(--ion-color-base-rgb), 0.2);
214
- }
140
+ .picker-suffix {
141
+ position: relative;
142
+ flex: 1;
143
+ text-align: start;
144
+ white-space: nowrap;
215
145
  }
146
+
216
147
  /**
217
148
  * Convert a font size to a dynamic font size.
218
149
  * Fonts that participate in Dynamic Type should use
@@ -268,6 +199,48 @@
268
199
  * }
269
200
  * }
270
201
  */
271
- :host .picker-item-active {
272
- color: var(--ion-color-base);
202
+ .picker-col {
203
+ -webkit-padding-start: 8px;
204
+ padding-inline-start: 8px;
205
+ -webkit-padding-end: 8px;
206
+ padding-inline-end: 8px;
207
+ padding-top: 0;
208
+ padding-bottom: 0;
209
+ transform-style: preserve-3d;
210
+ }
211
+
212
+ .picker-prefix,
213
+ .picker-suffix,
214
+ .picker-opts {
215
+ top: 77px;
216
+ transform-style: preserve-3d;
217
+ color: inherit;
218
+ font-size: 22px;
219
+ line-height: 42px;
220
+ pointer-events: none;
221
+ }
222
+
223
+ .picker-opt {
224
+ margin-left: 0;
225
+ margin-right: 0;
226
+ margin-top: 0;
227
+ margin-bottom: 0;
228
+ padding-left: 0;
229
+ padding-right: 0;
230
+ padding-top: 0;
231
+ padding-bottom: 0;
232
+ height: 43px;
233
+ transition-timing-function: ease-out;
234
+ background: transparent;
235
+ color: inherit;
236
+ font-size: 22px;
237
+ line-height: 42px;
238
+ backface-visibility: hidden;
239
+ pointer-events: auto;
240
+ }
241
+
242
+ .picker-prefix,
243
+ .picker-suffix,
244
+ .picker-opt.picker-opt-selected {
245
+ color: var(--ion-color-primary, #3880ff);
273
246
  }
@@ -25,10 +25,10 @@ describe('picker-column', () => {
25
25
  };
26
26
  const page = await newSpecPage({
27
27
  components: [PickerColumnCmp],
28
- template: () => h("ion-picker-legacy-column", { col: col }),
28
+ template: () => h("ion-picker-column", { col: col }),
29
29
  });
30
- const firstOption = page.body.querySelector('ion-picker-legacy-column .picker-opt:nth-child(1)');
31
- const secondOption = page.body.querySelector('ion-picker-legacy-column .picker-opt:nth-child(2)');
30
+ const firstOption = page.body.querySelector('ion-picker-column .picker-opt:nth-child(1)');
31
+ const secondOption = page.body.querySelector('ion-picker-column .picker-opt:nth-child(2)');
32
32
  expect(firstOption.getAttribute('aria-label')).toBe('C Sharp');
33
33
  expect(secondOption.getAttribute('aria-label')).toBe(null);
34
34
  });
@@ -15,9 +15,9 @@ describe('picker-column: dynamic options', () => {
15
15
  ];
16
16
  const page = await newSpecPage({
17
17
  components: [PickerColumnCmp],
18
- template: () => (h("ion-picker-legacy-column", { col: { options: defaultOptions, name: 'animals' } })),
18
+ template: () => h("ion-picker-column", { col: { options: defaultOptions, name: 'animals' } }),
19
19
  });
20
- const pickerCol = page.body.querySelector('ion-picker-legacy-column');
20
+ const pickerCol = page.body.querySelector('ion-picker-column');
21
21
  pickerCol.col = {
22
22
  options: [...defaultOptions, { text: 'Carrot', value: 'carrot' }],
23
23
  name: 'vegetables',
@@ -9,9 +9,9 @@ describe('picker-column', () => {
9
9
  const col = { cssClass: 'test-class', options: [], name: 'col' };
10
10
  const page = await newSpecPage({
11
11
  components: [PickerColumnCmp],
12
- template: () => h("ion-picker-legacy-column", { col: col }),
12
+ template: () => h("ion-picker-column", { col: col }),
13
13
  });
14
- const pickerCol = page.body.querySelector('ion-picker-legacy-column');
14
+ const pickerCol = page.body.querySelector('ion-picker-column');
15
15
  expect(pickerCol.classList.contains('test-class')).toBe(true);
16
16
  });
17
17
  });
@@ -6,11 +6,11 @@ import { configs, test } from "../../../../utils/test/playwright/index";
6
6
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
7
7
  test.describe(title('picker-column'), () => {
8
8
  test.beforeEach(async ({ page }) => {
9
- await page.goto(`/src/components/picker-legacy-column/test/standalone`, config);
9
+ await page.goto(`/src/components/picker-column/test/standalone`, config);
10
10
  });
11
11
  test('should present picker without ion-app', async ({ page }) => {
12
12
  const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
13
- const picker = page.locator('ion-picker-legacy');
13
+ const picker = page.locator('ion-picker');
14
14
  await page.click('#single-column-button');
15
15
  await ionPickerDidPresent.next();
16
16
  await expect(picker).toBeVisible();
@@ -22,7 +22,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
22
22
  });
23
23
  const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
24
24
  const ionPickerColChangeEvent = await page.spyOnEvent('ionPickerColChange');
25
- const column = page.locator('ion-picker-legacy-column');
25
+ const column = page.locator('ion-picker-column');
26
26
  const secondOption = column.locator('.picker-opt').nth(1);
27
27
  await page.click('#single-column-button');
28
28
  await ionPickerDidPresent.next();
@@ -53,7 +53,35 @@
53
53
  * }
54
54
  * }
55
55
  */
56
- button {
56
+ :host {
57
+ -webkit-padding-start: 16px;
58
+ padding-inline-start: 16px;
59
+ -webkit-padding-end: 16px;
60
+ padding-inline-end: 16px;
61
+ padding-top: 0px;
62
+ padding-bottom: 0px;
63
+ height: 200px;
64
+ outline: none;
65
+ font-size: 22px;
66
+ scroll-snap-type: y mandatory;
67
+ /**
68
+ * Need to explicitly set overflow-x: hidden
69
+ * for older implementations of scroll snapping.
70
+ */
71
+ overflow-x: hidden;
72
+ overflow-y: scroll;
73
+ scrollbar-width: none;
74
+ text-align: center;
75
+ }
76
+
77
+ /**
78
+ * Hide scrollbars on Chrome and Safari
79
+ */
80
+ :host::-webkit-scrollbar {
81
+ display: none;
82
+ }
83
+
84
+ :host .picker-item {
57
85
  padding-left: 0;
58
86
  padding-right: 0;
59
87
  padding-top: 0;
@@ -62,6 +90,7 @@ button {
62
90
  margin-right: 0;
63
91
  margin-top: 0;
64
92
  margin-bottom: 0;
93
+ display: block;
65
94
  width: 100%;
66
95
  height: 34px;
67
96
  border: 0px;
@@ -76,16 +105,34 @@ button {
76
105
  white-space: nowrap;
77
106
  cursor: pointer;
78
107
  overflow: hidden;
108
+ scroll-snap-align: center;
79
109
  }
80
110
 
81
- :host(.option-disabled) {
82
- opacity: 0.4;
111
+ :host .picker-item-empty,
112
+ :host .picker-item[disabled] {
113
+ cursor: default;
83
114
  }
84
115
 
85
- :host(.option-disabled) button {
86
- cursor: default;
116
+ :host .picker-item-empty,
117
+ :host(:not([disabled])) .picker-item[disabled] {
118
+ scroll-snap-align: none;
119
+ }
120
+
121
+ :host([disabled]) {
122
+ overflow-y: hidden;
123
+ }
124
+
125
+ :host .picker-item[disabled] {
126
+ opacity: 0.4;
87
127
  }
88
128
 
89
- :host(.option-active) {
129
+ :host(.picker-column-active) .picker-item.picker-item-active {
90
130
  color: var(--ion-color-base);
131
+ }
132
+
133
+ @media (any-hover: hover) {
134
+ :host(:focus) {
135
+ outline: none;
136
+ background: rgba(var(--ion-color-base-rgb), 0.2);
137
+ }
91
138
  }