@ionic/core 8.2.3-dev.11721064272.19e3ddfd → 8.2.3-dev.11723022900.1196a7bf

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 (204) hide show
  1. package/components/button.js +1 -1
  2. package/components/ion-avatar.js +3 -3
  3. package/components/ion-badge.js +3 -3
  4. package/components/ion-chip.js +1 -1
  5. package/components/ion-input.js +1 -1
  6. package/components/ion-segment.js +3 -11
  7. package/components/ion-select-option.js +1 -1
  8. package/components/ion-select.js +2 -2
  9. package/components/ion-skeleton-text.js +2 -2
  10. package/components/ion-split-pane.js +2 -2
  11. package/components/ion-tab-bar.js +2 -2
  12. package/components/ion-tab-button.js +2 -2
  13. package/components/ion-tab.js +2 -2
  14. package/components/ion-tabs.js +1 -1
  15. package/components/ion-text.js +2 -2
  16. package/components/ion-textarea.js +2 -2
  17. package/components/ion-thumbnail.js +2 -2
  18. package/components/ion-title.js +2 -2
  19. package/components/ion-toast.js +2 -2
  20. package/components/ion-toggle.js +3 -3
  21. package/components/ion-toolbar.js +2 -2
  22. package/components/item.js +3 -3
  23. package/components/list.js +1 -1
  24. package/components/select-popover.js +2 -2
  25. package/components/spinner.js +33 -6
  26. package/css/core.css +1 -1
  27. package/css/core.css.map +1 -1
  28. package/css/ionic.bundle.css +1 -1
  29. package/css/ionic.bundle.css.map +1 -1
  30. package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
  31. package/dist/cjs/ion-avatar_3.cjs.entry.js +8 -8
  32. package/dist/cjs/ion-button_2.cjs.entry.js +1 -1
  33. package/dist/cjs/ion-chip.cjs.entry.js +1 -1
  34. package/dist/cjs/ion-input.cjs.entry.js +1 -1
  35. package/dist/cjs/ion-item_8.cjs.entry.js +6 -6
  36. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -11
  37. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  38. package/dist/cjs/ion-spinner.cjs.entry.js +30 -4
  39. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  40. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  41. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  42. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  43. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  44. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  45. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  46. package/dist/cjs/ionic.cjs.js +1 -1
  47. package/dist/cjs/loader.cjs.js +1 -1
  48. package/dist/collection/collection-manifest.json +0 -2
  49. package/dist/collection/components/avatar/avatar.ionic.css +17 -1
  50. package/dist/collection/components/avatar/avatar.js +5 -5
  51. package/dist/collection/components/avatar/test/shape/avatar.e2e.js +7 -0
  52. package/dist/collection/components/avatar/test/size/avatar.e2e.js +27 -0
  53. package/dist/collection/components/badge/badge.ionic.css +30 -35
  54. package/dist/collection/components/badge/badge.ios.css +94 -3
  55. package/dist/collection/components/badge/badge.md.css +94 -3
  56. package/dist/collection/components/badge/test/basic/badge.e2e.js +1 -1
  57. package/dist/collection/components/button/button.ionic.css +41 -2
  58. package/dist/collection/components/button/test/outline/button.e2e.js +1 -2
  59. package/dist/collection/components/button/test/states/button.e2e.js +3 -3
  60. package/dist/collection/components/chip/chip.ionic.css +22 -1
  61. package/dist/collection/components/chip/test/basic/chip.e2e.js +28 -29
  62. package/dist/collection/components/input/input.ionic.css +2 -1
  63. package/dist/collection/components/item/item.ionic.css +346 -52
  64. package/dist/collection/components/item/item.ios.css +94 -67
  65. package/dist/collection/components/item/item.md.css +94 -67
  66. package/dist/collection/components/item-sliding/test/basic/item-sliding.e2e.js +2 -2
  67. package/dist/collection/components/list/list.ionic.css +1 -0
  68. package/dist/collection/components/segment/segment.js +3 -11
  69. package/dist/collection/components/select/select.js +2 -2
  70. package/dist/collection/components/select-option/select-option.js +1 -1
  71. package/dist/collection/components/select-popover/select-popover.js +2 -2
  72. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  73. package/dist/collection/components/spinner/spinner.common.css +199 -0
  74. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +55 -0
  75. package/dist/collection/components/spinner/spinner.js +40 -3
  76. package/dist/collection/components/spinner/test/size/spinner.e2e.js +47 -0
  77. package/dist/collection/components/split-pane/split-pane.js +2 -2
  78. package/dist/collection/components/tab/tab.js +2 -2
  79. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  80. package/dist/collection/components/tab-button/tab-button.js +2 -2
  81. package/dist/collection/components/tabs/tabs.js +1 -1
  82. package/dist/collection/components/text/text.js +2 -2
  83. package/dist/collection/components/textarea/textarea.js +2 -2
  84. package/dist/collection/components/thumbnail/thumbnail.js +2 -2
  85. package/dist/collection/components/title/title.js +2 -2
  86. package/dist/collection/components/toast/toast.js +2 -2
  87. package/dist/collection/components/toggle/toggle.js +3 -3
  88. package/dist/collection/components/toolbar/toolbar.js +2 -2
  89. package/dist/collection/themes/ionic/test/colors/theme.e2e.js +120 -0
  90. package/dist/docs.json +190 -48
  91. package/dist/esm/ion-app_8.entry.js +4 -4
  92. package/dist/esm/ion-avatar_3.entry.js +8 -8
  93. package/dist/esm/ion-button_2.entry.js +1 -1
  94. package/dist/esm/ion-chip.entry.js +1 -1
  95. package/dist/esm/ion-input.entry.js +1 -1
  96. package/dist/esm/ion-item_8.entry.js +6 -6
  97. package/dist/esm/ion-segment_2.entry.js +3 -11
  98. package/dist/esm/ion-select_3.entry.js +5 -5
  99. package/dist/esm/ion-spinner.entry.js +30 -4
  100. package/dist/esm/ion-split-pane.entry.js +2 -2
  101. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  102. package/dist/esm/ion-tab_2.entry.js +3 -3
  103. package/dist/esm/ion-text.entry.js +2 -2
  104. package/dist/esm/ion-textarea.entry.js +2 -2
  105. package/dist/esm/ion-toast.entry.js +2 -2
  106. package/dist/esm/ion-toggle.entry.js +3 -3
  107. package/dist/esm/ionic.js +1 -1
  108. package/dist/esm/loader.js +1 -1
  109. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  110. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  111. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  112. package/dist/esm-es5/ion-chip.entry.js +1 -1
  113. package/dist/esm-es5/ion-input.entry.js +1 -1
  114. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  115. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  116. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  117. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  118. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  119. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  120. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  121. package/dist/esm-es5/ion-text.entry.js +1 -1
  122. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  123. package/dist/esm-es5/ion-toast.entry.js +1 -1
  124. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  125. package/dist/esm-es5/ionic.js +1 -1
  126. package/dist/esm-es5/loader.js +1 -1
  127. package/dist/html.html-data.json +25 -29
  128. package/dist/ionic/ionic.esm.js +1 -1
  129. package/dist/ionic/{p-29f4100d.entry.js → p-01ae1aa0.entry.js} +1 -1
  130. package/dist/ionic/p-1be0295f.entry.js +4 -0
  131. package/dist/ionic/p-201d8768.system.entry.js +4 -0
  132. package/dist/ionic/{p-062c1cb9.system.entry.js → p-223bc7dd.system.entry.js} +1 -1
  133. package/dist/ionic/{p-0595a36c.system.entry.js → p-24592a4d.system.entry.js} +1 -1
  134. package/dist/ionic/{p-2aa6a169.entry.js → p-28649e61.entry.js} +1 -1
  135. package/dist/ionic/{p-385a361b.entry.js → p-39a39279.entry.js} +1 -1
  136. package/dist/ionic/p-40c14f53.system.entry.js +4 -0
  137. package/dist/ionic/{p-cd6d4c1d.entry.js → p-4346453b.entry.js} +1 -1
  138. package/dist/ionic/{p-1be0ed0e.system.entry.js → p-45ca3acb.system.entry.js} +2 -2
  139. package/dist/ionic/p-4b9c6418.system.entry.js +4 -0
  140. package/dist/ionic/p-4fdbf0ef.entry.js +4 -0
  141. package/dist/ionic/p-563a8d3b.entry.js +4 -0
  142. package/dist/ionic/{p-b67ed806.system.entry.js → p-56c72f65.system.entry.js} +1 -1
  143. package/dist/ionic/p-6d47fa40.entry.js +4 -0
  144. package/dist/ionic/p-7459eeb7.system.entry.js +4 -0
  145. package/dist/ionic/{p-da668343.system.entry.js → p-7ab9c88c.system.entry.js} +1 -1
  146. package/dist/ionic/p-7b590e46.system.js +1 -1
  147. package/dist/ionic/{p-c0dace15.system.entry.js → p-7dad531c.system.entry.js} +1 -1
  148. package/dist/ionic/p-81350e4b.system.entry.js +4 -0
  149. package/dist/ionic/p-8ac5efa9.entry.js +4 -0
  150. package/dist/ionic/p-a6bb62ea.entry.js +4 -0
  151. package/dist/ionic/p-b1938594.entry.js +4 -0
  152. package/dist/ionic/{p-aaf1b71f.entry.js → p-b374abe2.entry.js} +1 -1
  153. package/dist/ionic/p-b4b44bf9.system.entry.js +4 -0
  154. package/dist/ionic/{p-61f51286.system.entry.js → p-b5cc6e57.system.entry.js} +1 -1
  155. package/dist/ionic/p-bbefc52b.system.entry.js +4 -0
  156. package/dist/ionic/p-c11fdca2.entry.js +4 -0
  157. package/dist/ionic/{p-adb54d5b.entry.js → p-c23822f8.entry.js} +1 -1
  158. package/dist/ionic/{p-14ae725a.entry.js → p-d2a580db.entry.js} +1 -1
  159. package/dist/ionic/p-d774e194.system.entry.js +4 -0
  160. package/dist/ionic/p-dc8a3888.entry.js +4 -0
  161. package/dist/ionic/{p-5cc8fa7f.system.entry.js → p-f84ea1e9.system.entry.js} +1 -1
  162. package/dist/types/components/avatar/avatar.d.ts +7 -4
  163. package/dist/types/components/segment/segment.d.ts +1 -1
  164. package/dist/types/components/spinner/spinner.d.ts +11 -0
  165. package/dist/types/components.d.ts +12 -30
  166. package/hydrate/index.js +80 -154
  167. package/package.json +1 -1
  168. package/components/ion-segment-content.d.ts +0 -11
  169. package/components/ion-segment-content.js +0 -38
  170. package/components/ion-segment-view.d.ts +0 -11
  171. package/components/ion-segment-view.js +0 -86
  172. package/dist/cjs/ion-segment-content.cjs.entry.js +0 -24
  173. package/dist/cjs/ion-segment-view.cjs.entry.js +0 -72
  174. package/dist/collection/components/segment-content/segment-content.css +0 -5
  175. package/dist/collection/components/segment-content/segment-content.js +0 -22
  176. package/dist/collection/components/segment-view/segment-view.css +0 -15
  177. package/dist/collection/components/segment-view/segment-view.js +0 -81
  178. package/dist/esm/ion-segment-content.entry.js +0 -20
  179. package/dist/esm/ion-segment-view.entry.js +0 -68
  180. package/dist/esm-es5/ion-segment-content.entry.js +0 -4
  181. package/dist/esm-es5/ion-segment-view.entry.js +0 -4
  182. package/dist/ionic/p-07b804ba.entry.js +0 -4
  183. package/dist/ionic/p-405559bd.entry.js +0 -4
  184. package/dist/ionic/p-5839776e.entry.js +0 -4
  185. package/dist/ionic/p-660cf6f3.system.entry.js +0 -4
  186. package/dist/ionic/p-6ced0cc0.entry.js +0 -4
  187. package/dist/ionic/p-6d4534cb.system.entry.js +0 -4
  188. package/dist/ionic/p-72944d53.system.entry.js +0 -4
  189. package/dist/ionic/p-7813dead.system.entry.js +0 -4
  190. package/dist/ionic/p-833593dd.entry.js +0 -4
  191. package/dist/ionic/p-8ef82205.entry.js +0 -4
  192. package/dist/ionic/p-9316e014.system.entry.js +0 -4
  193. package/dist/ionic/p-935801cc.entry.js +0 -4
  194. package/dist/ionic/p-9771abb4.entry.js +0 -4
  195. package/dist/ionic/p-a2830649.system.entry.js +0 -4
  196. package/dist/ionic/p-a3b856e6.system.entry.js +0 -4
  197. package/dist/ionic/p-aa246404.entry.js +0 -4
  198. package/dist/ionic/p-aa97948b.entry.js +0 -4
  199. package/dist/ionic/p-c6e43624.entry.js +0 -4
  200. package/dist/ionic/p-dc60009b.system.entry.js +0 -4
  201. package/dist/ionic/p-f1eb1152.system.entry.js +0 -4
  202. package/dist/ionic/p-f8a16486.system.entry.js +0 -4
  203. package/dist/types/components/segment-content/segment-content.d.ts +0 -5
  204. package/dist/types/components/segment-view/segment-view.d.ts +0 -13
@@ -94,9 +94,14 @@
94
94
  }
95
95
 
96
96
  :host(.chip-outline) {
97
- --background: transparent;
98
97
  border-width: var(--ionic-border-size-025, 1px);
98
+ border-style: var(--ionic-border-style-solid, solid);
99
99
  border-color: var(--ionic-color-neutral-100, #f1f1f1);
100
+ background: transparent;
101
+ }
102
+
103
+ :host(.chip-outline.ion-color) {
104
+ border-color: rgba(var(--ion-color-base-rgb), 0.32);
100
105
  }
101
106
 
102
107
  :host(.ion-focused) {
@@ -108,6 +113,9 @@
108
113
  :host(:hover) {
109
114
  --background: var(--ionic-color-neutral-200, #e7e7e7);
110
115
  }
116
+ :host(.ion-color:hover) {
117
+ background: rgba(var(--ion-color-base-rgb), 0.12);
118
+ }
111
119
  }
112
120
  :host(.chip-disabled) {
113
121
  opacity: 0.6;
@@ -138,4 +146,17 @@
138
146
  :host(.chip-large) {
139
147
  min-height: var(--ionic-scale-800, 32px);
140
148
  font-size: var(--ionic-font-size-350, 0.875rem);
149
+ }
150
+
151
+ :host(.ion-color) {
152
+ background: rgba(var(--ion-color-base-rgb), 0.08);
153
+ color: var(--ion-color-shade);
154
+ }
155
+
156
+ :host(.ion-color:focus) {
157
+ background: rgba(var(--ion-color-base-rgb), 0.12);
158
+ }
159
+
160
+ :host(.ion-color.ion-activated) {
161
+ background: rgba(var(--ion-color-base-rgb), 0.16);
141
162
  }
@@ -25,9 +25,30 @@ configs({ modes: ['ios'] }).forEach(({ title, screenshot, config }) => {
25
25
  });
26
26
  });
27
27
  configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
28
- /**
29
- * This behavior does not vary across modes/directions.
30
- */
28
+ test.describe(title('chip: descenders'), () => {
29
+ test('should not clip descenders in item', async ({ page }) => {
30
+ test.info().annotations.push({
31
+ type: 'issue',
32
+ description: 'https://github.com/ionic-team/ionic-framework/issues/18313',
33
+ });
34
+ await page.setContent(`
35
+ <ion-list>
36
+ <ion-item>
37
+ <ion-chip>
38
+ <ion-label>Agreements</ion-label>
39
+ </ion-chip>
40
+ </ion-item>
41
+ </ion-list>
42
+ `, config);
43
+ const chip = page.locator('ion-chip');
44
+ await expect(chip).toHaveScreenshot(screenshot(`chip-descender`));
45
+ });
46
+ });
47
+ });
48
+ /**
49
+ * `md` mode does not differ from `ios` mode in chip rendering.
50
+ */
51
+ configs({ modes: ['ios', 'ionic-md'], directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
31
52
  test.describe(title('chip: outline'), () => {
32
53
  test('should render default outline chip', async ({ page }) => {
33
54
  await page.setContent(`<ion-chip outline="true">
@@ -38,44 +59,22 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, screenshot, c
38
59
  await expect(chip).toHaveScreenshot(screenshot(`chip-outline`));
39
60
  });
40
61
  });
41
- /**
42
- * This behavior does not vary across modes/directions.
43
- */
44
62
  test.describe(title('chip: color'), () => {
45
63
  test('should render solid color chip', async ({ page }) => {
46
- await page.setContent(`<ion-chip color="tertiary">
64
+ await page.setContent(`<ion-chip color="success">
47
65
  <ion-icon name="checkmark-circle"></ion-icon>
48
- <ion-label>Tertiary with Icon</ion-label>
66
+ <ion-label>Success with Icon</ion-label>
49
67
  </ion-chip>`, config);
50
68
  const chip = page.locator('ion-chip');
51
69
  await expect(chip).toHaveScreenshot(screenshot(`chip-solid-color`));
52
70
  });
53
71
  test('should render outline color chip', async ({ page }) => {
54
- await page.setContent(`<ion-chip outline="true" color="tertiary">
72
+ await page.setContent(`<ion-chip outline="true" color="success">
55
73
  <ion-icon name="checkmark-circle"></ion-icon>
56
- <ion-label>Tertiary with Icon</ion-label>
74
+ <ion-label>Success with Icon</ion-label>
57
75
  </ion-chip>`, config);
58
76
  const chip = page.locator('ion-chip');
59
77
  await expect(chip).toHaveScreenshot(screenshot(`chip-outline-color`));
60
78
  });
61
79
  });
62
- test.describe(title('chip: descenders'), () => {
63
- test('should not clip descenders in item', async ({ page }) => {
64
- test.info().annotations.push({
65
- type: 'issue',
66
- description: 'https://github.com/ionic-team/ionic-framework/issues/18313',
67
- });
68
- await page.setContent(`
69
- <ion-list>
70
- <ion-item>
71
- <ion-chip>
72
- <ion-label>Agreements</ion-label>
73
- </ion-chip>
74
- </ion-item>
75
- </ion-list>
76
- `, config);
77
- const chip = page.locator('ion-chip');
78
- await expect(chip).toHaveScreenshot(screenshot(`chip-descender`));
79
- });
80
- });
81
80
  });
@@ -860,6 +860,7 @@
860
860
  --placeholder-color: var(--ionic-color-neutral-800, #626262);
861
861
  --placeholder-opacity: 1;
862
862
  --text-color-invalid: var(--ionic-color-danger-800, #bf2222);
863
+ --background: var(--ionic-color-base-white, #ffffff);
863
864
  font-size: var(--ionic-font-size-350, 0.875rem);
864
865
  }
865
866
 
@@ -983,7 +984,7 @@
983
984
  :host(.input-disabled:not(.ion-valid)) .input-bottom .helper-text,
984
985
  :host(.input-disabled) .input-bottom .counter,
985
986
  :host(.input-disabled) .label-text-wrapper {
986
- color: var(--ionic-color-neutral-400, #b9b9b9);
987
+ color: var(--ionic-color-neutral-500, #a2a2a2);
987
988
  }
988
989
 
989
990
  :host(.input-disabled.has-focus.ion-valid) {
@@ -63,99 +63,393 @@
63
63
  * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
64
64
  * convert to a unit other than $baselineUnit.
65
65
  */
66
+ /**
67
+ * A heuristic that applies CSS to tablet
68
+ * viewports.
69
+ *
70
+ * Usage:
71
+ * @include tablet-viewport() {
72
+ * :host {
73
+ * background-color: green;
74
+ * }
75
+ * }
76
+ */
77
+ /**
78
+ * A heuristic that applies CSS to mobile
79
+ * viewports (i.e. phones, not tablets).
80
+ *
81
+ * Usage:
82
+ * @include mobile-viewport() {
83
+ * :host {
84
+ * background-color: blue;
85
+ * }
86
+ * }
87
+ */
66
88
  :host {
67
89
  /**
68
- * @prop --background: Background of the item
69
- * @prop --background-activated: Background of the item when pressed. Note: setting this will interfere with the Material Design ripple.
70
- *
71
- * @prop --border-color: Color of the item border
72
- * @prop --border-style: Style of the item border
73
- * @prop --border-width: Width of the item border
74
- *
75
- * @prop --min-height: Minimum height of the item
76
- *
77
- * @prop --padding-bottom: Bottom padding of the item
78
- * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item
79
- * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item
80
- * @prop --padding-top: Top padding of the item
81
- *
82
- */
83
- --background: var(--ionic-color-base-white, #ffffff);
84
- --background-activated: var(--ionic-color-neutral-200, #e7e7e7);
85
- --border-color: var(--ionic-color-neutral-300, #cfcfcf);
86
- --border-style: var(--ionic-border-style-solid, solid);
87
- --border-width: var(--ionic-border-size-025, 1px);
88
- --min-height: var(--ionic-scale-1800, 72px);
89
- --padding-top: var(--ionic-space-200, 8px);
90
- --padding-end: var(--ionic-space-400, 16px);
91
- --padding-bottom: var(--ionic-space-200, 8px);
92
- --padding-start: var(--ionic-space-400, 16px);
90
+ * @prop --background: Background of the item
91
+ * @prop --background-activated: Background of the item when pressed. Note: setting this will interfere with the Material Design ripple.
92
+ * @prop --background-activated-opacity: Opacity of the item background when pressed
93
+ * @prop --background-focused: Background of the item when focused with the tab key
94
+ * @prop --background-focused-opacity: Opacity of the item background when focused with the tab key
95
+ * @prop --background-hover: Background of the item on hover
96
+ * @prop --background-hover-opacity: Opacity of the background of the item on hover
97
+ *
98
+ * @prop --border-color: Color of the item border
99
+ * @prop --border-radius: Radius of the item border
100
+ * @prop --border-style: Style of the item border
101
+ * @prop --border-width: Width of the item border
102
+ *
103
+ * @prop --color: Color of the item
104
+ * @prop --color-activated: Color of the item when pressed
105
+ * @prop --color-focused: Color of the item when focused with the tab key
106
+ * @prop --color-hover: Color of the item on hover
107
+ *
108
+ * @prop --detail-icon-color: Color of the item detail icon
109
+ * @prop --detail-icon-opacity: Opacity of the item detail icon
110
+ * @prop --detail-icon-font-size: Font size of the item detail icon
111
+ *
112
+ * @prop --inner-border-width: Width of the item inner border
113
+ * @prop --inner-box-shadow: Box shadow of the item inner
114
+ * @prop --inner-padding-top: Top padding of the item inner
115
+ * @prop --inner-padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item inner
116
+ * @prop --inner-padding-bottom: Bottom padding of the item inner
117
+ * @prop --inner-padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item inner
118
+ *
119
+ * @prop --min-height: Minimum height of the item
120
+ *
121
+ * @prop --padding-bottom: Bottom padding of the item
122
+ * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item
123
+ * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item
124
+ * @prop --padding-top: Top padding of the item
125
+ *
126
+ * @prop --transition: Transition of the item
127
+ *
128
+ * @prop --ripple-color: Color of the item ripple effect
129
+ *
130
+ */
131
+ --border-radius: 0px;
132
+ --border-width: 0px;
133
+ --border-style: solid;
134
+ --padding-top: 0px;
135
+ --padding-bottom: 0px;
136
+ --padding-end: 0px;
137
+ --padding-start: 0px;
138
+ --inner-border-width: 0px;
139
+ --inner-padding-top: 0px;
140
+ --inner-padding-bottom: 0px;
141
+ --inner-padding-start: 0px;
142
+ --inner-padding-end: 0px;
143
+ --inner-box-shadow: none;
144
+ --detail-icon-color: initial;
145
+ --detail-icon-font-size: 1.25em;
146
+ --detail-icon-opacity: 0.25;
147
+ --color-activated: var(--color);
148
+ --color-focused: var(--color);
149
+ --color-hover: var(--color);
150
+ --ripple-color: currentColor;
93
151
  -moz-osx-font-smoothing: grayscale;
94
152
  -webkit-font-smoothing: antialiased;
95
- display: flex;
153
+ display: block;
96
154
  position: relative;
97
155
  align-items: center;
98
156
  justify-content: space-between;
99
157
  outline: none;
100
- font-family: var(--ionic-font-family, "Inter", sans-serif);
158
+ color: var(--color);
101
159
  text-align: initial;
102
160
  text-decoration: none;
103
161
  overflow: hidden;
104
162
  box-sizing: border-box;
105
163
  }
106
164
 
165
+ :host(.ion-activated) .item-native {
166
+ color: var(--color-activated);
167
+ }
168
+ :host(.ion-activated) .item-native::after {
169
+ background: var(--background-activated);
170
+ opacity: var(--background-activated-opacity);
171
+ }
172
+
173
+ :host(.ion-focused) .item-native {
174
+ color: var(--color-focused);
175
+ }
176
+ :host(.ion-focused) .item-native::after {
177
+ background: var(--background-focused);
178
+ opacity: var(--background-focused-opacity);
179
+ }
180
+
181
+ @media (any-hover: hover) {
182
+ :host(.ion-activatable:not(.ion-focused):hover) .item-native {
183
+ color: var(--color-hover);
184
+ }
185
+ :host(.ion-activatable:not(.ion-focused):hover) .item-native::after {
186
+ background: var(--background-hover);
187
+ opacity: var(--background-hover-opacity);
188
+ }
189
+ }
190
+ :host(.item-control-needs-pointer-cursor) {
191
+ cursor: pointer;
192
+ }
193
+
194
+ :host(.item-interactive-disabled:not(.item-multiple-inputs)) {
195
+ cursor: default;
196
+ pointer-events: none;
197
+ }
198
+
199
+ :host(.item-disabled) {
200
+ cursor: default;
201
+ opacity: 0.3;
202
+ pointer-events: none;
203
+ }
204
+
107
205
  .item-native {
108
- -webkit-padding-start: var(--padding-start);
109
- padding-inline-start: var(--padding-start);
110
- -webkit-padding-end: var(--padding-end);
111
- padding-inline-end: var(--padding-end);
206
+ border-radius: var(--border-radius);
207
+ margin-left: 0;
208
+ margin-right: 0;
209
+ margin-top: 0;
210
+ margin-bottom: 0;
112
211
  padding-top: var(--padding-top);
113
212
  padding-bottom: var(--padding-bottom);
213
+ color: inherit;
214
+ font-family: inherit;
215
+ font-size: inherit;
216
+ font-style: inherit;
217
+ font-weight: inherit;
218
+ letter-spacing: inherit;
219
+ text-align: inherit;
220
+ text-decoration: inherit;
221
+ text-indent: inherit;
222
+ text-overflow: inherit;
223
+ text-transform: inherit;
224
+ white-space: inherit;
225
+ /* stylelint-disable */
226
+ padding-right: var(--padding-end);
227
+ padding-left: calc(var(--padding-start) + var(--ion-safe-area-left, 0px));
228
+ /* stylelint-enable */
114
229
  display: flex;
115
- align-items: center;
230
+ position: relative;
231
+ align-items: inherit;
232
+ justify-content: inherit;
116
233
  width: 100%;
117
234
  min-height: var(--min-height);
118
- border-bottom-width: var(--border-width);
119
- border-bottom-style: var(--border-style);
120
- border-bottom-color: var(--border-color);
235
+ transition: var(--transition);
236
+ border-width: var(--border-width);
237
+ border-style: var(--border-style);
238
+ border-color: var(--border-color);
239
+ outline: none;
121
240
  background: var(--background);
122
241
  overflow: inherit;
242
+ z-index: 1;
123
243
  box-sizing: border-box;
124
244
  }
125
- .item-native slot[name=start]::slotted(*) {
126
- -webkit-margin-end: var(--ionic-space-400, 16px);
127
- margin-inline-end: var(--ionic-space-400, 16px);
245
+ :host-context([dir=rtl]) .item-native {
246
+ padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
247
+ padding-left: var(--padding-end);
128
248
  }
129
- .item-native slot[name=end]::slotted(*) {
130
- -webkit-margin-start: var(--ionic-space-400, 16px);
131
- margin-inline-start: var(--ionic-space-400, 16px);
249
+
250
+ [dir=rtl] .item-native {
251
+ padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
252
+ padding-left: var(--padding-end);
132
253
  }
133
- .item-native .item-inner,
134
- .item-native .item-inner .input-wrapper {
135
- display: flex;
136
- flex: 1;
137
- overflow: inherit;
138
- box-sizing: border-box;
254
+
255
+ @supports selector(:dir(rtl)) {
256
+ .item-native:dir(rtl) {
257
+ padding-right: calc(var(--padding-start) + var(--ion-safe-area-right, 0px));
258
+ padding-left: var(--padding-end);
259
+ }
139
260
  }
140
261
 
141
- :host(.item-disabled) {
142
- cursor: default;
143
- pointer-events: none;
262
+ .item-native::-moz-focus-inner {
263
+ border: 0;
144
264
  }
145
- :host(.item-disabled)::after {
265
+
266
+ .item-native::after {
146
267
  right: 0;
147
268
  left: 0;
148
269
  top: 0;
149
270
  bottom: 0;
150
271
  position: absolute;
151
- background: var(--ionic-state-disabled, rgba(255, 255, 255, 0.6));
152
272
  content: "";
273
+ opacity: 0;
274
+ transition: var(--transition);
275
+ z-index: -1;
276
+ }
277
+
278
+ button,
279
+ a {
280
+ cursor: pointer;
281
+ user-select: none;
282
+ -webkit-user-drag: none;
283
+ }
284
+
285
+ .item-inner {
286
+ margin-left: 0;
287
+ margin-right: 0;
288
+ margin-top: 0;
289
+ margin-bottom: 0;
290
+ padding-top: var(--inner-padding-top);
291
+ padding-bottom: var(--inner-padding-bottom);
292
+ /* stylelint-disable */
293
+ padding-right: calc(var(--ion-safe-area-right, 0px) + var(--inner-padding-end));
294
+ padding-left: var(--inner-padding-start);
295
+ /* stylelint-enable */
296
+ display: flex;
297
+ position: relative;
298
+ flex: 1;
299
+ flex-direction: inherit;
300
+ align-items: inherit;
301
+ align-self: stretch;
302
+ min-height: inherit;
303
+ border-width: var(--inner-border-width);
304
+ border-style: var(--border-style);
305
+ border-color: var(--border-color);
306
+ box-shadow: var(--inner-box-shadow);
307
+ overflow: inherit;
308
+ box-sizing: border-box;
309
+ }
310
+ :host-context([dir=rtl]) .item-inner {
311
+ padding-right: var(--inner-padding-start);
312
+ padding-left: calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end));
313
+ }
314
+
315
+ [dir=rtl] .item-inner {
316
+ padding-right: var(--inner-padding-start);
317
+ padding-left: calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end));
318
+ }
319
+
320
+ @supports selector(:dir(rtl)) {
321
+ .item-inner:dir(rtl) {
322
+ padding-right: var(--inner-padding-start);
323
+ padding-left: calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end));
324
+ }
325
+ }
326
+
327
+ .item-detail-icon {
328
+ /**
329
+ * IonItem applies its own end padding. However,
330
+ * all IonIcons have the same bounding box meaning
331
+ * there may be white space for narrow icons. As
332
+ * a result, the white space gives the appearance
333
+ * that there is too much end margin. We move the default
334
+ * chevron icon over to account for this extra whitespace.
335
+ */
336
+ -webkit-margin-start: calc(var(--inner-padding-end) / 2);
337
+ margin-inline-start: calc(var(--inner-padding-end) / 2);
338
+ -webkit-margin-end: -6px;
339
+ margin-inline-end: -6px;
340
+ color: var(--detail-icon-color);
341
+ font-size: var(--detail-icon-font-size);
342
+ opacity: var(--detail-icon-opacity);
343
+ }
344
+
345
+ ::slotted(ion-icon) {
346
+ font-size: 1.6em;
347
+ }
348
+
349
+ ::slotted(ion-button) {
350
+ --margin-top: 0;
351
+ --margin-bottom: 0;
352
+ --margin-start: 0;
353
+ --margin-end: 0;
354
+ z-index: 1;
355
+ }
356
+
357
+ ::slotted(ion-label:not([slot=end])) {
358
+ flex: 1;
359
+ width: min-content;
360
+ /**
361
+ * We allow labels in the default
362
+ * slot to grow. However, we do not
363
+ * want them to grow indefinitely.
364
+ */
365
+ max-width: 100%;
366
+ }
367
+
368
+ :host(.item-input) {
369
+ align-items: center;
370
+ }
371
+
372
+ .input-wrapper {
373
+ display: flex;
374
+ flex: 1;
375
+ flex-direction: inherit;
376
+ align-items: inherit;
377
+ align-self: stretch;
378
+ text-overflow: ellipsis;
379
+ overflow: inherit;
380
+ box-sizing: border-box;
381
+ }
382
+
383
+ :host(.item-label-stacked),
384
+ :host(.item-label-floating) {
385
+ align-items: start;
386
+ }
387
+
388
+ :host(.item-label-stacked) .input-wrapper,
389
+ :host(.item-label-floating) .input-wrapper {
390
+ flex: 1;
391
+ flex-direction: column;
392
+ }
393
+
394
+ :host(.item-multiple-inputs) ::slotted(ion-checkbox),
395
+ :host(.item-multiple-inputs) ::slotted(ion-datetime),
396
+ :host(.item-multiple-inputs) ::slotted(ion-radio) {
397
+ position: relative;
398
+ }
399
+
400
+ :host(.item-textarea) {
401
+ align-items: stretch;
402
+ }
403
+
404
+ ::slotted(ion-reorder[slot]) {
405
+ margin-top: 0;
406
+ margin-bottom: 0;
407
+ }
408
+
409
+ ion-ripple-effect {
410
+ color: var(--ripple-color);
411
+ }
412
+
413
+ :host {
414
+ --background: var(--ionic-color-base-white, #ffffff);
415
+ --background-activated: var(--ionic-color-neutral-200, #e7e7e7);
416
+ --border-color: var(--ionic-color-neutral-300, #cfcfcf);
417
+ --border-style: var(--ionic-border-style-solid, solid);
418
+ --border-width: 0 0 var(--ionic-border-size-025, 1px) 0;
419
+ --min-height: var(--ionic-scale-1800, 72px);
420
+ --padding-top: var(--ionic-space-200, 8px);
421
+ --padding-end: var(--ionic-space-400, 16px);
422
+ --padding-bottom: var(--ionic-space-200, 8px);
423
+ --padding-start: var(--ionic-space-400, 16px);
424
+ font-family: var(--ionic-font-family, "Inter", sans-serif);
425
+ }
426
+
427
+ .item-inner {
428
+ min-height: initial;
429
+ }
430
+
431
+ slot[name=start]::slotted(*) {
432
+ -webkit-margin-end: var(--ionic-space-400, 16px);
433
+ margin-inline-end: var(--ionic-space-400, 16px);
434
+ }
435
+
436
+ slot[name=end]::slotted(*) {
437
+ -webkit-margin-start: var(--ionic-space-400, 16px);
438
+ margin-inline-start: var(--ionic-space-400, 16px);
439
+ }
440
+
441
+ :host(.item-disabled) {
442
+ opacity: 0.6;
153
443
  }
154
444
 
155
445
  :host(.ion-activated) .item-native {
156
446
  background: var(--background-activated);
157
447
  }
158
448
 
449
+ :host(.ion-focused) .item-native {
450
+ overflow: visible;
451
+ }
452
+
159
453
  :host(.ion-focused) .item-native::after {
160
454
  right: 0;
161
455
  left: 0;