@ionic/core 7.5.8-dev.11701894917.1c1465bd → 7.5.8-dev.11702074871.1238046f

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 (198) hide show
  1. package/components/data.js +1 -1
  2. package/components/ion-datetime.js +39 -30
  3. package/components/ion-picker-column-option.d.ts +11 -0
  4. package/components/ion-picker-column-option.js +9 -0
  5. package/components/ion-picker-column.js +2 -2
  6. package/components/ion-picker-legacy-column.d.ts +11 -0
  7. package/components/ion-picker-legacy-column.js +9 -0
  8. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  9. package/components/ion-picker-legacy.js +309 -0
  10. package/components/ion-picker.js +1 -309
  11. package/components/overlays.js +6 -3
  12. package/components/picker-column-option.js +122 -0
  13. package/components/picker-column.js +351 -322
  14. package/components/picker-column2.js +379 -0
  15. package/components/{picker-internal.js → picker.js} +29 -22
  16. package/dist/cjs/{data-36b9094e.js → data-e7526b58.js} +1 -1
  17. package/dist/cjs/index.cjs.js +1 -1
  18. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  19. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  20. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  21. package/dist/cjs/ion-datetime_3.cjs.entry.js +29 -35
  22. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  23. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  24. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  25. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  26. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  27. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  28. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  29. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  30. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  31. package/dist/cjs/ionic.cjs.js +1 -1
  32. package/dist/cjs/loader.cjs.js +1 -1
  33. package/dist/cjs/{overlays-2c6b1072.js → overlays-e8e05b0e.js} +6 -3
  34. package/dist/collection/collection-manifest.json +7 -6
  35. package/dist/collection/components/datetime/datetime.ios.css +8 -13
  36. package/dist/collection/components/datetime/datetime.js +19 -16
  37. package/dist/collection/components/datetime/datetime.md.css +8 -13
  38. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  39. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  40. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  41. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  42. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  43. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  44. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +2 -2
  45. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  46. package/dist/collection/components/datetime/utils/data.js +1 -1
  47. package/dist/collection/components/picker/picker.ios.css +113 -211
  48. package/dist/collection/components/picker/picker.js +468 -743
  49. package/dist/collection/components/picker/picker.md.css +109 -198
  50. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  51. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  52. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  53. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +63 -32
  54. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  55. package/dist/collection/components/picker-column/picker-column.js +497 -335
  56. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  57. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  58. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  59. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  60. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  61. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  62. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  63. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  64. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  65. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.ios.css} +207 -98
  66. package/dist/collection/components/picker-legacy/picker.js +817 -0
  67. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.md.css} +192 -100
  68. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  69. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  70. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  71. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  72. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  73. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  74. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  75. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  76. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  77. package/dist/collection/utils/overlays.js +6 -3
  78. package/dist/docs.json +493 -24
  79. package/dist/esm/{data-f5c75b4e.js → data-4b9508c9.js} +1 -1
  80. package/dist/esm/index.js +1 -1
  81. package/dist/esm/ion-action-sheet.entry.js +1 -1
  82. package/dist/esm/ion-alert.entry.js +1 -1
  83. package/dist/esm/ion-datetime-button.entry.js +1 -1
  84. package/dist/esm/ion-datetime_3.entry.js +28 -34
  85. package/dist/esm/ion-loading.entry.js +1 -1
  86. package/dist/esm/ion-menu_3.entry.js +1 -1
  87. package/dist/esm/ion-modal.entry.js +1 -1
  88. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  89. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  90. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  91. package/dist/esm/ion-popover.entry.js +1 -1
  92. package/dist/esm/ion-select_3.entry.js +1 -1
  93. package/dist/esm/ion-toast.entry.js +1 -1
  94. package/dist/esm/ionic.js +1 -1
  95. package/dist/esm/loader.js +1 -1
  96. package/dist/esm/{overlays-d23ea6e1.js → overlays-fbc5cab5.js} +6 -3
  97. package/dist/esm-es5/index.js +1 -1
  98. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  99. package/dist/esm-es5/ion-alert.entry.js +1 -1
  100. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  101. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  102. package/dist/esm-es5/ion-loading.entry.js +1 -1
  103. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  104. package/dist/esm-es5/ion-modal.entry.js +1 -1
  105. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  106. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  107. package/dist/esm-es5/ion-picker.entry.js +4 -0
  108. package/dist/esm-es5/ion-popover.entry.js +1 -1
  109. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  110. package/dist/esm-es5/ion-toast.entry.js +1 -1
  111. package/dist/esm-es5/ionic.js +1 -1
  112. package/dist/esm-es5/loader.js +1 -1
  113. package/dist/esm-es5/overlays-fbc5cab5.js +4 -0
  114. package/dist/html.html-data.json +152 -1
  115. package/dist/ionic/index.esm.js +1 -1
  116. package/dist/ionic/ionic.esm.js +1 -1
  117. package/dist/ionic/{p-2f300cca.entry.js → p-21c3515a.entry.js} +1 -1
  118. package/dist/ionic/{p-1f620cd4.system.entry.js → p-26798a7b.system.entry.js} +1 -1
  119. package/dist/ionic/{p-e1e5afe1.system.entry.js → p-27bcbbc7.system.entry.js} +1 -1
  120. package/dist/ionic/p-36d194c5.entry.js +4 -0
  121. package/dist/ionic/{p-3b568d18.entry.js → p-4a081ea9.entry.js} +1 -1
  122. package/dist/ionic/{p-2f2293da.system.entry.js → p-4a36430f.system.entry.js} +1 -1
  123. package/dist/ionic/{p-fff7a57e.system.js → p-54dfc9b5.system.js} +1 -1
  124. package/dist/ionic/{p-60b386c9.system.entry.js → p-563c41f0.system.entry.js} +1 -1
  125. package/dist/ionic/p-5a1aac13.system.entry.js +4 -0
  126. package/dist/ionic/{p-27ea6f4e.entry.js → p-5d42b6b4.entry.js} +1 -1
  127. package/dist/ionic/{p-2dc43d20.entry.js → p-6b7c55cd.entry.js} +1 -1
  128. package/dist/ionic/{p-f78efbd1.entry.js → p-73190c5f.entry.js} +1 -1
  129. package/dist/ionic/{p-af19a573.entry.js → p-73aa7604.entry.js} +1 -1
  130. package/dist/ionic/{p-39a335b6.system.entry.js → p-8017aad2.system.entry.js} +1 -1
  131. package/dist/ionic/{p-1e57bd24.entry.js → p-846ee227.entry.js} +1 -1
  132. package/dist/ionic/p-8e42850f.entry.js +4 -0
  133. package/dist/ionic/p-8fa6583d.system.js +4 -0
  134. package/dist/ionic/{p-4df97e3c.system.entry.js → p-96dbbac1.system.entry.js} +1 -1
  135. package/dist/ionic/p-9f1b2214.entry.js +4 -0
  136. package/dist/ionic/{p-8780cc2a.entry.js → p-a8baa23e.entry.js} +1 -1
  137. package/dist/ionic/p-afcf4620.entry.js +4 -0
  138. package/dist/ionic/{p-ddb30596.entry.js → p-b133e9b4.entry.js} +1 -1
  139. package/dist/ionic/{p-3e3d06a6.system.entry.js → p-c18de88a.system.entry.js} +1 -1
  140. package/dist/ionic/p-c41bff4e.system.entry.js +4 -0
  141. package/dist/ionic/p-ca846d0b.system.entry.js +4 -0
  142. package/dist/ionic/p-ca8938f4.js +4 -0
  143. package/dist/ionic/p-e3584231.system.js +1 -1
  144. package/dist/ionic/{p-9eec42cc.system.entry.js → p-f910cc73.system.entry.js} +1 -1
  145. package/dist/ionic/{p-e3ad9607.system.entry.js → p-fbf3a689.system.entry.js} +1 -1
  146. package/dist/ionic/p-ffd5dba4.system.entry.js +4 -0
  147. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  148. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  149. package/dist/types/components/picker/picker.d.ts +74 -131
  150. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  151. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  152. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  153. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  154. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  155. package/dist/types/components.d.ts +155 -122
  156. package/dist/types/interface.d.ts +1 -1
  157. package/dist/types/utils/config.d.ts +2 -2
  158. package/dist/types/utils/overlays.d.ts +5 -2
  159. package/hydrate/index.js +1486 -1362
  160. package/package.json +1 -1
  161. package/components/ion-picker-column-internal.d.ts +0 -11
  162. package/components/ion-picker-column-internal.js +0 -9
  163. package/components/ion-picker-internal.js +0 -9
  164. package/components/picker-column-internal.js +0 -390
  165. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -565
  166. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  167. package/dist/collection/components/picker-internal/picker-internal.js +0 -544
  168. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  169. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  170. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  171. package/dist/esm-es5/overlays-d23ea6e1.js +0 -4
  172. package/dist/ionic/p-60502e3f.system.entry.js +0 -4
  173. package/dist/ionic/p-67da080d.entry.js +0 -4
  174. package/dist/ionic/p-73ea8f82.system.entry.js +0 -4
  175. package/dist/ionic/p-80fa068e.entry.js +0 -4
  176. package/dist/ionic/p-ab11130c.system.js +0 -4
  177. package/dist/ionic/p-af16fe62.entry.js +0 -4
  178. package/dist/ionic/p-c14f8ac8.js +0 -4
  179. package/dist/ionic/p-cce9f61a.system.entry.js +0 -4
  180. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  181. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  182. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  183. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  184. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  185. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  186. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  187. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  188. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  189. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  190. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +0 -0
  191. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  192. /package/dist/esm-es5/{data-f5c75b4e.js → data-4b9508c9.js} +0 -0
  193. /package/dist/ionic/{p-2aea8b1e.js → p-368f5215.js} +0 -0
  194. /package/dist/ionic/{p-82e3d633.system.js → p-f58981c2.system.js} +0 -0
  195. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  196. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  197. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  198. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.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
- * Picker columns should display
65
- * in the order in which developers
66
- * added them and should ignore
67
- * LTR vs RTL directions.
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
- direction: ltr;
70
- /**
71
- * This is required otherwise the
72
- * highlight will appear behind
73
- * the picker when used inline.
74
- */
75
- z-index: 0;
76
- }
77
-
78
- :host .picker-before,
79
- :host .picker-after {
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
- * The transform and z-index
84
- * are needed for WebKit otherwise
85
- * the fade will appear underneath the picker.
86
- */
87
- transform: translateZ(0);
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 .picker-before {
97
+ :host {
98
98
  inset-inline-start: 0;
99
99
  }
100
100
  }
101
101
  @supports not (inset-inline-start: 0) {
102
- :host .picker-before {
102
+ :host {
103
103
  left: 0;
104
104
  }
105
- :host-context([dir=rtl]) .picker-before {
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)) .picker-before {
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 .picker-after {
120
- top: 116px;
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
- :host .picker-highlight {
147
- border-radius: 8px;
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: 0;
157
- margin-bottom: 0;
132
+ margin-top: auto;
133
+ margin-bottom: auto;
134
+ transform: translate3d(0, 100%, 0);
135
+ display: flex;
158
136
  position: absolute;
159
- width: calc(100% - 16px);
160
- height: 34px;
161
- transform: translateY(-50%);
162
- background: var(--wheel-highlight-background);
163
- z-index: -1;
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
- :host input {
167
- position: absolute;
168
- top: 0;
169
- left: 0;
170
- right: 0;
171
- bottom: 0;
153
+ .picker-toolbar {
172
154
  width: 100%;
173
- height: 100%;
174
- margin: 0;
175
- padding: 0;
155
+ background: transparent;
156
+ contain: strict;
157
+ z-index: 1;
158
+ }
159
+
160
+ .picker-button {
176
161
  border: 0;
177
- outline: 0;
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
- :host ::slotted(ion-picker-column-internal:first-of-type) {
186
- text-align: start;
165
+ .picker-button:active, .picker-button:focus {
166
+ outline: none;
187
167
  }
188
168
 
189
- :host ::slotted(ion-picker-column-internal:last-of-type) {
190
- text-align: end;
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
- :host ::slotted(ion-picker-column-internal:only-child) {
194
- text-align: center;
178
+ .picker-above-highlight,
179
+ .picker-below-highlight {
180
+ display: none;
181
+ pointer-events: none;
195
182
  }
196
183
 
197
184
  /**
@@ -249,14 +236,119 @@
249
236
  * }
250
237
  * }
251
238
  */
252
- :host .picker-before {
253
- background: linear-gradient(to bottom, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%);
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));
254
246
  }
255
247
 
256
- :host .picker-after {
257
- background: linear-gradient(to top, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--wheel-fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%);
248
+ .picker-toolbar {
249
+ display: flex;
250
+ justify-content: flex-end;
251
+ height: 44px;
258
252
  }
259
253
 
260
- :host .picker-highlight {
261
- background: var(--wheel-highlight-background, var(--ion-color-step-150, #eeeeef));
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
+ }
262
354
  }
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { expect } from "@playwright/test";
5
+ import { configs, test } from "../../../../utils/test/playwright/index";
6
+ configs().forEach(({ title, screenshot, config }) => {
7
+ test.describe(title('picker: basic'), () => {
8
+ test('should not have visual regressions', async ({ page }) => {
9
+ await page.goto('/src/components/picker-legacy/test/basic', config);
10
+ const didPresent = await page.spyOnEvent('ionPickerDidPresent');
11
+ const didDismiss = await page.spyOnEvent('ionPickerDidDismiss');
12
+ await page.click('#basic');
13
+ await didPresent.next();
14
+ await page.waitForChanges();
15
+ await expect(page).toHaveScreenshot(screenshot(`picker-basic`));
16
+ await page.click('.picker-opt:nth-child(2)');
17
+ await page.click('ion-picker-legacy .save-btn');
18
+ await didDismiss.next();
19
+ await page.click('#basic');
20
+ await didPresent.next();
21
+ await page.waitForChanges();
22
+ await expect(page).toHaveScreenshot(screenshot(`picker-value-selected`));
23
+ });
24
+ });
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/test/is-open', config);
12
+ await page.goto('/src/components/picker-legacy/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-legacy');
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 is-open="true"></ion-picker>', config);
25
- await expect(page.locator('ion-picker')).toBeVisible();
24
+ await page.setContent('<ion-picker-legacy is-open="true"></ion-picker-legacy>', config);
25
+ await expect(page.locator('ion-picker-legacy')).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 is-open="true"></ion-picker>`,
9
+ html: `<ion-picker-legacy is-open="true"></ion-picker-legacy>`,
10
10
  });
11
11
  let picker;
12
- picker = page.body.querySelector('ion-picker');
12
+ picker = page.body.querySelector('ion-picker-legacy');
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-legacy');
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-legacy');
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-legacy');
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/test/trigger', config);
12
+ await page.goto('/src/components/picker-legacy/test/trigger', config);
13
13
  });
14
14
  test('should open the picker', async ({ page }) => {
15
15
  const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');