@ionic/core 9.0.3-dev.11788456135.1ab1d6cd → 9.0.3-dev.11790016799.1e269b7a

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 (183) hide show
  1. package/components/ion-accordion.js +1 -1
  2. package/components/ion-alert.js +1 -1
  3. package/components/ion-back-button.js +1 -1
  4. package/components/ion-breadcrumb.js +1 -1
  5. package/components/ion-checkbox.js +1 -1
  6. package/components/ion-datetime.js +1 -1
  7. package/components/ion-fab-button.js +1 -1
  8. package/components/ion-input-password-toggle.js +1 -1
  9. package/components/ion-input.js +1 -1
  10. package/components/ion-item.js +1 -1
  11. package/components/ion-menu-button.js +1 -1
  12. package/components/ion-refresher-content.js +1 -1
  13. package/components/ion-reorder.js +1 -1
  14. package/components/ion-searchbar.js +1 -1
  15. package/components/ion-select-modal.js +1 -1
  16. package/components/ion-select-popover.js +1 -1
  17. package/components/ion-select.js +1 -1
  18. package/components/ion-textarea.js +1 -1
  19. package/components/ion-toggle.js +1 -1
  20. package/components/{p-Cc3oC60a.js → p-0rXxxCTt.js} +1 -1
  21. package/components/p-B9ibhQu1.js +4 -0
  22. package/components/p-BzxHcuQH.js +4 -0
  23. package/components/p-C6wm_AQQ.js +4 -0
  24. package/components/p-CaxVJjmc.js +4 -0
  25. package/components/{p-Cm78Kk79.js → p-D2X-Hime.js} +1 -1
  26. package/css/ionic/bundle.ionic.css.map +1 -1
  27. package/css/ionic/core.ionic.css.map +1 -1
  28. package/css/ionic/global.bundle.ionic.css.map +1 -1
  29. package/css/ionic/ionic-swiper.ionic.css.map +1 -1
  30. package/css/ionic/link.ionic.css.map +1 -1
  31. package/css/ionic/typography.ionic.css.map +1 -1
  32. package/dist/cjs/ion-accordion_2.cjs.entry.js +9 -14
  33. package/dist/cjs/ion-alert.cjs.entry.js +4 -4
  34. package/dist/cjs/ion-back-button.cjs.entry.js +11 -13
  35. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +16 -29
  36. package/dist/cjs/ion-checkbox.cjs.entry.js +23 -15
  37. package/dist/cjs/ion-datetime.cjs.entry.js +14 -50
  38. package/dist/cjs/ion-fab_3.cjs.entry.js +9 -14
  39. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +17 -29
  40. package/dist/cjs/ion-input.cjs.entry.js +12 -28
  41. package/dist/cjs/ion-item_8.cjs.entry.js +10 -15
  42. package/dist/cjs/ion-menu_3.cjs.entry.js +9 -12
  43. package/dist/cjs/ion-refresher_2.cjs.entry.js +10 -5
  44. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -13
  45. package/dist/cjs/ion-searchbar.cjs.entry.js +8 -37
  46. package/dist/cjs/ion-select-modal.cjs.entry.js +11 -10
  47. package/dist/cjs/ion-select_3.cjs.entry.js +13 -37
  48. package/dist/cjs/ion-textarea.cjs.entry.js +13 -21
  49. package/dist/cjs/ion-toggle.cjs.entry.js +12 -28
  50. package/dist/collection/components/accordion/accordion.js +9 -14
  51. package/dist/collection/components/alert/alert.ionic.css +7 -9
  52. package/dist/collection/components/alert/alert.js +3 -3
  53. package/dist/collection/components/back-button/back-button.js +11 -13
  54. package/dist/collection/components/breadcrumb/breadcrumb.js +16 -28
  55. package/dist/collection/components/checkbox/checkbox.ionic.css +35 -42
  56. package/dist/collection/components/checkbox/checkbox.ios.css +33 -29
  57. package/dist/collection/components/checkbox/checkbox.js +23 -13
  58. package/dist/collection/components/checkbox/checkbox.md.css +33 -29
  59. package/dist/collection/components/datetime/datetime.ios.css +5 -10
  60. package/dist/collection/components/datetime/datetime.js +12 -48
  61. package/dist/collection/components/datetime/datetime.md.css +5 -10
  62. package/dist/collection/components/fab-button/fab-button.js +9 -14
  63. package/dist/collection/components/input/input.ionic.css +102 -79
  64. package/dist/collection/components/input/input.js +11 -27
  65. package/dist/collection/components/input-password-toggle/input-password-toggle.js +18 -28
  66. package/dist/collection/components/item/item.js +10 -15
  67. package/dist/collection/components/menu-button/menu-button.js +9 -12
  68. package/dist/collection/components/refresher-content/refresher-content.js +10 -4
  69. package/dist/collection/components/reorder/reorder.js +5 -13
  70. package/dist/collection/components/searchbar/searchbar.js +8 -35
  71. package/dist/collection/components/select/select.ionic.css +187 -76
  72. package/dist/collection/components/select/select.js +14 -39
  73. package/dist/collection/components/select-modal/select-modal.js +12 -10
  74. package/dist/collection/components/textarea/textarea.ionic.css +133 -85
  75. package/dist/collection/components/textarea/textarea.ios.css +0 -4
  76. package/dist/collection/components/textarea/textarea.js +13 -18
  77. package/dist/collection/components/textarea/textarea.md.css +0 -4
  78. package/dist/collection/components/toggle/toggle.js +12 -26
  79. package/dist/collection/utils/test/playwright/field-geometry.js +34 -0
  80. package/dist/collection/utils/test/playwright/index.js +1 -0
  81. package/dist/docs.json +60 -25
  82. package/dist/esm/{index-BqQ15K9a.js → index-BkJpfpXI.js} +1 -1
  83. package/dist/esm/ion-accordion_2.entry.js +10 -15
  84. package/dist/esm/ion-alert.entry.js +4 -4
  85. package/dist/esm/ion-back-button.entry.js +12 -14
  86. package/dist/esm/ion-breadcrumb_2.entry.js +17 -30
  87. package/dist/esm/ion-checkbox.entry.js +24 -16
  88. package/dist/esm/ion-datetime.entry.js +15 -51
  89. package/dist/esm/ion-fab_3.entry.js +10 -15
  90. package/dist/esm/ion-input-password-toggle.entry.js +19 -31
  91. package/dist/esm/ion-input.entry.js +13 -29
  92. package/dist/esm/ion-item_8.entry.js +11 -16
  93. package/dist/esm/ion-menu_3.entry.js +10 -13
  94. package/dist/esm/ion-refresher_2.entry.js +11 -6
  95. package/dist/esm/ion-reorder_2.entry.js +6 -14
  96. package/dist/esm/ion-searchbar.entry.js +9 -38
  97. package/dist/esm/ion-select-modal.entry.js +13 -12
  98. package/dist/esm/ion-select_3.entry.js +14 -38
  99. package/dist/esm/ion-textarea.entry.js +13 -21
  100. package/dist/esm/ion-toggle.entry.js +13 -29
  101. package/dist/ionic/ionic.esm.js +1 -1
  102. package/dist/ionic/p-016f2ee0.entry.js +4 -0
  103. package/dist/ionic/p-07b95001.entry.js +4 -0
  104. package/dist/ionic/p-14dfe86e.entry.js +4 -0
  105. package/dist/ionic/p-167af5d6.entry.js +4 -0
  106. package/dist/ionic/p-18285aab.entry.js +4 -0
  107. package/dist/ionic/{p-2e3acd77.entry.js → p-1e0f0eb9.entry.js} +1 -1
  108. package/dist/ionic/p-368935f5.entry.js +4 -0
  109. package/dist/ionic/p-38da0794.entry.js +4 -0
  110. package/dist/ionic/p-80f71456.entry.js +4 -0
  111. package/dist/ionic/p-83aa4043.entry.js +4 -0
  112. package/dist/ionic/p-944ce631.entry.js +4 -0
  113. package/dist/ionic/{p-BqQ15K9a.js → p-BkJpfpXI.js} +1 -1
  114. package/dist/ionic/p-aecef1d7.entry.js +4 -0
  115. package/dist/ionic/p-bb83b861.entry.js +4 -0
  116. package/dist/ionic/p-c1c90068.entry.js +4 -0
  117. package/dist/ionic/p-ccc7487b.entry.js +4 -0
  118. package/dist/ionic/p-cfd5dc50.entry.js +4 -0
  119. package/dist/ionic/p-d5c9bf12.entry.js +4 -0
  120. package/dist/ionic/p-f252ab8a.entry.js +4 -0
  121. package/dist/types/components/accordion/accordion.d.ts +7 -1
  122. package/dist/types/components/back-button/back-button.d.ts +8 -2
  123. package/dist/types/components/breadcrumb/breadcrumb.d.ts +12 -2
  124. package/dist/types/components/checkbox/checkbox.d.ts +12 -1
  125. package/dist/types/components/datetime/datetime.d.ts +4 -4
  126. package/dist/types/components/fab-button/fab-button.d.ts +7 -1
  127. package/dist/types/components/input/input.d.ts +7 -10
  128. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +14 -2
  129. package/dist/types/components/item/item.d.ts +7 -1
  130. package/dist/types/components/menu-button/menu-button.d.ts +6 -1
  131. package/dist/types/components/refresher-content/refresher-content.d.ts +6 -0
  132. package/dist/types/components/reorder/reorder.d.ts +1 -1
  133. package/dist/types/components/select/select.d.ts +7 -12
  134. package/dist/types/components/select-modal/select-modal.d.ts +6 -1
  135. package/dist/types/components/textarea/textarea.d.ts +8 -8
  136. package/dist/types/components/toggle/toggle.d.ts +5 -2
  137. package/dist/types/utils/config.d.ts +22 -2
  138. package/dist/types/utils/test/playwright/field-geometry.d.ts +13 -0
  139. package/dist/types/utils/test/playwright/index.d.ts +1 -0
  140. package/hydrate/index.js +213 -375
  141. package/hydrate/index.mjs +213 -375
  142. package/package.json +1 -2
  143. package/components/p-B1AK6oR-.js +0 -4
  144. package/components/p-BDqjX7Z_.js +0 -4
  145. package/components/p-BYSs-jZz.js +0 -4
  146. package/components/p-CPdOdJa7.js +0 -4
  147. package/components/p-D1t981Ih.js +0 -4
  148. package/components/p-Dhi5xtNS.js +0 -4
  149. package/components/p-DzaPYdjZ.js +0 -4
  150. package/components/p-e73ca-aN.js +0 -4
  151. package/components/p-fIOYmaqA.js +0 -4
  152. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  153. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  154. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  155. package/dist/cjs/list-a-7GSA6K.js +0 -8
  156. package/dist/cjs/x-BTF99yFH.js +0 -8
  157. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  158. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  159. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  160. package/dist/esm/list-Dhi5xtNS.js +0 -6
  161. package/dist/esm/x-BDqjX7Z_.js +0 -6
  162. package/dist/ionic/p-04d96dad.entry.js +0 -4
  163. package/dist/ionic/p-0a924e6a.entry.js +0 -4
  164. package/dist/ionic/p-2da21af7.entry.js +0 -4
  165. package/dist/ionic/p-2fc1521f.entry.js +0 -4
  166. package/dist/ionic/p-73309d35.entry.js +0 -4
  167. package/dist/ionic/p-74ab5f49.entry.js +0 -4
  168. package/dist/ionic/p-83d13d56.entry.js +0 -4
  169. package/dist/ionic/p-8dcd18cf.entry.js +0 -4
  170. package/dist/ionic/p-9ca59419.entry.js +0 -4
  171. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  172. package/dist/ionic/p-BYSs-jZz.js +0 -4
  173. package/dist/ionic/p-D1t981Ih.js +0 -4
  174. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  175. package/dist/ionic/p-b10dc124.entry.js +0 -4
  176. package/dist/ionic/p-b7ce4a50.entry.js +0 -4
  177. package/dist/ionic/p-c7035f3f.entry.js +0 -4
  178. package/dist/ionic/p-c91fc9d4.entry.js +0 -4
  179. package/dist/ionic/p-cd4791d5.entry.js +0 -4
  180. package/dist/ionic/p-e9480e7f.entry.js +0 -4
  181. package/dist/ionic/p-e9fdff49.entry.js +0 -4
  182. package/dist/ionic/p-f82b13a6.entry.js +0 -4
  183. package/dist/ionic/p-fIOYmaqA.js +0 -4
@@ -548,8 +548,8 @@
548
548
  * If the input has a validity state, the
549
549
  * border should reflect that as a color.
550
550
  */
551
- :host(.input-fill-solid.has-focus.ion-valid) .input-wrapper-inner,
552
- :host(.input-fill-solid.ion-touched.ion-invalid) .input-wrapper-inner {
551
+ :host(.input-fill-solid.has-focus.ion-valid) .input-wrapper,
552
+ :host(.input-fill-solid.ion-touched.ion-invalid) .input-wrapper {
553
553
  --border-color: var(--highlight-color);
554
554
  }
555
555
 
@@ -595,33 +595,6 @@
595
595
  text-transform: none;
596
596
  }
597
597
 
598
- .input-outline {
599
- right: 0;
600
- left: 0;
601
- top: 0;
602
- bottom: 0;
603
- border-radius: var(--border-radius);
604
- position: absolute;
605
- width: 100%;
606
- height: 100%;
607
- pointer-events: none;
608
- border: var(--border-width) var(--border-style) var(--border-color);
609
- }
610
-
611
- :host(.input-label-placement-start) .input-wrapper {
612
- flex-direction: row;
613
- }
614
-
615
- :host(.input-label-placement-end) .input-wrapper {
616
- flex-direction: row-reverse;
617
- }
618
-
619
- :host(.input-label-placement-stacked) .input-wrapper,
620
- :host(.input-label-placement-floating) .input-wrapper {
621
- flex-direction: column;
622
- align-items: start;
623
- }
624
-
625
598
  :host(.input-label-placement-stacked) input,
626
599
  :host(.input-label-placement-floating) input {
627
600
  margin-left: 0;
@@ -639,37 +612,95 @@
639
612
  padding-bottom: var(--token-space-100, var(--token-scale-100, 4px));
640
613
  }
641
614
 
615
+ /**
616
+ * The label is nested in the control so that every theme renders the same tree.
617
+ * Laying the wrapper out as a grid and flattening the control lets the label
618
+ * span its own row above the start slot, the input and the end slot.
619
+ */
642
620
  .input-wrapper {
643
- /**
644
- * For the ionic theme, the padding needs to sit on the
645
- * native wrapper instead, so that it sits within the
646
- * outline container but does not always affect the
647
- * label text.
648
- */
649
621
  padding-left: 0;
650
622
  padding-right: 0;
651
623
  padding-top: 0;
652
624
  padding-bottom: 0;
625
+ display: grid;
626
+ grid-template-columns: [field-start slot-start] auto [native] minmax(0, 1fr) [slot-end] auto [field-end];
627
+ grid-template-rows: [label] auto [field] auto;
653
628
  /**
654
- * Outline inputs do not have a bottom border.
655
- * Instead, they have a border that wraps the
656
- * input + label.
629
+ * Only stretch grows an auto row, so centering holds the label row at its
630
+ * content height and still centers the field in any leftover host height.
657
631
  */
658
- border-bottom: none;
632
+ align-content: center;
633
+ align-items: center;
659
634
  /**
660
- * Do not show a background on the input wrapper as
661
- * this includes the label, instead we apply the
662
- * background to the native wrapper.
635
+ * The wrapper spans the label too, so the background belongs on the field
636
+ * box rather than here.
663
637
  */
664
638
  background: transparent;
665
639
  }
666
640
 
641
+ .input-control {
642
+ display: contents;
643
+ }
644
+
645
+ /**
646
+ * A pseudo-element draws the box across the second row, so the label can sit in
647
+ * the first row and stay outside of it while the tree matches the other themes.
648
+ */
649
+ .input-wrapper::before {
650
+ border-radius: var(--border-radius, 0);
651
+ align-self: stretch;
652
+ box-sizing: border-box;
653
+ content: "";
654
+ pointer-events: none;
655
+ min-height: var(--token-scale-1000, 40px);
656
+ border: var(--border-width) var(--border-style) var(--border-color);
657
+ background: var(--background);
658
+ }
659
+
660
+ .input-wrapper::before {
661
+ grid-row: field;
662
+ grid-column: field-start/field-end;
663
+ }
664
+
667
665
  .label-text-wrapper {
668
- /**
669
- * The label should appear on top of an outline
670
- * container that overlaps it so it is always clickable.
671
- */
672
- position: relative;
666
+ grid-row: label;
667
+ grid-column: field-start/field-end;
668
+ }
669
+
670
+ .input-start {
671
+ grid-row: field;
672
+ grid-column: slot-start;
673
+ }
674
+
675
+ .native-wrapper {
676
+ grid-row: field;
677
+ grid-column: native;
678
+ }
679
+
680
+ .input-end {
681
+ grid-row: field;
682
+ grid-column: slot-end;
683
+ }
684
+
685
+ /**
686
+ * The padding sits on the cells that the field box covers, so the label is not
687
+ * indented by it.
688
+ */
689
+ .input-start,
690
+ .native-wrapper,
691
+ .input-end {
692
+ padding-top: var(--padding-top);
693
+ padding-bottom: var(--padding-bottom);
694
+ }
695
+
696
+ .input-start {
697
+ -webkit-padding-start: var(--padding-start);
698
+ padding-inline-start: var(--padding-start);
699
+ }
700
+
701
+ .input-end {
702
+ -webkit-padding-end: var(--padding-end);
703
+ padding-inline-end: var(--padding-end);
673
704
  }
674
705
 
675
706
  :host(.input-label-placement-stacked) .label-text-wrapper {
@@ -698,27 +729,6 @@
698
729
  border-top: none;
699
730
  }
700
731
 
701
- .input-wrapper-inner {
702
- border-radius: inherit;
703
- -webkit-padding-start: var(--padding-start);
704
- padding-inline-start: var(--padding-start);
705
- -webkit-padding-end: var(--padding-end);
706
- padding-inline-end: var(--padding-end);
707
- padding-top: var(--padding-top);
708
- padding-bottom: var(--padding-bottom);
709
- display: flex;
710
- position: relative;
711
- align-items: center;
712
- width: 100%;
713
- min-height: var(--token-scale-1000, 40px);
714
- box-sizing: border-box;
715
- /**
716
- * Apply the background to the inner wrapper so the label
717
- * above it stays outside the field.
718
- */
719
- background: var(--background);
720
- }
721
-
722
732
  :host(.input-size-medium) {
723
733
  --padding-start: var(--token-space-300, var(--token-scale-300, 12px));
724
734
  --padding-end: var(--token-space-300, var(--token-scale-300, 12px));
@@ -734,15 +744,15 @@
734
744
  --padding-end: var(--token-space-500, var(--token-scale-500, 20px));
735
745
  }
736
746
 
737
- :host(.input-size-medium) .input-wrapper-inner {
747
+ :host(.input-size-medium) .input-wrapper::before {
738
748
  min-height: var(--token-scale-1000, 40px);
739
749
  }
740
750
 
741
- :host(.input-size-large) .input-wrapper-inner {
751
+ :host(.input-size-large) .input-wrapper::before {
742
752
  min-height: var(--token-scale-1200, 48px);
743
753
  }
744
754
 
745
- :host(.input-size-xlarge) .input-wrapper-inner {
755
+ :host(.input-size-xlarge) .input-wrapper::before {
746
756
  min-height: var(--token-scale-1400, 56px);
747
757
  }
748
758
 
@@ -770,18 +780,31 @@
770
780
  --size: var(--token-scale-1400, 56px);
771
781
  }
772
782
 
773
- .input-wrapper-inner::after {
774
- right: 0;
775
- left: 0;
776
- top: 50%;
777
- position: absolute;
778
- height: 100%;
779
- min-height: var(--token-scale-1200, 48px);
780
- transform: translateY(-50%);
783
+ /**
784
+ * This stays at the default stacking level. The native input is positioned at
785
+ * `z-index: 1`, so a target area at that level or above paints over it and
786
+ * swallows the clicks meant for it. Tree order already puts this above the
787
+ * field box, which is all it needs to cover.
788
+ */
789
+ .input-wrapper::after {
790
+ grid-row: field;
791
+ grid-column: field-start/field-end;
792
+ align-self: stretch;
781
793
  content: "";
782
794
  cursor: text;
783
795
  }
784
796
 
797
+ /**
798
+ * The medium field is shorter than the minimum target area, so the negative
799
+ * block margin lets the target area overflow the row instead of growing it.
800
+ * The larger sizes are already at least as tall, so they need no correction.
801
+ */
802
+ :host(.input-size-medium) .input-wrapper::after {
803
+ margin-top: calc((var(--token-scale-1000, 40px) - var(--token-scale-1200, 48px)) / 2);
804
+ margin-bottom: calc((var(--token-scale-1000, 40px) - var(--token-scale-1200, 48px)) / 2);
805
+ min-height: var(--token-scale-1200, 48px);
806
+ }
807
+
785
808
  ::slotted([slot=start]),
786
809
  ::slotted([slot=end]),
787
810
  .input-clear-icon {
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import xRegular from "@phosphor-icons/core/assets/regular/x.svg";
5
4
  import { Build, Host, forceUpdate, h, } from "@stencil/core";
6
5
  import { createClearButtonPressController, createNotchController, createStartContainerController, checkInvalidState, } from "../../utils/forms/index";
7
6
  import { inheritAriaAttributes, debounceEvent, inheritAttributes, componentOnReady } from "../../utils/helpers";
@@ -579,27 +578,19 @@ export class Input {
579
578
  'input-clear-button-pressed': this.isClearButtonPressed,
580
579
  }, onPointerDown: this.clearButtonPressController.onPointerDown, onPointerCancel: this.clearButtonPressController.release, onClick: this.clearTextInput }, h("ion-icon", { "aria-hidden": "true", icon: this.inputClearIcon })));
581
580
  }
582
- /**
583
- * The ionic theme keeps the label above a field box that wraps the slots and
584
- * the input, so the label can size independently of the slotted content.
585
- */
586
- renderIonicField() {
587
- return [
588
- this.renderLabel(),
589
- h("div", { key: "inner", class: "input-wrapper-inner" }, h("div", { key: "outline", class: "input-outline" }), this.renderStartContainer(), h("div", { key: "control", class: "input-control" }, h("div", { class: "native-wrapper", onClick: this.onLabelClick }, this.renderNativeInput())), this.renderEndContainer()),
590
- ];
591
- }
592
- /**
593
- * The ios and md themes nest the label alongside the input so a floating
594
- * label can escape the control and clear the start and end slots.
595
- */
596
581
  renderStartContainer() {
597
582
  return (h("div", { key: "start", class: "input-start", ref: (el) => (this.startContainerEl = el) }, h("slot", { name: "start" })));
598
583
  }
599
584
  renderEndContainer() {
600
585
  return (h("div", { key: "end", class: "input-end" }, this.renderClearButton(), h("slot", { name: "end" })));
601
586
  }
602
- renderNativeField() {
587
+ /**
588
+ * Every theme renders the same label and control structure, aside from the md
589
+ * outline container below. The label is nested alongside the input so the ios
590
+ * and md floating label can escape the control and clear the start and end
591
+ * slots. The ionic theme lifts it above the field with grid instead.
592
+ */
593
+ renderField() {
603
594
  const hasOutlineFill = getIonTheme(this) === 'md' && this.getFill() === 'outline';
604
595
  return [
605
596
  hasOutlineFill && this.renderOutlineContainer(),
@@ -621,16 +612,9 @@ export class Input {
621
612
  if (this.clearInputIcon != null) {
622
613
  return this.clearInputIcon;
623
614
  }
624
- // Determine the theme and map to default icons
615
+ // Determine the theme and map to the default icon
625
616
  const theme = getIonTheme(this);
626
- const defaultIcons = {
627
- ios: closeCircle,
628
- ionic: xRegular,
629
- md: closeSharp,
630
- };
631
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
632
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
633
- // Return the configured input clear icon or the default icon
617
+ const defaultIcon = theme === 'ios' ? closeCircle : closeSharp;
634
618
  return config.get('inputClearIcon', defaultIcon);
635
619
  }
636
620
  render() {
@@ -649,7 +633,7 @@ export class Input {
649
633
  * the input has a value or is focused.
650
634
  */
651
635
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus));
652
- return (h(Host, { key: '5f43fb688b16cf37221db78eeedbf4b337a51d65', class: createColorClasses(this.color, {
636
+ return (h(Host, { key: '82d13bcc33e5817aa3afcc0c752cdca87301b1c7', class: createColorClasses(this.color, {
653
637
  [theme]: true,
654
638
  'has-value': hasValue,
655
639
  'has-focus': hasFocus,
@@ -662,7 +646,7 @@ export class Input {
662
646
  'in-item-color': hostContext('ion-item.ion-color', this.el),
663
647
  'input-disabled': disabled,
664
648
  'input-readonly': readonly,
665
- }) }, h("label", { key: '211acead7fe50527b472ebddddca5ecc72ce1ec9', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, theme === 'ionic' ? this.renderIonicField() : this.renderNativeField(), shouldRenderHighlight && h("div", { key: 'b47126f58c61d673ec1c970f1d166284e45b5a9b', class: "input-highlight" })), this.renderBottomContent()));
649
+ }) }, h("label", { key: '53d8b948776361505a9bc47a4a2e8544d05f6856', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderField(), shouldRenderHighlight && h("div", { key: 'f4c81c4927a685d1474bb4510ad25eb51f77cd99', class: "input-highlight" })), this.renderBottomContent()));
666
650
  }
667
651
  static get is() { return "ion-input"; }
668
652
  static get encapsulation() { return "scoped"; }
@@ -1,14 +1,12 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import eyeSlashRegular from "@phosphor-icons/core/assets/regular/eye-slash.svg";
5
- import eyeRegular from "@phosphor-icons/core/assets/regular/eye.svg";
6
4
  import { Host, h } from "@stencil/core";
7
5
  import { printIonWarning } from "../../utils/logging/index";
8
6
  import { createColorClasses } from "../../utils/theme";
9
7
  import { eyeOff, eye } from "ionicons/icons";
10
8
  import { config } from "../../global/config";
11
- import { getIonMode, getIonTheme } from "../../global/ionic-global";
9
+ import { getIonMode } from "../../global/ionic-global";
12
10
  /**
13
11
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
14
12
  */
@@ -56,54 +54,46 @@ export class InputPasswordToggle {
56
54
  disconnectedCallback() {
57
55
  this.inputElRef = null;
58
56
  }
57
+ /**
58
+ * Get the icon to use for the hide icon.
59
+ * If an icon is set on the component, use that.
60
+ * Otherwise, use the icon set in the config.
61
+ * If no icon is set in the config, use the default icon.
62
+ */
59
63
  get inputPasswordHideIcon() {
60
64
  // Return the icon if it is explicitly set
61
65
  if (this.hideIcon != null) {
62
66
  return this.hideIcon;
63
67
  }
64
- // Determine the theme and map to default icons
65
- const theme = getIonTheme(this);
66
- const defaultIcons = {
67
- ios: eyeOff,
68
- ionic: eyeSlashRegular,
69
- md: eyeOff,
70
- };
71
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
72
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
73
- // Return the configured input password hide icon or the default icon
74
- return config.get('inputPasswordHideIcon', defaultIcon);
68
+ return config.get('inputPasswordHideIcon', eyeOff);
75
69
  }
70
+ /**
71
+ * Get the icon to use for the show icon.
72
+ * If an icon is set on the component, use that.
73
+ * Otherwise, use the icon set in the config.
74
+ * If no icon is set in the config, use the default icon.
75
+ */
76
76
  get inputPasswordShowIcon() {
77
77
  // Return the icon if it is explicitly set
78
78
  if (this.showIcon != null) {
79
79
  return this.showIcon;
80
80
  }
81
- // Determine the theme and map to default icons
82
- const theme = getIonTheme(this);
83
- const defaultIcons = {
84
- ios: eye,
85
- ionic: eyeRegular,
86
- md: eye,
87
- };
88
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
89
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
90
- // Return the configured input password show icon or the default icon
91
- return config.get('inputPasswordShowIcon', defaultIcon);
81
+ return config.get('inputPasswordShowIcon', eye);
92
82
  }
93
83
  render() {
94
84
  const { color, inputPasswordHideIcon, inputPasswordShowIcon, type } = this;
95
85
  const mode = getIonMode(this);
96
86
  const isPasswordVisible = type === 'text';
97
- return (h(Host, { key: '2734787d7024b5662ab5a3f11d8026d5a514baa3', class: createColorClasses(color, {
87
+ return (h(Host, { key: '84bc48922e1757b815cc8cfb57120479736c3c60', class: createColorClasses(color, {
98
88
  [mode]: true,
99
- }) }, h("ion-button", { key: 'f4507daff695b5f2d0b2794ff6cb73ec71917ca8', mode: mode, color: color, fill: "clear", shape: "round", "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', "aria-pressed": isPasswordVisible ? 'true' : 'false', type: "button", onPointerDown: (ev) => {
89
+ }) }, h("ion-button", { key: '1ffddcd50039cc044a0ad36e5c8e0465d135518c', mode: mode, color: color, fill: "clear", shape: "round", "aria-label": isPasswordVisible ? 'Hide password' : 'Show password', "aria-pressed": isPasswordVisible ? 'true' : 'false', type: "button", onPointerDown: (ev) => {
100
90
  /**
101
91
  * This prevents mobile browsers from
102
92
  * blurring the input when the password toggle
103
93
  * button is activated.
104
94
  */
105
95
  ev.preventDefault();
106
- }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: 'b1d55b3625cc0a90249090c29b635064e6086075', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? inputPasswordHideIcon : inputPasswordShowIcon }))));
96
+ }, onClick: this.togglePasswordVisibility }, h("ion-icon", { key: '6ee118c5044c11b6db743f3ce6be6ef7ba255292', slot: "icon-only", "aria-hidden": "true", icon: isPasswordVisible ? inputPasswordHideIcon : inputPasswordShowIcon }))));
107
97
  }
108
98
  static get is() { return "ion-input-password-toggle"; }
109
99
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import caretRightRegular from "@phosphor-icons/core/assets/regular/caret-right.svg";
5
4
  import { Build, Host, forceUpdate, h } from "@stencil/core";
6
5
  import { inheritAttributes, raf } from "../../utils/helpers";
7
6
  import { createColorClasses, hostContext, openURL } from "../../utils/theme";
@@ -239,29 +238,25 @@ export class Item {
239
238
  const controls = this.el.querySelectorAll('ion-toggle:not([disabled]), ion-checkbox:not([disabled]), ion-radio:not([disabled]), ion-select:not([disabled]), ion-input:not([disabled]), ion-textarea:not([disabled])');
240
239
  return controls[0];
241
240
  }
241
+ /**
242
+ * Get the icon to use for the detail icon.
243
+ * If an icon is set on the component, use that.
244
+ * Otherwise, use the icon set in the config.
245
+ * If no icon is set in the config, use the default icon.
246
+ */
242
247
  get itemDetailIcon() {
243
248
  // Return the icon if it is explicitly set
244
249
  if (this.detailIcon != null) {
245
250
  return this.detailIcon;
246
251
  }
247
- // Determine the theme and map to default icons
248
- const theme = getIonTheme(this);
249
- const defaultIcons = {
250
- ios: chevronForward,
251
- ionic: caretRightRegular,
252
- md: chevronForward,
253
- };
254
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
255
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
256
- // Return the configured item detail icon or the default icon
257
- return config.get('itemDetailIcon', defaultIcon);
252
+ return config.get('itemDetailIcon', chevronForward);
258
253
  }
259
254
  /**
260
255
  * The icon should be flipped when the app is RTL and
261
256
  * the icon is a variation of chevron.
262
257
  */
263
258
  get shouldFlipIcon() {
264
- return this.itemDetailIcon === chevronForward || this.itemDetailIcon === caretRightRegular;
259
+ return this.itemDetailIcon === chevronForward;
265
260
  }
266
261
  render() {
267
262
  const { detail, download, labelColorStyles, lines, disabled, href, itemDetailIcon, shouldFlipIcon, rel, target, routerAnimation, routerDirection, inheritedAriaAttributes, multipleInputs, } = this;
@@ -340,7 +335,7 @@ export class Item {
340
335
  * multi-input item, and in a clickable item, which is a second tab stop.
341
336
  */
342
337
  const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
343
- return (h(Host, { key: 'e303a3416c411185a0990ec8dcb1b1479eb236e8', "aria-disabled": ariaDisabled, class: {
338
+ return (h(Host, { key: '94668203071ec29cbcd4a435cded154d9a6f44e1', "aria-disabled": ariaDisabled, class: {
344
339
  ...childStyles,
345
340
  ...labelColorStyles,
346
341
  ...createColorClasses(this.color, {
@@ -357,7 +352,7 @@ export class Item {
357
352
  'ion-focusable': this.focusable,
358
353
  'item-rtl': document.dir === 'rtl',
359
354
  }),
360
- }, role: inList ? 'listitem' : null }, h(TagType, { key: '551e095097f4c241aa0bb0d2aceb0bf4777563b2', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, h("slot", { key: '8a602938537caaebaad7d72aa3e8d5a4d3a12290', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: 'c82030fdec973d347bc56ae25bb71f6c76173b60', class: "item-inner", part: "inner" }, h("div", { key: '01db0987d735ce734f1edfcd7ee8164e441c840e', class: "input-wrapper", part: "container" }, h("slot", { key: '87e073b45610277443733f8f150d0adf26e6bf86', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: '4446a01b2556284a0d8dfb1c209bec1b064a2341', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: '09196aa21716c854cbbd7c5aeefff2bfb859746e', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme === 'md' && h("ion-ripple-effect", { key: '3408c7ffac92c84ad99a9d71f8c26b98583010a0' }))));
355
+ }, role: inList ? 'listitem' : null }, h(TagType, { key: '5d806a372a58368735fa9ec5d7a91fb9fb0177a1', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, h("slot", { key: 'f51ab92aa48af5e6061e4ce6054ce758913849e9', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), h("div", { key: '7f843e3fc8446f137c2ab8e3b9ec761816537f88', class: "item-inner", part: "inner" }, h("div", { key: '7427ac82b29335459ec3b9c8f07d8b92faee675e', class: "input-wrapper", part: "container" }, h("slot", { key: '99306e28323143b5e4b83f548fcbbe693684128b', onSlotchange: this.updateInteractivityOnSlotChange })), h("slot", { key: 'c0da503cade4c5be74c1a06cbda6d381569b0819', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (h("ion-icon", { key: 'a4422494c8715cf258655ccc1e1dd7ffd9cc13eb', icon: itemDetailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": shouldFlipIcon }))), canActivate && theme === 'md' && h("ion-ripple-effect", { key: '16aa4720ebfbdc1669cec2769780b4cfc8f775ed' }))));
361
356
  }
362
357
  static get is() { return "ion-item"; }
363
358
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import listRegular from "@phosphor-icons/core/assets/regular/list.svg";
5
4
  import { Host, h } from "@stencil/core";
6
5
  import { inheritAriaAttributes } from "../../utils/helpers";
7
6
  import { menuController } from "../../utils/menu-controller/index";
@@ -46,17 +45,15 @@ export class MenuButton {
46
45
  async visibilityChanged() {
47
46
  this.visible = await updateVisibility(this.menu);
48
47
  }
48
+ /**
49
+ * Get the icon to use for the menu icon.
50
+ * Use the icon set in the config.
51
+ * If no icon is set in the config, use the default icon.
52
+ */
49
53
  get menuIcon() {
50
- // Determine the theme and map to default icons
54
+ // Determine the theme and map to the default icon
51
55
  const theme = getIonTheme(this);
52
- const defaultIcons = {
53
- ios: menuOutline,
54
- ionic: listRegular,
55
- md: menuSharp,
56
- };
57
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
58
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
59
- // Return the configured menu icon or the default icon
56
+ const defaultIcon = theme === 'ios' ? menuOutline : menuSharp;
60
57
  return config.get('menuIcon', defaultIcon);
61
58
  }
62
59
  render() {
@@ -67,7 +64,7 @@ export class MenuButton {
67
64
  type: this.type,
68
65
  };
69
66
  const ariaLabel = inheritedAttributes['aria-label'] || 'menu';
70
- return (h(Host, { key: '2129cb866a1acc620f005264340f77311535a0c5', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
67
+ return (h(Host, { key: '0593ed9f0867e28fbb9d79e381282eef93343df8', onClick: this.onClick, "aria-disabled": disabled ? 'true' : null, "aria-hidden": hidden ? 'true' : null, class: createColorClasses(color, {
71
68
  [theme]: true,
72
69
  button: true, // ion-buttons target .button
73
70
  'menu-button-hidden': hidden,
@@ -76,7 +73,7 @@ export class MenuButton {
76
73
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
77
74
  'ion-activatable': true,
78
75
  'ion-focusable': true,
79
- }) }, h("button", { key: '0dc5a571945fc4da0cc639087c8fff7a989caf5d', ...attrs, disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }, h("span", { key: 'e7393a7e22fb8ef73ac9a5899979501f114dabf0', class: "button-inner" }, h("slot", { key: '78b6e51e63ae6d3525021000e94c7ec8ae06cc70' }, h("ion-icon", { key: '2dccf089945d8938799afe970f728ee94acc0d37', part: "icon", icon: menuIcon, lazy: false, "aria-hidden": "true" }))), theme === 'md' && h("ion-ripple-effect", { key: 'd39348251d4106aabbee9cd9bc4f176a64a090d3', type: "unbounded" }))));
76
+ }) }, h("button", { key: 'e61f71642db9b719eaf9b71e813fc271ea3b7343', ...attrs, disabled: disabled, class: "button-native", part: "native", "aria-label": ariaLabel }, h("span", { key: '8e5bb04a8e56dd02c7c8b2d10166f095ac40e461', class: "button-inner" }, h("slot", { key: '23d1bce767d0d389380fe30b3cd94e6f7c5c98f6' }, h("ion-icon", { key: 'abc88761fa11b5cfa853b58411e1ee8a4f632859', part: "icon", icon: menuIcon, lazy: false, "aria-hidden": "true" }))), theme === 'md' && h("ion-ripple-effect", { key: '77e328074a65be3b951cf7352aa7f9e82b7f1256', type: "unbounded" }))));
80
77
  }
81
78
  static get is() { return "ion-menu-button"; }
82
79
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import caretLeftFill from "@phosphor-icons/core/assets/fill/caret-left-fill.svg";
5
4
  import { Host, h } from "@stencil/core";
6
5
  import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
7
6
  import { sanitizeDOMString } from "../../utils/sanitization/index";
@@ -34,6 +33,14 @@ export class RefresherContent {
34
33
  this.refreshingSpinner = config.get('refreshingSpinner', config.get('spinner', theme === 'ios' ? 'lines' : 'circular'));
35
34
  }
36
35
  }
36
+ /**
37
+ * Get the icon to use for the arrow icon.
38
+ * Use the icon set in the config.
39
+ * If no icon is set in the config, use the default icon.
40
+ */
41
+ get refresherArrowIcon() {
42
+ return config.get('refresherArrowIcon', caretBackSharp);
43
+ }
37
44
  renderPullingText() {
38
45
  const { customHTMLEnabled, pullingText } = this;
39
46
  if (customHTMLEnabled) {
@@ -52,10 +59,9 @@ export class RefresherContent {
52
59
  const pullingIcon = this.pullingIcon;
53
60
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
54
61
  const theme = getIonTheme(this);
55
- const arrowIcon = theme === 'ionic' ? caretLeftFill : caretBackSharp;
56
- return (h(Host, { key: '264b9869eb2357cc2acb3d2abde9538f2486bc60', class: {
62
+ return (h(Host, { key: '79641f5cfcbae77afd812b4758984ecb191dda29', class: {
57
63
  [theme]: true,
58
- } }, h("div", { key: '4b315df6bfeddc0e8d02435e4049970930858478', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: 'fc5debec928ae7d96ba64c814a35d6d372e60b02', class: "refresher-pulling-icon" }, h("div", { key: '1aa993350b3e9532f3e74a62865093d2e86f3884', class: "spinner-arrow-container" }, h("ion-spinner", { key: 'd8c39493a3b45f994a4f4da8b09662e148790c97', name: this.pullingIcon, paused: true }), (theme === 'md' || theme === 'ionic') && this.pullingIcon === 'circular' && (h("div", { key: 'fbefee823b63e4904ee28b9d978c6822c392bdad', class: "arrow-container" }, h("ion-icon", { key: '2e9742a0d73ec59330d4204217f72cc6e3bae571', icon: arrowIcon, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: '9ad2c55fafd0b284aae8e3be27b462cb520feae0', class: "refresher-pulling-icon" }, h("ion-icon", { key: 'e36ccd2de7d8109495bceead82979cb678285752', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: '2990d364f999f4d018c26ed3dee237bc81a29129', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: 'eb6f9b8ee370f0c809ea3519968c1562ef72da5e', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: '07d526cea46499a22b49d43371c3b3c4d3937689', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
64
+ } }, h("div", { key: '3d6dedbcd0ad04d0a1cc2563a130ac8c53a34891', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (h("div", { key: '4dad78f16e6ee175bd55bd88e40ac33bbd492fc0', class: "refresher-pulling-icon" }, h("div", { key: '9d9b9a6c8f371e92aee43eca9d25768fe80aff8f', class: "spinner-arrow-container" }, h("ion-spinner", { key: '56c31feada2e1558f30b472a624e66cada7dd971', name: this.pullingIcon, paused: true }), (theme === 'md' || theme === 'ionic') && this.pullingIcon === 'circular' && (h("div", { key: 'ddb580acffb25ed3cf1c3e793594e4a7c93323bf', class: "arrow-container" }, h("ion-icon", { key: '2ef17431b18d0475e645062b3b98435a1adc2d01', icon: this.refresherArrowIcon, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (h("div", { key: 'd400ef684a1a3783709b1842f096b657950d7700', class: "refresher-pulling-icon" }, h("ion-icon", { key: '82e1c30d5c7e94c4420518722a1ddca406739e69', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), h("div", { key: '27a6e09db376a00d704d3880d4075580d8ea4fba', class: "refresher-refreshing" }, this.refreshingSpinner && (h("div", { key: '712b68c41b714fb3cf3f6403db4250a16df570cd', class: "refresher-refreshing-icon" }, h("ion-spinner", { key: '051829b30e40c8eed2a121f2b11cae2fa240a147', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
59
65
  }
60
66
  static get is() { return "ion-refresher-content"; }
61
67
  static get originalStyleUrls() {
@@ -1,7 +1,6 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import listRegular from "@phosphor-icons/core/assets/regular/list.svg";
5
4
  import { Host, h } from "@stencil/core";
6
5
  import { reorderThreeOutline, reorderTwoSharp } from "ionicons/icons";
7
6
  import { config } from "../../global/config";
@@ -24,28 +23,21 @@ export class Reorder {
24
23
  }
25
24
  /**
26
25
  * Get the icon to use for the handle icon.
27
- * Otherwise, use the icon set in the config.
26
+ * Use the icon set in the config.
28
27
  * If no icon is set in the config, use the default icon.
29
28
  */
30
29
  get reorderHandleIcon() {
31
- // Determine the theme and map to default icons
30
+ // Determine the theme and map to the default icon
32
31
  const theme = getIonTheme(this);
33
- const defaultIcons = {
34
- ios: reorderThreeOutline,
35
- ionic: listRegular,
36
- md: reorderTwoSharp,
37
- };
38
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
39
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
40
- // Return the configured reorder handle icon or the default icon
32
+ const defaultIcon = theme === 'ios' ? reorderThreeOutline : reorderTwoSharp;
41
33
  return config.get('reorderHandleIcon', defaultIcon);
42
34
  }
43
35
  render() {
44
36
  const { reorderHandleIcon } = this;
45
37
  const theme = getIonTheme(this);
46
- return (h(Host, { key: 'b33c72a16a2ef9aef7b15d4907ba9b3ea9617954', class: {
38
+ return (h(Host, { key: 'ba25a7b0b5ece6693f2431f562d63738efe1f831', class: {
47
39
  [theme]: true,
48
- } }, h("slot", { key: '4a34e01ec73e0237b224cf9d8705cf4c13870d70' }, h("ion-icon", { key: '36e4d3c1926f1abb97422b44fcb28b0cc3507e1c', icon: reorderHandleIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
40
+ } }, h("slot", { key: 'b5afb5131bfb9bfce01a01d6b36e0a7408e14ec5' }, h("ion-icon", { key: '7e0d35640277a07b139d122939b0253a81dc785d', icon: reorderHandleIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
49
41
  }
50
42
  static get is() { return "ion-reorder"; }
51
43
  static get encapsulation() { return "shadow"; }