@ionic/core 8.2.3-dev.11724345963.10ca6051 → 8.2.3-dev.11724680612.1b9ef92a

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 (69) hide show
  1. package/components/ion-input-password-toggle.js +11 -7
  2. package/components/ion-input.js +14 -5
  3. package/components/ion-textarea.js +15 -5
  4. package/components/ion-toggle.js +14 -11
  5. package/css/core.css +1 -1
  6. package/css/core.css.map +1 -1
  7. package/css/ionic/bundle.ionic.css +1 -1
  8. package/css/ionic/bundle.ionic.css.map +1 -1
  9. package/css/ionic/core.ionic.css +1 -1
  10. package/css/ionic/core.ionic.css.map +1 -1
  11. package/css/ionic/global.bundle.ionic.css.map +1 -1
  12. package/css/ionic/typography.ionic.css.map +1 -1
  13. package/css/ionic.bundle.css +1 -1
  14. package/css/ionic.bundle.css.map +1 -1
  15. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +11 -7
  16. package/dist/cjs/ion-input.cjs.entry.js +14 -5
  17. package/dist/cjs/ion-textarea.cjs.entry.js +15 -5
  18. package/dist/cjs/ion-toggle.cjs.entry.js +14 -11
  19. package/dist/collection/components/input/input.js +14 -5
  20. package/dist/collection/components/input-password-toggle/input-password-toggle.common.css +61 -0
  21. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +137 -0
  22. package/dist/collection/components/input-password-toggle/input-password-toggle.js +9 -7
  23. package/dist/collection/components/input-password-toggle/test/basic/input-password-toggle.e2e.js +1 -1
  24. package/dist/collection/components/textarea/test/shape/textarea.e2e.js +79 -0
  25. package/dist/collection/components/textarea/textarea.ionic.css +12 -1
  26. package/dist/collection/components/textarea/textarea.js +17 -7
  27. package/dist/collection/components/toggle/test/color/toggle.e2e.js +1 -1
  28. package/dist/collection/components/toggle/test/enable-on-off-labels/toggle.e2e.js +1 -1
  29. package/dist/collection/components/toggle/test/item/toggle.e2e.js +4 -2
  30. package/dist/collection/components/toggle/test/label/toggle.e2e.js +29 -0
  31. package/dist/collection/components/toggle/test/sizes/toggle.e2e.js +1 -1
  32. package/dist/collection/components/toggle/test/states/toggle.e2e.js +29 -1
  33. package/dist/collection/components/toggle/toggle.ionic.css +391 -0
  34. package/dist/collection/components/toggle/toggle.ios.css +163 -138
  35. package/dist/collection/components/toggle/toggle.js +12 -9
  36. package/dist/collection/components/toggle/toggle.md.css +163 -138
  37. package/dist/docs.json +13 -5
  38. package/dist/esm/ion-input-password-toggle.entry.js +11 -7
  39. package/dist/esm/ion-input.entry.js +14 -5
  40. package/dist/esm/ion-textarea.entry.js +15 -5
  41. package/dist/esm/ion-toggle.entry.js +14 -11
  42. package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
  43. package/dist/esm-es5/ion-input.entry.js +1 -1
  44. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  45. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  46. package/dist/html.html-data.json +7 -1
  47. package/dist/ionic/ionic.esm.js +1 -1
  48. package/dist/ionic/p-13c363e4.entry.js +4 -0
  49. package/dist/ionic/p-22711da4.system.entry.js +4 -0
  50. package/dist/ionic/p-33dd8047.system.entry.js +4 -0
  51. package/dist/ionic/p-3d9c39bc.entry.js +4 -0
  52. package/dist/ionic/p-7b590e46.system.js +1 -1
  53. package/dist/ionic/p-aad91b75.system.entry.js +4 -0
  54. package/dist/ionic/{p-201d8768.system.entry.js → p-c2c3807b.system.entry.js} +1 -1
  55. package/dist/ionic/p-c8453a83.entry.js +4 -0
  56. package/dist/ionic/p-de8e8567.entry.js +4 -0
  57. package/dist/types/components/input/input.d.ts +1 -0
  58. package/dist/types/components/textarea/textarea.d.ts +7 -2
  59. package/dist/types/components.d.ts +4 -4
  60. package/hydrate/index.js +54 -28
  61. package/package.json +1 -1
  62. package/dist/collection/components/input-password-toggle/input-password-toggle.css +0 -0
  63. package/dist/ionic/p-1ee206ac.entry.js +0 -4
  64. package/dist/ionic/p-3a2eb448.system.entry.js +0 -4
  65. package/dist/ionic/p-6691825a.system.entry.js +0 -4
  66. package/dist/ionic/p-7a1b640f.entry.js +0 -4
  67. package/dist/ionic/p-8102551e.system.entry.js +0 -4
  68. package/dist/ionic/p-924deb6b.entry.js +0 -4
  69. package/dist/ionic/p-a6bb62ea.entry.js +0 -4
@@ -59,6 +59,28 @@
59
59
  * }
60
60
  * }
61
61
  */
62
+ /**
63
+ * A heuristic that applies CSS to tablet
64
+ * viewports.
65
+ *
66
+ * Usage:
67
+ * @include tablet-viewport() {
68
+ * :host {
69
+ * background-color: green;
70
+ * }
71
+ * }
72
+ */
73
+ /**
74
+ * A heuristic that applies CSS to mobile
75
+ * viewports (i.e. phones, not tablets).
76
+ *
77
+ * Usage:
78
+ * @include mobile-viewport() {
79
+ * :host {
80
+ * background-color: blue;
81
+ * }
82
+ * }
83
+ */
62
84
  :host {
63
85
  /**
64
86
  * @prop --track-background: Background of the toggle track
@@ -84,7 +106,6 @@
84
106
  outline: none;
85
107
  cursor: pointer;
86
108
  user-select: none;
87
- z-index: 2;
88
109
  }
89
110
 
90
111
  :host(.in-item) {
@@ -141,26 +162,6 @@ input {
141
162
  cursor: inherit;
142
163
  }
143
164
 
144
- .label-text-wrapper {
145
- text-overflow: ellipsis;
146
- white-space: nowrap;
147
- overflow: hidden;
148
- }
149
-
150
- :host(.in-item) .label-text-wrapper {
151
- margin-top: 10px;
152
- margin-bottom: 10px;
153
- }
154
-
155
- :host(.in-item.toggle-label-placement-stacked) .label-text-wrapper {
156
- margin-top: 10px;
157
- margin-bottom: 16px;
158
- }
159
-
160
- :host(.in-item.toggle-label-placement-stacked) .native-wrapper {
161
- margin-bottom: 10px;
162
- }
163
-
164
165
  /**
165
166
  * If no label text is placed into the slot
166
167
  * then the element should be hidden otherwise
@@ -175,26 +176,6 @@ input {
175
176
  align-items: center;
176
177
  }
177
178
 
178
- :host(.toggle-justify-space-between) .toggle-wrapper {
179
- justify-content: space-between;
180
- }
181
-
182
- :host(.toggle-justify-start) .toggle-wrapper {
183
- justify-content: start;
184
- }
185
-
186
- :host(.toggle-justify-end) .toggle-wrapper {
187
- justify-content: end;
188
- }
189
-
190
- :host(.toggle-alignment-start) .toggle-wrapper {
191
- align-items: start;
192
- }
193
-
194
- :host(.toggle-alignment-center) .toggle-wrapper {
195
- align-items: center;
196
- }
197
-
198
179
  /**
199
180
  * Label is on the left of the input in LTR and
200
181
  * on the right in RTL.
@@ -203,18 +184,6 @@ input {
203
184
  flex-direction: row;
204
185
  }
205
186
 
206
- :host(.toggle-label-placement-start) .label-text-wrapper {
207
- /**
208
- * The margin between the label and
209
- * the input should be on the end
210
- * when the label sits at the start.
211
- */
212
- -webkit-margin-start: 0;
213
- margin-inline-start: 0;
214
- -webkit-margin-end: 16px;
215
- margin-inline-end: 16px;
216
- }
217
-
218
187
  /**
219
188
  * Label is on the right of the input in LTR and
220
189
  * on the left in RTL.
@@ -223,91 +192,6 @@ input {
223
192
  flex-direction: row-reverse;
224
193
  }
225
194
 
226
- /**
227
- * The margin between the label and
228
- * the input should be on the start
229
- * when the label sits at the end.
230
- */
231
- :host(.toggle-label-placement-end) .label-text-wrapper {
232
- -webkit-margin-start: 16px;
233
- margin-inline-start: 16px;
234
- -webkit-margin-end: 0;
235
- margin-inline-end: 0;
236
- }
237
-
238
- :host(.toggle-label-placement-fixed) .label-text-wrapper {
239
- /**
240
- * The margin between the label and
241
- * the input should be on the end
242
- * when the label sits at the start.
243
- */
244
- -webkit-margin-start: 0;
245
- margin-inline-start: 0;
246
- -webkit-margin-end: 16px;
247
- margin-inline-end: 16px;
248
- }
249
-
250
- /**
251
- * Label is on the left of the input in LTR and
252
- * on the right in RTL. Label also has a fixed width.
253
- */
254
- :host(.toggle-label-placement-fixed) .label-text-wrapper {
255
- flex: 0 0 100px;
256
- width: 100px;
257
- min-width: 100px;
258
- max-width: 200px;
259
- }
260
-
261
- /**
262
- * Label is on top of the toggle.
263
- */
264
- :host(.toggle-label-placement-stacked) .toggle-wrapper {
265
- flex-direction: column;
266
- }
267
-
268
- :host(.toggle-label-placement-stacked) .label-text-wrapper {
269
- transform: scale(0.75);
270
- /**
271
- * The margin between the label and
272
- * the toggle should be on the bottom
273
- * when the label sits on top.
274
- */
275
- margin-left: 0;
276
- margin-right: 0;
277
- margin-bottom: 16px;
278
- /**
279
- * Label text should not extend
280
- * beyond the bounds of the toggle.
281
- */
282
- max-width: calc(100% / 0.75);
283
- }
284
-
285
- :host(.toggle-label-placement-stacked.toggle-alignment-start) .label-text-wrapper {
286
- transform-origin: left top;
287
- }
288
- :host-context([dir=rtl]):host(.toggle-label-placement-stacked.toggle-alignment-start) .label-text-wrapper, :host-context([dir=rtl]).toggle-label-placement-stacked.toggle-alignment-start .label-text-wrapper {
289
- transform-origin: right top;
290
- }
291
-
292
- @supports selector(:dir(rtl)) {
293
- :host(.toggle-label-placement-stacked.toggle-alignment-start:dir(rtl)) .label-text-wrapper {
294
- transform-origin: right top;
295
- }
296
- }
297
-
298
- :host(.toggle-label-placement-stacked.toggle-alignment-center) .label-text-wrapper {
299
- transform-origin: center top;
300
- }
301
- :host-context([dir=rtl]):host(.toggle-label-placement-stacked.toggle-alignment-center) .label-text-wrapper, :host-context([dir=rtl]).toggle-label-placement-stacked.toggle-alignment-center .label-text-wrapper {
302
- transform-origin: calc(100% - center) top;
303
- }
304
-
305
- @supports selector(:dir(rtl)) {
306
- :host(.toggle-label-placement-stacked.toggle-alignment-center:dir(rtl)) .label-text-wrapper {
307
- transform-origin: calc(100% - center) top;
308
- }
309
- }
310
-
311
195
  .toggle-icon-wrapper {
312
196
  display: flex;
313
197
  position: relative;
@@ -378,6 +262,147 @@ input {
378
262
  transform: translate3d(calc(var(--handle-spacing) * 2), 0, 0);
379
263
  }
380
264
 
265
+ :host {
266
+ z-index: 2;
267
+ }
268
+
269
+ :host(.in-item) .label-text-wrapper {
270
+ margin-top: 10px;
271
+ margin-bottom: 10px;
272
+ }
273
+
274
+ :host(.in-item.toggle-label-placement-stacked) .label-text-wrapper {
275
+ margin-top: 10px;
276
+ margin-bottom: 16px;
277
+ }
278
+
279
+ :host(.in-item.toggle-label-placement-stacked) .native-wrapper {
280
+ margin-bottom: 10px;
281
+ }
282
+
283
+ .label-text-wrapper {
284
+ text-overflow: ellipsis;
285
+ white-space: nowrap;
286
+ overflow: hidden;
287
+ }
288
+
289
+ :host(.toggle-justify-space-between) .toggle-wrapper {
290
+ justify-content: space-between;
291
+ }
292
+
293
+ :host(.toggle-justify-start) .toggle-wrapper {
294
+ justify-content: start;
295
+ }
296
+
297
+ :host(.toggle-justify-end) .toggle-wrapper {
298
+ justify-content: end;
299
+ }
300
+
301
+ :host(.toggle-alignment-start) .toggle-wrapper {
302
+ align-items: start;
303
+ }
304
+
305
+ :host(.toggle-alignment-center) .toggle-wrapper {
306
+ align-items: center;
307
+ }
308
+
309
+ :host(.toggle-label-placement-fixed) .label-text-wrapper {
310
+ /**
311
+ * The margin between the label and
312
+ * the input should be on the end
313
+ * when the label sits at the start.
314
+ */
315
+ -webkit-margin-start: 0;
316
+ margin-inline-start: 0;
317
+ -webkit-margin-end: 16px;
318
+ margin-inline-end: 16px;
319
+ }
320
+
321
+ /**
322
+ * Label is on the left of the input in LTR and
323
+ * on the right in RTL. Label also has a fixed width.
324
+ */
325
+ :host(.toggle-label-placement-fixed) .label-text-wrapper {
326
+ flex: 0 0 100px;
327
+ width: 100px;
328
+ min-width: 100px;
329
+ max-width: 200px;
330
+ }
331
+
332
+ /**
333
+ * Label is on top of the toggle.
334
+ */
335
+ :host(.toggle-label-placement-stacked) .toggle-wrapper {
336
+ flex-direction: column;
337
+ }
338
+
339
+ :host(.toggle-label-placement-stacked) .label-text-wrapper {
340
+ transform: scale(0.75);
341
+ /**
342
+ * The margin between the label and
343
+ * the toggle should be on the bottom
344
+ * when the label sits on top.
345
+ */
346
+ margin-left: 0;
347
+ margin-right: 0;
348
+ margin-bottom: 16px;
349
+ /**
350
+ * Label text should not extend
351
+ * beyond the bounds of the toggle.
352
+ */
353
+ max-width: calc(100% / 0.75);
354
+ }
355
+
356
+ :host(.toggle-label-placement-stacked.toggle-alignment-start) .label-text-wrapper {
357
+ transform-origin: left top;
358
+ }
359
+ :host-context([dir=rtl]):host(.toggle-label-placement-stacked.toggle-alignment-start) .label-text-wrapper, :host-context([dir=rtl]).toggle-label-placement-stacked.toggle-alignment-start .label-text-wrapper {
360
+ transform-origin: right top;
361
+ }
362
+
363
+ @supports selector(:dir(rtl)) {
364
+ :host(.toggle-label-placement-stacked.toggle-alignment-start:dir(rtl)) .label-text-wrapper {
365
+ transform-origin: right top;
366
+ }
367
+ }
368
+
369
+ :host(.toggle-label-placement-stacked.toggle-alignment-center) .label-text-wrapper {
370
+ transform-origin: center top;
371
+ }
372
+ :host-context([dir=rtl]):host(.toggle-label-placement-stacked.toggle-alignment-center) .label-text-wrapper, :host-context([dir=rtl]).toggle-label-placement-stacked.toggle-alignment-center .label-text-wrapper {
373
+ transform-origin: calc(100% - center) top;
374
+ }
375
+
376
+ @supports selector(:dir(rtl)) {
377
+ :host(.toggle-label-placement-stacked.toggle-alignment-center:dir(rtl)) .label-text-wrapper {
378
+ transform-origin: calc(100% - center) top;
379
+ }
380
+ }
381
+
382
+ :host(.toggle-label-placement-start) .label-text-wrapper {
383
+ /**
384
+ * The margin between the label and
385
+ * the input should be on the end
386
+ * when the label sits at the start.
387
+ */
388
+ -webkit-margin-start: 0;
389
+ margin-inline-start: 0;
390
+ -webkit-margin-end: 16px;
391
+ margin-inline-end: 16px;
392
+ }
393
+
394
+ /**
395
+ * The margin between the label and
396
+ * the input should be on the start
397
+ * when the label sits at the end.
398
+ */
399
+ :host(.toggle-label-placement-end) .label-text-wrapper {
400
+ -webkit-margin-start: 16px;
401
+ margin-inline-start: 16px;
402
+ -webkit-margin-end: 0;
403
+ margin-inline-end: 0;
404
+ }
405
+
381
406
  /**
382
407
  * Convert a pixels given value into rem
383
408
  *
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2024-08-22T17:02:46",
2
+ "timestamp": "2024-08-26T13:59:49",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.18.3",
@@ -36120,22 +36120,30 @@
36120
36120
  },
36121
36121
  {
36122
36122
  "name": "shape",
36123
- "type": "\"round\" | undefined",
36123
+ "type": "\"rectangular\" | \"round\" | \"soft\" | undefined",
36124
36124
  "complexType": {
36125
- "original": "'round'",
36126
- "resolved": "\"round\" | undefined",
36125
+ "original": "'soft' | 'round' | 'rectangular'",
36126
+ "resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
36127
36127
  "references": {}
36128
36128
  },
36129
36129
  "mutable": false,
36130
36130
  "attr": "shape",
36131
36131
  "reflectToAttr": false,
36132
- "docs": "The shape of the textarea. If \"round\" it will have an increased border radius.",
36132
+ "docs": "Set to `\"soft\"` for a textarea with slightly rounded corners,\n`\"round\"` for a textarea with fully rounded corners, or `\"rectangular\"`\nfor a textarea without rounded corners.\n\nDefaults to `\"round\"` for the `ionic` theme, undefined for all other themes.",
36133
36133
  "docsTags": [],
36134
36134
  "values": [
36135
+ {
36136
+ "value": "rectangular",
36137
+ "type": "string"
36138
+ },
36135
36139
  {
36136
36140
  "value": "round",
36137
36141
  "type": "string"
36138
36142
  },
36143
+ {
36144
+ "value": "soft",
36145
+ "type": "string"
36146
+ },
36139
36147
  {
36140
36148
  "type": "undefined"
36141
36149
  }
@@ -10,11 +10,14 @@ const eyeSlashSvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53M
10
10
 
11
11
  const eyeSvg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiBmaWxsPSJjdXJyZW50Q29sb3IiPjxwYXRoIGQ9Ik0yNDcuMzEsMTI0Ljc2Yy0uMzUtLjc5LTguODItMTkuNTgtMjcuNjUtMzguNDFDMTk0LjU3LDYxLjI2LDE2Mi44OCw0OCwxMjgsNDhTNjEuNDMsNjEuMjYsMzYuMzQsODYuMzVDMTcuNTEsMTA1LjE4LDksMTI0LDguNjksMTI0Ljc2YTgsOCwwLDAsMCwwLDYuNWMuMzUuNzksOC44MiwxOS41NywyNy42NSwzOC40QzYxLjQzLDE5NC43NCw5My4xMiwyMDgsMTI4LDIwOHM2Ni41Ny0xMy4yNiw5MS42Ni0zOC4zNGMxOC44My0xOC44MywyNy4zLTM3LjYxLDI3LjY1LTM4LjRBOCw4LDAsMCwwLDI0Ny4zMSwxMjQuNzZaTTEyOCwxOTJjLTMwLjc4LDAtNTcuNjctMTEuMTktNzkuOTMtMzMuMjVBMTMzLjQ3LDEzMy40NywwLDAsMSwyNSwxMjgsMTMzLjMzLDEzMy4zMywwLDAsMSw0OC4wNyw5Ny4yNUM3MC4zMyw3NS4xOSw5Ny4yMiw2NCwxMjgsNjRzNTcuNjcsMTEuMTksNzkuOTMsMzMuMjVBMTMzLjQ2LDEzMy40NiwwLDAsMSwyMzEuMDUsMTI4QzIyMy44NCwxNDEuNDYsMTkyLjQzLDE5MiwxMjgsMTkyWm0wLTExMmE0OCw0OCwwLDEsMCw0OCw0OEE0OC4wNSw0OC4wNSwwLDAsMCwxMjgsODBabTAsODBhMzIsMzIsMCwxLDEsMzItMzJBMzIsMzIsMCwwLDEsMTI4LDE2MFoiLz48L3N2Zz4=';
12
12
 
13
- const iosInputPasswordToggleCss = "";
14
- const IonInputPasswordToggleIosStyle0 = iosInputPasswordToggleCss;
13
+ const inputPasswordToggleIonicCss = ":host ion-button.button-has-icon-only{--padding-end:inherit;--color:var(--ionic-color-neutral-500, #a2a2a2);--margin-end:calc(-1 * var(--padding-end));-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:0;margin-bottom:0}";
14
+ const IonInputPasswordToggleIonicStyle0 = inputPasswordToggleIonicCss;
15
15
 
16
- const mdInputPasswordToggleCss = "";
17
- const IonInputPasswordToggleMdStyle0 = mdInputPasswordToggleCss;
16
+ const iosInputPasswordToggleCommonCss = "";
17
+ const IonInputPasswordToggleIosStyle0 = iosInputPasswordToggleCommonCss;
18
+
19
+ const mdInputPasswordToggleCommonCss = "";
20
+ const IonInputPasswordToggleMdStyle0 = mdInputPasswordToggleCommonCss;
18
21
 
19
22
  const InputPasswordToggle = class {
20
23
  constructor(hostRef) {
@@ -99,16 +102,16 @@ const InputPasswordToggle = class {
99
102
  const { color, inputPasswordHideIcon, inputPasswordShowIcon, type } = this;
100
103
  const mode = getIonMode(this);
101
104
  const isPasswordVisible = type === 'text';
102
- return (h(Host, { key: '4ca80b49b49f4ed0c14573a2965e5590e1cb7607', class: createColorClasses(color, {
105
+ return (h(Host, { key: '140bda3fc0a5a4dda16c9dfcf1254cc94c60206e', class: createColorClasses(color, {
103
106
  [mode]: true,
104
- }) }, h("ion-button", { key: '37eeacd2673026ce9c068c45af0df09a9d83156c', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": "show password", role: "switch", type: "button", onPointerDown: (ev) => {
107
+ }) }, h("ion-button", { key: 'ec84dcf19d488f9454eadc860e10be8f8a306f0b', mode: mode, color: color, fill: "clear", shape: "round", "aria-checked": isPasswordVisible ? 'true' : 'false', "aria-label": "show password", role: "switch", type: "button", onPointerDown: (ev) => {
105
108
  /**
106
109
  * This prevents mobile browsers from
107
110
  * blurring the input when the password toggle
108
111
  * button is activated.
109
112
  */
110
113
  ev.preventDefault();
111
- }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '27ad27e94b0fee38cf6129870621a0c96de4375a', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? inputPasswordHideIcon : inputPasswordShowIcon }))));
114
+ }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '40d2804ffafda8cb18c4f55af8cb6f7916c7c466', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? inputPasswordHideIcon : inputPasswordShowIcon }))));
112
115
  }
113
116
  get el() { return getElement(this); }
114
117
  static get watchers() { return {
@@ -116,6 +119,7 @@ const InputPasswordToggle = class {
116
119
  }; }
117
120
  };
118
121
  InputPasswordToggle.style = {
122
+ ionic: IonInputPasswordToggleIonicStyle0,
119
123
  ios: IonInputPasswordToggleIosStyle0,
120
124
  md: IonInputPasswordToggleMdStyle0
121
125
  };
@@ -264,6 +264,14 @@ const Input = class {
264
264
  getValue() {
265
265
  return typeof this.value === 'number' ? this.value.toString() : (this.value || '').toString();
266
266
  }
267
+ getFill() {
268
+ const theme = getIonTheme(this);
269
+ const { fill } = this;
270
+ if (theme === 'ionic' && fill === undefined) {
271
+ return 'outline';
272
+ }
273
+ return fill;
274
+ }
267
275
  getLabelPlacement() {
268
276
  const theme = getIonTheme(this);
269
277
  const { el, labelPlacement } = this;
@@ -449,9 +457,10 @@ const Input = class {
449
457
  return config.get('inputClearIcon', defaultIcon);
450
458
  }
451
459
  render() {
452
- const { disabled, fill, readonly, inputId, el, hasFocus, clearInput, inputClearIcon } = this;
460
+ const { disabled, readonly, inputId, el, hasFocus, clearInput, inputClearIcon } = this;
453
461
  const theme = getIonTheme(this);
454
462
  const value = this.getValue();
463
+ const fill = this.getFill();
455
464
  const size = this.getSize();
456
465
  const shape = this.getShape();
457
466
  const inItem = hostContext('ion-item', this.el);
@@ -477,7 +486,7 @@ const Input = class {
477
486
  * TODO(FW-5592): Remove hasStartEndSlots condition
478
487
  */
479
488
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
480
- return (h(Host, { key: '7ff842b13cd33bc119946de09f790f1563e31518', class: createColorClasses(this.color, {
489
+ return (h(Host, { key: '95fe18aa3f3056ce88a2f08c0e47382213e0eeb2', class: createColorClasses(this.color, {
481
490
  [theme]: true,
482
491
  'has-value': hasValue,
483
492
  'has-focus': hasFocus,
@@ -490,7 +499,7 @@ const Input = class {
490
499
  'in-item-color': hostContext('ion-item.ion-color', this.el),
491
500
  'input-disabled': disabled,
492
501
  'input-readonly': readonly,
493
- }) }, h("label", { key: '218e909896d3f467b29821c1a209b4180b071427', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '022a9ead5769f532052b6c675a87cd79db98db7e', class: "native-wrapper" },
502
+ }) }, h("label", { key: '088e5cbdc63481e83f2cecf1228e31533de11fe3', class: "input-wrapper", htmlFor: inputId }, this.renderLabelContainer(), h("div", { key: '0311bc8d8ca91920c9ed8630762933d10a5d8df4', class: "native-wrapper" },
494
503
  /**
495
504
  * For the ionic theme, we render the outline container here
496
505
  * instead of higher up, so it can be positioned relative to
@@ -500,7 +509,7 @@ const Input = class {
500
509
  * <label> element, ensuring that clicking the label text
501
510
  * focuses the input.
502
511
  */
503
- theme === 'ionic' && fill === 'outline' && h("div", { key: '387fda749ac395c9f4b478c9267f25991238103c', class: "input-outline" }), h("slot", { key: '5a135729d8efda822d3b6e9004148c3233fd8085', name: "start" }), h("input", Object.assign({ key: 'b64d49881b9de32ea40a9fb5be45e3cb167929ea', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), clearInput && !readonly && !disabled && (h("button", { key: 'f04bdaf678c49d11fbe69eaa9710a1585cbca438', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
512
+ theme === 'ionic' && fill === 'outline' && h("div", { key: '8dd4695edebba5964e1dbb1d733b2d2e636ec581', class: "input-outline" }), h("slot", { key: '2065978166c9017f9383de71861babdfc3fb1cbe', name: "start" }), h("input", Object.assign({ key: '8fb6627afac9457eb23abb149607566a18175ef4', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), clearInput && !readonly && !disabled && (h("button", { key: '739f486081fc9e7ba6b1387dd6a813f3a2eb484a', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
504
513
  /**
505
514
  * This prevents mobile browsers from
506
515
  * blurring the input when the clear
@@ -515,7 +524,7 @@ const Input = class {
515
524
  * for screen readers as it means users would be unable to swipe past the clear button.
516
525
  */
517
526
  ev.stopPropagation();
518
- }, onClick: this.clearTextInput }, h("ion-icon", { key: 'e06cb3f0c583d3d1c6a1b41a3903f7252957c913', "aria-hidden": "true", icon: inputClearIcon }))), h("slot", { key: 'b0b22fe170a3ed593aa1ad20a20669cafc1e1062', name: "end" })), shouldRenderHighlight && h("div", { key: 'f06bd25e97d79f2d7a44105ab113187692cc52d3', class: "input-highlight" })), this.renderBottomContent()));
527
+ }, onClick: this.clearTextInput }, h("ion-icon", { key: '0775e8fa9b9cf9df17743472edbc2f307e4f4b9a', "aria-hidden": "true", icon: inputClearIcon }))), h("slot", { key: '72e48a851f3fb2450af96f9d271b27dcb0bca047', name: "end" })), shouldRenderHighlight && h("div", { key: 'e91752ecd290374ae7adbe0b99163092a9e3f0fd', class: "input-highlight" })), this.renderBottomContent()));
519
528
  }
520
529
  get el() { return getElement(this); }
521
530
  static get watchers() { return {