@ionic/core 7.5.6-dev.11700169088.140f3e6a → 7.5.6-dev.11700519388.1583475f

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 (150) hide show
  1. package/components/icon.js +15 -16
  2. package/components/index7.js +1 -1
  3. package/dist/cjs/{index-09471526.js → index-6b8be5a4.js} +1 -1
  4. package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  6. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-button_2.cjs.entry.js +15 -16
  8. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-input.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
  12. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  13. package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
  14. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  17. package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
  18. package/dist/collection/collection-manifest.json +4 -4
  19. package/dist/collection/components/accordion/test/accordion.spec.js +195 -0
  20. package/dist/collection/components/action-sheet/test/action-sheet-id.spec.js +32 -0
  21. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +18 -0
  22. package/dist/collection/components/alert/test/alert-id.spec.js +32 -0
  23. package/dist/collection/components/alert/test/alert.spec.js +37 -0
  24. package/dist/collection/components/back-button/test/back-button.spec.js +86 -0
  25. package/dist/collection/components/breadcrumb/test/aria.spec.js +22 -0
  26. package/dist/collection/components/breadcrumbs/test/breadcrumbs.spec.js +58 -0
  27. package/dist/collection/components/button/test/form-reference/button.spec.js +26 -0
  28. package/dist/collection/components/card/test/aria.spec.js +16 -0
  29. package/dist/collection/components/checkbox/test/checkbox.spec.js +20 -0
  30. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +43 -0
  31. package/dist/collection/components/datetime/test/comparison.spec.js +43 -0
  32. package/dist/collection/components/datetime/test/data.spec.js +456 -0
  33. package/dist/collection/components/datetime/test/format.spec.js +124 -0
  34. package/dist/collection/components/datetime/test/helpers.spec.js +72 -0
  35. package/dist/collection/components/datetime/test/manipulation.spec.js +433 -0
  36. package/dist/collection/components/datetime/test/parse.spec.js +222 -0
  37. package/dist/collection/components/datetime/test/state.spec.js +114 -0
  38. package/dist/collection/components/infinite-scroll-content/test/infinite-scroll-content.spec.js +37 -0
  39. package/dist/collection/components/input/test/input.spec.js +85 -0
  40. package/dist/collection/components/input/test/item/input.spec.js +24 -0
  41. package/dist/collection/components/item/test/a11y/item.spec.js +48 -0
  42. package/dist/collection/components/loading/test/basic/loading.spec.js +16 -0
  43. package/dist/collection/components/loading/test/loading-id.spec.js +32 -0
  44. package/dist/collection/components/loading/test/loading.spec.js +37 -0
  45. package/dist/collection/components/modal/test/a11y/modal.spec.js +22 -0
  46. package/dist/collection/components/modal/test/basic/modal.spec.js +16 -0
  47. package/dist/collection/components/modal/test/can-dismiss/modal.spec.js +191 -0
  48. package/dist/collection/components/modal/test/modal-id.spec.js +32 -0
  49. package/dist/collection/components/nav/test/nav-controller.spec.js +749 -0
  50. package/dist/collection/components/picker/test/picker-id.spec.js +32 -0
  51. package/dist/collection/components/picker-column/test/picker-column-aria.spec.js +35 -0
  52. package/dist/collection/components/picker-column/test/picker-column-dynamic.spec.js +29 -0
  53. package/dist/collection/components/picker-column/test/picker-column.spec.js +17 -0
  54. package/dist/collection/components/popover/test/basic/popover.spec.js +16 -0
  55. package/dist/collection/components/popover/test/popover-id.spec.js +32 -0
  56. package/dist/collection/components/popover/test/util.spec.js +53 -0
  57. package/dist/collection/components/radio/test/radio.spec.js +46 -0
  58. package/dist/collection/components/range/test/label/range.spec.js +23 -0
  59. package/dist/collection/components/range/test/range.spec.js +205 -0
  60. package/dist/collection/components/refresher-content/test/refresher-content.spec.js +46 -0
  61. package/dist/collection/components/router/test/matching.spec.js +250 -0
  62. package/dist/collection/components/router/test/parser.spec.js +133 -0
  63. package/dist/collection/components/router/test/path.spec.js +218 -0
  64. package/dist/collection/components/router/test/router.spec.js +55 -0
  65. package/dist/collection/components/searchbar/test/searchbar.spec.js +15 -0
  66. package/dist/collection/components/segment/test/segment.spec.js +37 -0
  67. package/dist/collection/components/select/test/select.spec.js +59 -0
  68. package/dist/collection/components/textarea/test/textarea.spec.js +59 -0
  69. package/dist/collection/components/toast/test/toast-id.spec.js +32 -0
  70. package/dist/collection/components/toast/test/toast.spec.js +120 -0
  71. package/dist/collection/components/toggle/test/toggle.spec.js +55 -0
  72. package/dist/collection/global/test/config-controller.spec.js +77 -0
  73. package/dist/collection/utils/animation/test/animation.spec.js +431 -0
  74. package/dist/collection/utils/keyboard/test/keyboard-controller.spec.js +21 -0
  75. package/dist/collection/utils/keyboard/test/keyboard.spec.js +214 -0
  76. package/dist/collection/utils/sanitization/test/sanitization.spec.js +43 -0
  77. package/dist/collection/utils/test/aria.spec.js +79 -0
  78. package/dist/collection/utils/test/attributes.spec.js +53 -0
  79. package/dist/collection/utils/test/hardware-back-button.spec.js +53 -0
  80. package/dist/collection/utils/test/overlays/overlays.spec.js +102 -0
  81. package/dist/collection/utils/test/platform.spec.js +132 -0
  82. package/dist/collection/utils/test/ready.spec.js +39 -0
  83. package/dist/collection/utils/test/theme.spec.js +56 -0
  84. package/dist/docs.json +21 -21
  85. package/dist/esm/{index-c132c5f1.js → index-5d8e6a4f.js} +1 -1
  86. package/dist/esm/ion-accordion_2.entry.js +1 -1
  87. package/dist/esm/ion-back-button.entry.js +1 -1
  88. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  89. package/dist/esm/ion-button_2.entry.js +15 -16
  90. package/dist/esm/ion-datetime_3.entry.js +1 -1
  91. package/dist/esm/ion-fab_3.entry.js +1 -1
  92. package/dist/esm/ion-input.entry.js +1 -1
  93. package/dist/esm/ion-item_8.entry.js +1 -1
  94. package/dist/esm/ion-menu_3.entry.js +1 -1
  95. package/dist/esm/ion-refresher_2.entry.js +1 -1
  96. package/dist/esm/ion-reorder_2.entry.js +1 -1
  97. package/dist/esm/ion-searchbar.entry.js +1 -1
  98. package/dist/esm/ion-select_3.entry.js +1 -1
  99. package/dist/esm/ion-toggle.entry.js +1 -1
  100. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  101. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  102. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  103. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  104. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  105. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  106. package/dist/esm-es5/ion-input.entry.js +1 -1
  107. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  108. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  109. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  110. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  111. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  112. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  113. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  114. package/dist/ionic/ionic.esm.js +1 -1
  115. package/dist/ionic/p-1070ed59.entry.js +4 -0
  116. package/dist/ionic/p-178fa84b.system.entry.js +4 -0
  117. package/dist/ionic/{p-bed722c4.system.entry.js → p-1f011033.system.entry.js} +1 -1
  118. package/dist/ionic/{p-b203659a.system.entry.js → p-1f21e106.system.entry.js} +1 -1
  119. package/dist/ionic/{p-1e86a71b.entry.js → p-3101643f.entry.js} +1 -1
  120. package/dist/ionic/{p-39044fe6.system.entry.js → p-324226bf.system.entry.js} +1 -1
  121. package/dist/ionic/{p-d91e93ac.system.entry.js → p-3cd4001e.system.entry.js} +1 -1
  122. package/dist/ionic/{p-d3952bd5.system.entry.js → p-3f4fdd67.system.entry.js} +1 -1
  123. package/dist/ionic/p-40903d34.system.js +1 -1
  124. package/dist/ionic/{p-a21b8d05.entry.js → p-413e5a56.entry.js} +1 -1
  125. package/dist/ionic/{p-73411c1b.entry.js → p-459dd2a9.entry.js} +1 -1
  126. package/dist/ionic/{p-a5c1e6ce.entry.js → p-52138a68.entry.js} +1 -1
  127. package/dist/ionic/{p-d21bfe66.system.entry.js → p-54aba2a6.system.entry.js} +1 -1
  128. package/dist/ionic/{p-34d2de14.system.entry.js → p-5b885cc5.system.entry.js} +1 -1
  129. package/dist/ionic/{p-abacb44b.system.entry.js → p-68d27845.system.entry.js} +1 -1
  130. package/dist/ionic/{p-b2a74a72.entry.js → p-73ab9076.entry.js} +1 -1
  131. package/dist/ionic/{p-ad61e508.entry.js → p-7821df39.entry.js} +1 -1
  132. package/dist/ionic/{p-a8e68fd9.entry.js → p-85f8bc31.entry.js} +1 -1
  133. package/dist/ionic/{p-14aca3fb.entry.js → p-8dc8c0b7.entry.js} +1 -1
  134. package/dist/ionic/{p-5da0eb3e.system.entry.js → p-9437dac6.system.entry.js} +1 -1
  135. package/dist/ionic/{p-f5a750e4.system.entry.js → p-a94bed6d.system.entry.js} +1 -1
  136. package/dist/ionic/{p-48d9faa7.entry.js → p-ace47557.entry.js} +1 -1
  137. package/dist/ionic/{p-b6f8ee31.entry.js → p-af83378e.entry.js} +1 -1
  138. package/dist/ionic/{p-3ce8c3e3.entry.js → p-bb20a3fb.entry.js} +1 -1
  139. package/dist/ionic/{p-07d9e9cd.system.entry.js → p-cb9c77e7.system.entry.js} +1 -1
  140. package/dist/ionic/{p-377c636c.system.entry.js → p-d4bd82e9.system.entry.js} +1 -1
  141. package/dist/ionic/{p-0dc0d9b5.entry.js → p-d50f9c4b.entry.js} +1 -1
  142. package/dist/ionic/{p-f4cc91f6.entry.js → p-dc527a33.entry.js} +1 -1
  143. package/dist/ionic/{p-664d2b07.system.entry.js → p-edeb2f05.system.entry.js} +1 -1
  144. package/hydrate/index.js +1 -13
  145. package/package.json +3 -2
  146. package/dist/ionic/p-1dc91702.entry.js +0 -4
  147. package/dist/ionic/p-3fb57e1b.system.entry.js +0 -4
  148. /package/dist/esm-es5/{index-c132c5f1.js → index-5d8e6a4f.js} +0 -0
  149. /package/dist/ionic/{p-ea96fa73.js → p-6856db55.js} +0 -0
  150. /package/dist/ionic/{p-8050b9b9.system.js → p-a2e89e43.system.js} +0 -0
@@ -24,7 +24,7 @@ const getUrl = (i) => {
24
24
  }
25
25
  url = getName(i.name, i.icon, i.mode, i.ios, i.md);
26
26
  if (url) {
27
- return getNamedUrl(url);
27
+ return getNamedUrl(url, i);
28
28
  }
29
29
  if (i.icon) {
30
30
  url = getSrc(i.icon);
@@ -38,12 +38,24 @@ const getUrl = (i) => {
38
38
  }
39
39
  return null;
40
40
  };
41
- const getNamedUrl = (iconName) => {
41
+ const getNamedUrl = (iconName, iconEl) => {
42
42
  const url = getIconMap().get(iconName);
43
43
  if (url) {
44
44
  return url;
45
45
  }
46
- return getAssetPath(`svg/${iconName}.svg`);
46
+ try {
47
+ return getAssetPath(`svg/${iconName}.svg`);
48
+ }
49
+ catch (e) {
50
+ /**
51
+ * In the custom elements build version of ionicons, referencing an icon
52
+ * by name will throw an invalid URL error because the asset path is not defined.
53
+ * This catches that error and logs something that is more developer-friendly.
54
+ * We also include a reference to the ion-icon element so developers can
55
+ * figure out which instance of ion-icon needs to be updated.
56
+ */
57
+ console.warn(`[Ionicons Warning]: Could not load icon with name "${iconName}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`, iconEl);
58
+ }
47
59
  };
48
60
  const getName = (iconName, icon, mode, ios, md) => {
49
61
  // default to "md" if somehow the mode wasn't set
@@ -230,7 +242,6 @@ const Icon = /*@__PURE__*/ proxyCustomElement(class Icon extends HTMLElement {
230
242
  this.__attachShadow();
231
243
  this.iconName = null;
232
244
  this.inheritedAttributes = {};
233
- this.didLoadIcon = false;
234
245
  this.svgContent = undefined;
235
246
  this.isVisible = false;
236
247
  this.mode = getIonMode();
@@ -257,17 +268,6 @@ const Icon = /*@__PURE__*/ proxyCustomElement(class Icon extends HTMLElement {
257
268
  this.loadIcon();
258
269
  });
259
270
  }
260
- componentDidLoad() {
261
- /**
262
- * Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.
263
- * This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.
264
- * This modification pertains to the usage of Angular's binding syntax:
265
- * `<ion-icon [name]="myIconName"></ion-icon>`
266
- */
267
- if (!this.didLoadIcon) {
268
- this.loadIcon();
269
- }
270
- }
271
271
  disconnectedCallback() {
272
272
  if (this.io) {
273
273
  this.io.disconnect();
@@ -303,7 +303,6 @@ const Icon = /*@__PURE__*/ proxyCustomElement(class Icon extends HTMLElement {
303
303
  // async if it hasn't been loaded
304
304
  getSvgContent(url, this.sanitize).then(() => (this.svgContent = ioniconContent.get(url)));
305
305
  }
306
- this.didLoadIcon = true;
307
306
  }
308
307
  }
309
308
  this.iconName = getName(this.name, this.icon, this.mode, this.ios, this.md);
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- /* Ionicons v7.2.1, ES Modules */
4
+ /* Ionicons v7.2.2-dev.11700519177.13b28f3a, ES Modules */
5
5
  const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
6
6
  const arrowDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>";
7
7
  const caretBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M368 64L144 256l224 192V64z'/></svg>";
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- /* Ionicons v7.2.1, ES Modules */
6
+ /* Ionicons v7.2.2-dev.11700519177.13b28f3a, ES Modules */
7
7
  const arrowBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='square' stroke-miterlimit='10' stroke-width='48' d='M244 400L100 256l144-144M120 256h292' class='ionicon-fill-none'/></svg>";
8
8
  const arrowDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path stroke-linecap='round' stroke-linejoin='round' stroke-width='48' d='M112 268l144 144 144-144M256 392V100' class='ionicon-fill-none'/></svg>";
9
9
  const caretBackSharp = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' class='ionicon' viewBox='0 0 512 512'><path d='M368 64L144 256l224 192V64z'/></svg>";
@@ -7,7 +7,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-c2940dc1.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
- const index$1 = require('./index-09471526.js');
10
+ const index$1 = require('./index-6b8be5a4.js');
11
11
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
12
12
  const index$2 = require('./index-cc7dfb7c.js');
13
13
 
@@ -8,7 +8,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
8
8
  const index = require('./index-c2940dc1.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
10
  const theme = require('./theme-fbc56b3b.js');
11
- const index$1 = require('./index-09471526.js');
11
+ const index$1 = require('./index-6b8be5a4.js');
12
12
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
13
13
 
14
14
  const backButtonIosCss = ":host{--background:transparent;--color-focused:currentColor;--color-hover:currentColor;--icon-margin-top:0;--icon-margin-bottom:0;--icon-padding-top:0;--icon-padding-end:0;--icon-padding-bottom:0;--icon-padding-start:0;--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--min-width:auto;--min-height:auto;--padding-top:0;--padding-end:0;--padding-bottom:0;--padding-start:0;--opacity:1;--ripple-color:currentColor;--transition:background-color, opacity 100ms linear;display:none;min-width:var(--min-width);min-height:var(--min-height);color:var(--color);font-family:var(--ion-font-family, inherit);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-font-kerning:none;font-kerning:none}ion-ripple-effect{color:var(--ripple-color)}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host(.show-back-button){display:block}:host(.back-button-disabled){cursor:default;opacity:0.5;pointer-events:none}.button-native{border-radius:var(--border-radius);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;display:block;position:relative;width:100%;height:100%;min-height:inherit;-webkit-transition:var(--transition);transition:var(--transition);border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;opacity:var(--opacity);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;z-index:1}ion-icon{-webkit-padding-start:var(--icon-padding-start);padding-inline-start:var(--icon-padding-start);-webkit-padding-end:var(--icon-padding-end);padding-inline-end:var(--icon-padding-end);padding-top:var(--icon-padding-top);padding-bottom:var(--icon-padding-bottom);-webkit-margin-start:var(--icon-margin-start);margin-inline-start:var(--icon-margin-start);-webkit-margin-end:var(--icon-margin-end);margin-inline-end:var(--icon-margin-end);margin-top:var(--icon-margin-top);margin-bottom:var(--icon-margin-bottom);display:inherit;font-size:var(--icon-font-size);font-weight:var(--icon-font-weight);pointer-events:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}}:host(.ion-color.ion-focused) .button-native{color:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native{color:var(--ion-color-base)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-hover:transparent;--background-hover-opacity:1;--background-focused:currentColor;--background-focused-opacity:.1;--border-radius:4px;--color:var(--ion-color-primary, #3880ff);--icon-margin-end:1px;--icon-margin-start:-4px;--icon-font-size:1.6em;--min-height:32px;font-size:clamp(17px, 1.0625rem, 21.998px)}.button-native{-webkit-transform:translateZ(0);transform:translateZ(0);overflow:visible;z-index:99}:host(.ion-activated) .button-native{opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}";
@@ -8,7 +8,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
8
8
  const index = require('./index-c2940dc1.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
10
  const theme = require('./theme-fbc56b3b.js');
11
- const index$1 = require('./index-09471526.js');
11
+ const index$1 = require('./index-6b8be5a4.js');
12
12
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
13
13
 
14
14
  const breadcrumbIosCss = ":host{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center;align-items:center;color:var(--color);font-size:1rem;font-weight:400;line-height:1.5}.breadcrumb-native{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%;outline:none;background:inherit}:host(.breadcrumb-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.breadcrumb-active){color:var(--color-active)}:host(.ion-focused){color:var(--color-focused)}:host(.ion-focused) .breadcrumb-native{background:var(--background-focused)}@media (any-hover: hover){:host(.ion-activatable:hover){color:var(--color-hover)}:host(.ion-activatable.in-breadcrumbs-color:hover),:host(.ion-activatable.ion-color:hover){color:var(--ion-color-shade)}}.breadcrumb-separator{display:-ms-inline-flexbox;display:inline-flex}:host(.breadcrumb-collapsed) .breadcrumb-native{display:none}:host(.in-breadcrumbs-color),:host(.in-breadcrumbs-color.breadcrumb-active){color:var(--ion-color-base)}:host(.in-breadcrumbs-color) .breadcrumb-separator{color:var(--ion-color-base)}:host(.ion-color){color:var(--ion-color-base)}:host(.in-toolbar-color),:host(.in-toolbar-color) .breadcrumb-separator{color:rgba(var(--ion-color-contrast-rgb), 0.8)}:host(.in-toolbar-color.breadcrumb-active){color:var(--ion-color-contrast)}.breadcrumbs-collapsed-indicator{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;-webkit-margin-start:14px;margin-inline-start:14px;-webkit-margin-end:14px;margin-inline-end:14px;margin-top:0;margin-bottom:0;display:-ms-flexbox;display:flex;-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:32px;height:18px;border:0;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.breadcrumbs-collapsed-indicator ion-icon{margin-top:1px;font-size:1.375rem}:host{--color:var(--ion-color-step-850, #2d4665);--color-active:var(--ion-text-color, #03060b);--color-hover:var(--ion-text-color, #03060b);--color-focused:var(--color-active);--background-focused:var(--ion-color-step-50, rgba(233, 237, 243, 0.7));font-size:clamp(16px, 1rem, 22px)}:host(.breadcrumb-active){font-weight:600}.breadcrumb-native{border-radius:4px;-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:5px;padding-bottom:5px;border:1px solid transparent}:host(.ion-focused) .breadcrumb-native{border-radius:8px}:host(.in-breadcrumbs-color.ion-focused) .breadcrumb-native,:host(.ion-color.ion-focused) .breadcrumb-native{background:rgba(var(--ion-color-base-rgb), 0.1);color:var(--ion-color-base)}:host(.ion-focused) ::slotted(ion-icon),:host(.in-breadcrumbs-color.ion-focused) ::slotted(ion-icon),:host(.ion-color.ion-focused) ::slotted(ion-icon){color:var(--ion-color-step-750, #445b78)}.breadcrumb-separator{color:var(--ion-color-step-550, #73849a)}::slotted(ion-icon){color:var(--ion-color-step-400, #92a0b3);font-size:min(1.125rem, 21.6px)}::slotted(ion-icon[slot=start]){-webkit-margin-end:8px;margin-inline-end:8px}::slotted(ion-icon[slot=end]){-webkit-margin-start:8px;margin-inline-start:8px}:host(.breadcrumb-active) ::slotted(ion-icon){color:var(--ion-color-step-850, #242d39)}.breadcrumbs-collapsed-indicator{border-radius:4px;background:var(--ion-color-step-100, #e9edf3);color:var(--ion-color-step-550, #73849a)}.breadcrumbs-collapsed-indicator:hover{opacity:0.45}.breadcrumbs-collapsed-indicator:focus{background:var(--ion-color-step-150, #d9e0ea)}.breadcrumbs-collapsed-indicator ion-icon{font-size:min(1.375rem, 22px)}";
@@ -32,7 +32,7 @@ const getUrl = (i) => {
32
32
  }
33
33
  url = getName(i.name, i.icon, i.mode, i.ios, i.md);
34
34
  if (url) {
35
- return getNamedUrl(url);
35
+ return getNamedUrl(url, i);
36
36
  }
37
37
  if (i.icon) {
38
38
  url = getSrc(i.icon);
@@ -46,12 +46,24 @@ const getUrl = (i) => {
46
46
  }
47
47
  return null;
48
48
  };
49
- const getNamedUrl = (iconName) => {
49
+ const getNamedUrl = (iconName, iconEl) => {
50
50
  const url = getIconMap().get(iconName);
51
51
  if (url) {
52
52
  return url;
53
53
  }
54
- return index.getAssetPath(`svg/${iconName}.svg`);
54
+ try {
55
+ return index.getAssetPath(`svg/${iconName}.svg`);
56
+ }
57
+ catch (e) {
58
+ /**
59
+ * In the custom elements build version of ionicons, referencing an icon
60
+ * by name will throw an invalid URL error because the asset path is not defined.
61
+ * This catches that error and logs something that is more developer-friendly.
62
+ * We also include a reference to the ion-icon element so developers can
63
+ * figure out which instance of ion-icon needs to be updated.
64
+ */
65
+ console.warn(`[Ionicons Warning]: Could not load icon with name "${iconName}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`, iconEl);
66
+ }
55
67
  };
56
68
  const getName = (iconName, icon, mode, ios, md) => {
57
69
  // default to "md" if somehow the mode wasn't set
@@ -453,7 +465,6 @@ const Icon = class {
453
465
  index.registerInstance(this, hostRef);
454
466
  this.iconName = null;
455
467
  this.inheritedAttributes = {};
456
- this.didLoadIcon = false;
457
468
  this.svgContent = undefined;
458
469
  this.isVisible = false;
459
470
  this.mode = getIonMode();
@@ -480,17 +491,6 @@ const Icon = class {
480
491
  this.loadIcon();
481
492
  });
482
493
  }
483
- componentDidLoad() {
484
- /**
485
- * Addresses an Angular issue where property values are assigned after the 'connectedCallback' but prior to the registration of watchers.
486
- * This enhancement ensures the loading of an icon when the component has finished rendering and the icon has yet to apply the SVG data.
487
- * This modification pertains to the usage of Angular's binding syntax:
488
- * `<ion-icon [name]="myIconName"></ion-icon>`
489
- */
490
- if (!this.didLoadIcon) {
491
- this.loadIcon();
492
- }
493
- }
494
494
  disconnectedCallback() {
495
495
  if (this.io) {
496
496
  this.io.disconnect();
@@ -526,7 +526,6 @@ const Icon = class {
526
526
  // async if it hasn't been loaded
527
527
  getSvgContent(url, this.sanitize).then(() => (this.svgContent = ioniconContent.get(url)));
528
528
  }
529
- this.didLoadIcon = true;
530
529
  }
531
530
  }
532
531
  this.iconName = getName(this.name, this.icon, this.mode, this.ios, this.md);
@@ -11,7 +11,7 @@ const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const index = require('./index-cc7dfb7c.js');
12
12
  const dir = require('./dir-f1e0ca26.js');
13
13
  const theme = require('./theme-fbc56b3b.js');
14
- const index$2 = require('./index-09471526.js');
14
+ const index$2 = require('./index-6b8be5a4.js');
15
15
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
16
16
  const data = require('./data-c8d21093.js');
17
17
  const lockController = require('./lock-controller-4ae2eb59.js');
@@ -9,7 +9,7 @@ const index = require('./index-c2940dc1.js');
9
9
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
10
10
  const helpers = require('./helpers-ea4ccbcb.js');
11
11
  const theme = require('./theme-fbc56b3b.js');
12
- const index$1 = require('./index-09471526.js');
12
+ const index$1 = require('./index-6b8be5a4.js');
13
13
 
14
14
  const fabCss = ":host{position:absolute;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;z-index:999}:host(.fab-horizontal-center){left:0px;right:0px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto}:host(.fab-horizontal-start){left:calc(10px + var(--ion-safe-area-left, 0px));}:host-context([dir=rtl]):host(.fab-horizontal-start),:host-context([dir=rtl]).fab-horizontal-start{right:calc(10px + var(--ion-safe-area-right, 0px));left:unset}@supports selector(:dir(rtl)){:host(.fab-horizontal-start:dir(rtl)){right:calc(10px + var(--ion-safe-area-right, 0px));left:unset}}:host(.fab-horizontal-end){right:calc(10px + var(--ion-safe-area-right, 0px));}:host-context([dir=rtl]):host(.fab-horizontal-end),:host-context([dir=rtl]).fab-horizontal-end{left:calc(10px + var(--ion-safe-area-left, 0px));right:unset}@supports selector(:dir(rtl)){:host(.fab-horizontal-end:dir(rtl)){left:calc(10px + var(--ion-safe-area-left, 0px));right:unset}}:host(.fab-vertical-top){top:10px}:host(.fab-vertical-top.fab-edge){top:0}:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-button){margin-top:-50%}:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-button.fab-button-small){margin-top:calc((-100% + 16px) / 2)}:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-list.fab-list-side-start),:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-list.fab-list-side-end){margin-top:-50%}:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-list.fab-list-side-top),:host(.fab-vertical-top.fab-edge) ::slotted(ion-fab-list.fab-list-side-bottom){margin-top:calc(50% + 10px)}:host(.fab-vertical-bottom){bottom:10px}:host(.fab-vertical-bottom.fab-edge){bottom:0}:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-button){margin-bottom:-50%}:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-button.fab-button-small){margin-bottom:calc((-100% + 16px) / 2)}:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-list.fab-list-side-start),:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-list.fab-list-side-end){margin-bottom:-50%}:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-list.fab-list-side-top),:host(.fab-vertical-bottom.fab-edge) ::slotted(ion-fab-list.fab-list-side-bottom){margin-bottom:calc(50% + 10px)}:host(.fab-vertical-center){top:0px;bottom:0px;margin-top:auto;margin-bottom:auto}";
15
15
 
@@ -12,7 +12,7 @@ const helpers = require('./helpers-ea4ccbcb.js');
12
12
  const index$2 = require('./index-cc7dfb7c.js');
13
13
  const input_utils = require('./input.utils-0fe3097c.js');
14
14
  const theme = require('./theme-fbc56b3b.js');
15
- const index$1 = require('./index-09471526.js');
15
+ const index$1 = require('./index-6b8be5a4.js');
16
16
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
17
17
  require('./index-306a7476.js');
18
18
 
@@ -9,7 +9,7 @@ const index = require('./index-c2940dc1.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
10
  const index$2 = require('./index-cc7dfb7c.js');
11
11
  const theme = require('./theme-fbc56b3b.js');
12
- const index$1 = require('./index-09471526.js');
12
+ const index$1 = require('./index-6b8be5a4.js');
13
13
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
14
14
 
15
15
  const itemIosCss = ":host{--border-radius:0px;--border-width:0px;--border-style:solid;--padding-top:0px;--padding-bottom:0px;--padding-end:0px;--padding-start:0px;--inner-border-width:0px;--inner-padding-top:0px;--inner-padding-bottom:0px;--inner-padding-start:0px;--inner-padding-end:0px;--inner-box-shadow:none;--show-full-highlight:0;--show-inset-highlight:0;--detail-icon-color:initial;--detail-icon-font-size:1.25em;--detail-icon-opacity:0.25;--color-activated:var(--color);--color-focused:var(--color);--color-hover:var(--color);--ripple-color:currentColor;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;outline:none;color:var(--color);font-family:var(--ion-font-family, inherit);text-align:initial;text-decoration:none;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color:not(.item-fill-solid):not(.item-fill-outline)) .item-native{background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(.ion-color:not(.item-fill-solid):not(.item-fill-outline)) .item-native,:host(.ion-color:not(.item-fill-solid):not(.item-fill-outline)) .item-inner{border-color:var(--ion-color-shade)}:host(.ion-activated) .item-native{color:var(--color-activated)}:host(.ion-activated) .item-native::after{background:var(--background-activated);opacity:var(--background-activated-opacity)}:host(.ion-color.ion-activated) .item-native{color:var(--ion-color-contrast)}:host(.ion-focused) .item-native{color:var(--color-focused)}:host(.ion-focused) .item-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}:host(.ion-color.ion-focused) .item-native{color:var(--ion-color-contrast)}:host(.ion-color.ion-focused) .item-native::after{background:var(--ion-color-contrast)}@media (any-hover: hover){:host(.ion-activatable:not(.ion-focused):hover) .item-native{color:var(--color-hover)}:host(.ion-activatable:not(.ion-focused):hover) .item-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity)}:host(.ion-color.ion-activatable:not(.ion-focused):hover) .item-native{color:var(--ion-color-contrast)}:host(.ion-color.ion-activatable:not(.ion-focused):hover) .item-native::after{background:var(--ion-color-contrast)}}:host(.item-has-interactive-control){cursor:pointer}:host(.item-interactive-disabled:not(.item-multiple-inputs)){cursor:default;pointer-events:none}:host(.item-disabled){cursor:default;opacity:0.3;pointer-events:none}.item-native{border-radius:var(--border-radius);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;padding-right:var(--padding-end);padding-left:calc(var(--padding-start) + var(--ion-safe-area-left, 0px));display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:inherit;align-items:inherit;-ms-flex-pack:inherit;justify-content:inherit;width:100%;min-height:var(--min-height);-webkit-transition:var(--transition);transition:var(--transition);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);outline:none;background:var(--background);overflow:inherit;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:1}:host-context([dir=rtl]) .item-native{padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}[dir=rtl] .item-native{padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}@supports selector(:dir(rtl)){.item-native:dir(rtl){padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px));padding-left:var(--padding-end)}}.item-native::-moz-focus-inner{border:0}.item-native::after{left:0;right:0;top:0;bottom:0;position:absolute;content:\"\";opacity:0;-webkit-transition:var(--transition);transition:var(--transition);z-index:-1}button,a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.item-inner{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-top:var(--inner-padding-top);padding-bottom:var(--inner-padding-bottom);padding-right:calc(var(--ion-safe-area-right, 0px) + var(--inner-padding-end));padding-left:var(--inner-padding-start);display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-item-align:stretch;align-self:stretch;min-height:inherit;border-width:var(--inner-border-width);border-style:var(--border-style);border-color:var(--border-color);-webkit-box-shadow:var(--inner-box-shadow);box-shadow:var(--inner-box-shadow);overflow:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}:host-context([dir=rtl]) .item-inner{padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}[dir=rtl] .item-inner{padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}@supports selector(:dir(rtl)){.item-inner:dir(rtl){padding-right:var(--inner-padding-start);padding-left:calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-end))}}.item-bottom{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;padding-left:calc(var(--padding-start) + var(--ion-safe-area-left, 0px));padding-right:calc(var(--inner-padding-end) + var(--ion-safe-area-right, 0px));display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}:host-context([dir=rtl]) .item-bottom{padding-left:calc(var(--inner-padding-end) + var(--ion-safe-area-left, 0px));padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px))}[dir=rtl] .item-bottom{padding-left:calc(var(--inner-padding-end) + var(--ion-safe-area-left, 0px));padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px))}@supports selector(:dir(rtl)){.item-bottom:dir(rtl){padding-left:calc(var(--inner-padding-end) + var(--ion-safe-area-left, 0px));padding-right:calc(var(--padding-start) + var(--ion-safe-area-right, 0px))}}.item-detail-icon{-webkit-margin-start:calc(var(--inner-padding-end) / 2);margin-inline-start:calc(var(--inner-padding-end) / 2);-webkit-margin-end:-6px;margin-inline-end:-6px;color:var(--detail-icon-color);font-size:var(--detail-icon-font-size);opacity:var(--detail-icon-opacity)}::slotted(ion-icon){font-size:1.6em}::slotted(ion-button){--margin-top:0;--margin-bottom:0;--margin-start:0;--margin-end:0;z-index:1}::slotted(ion-label:not([slot=end])){-ms-flex:1;flex:1}:host(.item-input){-ms-flex-align:center;align-items:center}.input-wrapper{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-direction:inherit;flex-direction:inherit;-ms-flex-align:inherit;align-items:inherit;-ms-flex-item-align:stretch;align-self:stretch;text-overflow:ellipsis;overflow:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.item-label-stacked),:host(.item-label-floating){-ms-flex-align:start;align-items:start}:host(.item-label-stacked) .input-wrapper,:host(.item-label-floating) .input-wrapper{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column}.item-highlight,.item-inner-highlight{left:0;right:0;top:0;bottom:0;border-radius:inherit;position:absolute;width:100%;height:100%;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transition:border-bottom-width 200ms, -webkit-transform 200ms;transition:border-bottom-width 200ms, -webkit-transform 200ms;transition:transform 200ms, border-bottom-width 200ms;transition:transform 200ms, border-bottom-width 200ms, -webkit-transform 200ms;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.item-interactive.ion-focused),:host(.item-interactive.item-has-focus),:host(.item-interactive.ion-touched.ion-invalid){--full-highlight-height:calc(var(--highlight-height) * var(--show-full-highlight));--inset-highlight-height:calc(var(--highlight-height) * var(--show-inset-highlight))}:host(.ion-focused) .item-highlight,:host(.ion-focused) .item-inner-highlight,:host(.item-has-focus) .item-highlight,:host(.item-has-focus) .item-inner-highlight{-webkit-transform:scaleX(1);transform:scaleX(1);border-style:var(--border-style);border-color:var(--highlight-background)}:host(.ion-focused) .item-highlight,:host(.item-has-focus) .item-highlight{border-width:var(--full-highlight-height);opacity:var(--show-full-highlight)}:host(.ion-focused) .item-inner-highlight,:host(.item-has-focus) .item-inner-highlight{border-bottom-width:var(--inset-highlight-height);opacity:var(--show-inset-highlight)}:host(.ion-focused.item-fill-solid) .item-highlight,:host(.item-has-focus.item-fill-solid) .item-highlight{border-width:calc(var(--full-highlight-height) - 1px)}:host(.ion-focused) .item-inner-highlight,:host(.ion-focused:not(.item-fill-outline)) .item-highlight,:host(.item-has-focus) .item-inner-highlight,:host(.item-has-focus:not(.item-fill-outline)) .item-highlight{border-top:none;border-right:none;border-left:none}:host(.item-interactive.ion-focused),:host(.item-interactive.item-has-focus){--highlight-background:var(--highlight-color-focused)}:host(.item-interactive.ion-valid){--highlight-background:var(--highlight-color-valid)}:host(.item-interactive.ion-invalid){--highlight-background:var(--highlight-color-invalid)}:host(.item-interactive.ion-invalid) ::slotted([slot=helper]){display:none}::slotted([slot=error]){display:none;color:var(--highlight-color-invalid)}:host(.item-interactive.ion-invalid) ::slotted([slot=error]){display:block}:host(:not(.item-label)) ::slotted(ion-select.legacy-select){--padding-start:0;max-width:none}:host(.item-label-stacked) ::slotted(ion-select.legacy-select),:host(.item-label-floating) ::slotted(ion-select.legacy-select){--padding-top:8px;--padding-bottom:8px;--padding-start:0;-ms-flex-item-align:stretch;align-self:stretch;width:100%;max-width:100%}:host(:not(.item-label)) ::slotted(ion-datetime){--padding-start:0}:host(.item-label-stacked) ::slotted(ion-datetime),:host(.item-label-floating) ::slotted(ion-datetime){--padding-start:0;width:100%}:host(.item-multiple-inputs) ::slotted(ion-checkbox),:host(.item-multiple-inputs) ::slotted(ion-datetime),:host(.item-multiple-inputs) ::slotted(ion-radio),:host(.item-multiple-inputs) ::slotted(ion-select.legacy-select){position:relative}:host(.item-textarea){-ms-flex-align:stretch;align-items:stretch}::slotted(ion-reorder[slot]){margin-top:0;margin-bottom:0}ion-ripple-effect{color:var(--ripple-color)}:host(.item-fill-solid) ::slotted([slot=start]),:host(.item-fill-solid) ::slotted([slot=end]),:host(.item-fill-outline) ::slotted([slot=start]),:host(.item-fill-outline) ::slotted([slot=end]){-ms-flex-item-align:center;align-self:center}::slotted([slot=helper]),::slotted([slot=error]),.item-counter{padding-top:5px;font-size:0.75rem;z-index:1}.item-counter{-webkit-margin-start:auto;margin-inline-start:auto;color:var(--ion-color-step-550, #737373);white-space:nowrap;-webkit-padding-start:16px;padding-inline-start:16px}@media (prefers-reduced-motion: reduce){.item-highlight,.item-inner-highlight{-webkit-transition:none;transition:none}}:host{--min-height:44px;--transition:background-color 200ms linear, opacity 200ms linear;--padding-start:16px;--inner-padding-end:16px;--inner-border-width:0px 0px 0.55px 0px;--background:var(--ion-item-background, var(--ion-background-color, #fff));--background-activated:var(--ion-text-color, #000);--background-focused:var(--ion-text-color, #000);--background-hover:currentColor;--background-activated-opacity:.12;--background-focused-opacity:.15;--background-hover-opacity:.04;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));--color:var(--ion-item-color, var(--ion-text-color, #000));--highlight-height:0px;--highlight-color-focused:var(--ion-color-primary, #3880ff);--highlight-color-valid:var(--ion-color-success, #2dd36f);--highlight-color-invalid:var(--ion-color-danger, #eb445a);--bottom-padding-start:0px;font-size:1rem}:host(.ion-activated){--transition:none}:host(.ion-color.ion-focused) .item-native::after{background:#000;opacity:0.15}:host(.ion-color.ion-activated) .item-native::after{background:#000;opacity:0.12}:host(.item-interactive){--show-full-highlight:0;--show-inset-highlight:1}:host(.item-lines-full){--border-width:0px 0px 0.55px 0px;--show-full-highlight:1;--show-inset-highlight:0}:host(.item-lines-inset){--inner-border-width:0px 0px 0.55px 0px;--show-full-highlight:0;--show-inset-highlight:1}:host(.item-lines-inset),:host(.item-lines-none){--border-width:0px;--show-full-highlight:0}:host(.item-lines-full),:host(.item-lines-none){--inner-border-width:0px;--show-inset-highlight:0}.item-highlight,.item-inner-highlight{-webkit-transition:none;transition:none}:host(.item-has-focus) .item-inner-highlight,:host(.item-has-focus) .item-highlight{border-top:none;border-right:none;border-left:none}::slotted([slot=start]){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:2px;margin-bottom:2px}::slotted(ion-icon[slot=start]),::slotted(ion-icon[slot=end]){margin-top:7px;margin-bottom:7px}::slotted(ion-toggle[slot=start]),::slotted(ion-toggle[slot=end]){margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}:host(.item-label-stacked) ::slotted([slot=end]),:host(.item-label-floating) ::slotted([slot=end]){margin-top:7px;margin-bottom:7px}::slotted(.button-small){--padding-top:1px;--padding-bottom:1px;--padding-start:.5em;--padding-end:.5em;min-height:24px;font-size:0.8125rem}::slotted(ion-avatar){width:36px;height:36px}::slotted(ion-thumbnail){--size:56px}::slotted(ion-avatar[slot=end]),::slotted(ion-thumbnail[slot=end]){-webkit-margin-start:8px;margin-inline-start:8px;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:8px;margin-bottom:8px}:host(.item-radio) ::slotted(ion-label),:host(.item-toggle) ::slotted(ion-label){-webkit-margin-start:0px;margin-inline-start:0px}::slotted(ion-label){-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:10px;margin-bottom:10px}:host(.item-label-floating),:host(.item-label-stacked){--min-height:68px}:host(.item-label-stacked) ::slotted(ion-select.legacy-select),:host(.item-label-floating) ::slotted(ion-select.legacy-select){--padding-top:8px;--padding-bottom:8px;--padding-start:0px}:host(.item-label-fixed) ::slotted(ion-select.legacy-select),:host(.item-label-fixed) ::slotted(ion-datetime){--padding-start:0}";
@@ -13,7 +13,7 @@ const index$1 = require('./index-d7561763.js');
13
13
  const overlays = require('./overlays-2ffc5f27.js');
14
14
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
15
15
  const theme = require('./theme-fbc56b3b.js');
16
- const index$2 = require('./index-09471526.js');
16
+ const index$2 = require('./index-6b8be5a4.js');
17
17
  require('./index-cc7dfb7c.js');
18
18
  require('./hardware-back-button-b67c8e75.js');
19
19
  require('./animation-1083855c.js');
@@ -13,7 +13,7 @@ const haptic = require('./haptic-678abc9f.js');
13
13
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
14
14
  const animation = require('./animation-1083855c.js');
15
15
  const config = require('./config-d5882735.js');
16
- const index$2 = require('./index-09471526.js');
16
+ const index$2 = require('./index-6b8be5a4.js');
17
17
  const spinnerConfigs = require('./spinner-configs-f7b5105b.js');
18
18
  require('./index-cc7dfb7c.js');
19
19
  require('./capacitor-2ffba62a.js');
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-c2940dc1.js');
9
- const index$1 = require('./index-09471526.js');
9
+ const index$1 = require('./index-6b8be5a4.js');
10
10
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
11
11
  const index$2 = require('./index-da2c7a37.js');
12
12
  const helpers = require('./helpers-ea4ccbcb.js');
@@ -9,7 +9,7 @@ const index = require('./index-c2940dc1.js');
9
9
  const helpers = require('./helpers-ea4ccbcb.js');
10
10
  const dir = require('./dir-f1e0ca26.js');
11
11
  const theme = require('./theme-fbc56b3b.js');
12
- const index$1 = require('./index-09471526.js');
12
+ const index$1 = require('./index-6b8be5a4.js');
13
13
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
14
14
 
15
15
  const searchbarIosCss = ".sc-ion-searchbar-ios-h{--placeholder-color:initial;--placeholder-font-style:initial;--placeholder-font-weight:initial;--placeholder-opacity:0.6;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;width:100%;color:var(--color);font-family:var(--ion-font-family, inherit);-webkit-box-sizing:border-box;box-sizing:border-box}.ion-color.sc-ion-searchbar-ios-h{color:var(--ion-color-contrast)}.ion-color.sc-ion-searchbar-ios-h .searchbar-input.sc-ion-searchbar-ios{background:var(--ion-color-base)}.ion-color.sc-ion-searchbar-ios-h .searchbar-clear-button.sc-ion-searchbar-ios,.ion-color.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios,.ion-color.sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios{color:inherit}.searchbar-search-icon.sc-ion-searchbar-ios{color:var(--icon-color);pointer-events:none}.searchbar-input-container.sc-ion-searchbar-ios{display:block;position:relative;-ms-flex-negative:1;flex-shrink:1;width:100%}.searchbar-input.sc-ion-searchbar-ios{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;text-align:inherit;white-space:inherit;color:inherit;border-radius:var(--border-radius);display:block;width:100%;min-height:inherit;border:0;outline:none;background:var(--background);font-family:inherit;-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbar-input.sc-ion-searchbar-ios::-webkit-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.searchbar-input.sc-ion-searchbar-ios::-moz-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.searchbar-input.sc-ion-searchbar-ios:-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.searchbar-input.sc-ion-searchbar-ios::-ms-input-placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.searchbar-input.sc-ion-searchbar-ios::placeholder{color:var(--placeholder-color);font-family:inherit;font-style:var(--placeholder-font-style);font-weight:var(--placeholder-font-weight);opacity:var(--placeholder-opacity)}.searchbar-input.sc-ion-searchbar-ios::-webkit-search-cancel-button,.searchbar-input.sc-ion-searchbar-ios::-ms-clear{display:none}.searchbar-cancel-button.sc-ion-searchbar-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:none;height:100%;border:0;outline:none;color:var(--cancel-button-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbar-cancel-button.sc-ion-searchbar-ios>div.sc-ion-searchbar-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%}.searchbar-clear-button.sc-ion-searchbar-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:none;min-height:0;outline:none;color:var(--clear-button-color);-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbar-clear-button.sc-ion-searchbar-ios:focus{opacity:0.5}.searchbar-has-value.searchbar-should-show-clear.sc-ion-searchbar-ios-h .searchbar-clear-button.sc-ion-searchbar-ios{display:block}.searchbar-disabled.sc-ion-searchbar-ios-h{cursor:default;opacity:0.4;pointer-events:none}.sc-ion-searchbar-ios-h{--background:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.07);--border-radius:10px;--box-shadow:none;--cancel-button-color:var(--ion-color-primary, #3880ff);--clear-button-color:var(--ion-color-step-600, #666666);--color:var(--ion-text-color, #000);--icon-color:var(--ion-color-step-600, #666666);-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:12px;padding-bottom:12px;min-height:60px;contain:content}.searchbar-input-container.sc-ion-searchbar-ios{min-height:36px}.searchbar-search-icon.sc-ion-searchbar-ios{-webkit-margin-start:calc(50% - 60px);margin-inline-start:calc(50% - 60px);top:0;position:absolute;width:1.375rem;height:100%;contain:strict}@supports (inset-inline-start: 0){.searchbar-search-icon.sc-ion-searchbar-ios{inset-inline-start:5px}}@supports not (inset-inline-start: 0){.searchbar-search-icon.sc-ion-searchbar-ios{left:5px}[dir=rtl].sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios,[dir=rtl] .sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios{left:unset;right:unset;right:5px}[dir=rtl].sc-ion-searchbar-ios .searchbar-search-icon.sc-ion-searchbar-ios{left:unset;right:unset;right:5px}@supports selector(:dir(rtl)){.searchbar-search-icon.sc-ion-searchbar-ios:dir(rtl){left:unset;right:unset;right:5px}}}.searchbar-input.sc-ion-searchbar-ios{-webkit-padding-start:0px;padding-inline-start:0px;-webkit-padding-end:0px;padding-inline-end:0px;padding-top:6px;padding-bottom:6px;height:100%;font-size:1.0625rem;font-weight:400;contain:strict}.searchbar-has-value.searchbar-should-show-clear.sc-ion-searchbar-ios-h .searchbar-input.sc-ion-searchbar-ios{-webkit-padding-start:1.75rem;padding-inline-start:1.75rem;-webkit-padding-end:1.75rem;padding-inline-end:1.75rem}.searchbar-clear-button.sc-ion-searchbar-ios{top:0;background-position:center;position:absolute;width:1.875rem;height:100%;border:0;background-color:transparent}@supports (inset-inline-start: 0){.searchbar-clear-button.sc-ion-searchbar-ios{inset-inline-end:0}}@supports not (inset-inline-start: 0){.searchbar-clear-button.sc-ion-searchbar-ios{right:0}[dir=rtl].sc-ion-searchbar-ios-h .searchbar-clear-button.sc-ion-searchbar-ios,[dir=rtl] .sc-ion-searchbar-ios-h .searchbar-clear-button.sc-ion-searchbar-ios{left:unset;right:unset;left:0}[dir=rtl].sc-ion-searchbar-ios .searchbar-clear-button.sc-ion-searchbar-ios{left:unset;right:unset;left:0}@supports selector(:dir(rtl)){.searchbar-clear-button.sc-ion-searchbar-ios:dir(rtl){left:unset;right:unset;left:0}}}.searchbar-clear-icon.sc-ion-searchbar-ios{width:1.125rem;height:100%}.searchbar-cancel-button.sc-ion-searchbar-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:0;padding-inline-end:0;padding-top:0;padding-bottom:0;-ms-flex-negative:0;flex-shrink:0;background-color:transparent;font-size:16px}.searchbar-left-aligned.sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios{-webkit-margin-start:0;margin-inline-start:0}.searchbar-left-aligned.sc-ion-searchbar-ios-h .searchbar-input.sc-ion-searchbar-ios{-webkit-padding-start:1.875rem;padding-inline-start:1.875rem}.searchbar-has-focus.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios,.searchbar-should-show-cancel.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios,.searchbar-animated.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios{display:block}.searchbar-animated.sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios,.searchbar-animated.sc-ion-searchbar-ios-h .searchbar-input.sc-ion-searchbar-ios{-webkit-transition:all 300ms ease;transition:all 300ms ease}.searchbar-animated.searchbar-has-focus.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios,.searchbar-animated.searchbar-should-show-cancel.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios{opacity:1;pointer-events:auto}.searchbar-animated.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios{-webkit-margin-end:-100%;margin-inline-end:-100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transition:all 300ms ease;transition:all 300ms ease;opacity:0;pointer-events:none}.searchbar-no-animate.sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios,.searchbar-no-animate.sc-ion-searchbar-ios-h .searchbar-input.sc-ion-searchbar-ios,.searchbar-no-animate.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios{-webkit-transition-duration:0ms;transition-duration:0ms}.ion-color.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios{color:var(--ion-color-base)}@media (any-hover: hover){.ion-color.sc-ion-searchbar-ios-h .searchbar-cancel-button.sc-ion-searchbar-ios:hover{color:var(--ion-color-tint)}}ion-toolbar.sc-ion-searchbar-ios-h,ion-toolbar .sc-ion-searchbar-ios-h{padding-top:1px;padding-bottom:15px;min-height:52px}ion-toolbar.ion-color.sc-ion-searchbar-ios-h:not(.ion-color),ion-toolbar.ion-color .sc-ion-searchbar-ios-h:not(.ion-color){color:inherit}ion-toolbar.ion-color.sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-cancel-button.sc-ion-searchbar-ios,ion-toolbar.ion-color .sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-cancel-button.sc-ion-searchbar-ios{color:currentColor}ion-toolbar.ion-color.sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios,ion-toolbar.ion-color .sc-ion-searchbar-ios-h .searchbar-search-icon.sc-ion-searchbar-ios{color:currentColor;opacity:0.5}ion-toolbar.ion-color.sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-input.sc-ion-searchbar-ios,ion-toolbar.ion-color .sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-input.sc-ion-searchbar-ios{background:rgba(var(--ion-color-contrast-rgb), 0.07);color:currentColor}ion-toolbar.ion-color.sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-clear-button.sc-ion-searchbar-ios,ion-toolbar.ion-color .sc-ion-searchbar-ios-h:not(.ion-color) .searchbar-clear-button.sc-ion-searchbar-ios{color:currentColor;opacity:0.5}";
@@ -14,7 +14,7 @@ const overlays = require('./overlays-2ffc5f27.js');
14
14
  const dir = require('./dir-f1e0ca26.js');
15
15
  const theme = require('./theme-fbc56b3b.js');
16
16
  const watchOptions = require('./watch-options-53bbb124.js');
17
- const index$2 = require('./index-09471526.js');
17
+ const index$2 = require('./index-6b8be5a4.js');
18
18
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
19
19
  require('./index-306a7476.js');
20
20
  require('./framework-delegate-c0873a6f.js');
@@ -12,7 +12,7 @@ const index$2 = require('./index-cc7dfb7c.js');
12
12
  const haptic = require('./haptic-678abc9f.js');
13
13
  const dir = require('./dir-f1e0ca26.js');
14
14
  const theme = require('./theme-fbc56b3b.js');
15
- const index$1 = require('./index-09471526.js');
15
+ const index$1 = require('./index-6b8be5a4.js');
16
16
  const ionicGlobal = require('./ionic-global-ea2901a3.js');
17
17
  require('./capacitor-2ffba62a.js');
18
18
  require('./index-306a7476.js');
@@ -2,6 +2,7 @@
2
2
  "entries": [
3
3
  "components/accordion/accordion.js",
4
4
  "components/accordion-group/accordion-group.js",
5
+ "components/item/item.js",
5
6
  "components/action-sheet/action-sheet.js",
6
7
  "components/alert/alert.js",
7
8
  "components/app/app.js",
@@ -34,14 +35,15 @@
34
35
  "components/infinite-scroll/infinite-scroll.js",
35
36
  "components/infinite-scroll-content/infinite-scroll-content.js",
36
37
  "components/input/input.js",
37
- "components/item/item.js",
38
+ "components/list/list.js",
39
+ "components/radio-group/radio-group.js",
40
+ "components/radio/radio.js",
38
41
  "components/item-divider/item-divider.js",
39
42
  "components/item-group/item-group.js",
40
43
  "components/item-option/item-option.js",
41
44
  "components/item-options/item-options.js",
42
45
  "components/item-sliding/item-sliding.js",
43
46
  "components/label/label.js",
44
- "components/list/list.js",
45
47
  "components/list-header/list-header.js",
46
48
  "components/loading/loading.js",
47
49
  "components/menu/menu.js",
@@ -57,8 +59,6 @@
57
59
  "components/picker-internal/picker-internal.js",
58
60
  "components/popover/popover.js",
59
61
  "components/progress-bar/progress-bar.js",
60
- "components/radio/radio.js",
61
- "components/radio-group/radio-group.js",
62
62
  "components/range/range.js",
63
63
  "components/refresher/refresher.js",
64
64
  "components/refresher-content/refresher-content.js",
@@ -0,0 +1,195 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { newSpecPage } from "@stencil/core/testing";
5
+ import { AccordionGroup } from "../../accordion-group/accordion-group";
6
+ import { Item } from "../../item/item";
7
+ import { Accordion } from "../accordion";
8
+ it('should open correct accordions when accordion group value is set', async () => {
9
+ const page = await newSpecPage({
10
+ components: [Item, Accordion, AccordionGroup],
11
+ html: `
12
+ <ion-accordion-group animated="false">
13
+ <ion-accordion value="first">
14
+ <ion-item slot="header">Label</ion-item>
15
+ <div slot="content">Content</div>
16
+ </ion-accordion>
17
+ <ion-accordion value="second">
18
+ <ion-item slot="header">Label</ion-item>
19
+ <div slot="content">Content</div>
20
+ </ion-accordion>
21
+ <ion-accordion value="third">
22
+ <ion-item slot="header">Label</ion-item>
23
+ <div slot="content">Content</div>
24
+ </ion-accordion>
25
+ </ion-accordion-group>
26
+ `,
27
+ });
28
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
29
+ const accordions = accordionGroup.querySelectorAll('ion-accordion');
30
+ accordions.forEach((accordion) => {
31
+ expect(accordion.classList.contains('accordion-collapsed')).toEqual(true);
32
+ });
33
+ accordionGroup.value = 'second';
34
+ await page.waitForChanges();
35
+ expect(accordions[0].classList.contains('accordion-collapsed')).toEqual(true);
36
+ expect(accordions[1].classList.contains('accordion-collapsed')).toEqual(false);
37
+ expect(accordions[2].classList.contains('accordion-collapsed')).toEqual(true);
38
+ });
39
+ it('should open correct accordions when accordion value is set', async () => {
40
+ const page = await newSpecPage({
41
+ components: [Item, Accordion, AccordionGroup],
42
+ html: `
43
+ <ion-accordion-group animated="false" value="first">
44
+ <ion-accordion>
45
+ <ion-item slot="header">Label</ion-item>
46
+ <div slot="content">Content</div>
47
+ </ion-accordion>
48
+ <ion-accordion value="second">
49
+ <ion-item slot="header">Label</ion-item>
50
+ <div slot="content">Content</div>
51
+ </ion-accordion>
52
+ <ion-accordion value="third">
53
+ <ion-item slot="header">Label</ion-item>
54
+ <div slot="content">Content</div>
55
+ </ion-accordion>
56
+ </ion-accordion-group>
57
+ `,
58
+ });
59
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
60
+ const accordions = accordionGroup.querySelectorAll('ion-accordion');
61
+ accordions.forEach((accordion) => {
62
+ expect(accordion.classList.contains('accordion-collapsed')).toEqual(true);
63
+ });
64
+ accordions[0].value = 'first';
65
+ await page.waitForChanges();
66
+ expect(accordions[0].classList.contains('accordion-collapsed')).toEqual(false);
67
+ expect(accordions[1].classList.contains('accordion-collapsed')).toEqual(true);
68
+ expect(accordions[2].classList.contains('accordion-collapsed')).toEqual(true);
69
+ });
70
+ it('should open more than one accordion when multiple="true"', async () => {
71
+ const page = await newSpecPage({
72
+ components: [Item, Accordion, AccordionGroup],
73
+ html: `
74
+ <ion-accordion-group multiple="true" animated="false">
75
+ <ion-accordion value="first">
76
+ <ion-item slot="header">Label</ion-item>
77
+ <div slot="content">Content</div>
78
+ </ion-accordion>
79
+ <ion-accordion value="second">
80
+ <ion-item slot="header">Label</ion-item>
81
+ <div slot="content">Content</div>
82
+ </ion-accordion>
83
+ <ion-accordion value="third">
84
+ <ion-item slot="header">Label</ion-item>
85
+ <div slot="content">Content</div>
86
+ </ion-accordion>
87
+ </ion-accordion-group>
88
+ `,
89
+ });
90
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
91
+ const accordions = accordionGroup.querySelectorAll('ion-accordion');
92
+ accordions.forEach((accordion) => {
93
+ expect(accordion.classList.contains('accordion-collapsed')).toEqual(true);
94
+ });
95
+ accordionGroup.value = ['first', 'second'];
96
+ await page.waitForChanges();
97
+ expect(accordions[0].classList.contains('accordion-collapsed')).toEqual(false);
98
+ expect(accordions[1].classList.contains('accordion-collapsed')).toEqual(false);
99
+ expect(accordions[2].classList.contains('accordion-collapsed')).toEqual(true);
100
+ });
101
+ it('should render with accordion open', async () => {
102
+ const page = await newSpecPage({
103
+ components: [Item, Accordion, AccordionGroup],
104
+ html: `
105
+ <ion-accordion-group value="first" animated="false">
106
+ <ion-accordion value="first">
107
+ <ion-item slot="header">Label</ion-item>
108
+ <div slot="content">Content</div>
109
+ </ion-accordion>
110
+ <ion-accordion value="second">
111
+ <ion-item slot="header">Label</ion-item>
112
+ <div slot="content">Content</div>
113
+ </ion-accordion>
114
+ <ion-accordion value="third">
115
+ <ion-item slot="header">Label</ion-item>
116
+ <div slot="content">Content</div>
117
+ </ion-accordion>
118
+ </ion-accordion-group>
119
+ `,
120
+ });
121
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
122
+ const accordions = accordionGroup.querySelectorAll('ion-accordion');
123
+ expect(accordions[0].classList.contains('accordion-collapsed')).toEqual(false);
124
+ expect(accordions[1].classList.contains('accordion-collapsed')).toEqual(true);
125
+ expect(accordions[2].classList.contains('accordion-collapsed')).toEqual(true);
126
+ });
127
+ it('should accept a string when multiple="true"', async () => {
128
+ const page = await newSpecPage({
129
+ components: [Item, Accordion, AccordionGroup],
130
+ html: `
131
+ <ion-accordion-group multiple="true" value="first" animated="false">
132
+ <ion-accordion value="first">
133
+ <ion-item slot="header">Label</ion-item>
134
+ <div slot="content">Content</div>
135
+ </ion-accordion>
136
+ <ion-accordion value="second">
137
+ <ion-item slot="header">Label</ion-item>
138
+ <div slot="content">Content</div>
139
+ </ion-accordion>
140
+ <ion-accordion value="third">
141
+ <ion-item slot="header">Label</ion-item>
142
+ <div slot="content">Content</div>
143
+ </ion-accordion>
144
+ </ion-accordion-group>
145
+ `,
146
+ });
147
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
148
+ const accordions = accordionGroup.querySelectorAll('ion-accordion');
149
+ expect(accordions[0].classList.contains('accordion-collapsed')).toEqual(false);
150
+ expect(accordions[1].classList.contains('accordion-collapsed')).toEqual(true);
151
+ expect(accordions[2].classList.contains('accordion-collapsed')).toEqual(true);
152
+ });
153
+ it('should set default values if not provided', async () => {
154
+ const page = await newSpecPage({
155
+ components: [Item, Accordion, AccordionGroup],
156
+ html: `
157
+ <ion-accordion-group animated="false">
158
+ <ion-accordion>
159
+ <ion-item slot="header">Label</ion-item>
160
+ <div slot="content">Content</div>
161
+ </ion-accordion>
162
+ </ion-accordion-group>
163
+ `,
164
+ });
165
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
166
+ const accordion = accordionGroup.querySelector('ion-accordion');
167
+ /**
168
+ * ID is determined via an auto incrementing counter
169
+ * so do not hard code ion-accordion-0 as it might
170
+ * change depending on how many accordions
171
+ * are used in these tests.
172
+ */
173
+ expect(accordion.value).toContain('ion-accordion-');
174
+ accordionGroup.value = accordion.value;
175
+ await page.waitForChanges();
176
+ expect(accordion.classList.contains('accordion-collapsed')).toEqual(false);
177
+ });
178
+ // Verifies fix for https://github.com/ionic-team/ionic-framework/issues/27047
179
+ it('should not have animated class when animated="false"', async () => {
180
+ const page = await newSpecPage({
181
+ components: [Item, Accordion, AccordionGroup],
182
+ html: `
183
+ <ion-accordion-group animated="false">
184
+ <ion-accordion>
185
+ <ion-item slot="header">Label</ion-item>
186
+ <div slot="content">Content</div>
187
+ </ion-accordion>
188
+ </ion-accordion-group>
189
+ `,
190
+ });
191
+ const accordionGroup = page.body.querySelector('ion-accordion-group');
192
+ const accordion = accordionGroup.querySelector('ion-accordion');
193
+ expect(accordionGroup.animated).toEqual(false);
194
+ expect(accordion.classList.contains('accordion-animated')).toEqual(false);
195
+ });
@@ -0,0 +1,32 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { newSpecPage } from "@stencil/core/testing";
5
+ import { ActionSheet } from "../action-sheet";
6
+ it('action sheet should be assigned an incrementing id', async () => {
7
+ const page = await newSpecPage({
8
+ components: [ActionSheet],
9
+ html: `<ion-action-sheet is-open="true"></ion-action-sheet>`,
10
+ });
11
+ let actionSheet;
12
+ actionSheet = page.body.querySelector('ion-action-sheet');
13
+ expect(actionSheet).not.toBe(null);
14
+ expect(actionSheet.getAttribute('id')).toBe('ion-overlay-1');
15
+ // Remove the action sheet from the DOM
16
+ actionSheet.remove();
17
+ await page.waitForChanges();
18
+ // Create a new action sheet to verify the id is incremented
19
+ actionSheet = document.createElement('ion-action-sheet');
20
+ actionSheet.isOpen = true;
21
+ page.body.appendChild(actionSheet);
22
+ await page.waitForChanges();
23
+ actionSheet = page.body.querySelector('ion-action-sheet');
24
+ expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
25
+ // Presenting the same action sheet again should reuse the existing id
26
+ actionSheet.isOpen = false;
27
+ await page.waitForChanges();
28
+ actionSheet.isOpen = true;
29
+ await page.waitForChanges();
30
+ actionSheet = page.body.querySelector('ion-action-sheet');
31
+ expect(actionSheet.getAttribute('id')).toBe('ion-overlay-2');
32
+ });