@ccrpc/webmapgl 0.18.6 → 0.18.8

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 (250) hide show
  1. package/dist/cjs/app-globals-62694daf.js.map +1 -1
  2. package/dist/cjs/gl-address-search_52.cjs.entry.js +31 -30
  3. package/dist/cjs/gl-address-search_52.cjs.entry.js.map +1 -1
  4. package/dist/cjs/gl-draw-toolbar.cjs.entry.js +3 -3
  5. package/dist/cjs/gl-draw-toolbar.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gl-facet_5.cjs.entry.js +1 -1
  7. package/dist/cjs/gl-facet_5.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gl-like-button.cjs.entry.js +5 -5
  9. package/dist/cjs/gl-like-button.cjs.entry.js.map +1 -1
  10. package/dist/cjs/index.cjs.js +11 -0
  11. package/dist/cjs/index.cjs.js.map +1 -1
  12. package/dist/collection/components/address-search/address-search.js +4 -4
  13. package/dist/collection/components/address-search/address-search.js.map +1 -1
  14. package/dist/collection/components/app/app.js +1 -1
  15. package/dist/collection/components/app/app.js.map +1 -1
  16. package/dist/collection/components/attribute-values/attribute-values.js +1 -1
  17. package/dist/collection/components/basemaps/basemaps.js +2 -2
  18. package/dist/collection/components/basemaps/basemaps.js.map +1 -1
  19. package/dist/collection/components/download-button/download-button.js +3 -3
  20. package/dist/collection/components/download-button/download-button.js.map +1 -1
  21. package/dist/collection/components/download-list/download-list.js +2 -1
  22. package/dist/collection/components/download-list/download-list.js.map +1 -1
  23. package/dist/collection/components/draw-toolbar/draw-toolbar.js +4 -4
  24. package/dist/collection/components/draw-toolbar/draw-toolbar.js.map +1 -1
  25. package/dist/collection/components/drawer/drawer.js +4 -4
  26. package/dist/collection/components/drawer/drawer.js.map +1 -1
  27. package/dist/collection/components/drawer-toggle/drawer-toggle.js +1 -1
  28. package/dist/collection/components/drawer-toggle/drawer-toggle.js.map +1 -1
  29. package/dist/collection/components/feature-list/feature-list.js +1 -1
  30. package/dist/collection/components/form-page/form-page.js +2 -2
  31. package/dist/collection/components/form-page/form-page.js.map +1 -1
  32. package/dist/collection/components/fullscreen/fullscreen.js +1 -1
  33. package/dist/collection/components/fullscreen/fullscreen.js.map +1 -1
  34. package/dist/collection/components/legend-item/legend-item.js +2 -2
  35. package/dist/collection/components/legend-item/legend-item.js.map +1 -1
  36. package/dist/collection/components/like-button/like-button.js +6 -6
  37. package/dist/collection/components/like-button/like-button.js.map +1 -1
  38. package/dist/collection/components/share/share.js +3 -3
  39. package/dist/collection/components/share/share.js.map +1 -1
  40. package/dist/collection/components/share-button/share-button.js +2 -2
  41. package/dist/collection/components/share-button/share-button.js.map +1 -1
  42. package/dist/collection/components/story-button/story-button.js +4 -4
  43. package/dist/collection/components/story-button/story-button.js.map +1 -1
  44. package/dist/collection/components/style/style.js +3 -3
  45. package/dist/collection/components/table-column-visibility/table-column-visibility.js +1 -1
  46. package/dist/collection/components/table-column-visibility/table-column-visibility.js.map +1 -1
  47. package/dist/collection/components/table-column-visibility-button/table-column-visibility-button.js +3 -3
  48. package/dist/collection/components/table-column-visibility-button/table-column-visibility-button.js.map +1 -1
  49. package/dist/collection/components/table-export-button/table-export-button.js +1 -1
  50. package/dist/collection/components/table-export-button/table-export-button.js.map +1 -1
  51. package/dist/collection/global/webmapgl.js +1 -0
  52. package/dist/collection/global/webmapgl.js.map +1 -1
  53. package/dist/collection/index.js +2 -0
  54. package/dist/collection/index.js.map +1 -0
  55. package/dist/esm/app-globals-755c21e9.js.map +1 -1
  56. package/dist/esm/gl-address-search_52.entry.js +32 -31
  57. package/dist/esm/gl-address-search_52.entry.js.map +1 -1
  58. package/dist/esm/gl-draw-controller.entry.js +1 -1
  59. package/dist/esm/gl-draw-toolbar.entry.js +3 -3
  60. package/dist/esm/gl-draw-toolbar.entry.js.map +1 -1
  61. package/dist/esm/gl-facet_5.entry.js +2 -2
  62. package/dist/esm/gl-facet_5.entry.js.map +1 -1
  63. package/dist/esm/gl-feature-list.entry.js +1 -1
  64. package/dist/esm/gl-like-button.entry.js +6 -6
  65. package/dist/esm/gl-like-button.entry.js.map +1 -1
  66. package/dist/esm/gl-table-export-controller.entry.js +1 -1
  67. package/dist/esm/index.js +2 -1
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/polyfills/core-js.js +0 -0
  70. package/dist/esm/polyfills/dom.js +0 -0
  71. package/dist/esm/polyfills/es5-html-element.js +0 -0
  72. package/dist/esm/polyfills/index.js +0 -0
  73. package/dist/esm/polyfills/system.js +0 -0
  74. package/dist/esm/{utils-0af5fee1.js → utils-e86257fd.js} +2 -2
  75. package/dist/esm/{utils-0af5fee1.js.map → utils-e86257fd.js.map} +1 -1
  76. package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.ios.css +83 -0
  77. package/dist/node_modules/@ionic/core/dist/collection/components/accordion/accordion.md.css +80 -0
  78. package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.ios.css +17 -0
  79. package/dist/node_modules/@ionic/core/dist/collection/components/accordion-group/accordion-group.md.css +64 -0
  80. package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.ios.css +319 -0
  81. package/dist/node_modules/@ionic/core/dist/collection/components/action-sheet/action-sheet.md.css +259 -0
  82. package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.ios.css +503 -0
  83. package/dist/node_modules/@ionic/core/dist/collection/components/alert/alert.md.css +531 -0
  84. package/dist/node_modules/@ionic/core/dist/collection/components/app/app.css +17 -0
  85. package/dist/node_modules/@ionic/core/dist/collection/components/avatar/avatar.ios.css +22 -0
  86. package/dist/node_modules/@ionic/core/dist/collection/components/avatar/avatar.md.css +22 -0
  87. package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.ios.css +246 -0
  88. package/dist/node_modules/@ionic/core/dist/collection/components/back-button/back-button.md.css +269 -0
  89. package/dist/node_modules/@ionic/core/dist/collection/components/backdrop/backdrop.ios.css +26 -0
  90. package/dist/node_modules/@ionic/core/dist/collection/components/backdrop/backdrop.md.css +26 -0
  91. package/dist/node_modules/@ionic/core/dist/collection/components/badge/badge.ios.css +50 -0
  92. package/dist/node_modules/@ionic/core/dist/collection/components/badge/badge.md.css +54 -0
  93. package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.ios.css +205 -0
  94. package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumb/breadcrumb.md.css +200 -0
  95. package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +26 -0
  96. package/dist/node_modules/@ionic/core/dist/collection/components/breadcrumbs/breadcrumbs.md.css +25 -0
  97. package/dist/node_modules/@ionic/core/dist/collection/components/button/button.ios.css +431 -0
  98. package/dist/node_modules/@ionic/core/dist/collection/components/button/button.md.css +408 -0
  99. package/dist/node_modules/@ionic/core/dist/collection/components/buttons/buttons.ios.css +114 -0
  100. package/dist/node_modules/@ionic/core/dist/collection/components/buttons/buttons.md.css +134 -0
  101. package/dist/node_modules/@ionic/core/dist/collection/components/card/card.ios.css +93 -0
  102. package/dist/node_modules/@ionic/core/dist/collection/components/card/card.md.css +88 -0
  103. package/dist/node_modules/@ionic/core/dist/collection/components/card-content/card-content.ios.css +53 -0
  104. package/dist/node_modules/@ionic/core/dist/collection/components/card-content/card-content.md.css +55 -0
  105. package/dist/node_modules/@ionic/core/dist/collection/components/card-header/card-header.ios.css +31 -0
  106. package/dist/node_modules/@ionic/core/dist/collection/components/card-header/card-header.md.css +28 -0
  107. package/dist/node_modules/@ionic/core/dist/collection/components/card-subtitle/card-subtitle.ios.css +28 -0
  108. package/dist/node_modules/@ionic/core/dist/collection/components/card-subtitle/card-subtitle.md.css +26 -0
  109. package/dist/node_modules/@ionic/core/dist/collection/components/card-title/card-title.ios.css +27 -0
  110. package/dist/node_modules/@ionic/core/dist/collection/components/card-title/card-title.md.css +27 -0
  111. package/dist/node_modules/@ionic/core/dist/collection/components/checkbox/checkbox.ios.css +310 -0
  112. package/dist/node_modules/@ionic/core/dist/collection/components/checkbox/checkbox.md.css +326 -0
  113. package/dist/node_modules/@ionic/core/dist/collection/components/chip/chip.css +149 -0
  114. package/dist/node_modules/@ionic/core/dist/collection/components/col/col.css +68 -0
  115. package/dist/node_modules/@ionic/core/dist/collection/components/content/content.css +227 -0
  116. package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.ios.css +589 -0
  117. package/dist/node_modules/@ionic/core/dist/collection/components/datetime/datetime.md.css +561 -0
  118. package/dist/node_modules/@ionic/core/dist/collection/components/datetime-button/datetime-button.css +44 -0
  119. package/dist/node_modules/@ionic/core/dist/collection/components/fab/fab.css +98 -0
  120. package/dist/node_modules/@ionic/core/dist/collection/components/fab-button/fab-button.ios.css +312 -0
  121. package/dist/node_modules/@ionic/core/dist/collection/components/fab-button/fab-button.md.css +283 -0
  122. package/dist/node_modules/@ionic/core/dist/collection/components/fab-list/fab-list.css +123 -0
  123. package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.ios.css +36 -0
  124. package/dist/node_modules/@ionic/core/dist/collection/components/footer/footer.md.css +19 -0
  125. package/dist/node_modules/@ionic/core/dist/collection/components/grid/grid.css +103 -0
  126. package/dist/node_modules/@ionic/core/dist/collection/components/header/header.ios.css +106 -0
  127. package/dist/node_modules/@ionic/core/dist/collection/components/header/header.md.css +23 -0
  128. package/dist/node_modules/@ionic/core/dist/collection/components/img/img.css +12 -0
  129. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll/infinite-scroll.css +8 -0
  130. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +46 -0
  131. package/dist/node_modules/@ionic/core/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +46 -0
  132. package/dist/node_modules/@ionic/core/dist/collection/components/input/input.ios.css +635 -0
  133. package/dist/node_modules/@ionic/core/dist/collection/components/input/input.md.css +1077 -0
  134. package/dist/node_modules/@ionic/core/dist/collection/components/item/item.ios.css +646 -0
  135. package/dist/node_modules/@ionic/core/dist/collection/components/item/item.md.css +908 -0
  136. package/dist/node_modules/@ionic/core/dist/collection/components/item-divider/item-divider.ios.css +166 -0
  137. package/dist/node_modules/@ionic/core/dist/collection/components/item-divider/item-divider.md.css +232 -0
  138. package/dist/node_modules/@ionic/core/dist/collection/components/item-group/item-group.ios.css +3 -0
  139. package/dist/node_modules/@ionic/core/dist/collection/components/item-group/item-group.md.css +3 -0
  140. package/dist/node_modules/@ionic/core/dist/collection/components/item-option/item-option.ios.css +142 -0
  141. package/dist/node_modules/@ionic/core/dist/collection/components/item-option/item-option.md.css +136 -0
  142. package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.ios.css +121 -0
  143. package/dist/node_modules/@ionic/core/dist/collection/components/item-options/item-options.md.css +118 -0
  144. package/dist/node_modules/@ionic/core/dist/collection/components/item-sliding/item-sliding.css +66 -0
  145. package/dist/node_modules/@ionic/core/dist/collection/components/label/label.ios.css +164 -0
  146. package/dist/node_modules/@ionic/core/dist/collection/components/label/label.md.css +251 -0
  147. package/dist/node_modules/@ionic/core/dist/collection/components/list/list.ios.css +63 -0
  148. package/dist/node_modules/@ionic/core/dist/collection/components/list/list.md.css +104 -0
  149. package/dist/node_modules/@ionic/core/dist/collection/components/list-header/list-header.ios.css +107 -0
  150. package/dist/node_modules/@ionic/core/dist/collection/components/list-header/list-header.md.css +88 -0
  151. package/dist/node_modules/@ionic/core/dist/collection/components/loading/loading.ios.css +95 -0
  152. package/dist/node_modules/@ionic/core/dist/collection/components/loading/loading.md.css +86 -0
  153. package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.ios.css +167 -0
  154. package/dist/node_modules/@ionic/core/dist/collection/components/menu/menu.md.css +163 -0
  155. package/dist/node_modules/@ionic/core/dist/collection/components/menu-button/menu-button.ios.css +167 -0
  156. package/dist/node_modules/@ionic/core/dist/collection/components/menu-button/menu-button.md.css +170 -0
  157. package/dist/node_modules/@ionic/core/dist/collection/components/menu-toggle/menu-toggle.css +3 -0
  158. package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.ios.css +247 -0
  159. package/dist/node_modules/@ionic/core/dist/collection/components/modal/modal.md.css +162 -0
  160. package/dist/node_modules/@ionic/core/dist/collection/components/nav/nav.css +10 -0
  161. package/dist/node_modules/@ionic/core/dist/collection/components/note/note.ios.css +16 -0
  162. package/dist/node_modules/@ionic/core/dist/collection/components/note/note.md.css +17 -0
  163. package/dist/node_modules/@ionic/core/dist/collection/components/picker/picker.ios.css +257 -0
  164. package/dist/node_modules/@ionic/core/dist/collection/components/picker/picker.md.css +244 -0
  165. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column/picker-column.ios.css +145 -0
  166. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column/picker-column.md.css +136 -0
  167. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.ios.css +75 -0
  168. package/dist/node_modules/@ionic/core/dist/collection/components/picker-column-internal/picker-column-internal.md.css +78 -0
  169. package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.ios.css +152 -0
  170. package/dist/node_modules/@ionic/core/dist/collection/components/picker-internal/picker-internal.md.css +148 -0
  171. package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.ios.css +250 -0
  172. package/dist/node_modules/@ionic/core/dist/collection/components/popover/popover.md.css +157 -0
  173. package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.ios.css +206 -0
  174. package/dist/node_modules/@ionic/core/dist/collection/components/progress-bar/progress-bar.md.css +206 -0
  175. package/dist/node_modules/@ionic/core/dist/collection/components/radio/radio.ios.css +331 -0
  176. package/dist/node_modules/@ionic/core/dist/collection/components/radio/radio.md.css +354 -0
  177. package/dist/node_modules/@ionic/core/dist/collection/components/range/range.ios.css +469 -0
  178. package/dist/node_modules/@ionic/core/dist/collection/components/range/range.md.css +614 -0
  179. package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.ios.css +211 -0
  180. package/dist/node_modules/@ionic/core/dist/collection/components/refresher/refresher.md.css +206 -0
  181. package/dist/node_modules/@ionic/core/dist/collection/components/reorder/reorder.ios.css +15 -0
  182. package/dist/node_modules/@ionic/core/dist/collection/components/reorder/reorder.md.css +15 -0
  183. package/dist/node_modules/@ionic/core/dist/collection/components/reorder-group/reorder-group.css +34 -0
  184. package/dist/node_modules/@ionic/core/dist/collection/components/ripple-effect/ripple-effect.css +58 -0
  185. package/dist/node_modules/@ionic/core/dist/collection/components/router-link/router-link.css +29 -0
  186. package/dist/node_modules/@ionic/core/dist/collection/components/router-outlet/route-outlet.css +10 -0
  187. package/dist/node_modules/@ionic/core/dist/collection/components/row/row.css +4 -0
  188. package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.ios.css +354 -0
  189. package/dist/node_modules/@ionic/core/dist/collection/components/searchbar/searchbar.md.css +339 -0
  190. package/dist/node_modules/@ionic/core/dist/collection/components/segment/segment.ios.css +59 -0
  191. package/dist/node_modules/@ionic/core/dist/collection/components/segment/segment.md.css +49 -0
  192. package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.ios.css +410 -0
  193. package/dist/node_modules/@ionic/core/dist/collection/components/segment-button/segment-button.md.css +396 -0
  194. package/dist/node_modules/@ionic/core/dist/collection/components/select/select.ios.css +552 -0
  195. package/dist/node_modules/@ionic/core/dist/collection/components/select/select.md.css +1025 -0
  196. package/dist/node_modules/@ionic/core/dist/collection/components/select-option/select-option.css +3 -0
  197. package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/select-popover.ios.css +14 -0
  198. package/dist/node_modules/@ionic/core/dist/collection/components/select-popover/select-popover.md.css +37 -0
  199. package/dist/node_modules/@ionic/core/dist/collection/components/skeleton-text/skeleton-text.css +53 -0
  200. package/dist/node_modules/@ionic/core/dist/collection/components/spinner/spinner.css +177 -0
  201. package/dist/node_modules/@ionic/core/dist/collection/components/split-pane/split-pane.ios.css +92 -0
  202. package/dist/node_modules/@ionic/core/dist/collection/components/split-pane/split-pane.md.css +92 -0
  203. package/dist/node_modules/@ionic/core/dist/collection/components/tab/tab.css +4 -0
  204. package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.ios.css +87 -0
  205. package/dist/node_modules/@ionic/core/dist/collection/components/tab-bar/tab-bar.md.css +74 -0
  206. package/dist/node_modules/@ionic/core/dist/collection/components/tab-button/tab-button.ios.css +367 -0
  207. package/dist/node_modules/@ionic/core/dist/collection/components/tab-button/tab-button.md.css +391 -0
  208. package/dist/node_modules/@ionic/core/dist/collection/components/tabs/tabs.css +19 -0
  209. package/dist/node_modules/@ionic/core/dist/collection/components/text/text.css +3 -0
  210. package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.ios.css +693 -0
  211. package/dist/node_modules/@ionic/core/dist/collection/components/textarea/textarea.md.css +1142 -0
  212. package/dist/node_modules/@ionic/core/dist/collection/components/thumbnail/thumbnail.css +21 -0
  213. package/dist/node_modules/@ionic/core/dist/collection/components/title/title.ios.css +119 -0
  214. package/dist/node_modules/@ionic/core/dist/collection/components/title/title.md.css +47 -0
  215. package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.ios.css +284 -0
  216. package/dist/node_modules/@ionic/core/dist/collection/components/toast/toast.md.css +305 -0
  217. package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.ios.css +455 -0
  218. package/dist/node_modules/@ionic/core/dist/collection/components/toggle/toggle.md.css +400 -0
  219. package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.ios.css +161 -0
  220. package/dist/node_modules/@ionic/core/dist/collection/components/toolbar/toolbar.md.css +136 -0
  221. package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +101 -0
  222. package/dist/types/global/webmapgl.d.ts +1 -0
  223. package/dist/types/index.d.ts +1 -0
  224. package/dist/webmapgl/index.esm.js +1 -1
  225. package/dist/webmapgl/{p-29a0ba94.entry.js → p-10ecfbc1.entry.js} +3 -3
  226. package/dist/webmapgl/p-10ecfbc1.entry.js.map +1 -0
  227. package/dist/webmapgl/{p-d8674de4.js → p-1109414b.js} +2 -2
  228. package/dist/webmapgl/p-41aed25d.entry.js +8 -0
  229. package/dist/webmapgl/p-41aed25d.entry.js.map +1 -0
  230. package/dist/webmapgl/{p-9a52a393.entry.js → p-4bdbedef.entry.js} +2 -2
  231. package/dist/webmapgl/{p-43063806.entry.js → p-60c4d25c.entry.js} +2 -2
  232. package/dist/webmapgl/{p-47516d22.entry.js → p-725281ca.entry.js} +2 -2
  233. package/dist/webmapgl/{p-8d22e12f.entry.js → p-8e93527b.entry.js} +2 -2
  234. package/dist/webmapgl/p-8e93527b.entry.js.map +1 -0
  235. package/dist/webmapgl/p-b3dc2acc.js.map +1 -1
  236. package/dist/webmapgl/{p-96e77bf2.entry.js → p-c61eaf23.entry.js} +2 -2
  237. package/dist/webmapgl/p-c61eaf23.entry.js.map +1 -0
  238. package/dist/webmapgl/webmapgl.css +1 -1
  239. package/dist/webmapgl/webmapgl.esm.js +1 -1
  240. package/package.json +4 -3
  241. package/CHANGELOG.md +0 -234
  242. package/dist/webmapgl/p-29a0ba94.entry.js.map +0 -1
  243. package/dist/webmapgl/p-8d22e12f.entry.js.map +0 -1
  244. package/dist/webmapgl/p-96e77bf2.entry.js.map +0 -1
  245. package/dist/webmapgl/p-99a83939.entry.js +0 -8
  246. package/dist/webmapgl/p-99a83939.entry.js.map +0 -1
  247. /package/dist/webmapgl/{p-d8674de4.js.map → p-1109414b.js.map} +0 -0
  248. /package/dist/webmapgl/{p-9a52a393.entry.js.map → p-4bdbedef.entry.js.map} +0 -0
  249. /package/dist/webmapgl/{p-43063806.entry.js.map → p-60c4d25c.entry.js.map} +0 -0
  250. /package/dist/webmapgl/{p-47516d22.entry.js.map → p-725281ca.entry.js.map} +0 -0
@@ -0,0 +1,1077 @@
1
+ :host {
2
+ /**
3
+ * @prop --background: Background of the input
4
+ *
5
+ * @prop --color: Color of the input text
6
+ *
7
+ * @prop --padding-top: Top padding of the input
8
+ * @prop --padding-end: Right padding if direction is left-to-right, and left padding if direction is right-to-left of the input
9
+ * @prop --padding-bottom: Bottom padding of the input
10
+ * @prop --padding-start: Left padding if direction is left-to-right, and right padding if direction is right-to-left of the input
11
+ *
12
+ * @prop --placeholder-color: Color of the input placeholder text
13
+ * @prop --placeholder-font-style: Font style of the input placeholder text
14
+ * @prop --placeholder-font-weight: Font weight of the input placeholder text
15
+ * @prop --placeholder-opacity: Opacity of the input placeholder text
16
+ *
17
+ * @prop --highlight-color-focused: The color of the highlight on the input when focused
18
+ * @prop --highlight-color-valid: The color of the highlight on the input when valid
19
+ * @prop --highlight-color-invalid: The color of the highlight on the input when invalid
20
+ *
21
+ * @prop --border-color: Color of the border below the input when using helper text, error text, or counter
22
+ * @prop --border-radius: Radius of the input. A large radius may display unevenly when using fill="outline"; if needed, use shape="round" instead or increase --padding-start.
23
+ * @prop --border-style: Style of the border below the input when using helper text, error text, or counter
24
+ * @prop --border-width: Width of the border below the input when using helper text, error text, or counter
25
+ */
26
+ --placeholder-color: initial;
27
+ --placeholder-font-style: initial;
28
+ --placeholder-font-weight: initial;
29
+ --placeholder-opacity: 0.6;
30
+ --padding-top: 0px;
31
+ --padding-end: 0px;
32
+ --padding-bottom: 0px;
33
+ --padding-start: 0px;
34
+ --background: transparent;
35
+ --color: initial;
36
+ --border-style: solid;
37
+ --highlight-color-focused: var(--ion-color-primary, #3880ff);
38
+ --highlight-color-valid: var(--ion-color-success, #2dd36f);
39
+ --highlight-color-invalid: var(--ion-color-danger, #eb445a);
40
+ /**
41
+ * This is a private API that is used to switch
42
+ * out the highlight color based on the state
43
+ * of the component without having to write
44
+ * different selectors for different fill variants.
45
+ */
46
+ --highlight-color: var(--highlight-color-focused);
47
+ display: block;
48
+ position: relative;
49
+ width: 100%;
50
+ /* stylelint-disable-next-line all */
51
+ padding: 0 !important;
52
+ color: var(--color);
53
+ font-family: var(--ion-font-family, inherit);
54
+ z-index: 2;
55
+ }
56
+
57
+ :host(.legacy-input) {
58
+ display: flex;
59
+ flex: 1;
60
+ align-items: center;
61
+ background: var(--background);
62
+ }
63
+
64
+ :host(.legacy-input) .native-input {
65
+ -webkit-padding-start: var(--padding-start);
66
+ padding-inline-start: var(--padding-start);
67
+ -webkit-padding-end: var(--padding-end);
68
+ padding-inline-end: var(--padding-end);
69
+ padding-top: var(--padding-top);
70
+ padding-bottom: var(--padding-bottom);
71
+ border-radius: var(--border-radius);
72
+ }
73
+
74
+ :host-context(ion-item:not(.item-label):not(.item-has-modern-input)) {
75
+ --padding-start: 0;
76
+ }
77
+
78
+ :host-context(ion-item)[slot=start],
79
+ :host-context(ion-item)[slot=end] {
80
+ width: auto;
81
+ }
82
+
83
+ :host(.legacy-input.ion-color) {
84
+ color: var(--ion-color-base);
85
+ }
86
+
87
+ :host(.ion-color) {
88
+ --highlight-color-focused: var(--ion-color-base);
89
+ }
90
+
91
+ .native-input {
92
+ padding-left: 0;
93
+ padding-right: 0;
94
+ padding-top: 0;
95
+ padding-bottom: 0;
96
+ font-family: inherit;
97
+ font-size: inherit;
98
+ font-style: inherit;
99
+ font-weight: inherit;
100
+ letter-spacing: inherit;
101
+ text-decoration: inherit;
102
+ text-indent: inherit;
103
+ text-overflow: inherit;
104
+ text-transform: inherit;
105
+ text-align: inherit;
106
+ white-space: inherit;
107
+ color: inherit;
108
+ display: inline-block;
109
+ position: relative;
110
+ flex: 1;
111
+ width: 100%;
112
+ max-width: 100%;
113
+ max-height: 100%;
114
+ border: 0;
115
+ outline: none;
116
+ background: transparent;
117
+ box-sizing: border-box;
118
+ appearance: none;
119
+ /**
120
+ * This ensures the input
121
+ * remains on top of any decoration
122
+ * that we render (particularly the
123
+ * outline border when fill="outline").
124
+ * If we did not do this then Axe would
125
+ * be unable to determine the color
126
+ * contrast of the input.
127
+ */
128
+ z-index: 1;
129
+ }
130
+ .native-input::placeholder {
131
+ color: var(--placeholder-color);
132
+ font-family: inherit;
133
+ font-style: var(--placeholder-font-style);
134
+ font-weight: var(--placeholder-font-weight);
135
+ opacity: var(--placeholder-opacity);
136
+ }
137
+ .native-input:-webkit-autofill {
138
+ background-color: transparent;
139
+ }
140
+ .native-input:invalid {
141
+ box-shadow: none;
142
+ }
143
+ .native-input::-ms-clear {
144
+ display: none;
145
+ }
146
+
147
+ .cloned-input {
148
+ top: 0;
149
+ bottom: 0;
150
+ position: absolute;
151
+ pointer-events: none;
152
+ }
153
+ @supports (inset-inline-start: 0) {
154
+ .cloned-input {
155
+ inset-inline-start: 0;
156
+ }
157
+ }
158
+ @supports not (inset-inline-start: 0) {
159
+ .cloned-input {
160
+ left: 0;
161
+ }
162
+ :host-context([dir=rtl]) .cloned-input {
163
+ left: unset;
164
+ right: unset;
165
+ right: 0;
166
+ }
167
+ [dir=rtl] .cloned-input {
168
+ left: unset;
169
+ right: unset;
170
+ right: 0;
171
+ }
172
+ @supports selector(:dir(rtl)) {
173
+ .cloned-input:dir(rtl) {
174
+ left: unset;
175
+ right: unset;
176
+ right: 0;
177
+ }
178
+ }
179
+ }
180
+
181
+ /**
182
+ * The cloned input needs to be disabled on
183
+ * Android otherwise the viewport will still
184
+ * shift when running scroll assist.
185
+ */
186
+ .cloned-input:disabled {
187
+ opacity: 1;
188
+ }
189
+
190
+ :host(.legacy-input) .input-clear-icon {
191
+ margin-left: 0;
192
+ margin-right: 0;
193
+ margin-top: 0;
194
+ margin-bottom: 0;
195
+ }
196
+
197
+ .input-clear-icon {
198
+ -webkit-margin-start: auto;
199
+ margin-inline-start: auto;
200
+ -webkit-margin-end: auto;
201
+ margin-inline-end: auto;
202
+ margin-top: auto;
203
+ margin-bottom: auto;
204
+ padding-left: 0;
205
+ padding-right: 0;
206
+ padding-top: 0;
207
+ padding-bottom: 0;
208
+ background-position: center;
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ width: 30px;
213
+ height: 30px;
214
+ border: 0;
215
+ outline: none;
216
+ background-color: transparent;
217
+ background-repeat: no-repeat;
218
+ color: var(--ion-color-step-600, #666666);
219
+ visibility: hidden;
220
+ appearance: none;
221
+ }
222
+
223
+ :host(.in-item-color) .input-clear-icon {
224
+ color: inherit;
225
+ }
226
+
227
+ /**
228
+ * Normally, we would not want to use :focus
229
+ * here because that would mean tapping the button
230
+ * on mobile would focus it (and keep it focused).
231
+ * However, the clear button always disappears after
232
+ * being activated, so we never get to that state.
233
+ */
234
+ .input-clear-icon:focus {
235
+ opacity: 0.5;
236
+ }
237
+
238
+ :host(.has-value) .input-clear-icon {
239
+ visibility: visible;
240
+ }
241
+
242
+ :host(.has-focus) {
243
+ pointer-events: none;
244
+ }
245
+
246
+ :host(.has-focus) input,
247
+ :host(.has-focus) a,
248
+ :host(.has-focus) button {
249
+ pointer-events: auto;
250
+ }
251
+
252
+ :host-context(.item-label-floating.item-has-placeholder:not(.item-has-value)) {
253
+ opacity: 0;
254
+ }
255
+
256
+ :host-context(.item-label-floating.item-has-placeholder:not(.item-has-value).item-has-focus) {
257
+ transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1);
258
+ opacity: 1;
259
+ }
260
+
261
+ .input-wrapper {
262
+ -webkit-padding-start: var(--padding-start);
263
+ padding-inline-start: var(--padding-start);
264
+ -webkit-padding-end: var(--padding-end);
265
+ padding-inline-end: var(--padding-end);
266
+ padding-top: var(--padding-top);
267
+ padding-bottom: var(--padding-bottom);
268
+ border-radius: var(--border-radius);
269
+ display: flex;
270
+ position: relative;
271
+ flex-grow: 1;
272
+ align-items: stretch;
273
+ height: inherit;
274
+ min-height: inherit;
275
+ transition: background-color 15ms linear;
276
+ background: var(--background);
277
+ line-height: normal;
278
+ }
279
+
280
+ .native-wrapper {
281
+ display: flex;
282
+ position: relative;
283
+ flex-grow: 1;
284
+ width: 100%;
285
+ }
286
+
287
+ :host(.ion-touched.ion-invalid) {
288
+ --highlight-color: var(--highlight-color-invalid);
289
+ }
290
+
291
+ /**
292
+ * The component highlight is only shown
293
+ * on focus, so we can safely set the valid
294
+ * color state when valid. If we
295
+ * set it when .has-focus is present then
296
+ * the highlight color would change
297
+ * from the valid color to the component's
298
+ * color during the transition after the
299
+ * component loses focus.
300
+ */
301
+ :host(.ion-valid) {
302
+ --highlight-color: var(--highlight-color-valid);
303
+ }
304
+
305
+ .input-bottom {
306
+ /**
307
+ * The bottom content should take on the start and end
308
+ * padding so it is always aligned with either the label
309
+ * or the start of the text input.
310
+ */
311
+ -webkit-padding-start: var(--padding-start);
312
+ padding-inline-start: var(--padding-start);
313
+ -webkit-padding-end: var(--padding-end);
314
+ padding-inline-end: var(--padding-end);
315
+ padding-top: 5px;
316
+ padding-bottom: 0;
317
+ display: flex;
318
+ justify-content: space-between;
319
+ border-top: var(--border-width) var(--border-style) var(--border-color);
320
+ font-size: 12px;
321
+ }
322
+
323
+ /**
324
+ * If the input has a validity state, the
325
+ * border and label should reflect that as a color.
326
+ * The invalid state should show if the input is
327
+ * invalid and has already been touched.
328
+ * The valid state should show if the input
329
+ * is valid, has already been touched, and
330
+ * is currently focused. Do not show the valid
331
+ * highlight when the input is blurred.
332
+ */
333
+ :host(.has-focus.ion-valid),
334
+ :host(.ion-touched.ion-invalid) {
335
+ --border-color: var(--highlight-color);
336
+ }
337
+
338
+ /**
339
+ * Error text should only be shown when .ion-invalid is
340
+ * present on the input. Otherwise the helper text should
341
+ * be shown.
342
+ */
343
+ .input-bottom .error-text {
344
+ display: none;
345
+ color: var(--highlight-color-invalid);
346
+ }
347
+
348
+ .input-bottom .helper-text {
349
+ display: block;
350
+ color: var(--ion-color-step-550, #737373);
351
+ }
352
+
353
+ :host(.ion-touched.ion-invalid) .input-bottom .error-text {
354
+ display: block;
355
+ }
356
+
357
+ :host(.ion-touched.ion-invalid) .input-bottom .helper-text {
358
+ display: none;
359
+ }
360
+
361
+ .input-bottom .counter {
362
+ /**
363
+ * Counter should always be at
364
+ * the end of the container even
365
+ * when no helper/error texts are used.
366
+ */
367
+ -webkit-margin-start: auto;
368
+ margin-inline-start: auto;
369
+ color: var(--ion-color-step-550, #737373);
370
+ white-space: nowrap;
371
+ padding-inline-start: 16px;
372
+ }
373
+
374
+ :host(.has-focus) input {
375
+ caret-color: var(--highlight-color);
376
+ }
377
+
378
+ .label-text-wrapper {
379
+ /**
380
+ * This causes the label to take up
381
+ * the entire height of its container
382
+ * while still keeping the text centered.
383
+ */
384
+ display: flex;
385
+ align-items: center;
386
+ /**
387
+ * Label text should not extend
388
+ * beyond the bounds of the input.
389
+ * However, we do not set the max
390
+ * width to 100% because then
391
+ * only the label would show and users
392
+ * would not be able to see what they are typing.
393
+ */
394
+ max-width: 200px;
395
+ transition: color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
396
+ /**
397
+ * This ensures that double tapping this text
398
+ * clicks the <label> and focuses the input
399
+ * when a screen reader is enabled.
400
+ */
401
+ pointer-events: none;
402
+ }
403
+
404
+ /**
405
+ * We need to use two elements instead of
406
+ * one. The .label-text-wrapper is responsible
407
+ * for centering the label text vertically regardless
408
+ * of the input height using flexbox.
409
+ *
410
+ * The .label-text element is responsible for controlling
411
+ * overflow when label-placement="fixed".
412
+ * We want the ellipses to show up when the
413
+ * fixed label overflows, but text-overflow: ellipsis only
414
+ * works on block-level elements. A flex item is
415
+ * considered blockified (https://www.w3.org/TR/css-display-3/#blockify).
416
+ */
417
+ .label-text,
418
+ ::slotted([slot=label]) {
419
+ text-overflow: ellipsis;
420
+ white-space: nowrap;
421
+ overflow: hidden;
422
+ }
423
+
424
+ /**
425
+ * If no label text is placed into the slot
426
+ * then the element should be hidden otherwise
427
+ * there will be additional margins added.
428
+ */
429
+ .label-text-wrapper-hidden,
430
+ .input-outline-notch-hidden {
431
+ display: none;
432
+ }
433
+
434
+ .input-wrapper input {
435
+ /**
436
+ * When the floating label appears on top of the
437
+ * input, we need to fade the input out so that the
438
+ * label does not overlap with the placeholder.
439
+ */
440
+ transition: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);
441
+ }
442
+
443
+ /**
444
+ * Label is on the left of the input in LTR and
445
+ * on the right in RTL.
446
+ */
447
+ :host(.input-label-placement-start) .input-wrapper {
448
+ flex-direction: row;
449
+ }
450
+
451
+ :host(.input-label-placement-start) .label-text-wrapper {
452
+ /**
453
+ * The margin between the label and
454
+ * the input should be on the end
455
+ * when the label sits at the start.
456
+ */
457
+ -webkit-margin-start: 0;
458
+ margin-inline-start: 0;
459
+ -webkit-margin-end: 16px;
460
+ margin-inline-end: 16px;
461
+ margin-top: 0;
462
+ margin-bottom: 0;
463
+ }
464
+
465
+ /**
466
+ * Label is on the right of the input in LTR and
467
+ * on the left in RTL.
468
+ */
469
+ :host(.input-label-placement-end) .input-wrapper {
470
+ flex-direction: row-reverse;
471
+ }
472
+
473
+ /**
474
+ * The margin between the label and
475
+ * the input should be on the start
476
+ * when the label sits at the end.
477
+ */
478
+ :host(.input-label-placement-end) .label-text-wrapper {
479
+ -webkit-margin-start: 16px;
480
+ margin-inline-start: 16px;
481
+ -webkit-margin-end: 0;
482
+ margin-inline-end: 0;
483
+ margin-top: 0;
484
+ margin-bottom: 0;
485
+ }
486
+
487
+ :host(.input-label-placement-fixed) .label-text-wrapper {
488
+ /**
489
+ * The margin between the label and
490
+ * the input should be on the end
491
+ * when the label sits at the start.
492
+ */
493
+ -webkit-margin-start: 0;
494
+ margin-inline-start: 0;
495
+ -webkit-margin-end: 16px;
496
+ margin-inline-end: 16px;
497
+ margin-top: 0;
498
+ margin-bottom: 0;
499
+ }
500
+
501
+ /**
502
+ * Label is on the left of the input in LTR and
503
+ * on the right in RTL. Label also has a fixed width.
504
+ */
505
+ :host(.input-label-placement-fixed) .label-text {
506
+ flex: 0 0 100px;
507
+ width: 100px;
508
+ min-width: 100px;
509
+ max-width: 200px;
510
+ }
511
+
512
+ /**
513
+ * Stacked: Label sits above the input and is scaled down.
514
+ * Floating: Label sits over the input when the input has no
515
+ * value and is blurred. Label sits above the input and is scaled
516
+ * down when the input is focused or has a value.
517
+ *
518
+ */
519
+ :host(.input-label-placement-stacked) .input-wrapper,
520
+ :host(.input-label-placement-floating) .input-wrapper {
521
+ flex-direction: column;
522
+ align-items: start;
523
+ }
524
+
525
+ /**
526
+ * Ensures that the label animates
527
+ * up and to the left in LTR or
528
+ * up and to the right in RTL.
529
+ */
530
+ :host(.input-label-placement-stacked) .label-text-wrapper,
531
+ :host(.input-label-placement-floating) .label-text-wrapper {
532
+ transform-origin: left top;
533
+ max-width: 100%;
534
+ }
535
+ :host-context([dir=rtl]):host(.input-label-placement-stacked) .label-text-wrapper, :host-context([dir=rtl]).input-label-placement-stacked .label-text-wrapper, :host-context([dir=rtl]):host(.input-label-placement-floating) .label-text-wrapper, :host-context([dir=rtl]).input-label-placement-floating .label-text-wrapper {
536
+ transform-origin: right top;
537
+ }
538
+
539
+ @supports selector(:dir(rtl)) {
540
+ :host(.input-label-placement-stacked) .label-text-wrapper:dir(rtl), :host(.input-label-placement-floating) .label-text-wrapper:dir(rtl) {
541
+ transform-origin: right top;
542
+ }
543
+ }
544
+
545
+ /**
546
+ * Ensures the input does not
547
+ * overlap the label.
548
+ */
549
+ :host(.input-label-placement-stacked) input,
550
+ :host(.input-label-placement-floating) input {
551
+ margin-left: 0;
552
+ margin-right: 0;
553
+ margin-top: 1px;
554
+ margin-bottom: 0;
555
+ }
556
+
557
+ /**
558
+ * This makes the label sit over the input
559
+ * when the input is blurred and has no value.
560
+ */
561
+ :host(.input-label-placement-floating) .label-text-wrapper {
562
+ transform: translateY(100%) scale(1);
563
+ }
564
+
565
+ /**
566
+ * The input should be hidden when the label
567
+ * is on top of the input. This prevents the label
568
+ * from overlapping any placeholder value.
569
+ */
570
+ :host(.input-label-placement-floating) input {
571
+ opacity: 0;
572
+ }
573
+
574
+ :host(.has-focus.input-label-placement-floating) input,
575
+ :host(.has-value.input-label-placement-floating) input {
576
+ opacity: 1;
577
+ }
578
+
579
+ /**
580
+ * This makes the label sit above the input.
581
+ */
582
+ :host(.input-label-placement-stacked) .label-text-wrapper,
583
+ :host(.has-focus.input-label-placement-floating) .label-text-wrapper,
584
+ :host(.has-value.input-label-placement-floating) .label-text-wrapper {
585
+ transform: translateY(50%) scale(0.75);
586
+ /**
587
+ * Label text should not extend
588
+ * beyond the bounds of the input.
589
+ */
590
+ max-width: calc(100% / 0.75);
591
+ }
592
+
593
+ :host(.input-fill-solid) {
594
+ --background: var(--ion-color-step-50, #f2f2f2);
595
+ --border-color: var(--ion-color-step-500, gray);
596
+ --border-radius: 4px;
597
+ --padding-start: 16px;
598
+ --padding-end: 16px;
599
+ }
600
+
601
+ /**
602
+ * The solid fill style has a border
603
+ * at the bottom of the input wrapper.
604
+ * As a result, the border on the "bottom
605
+ * content" is not needed.
606
+ */
607
+ :host(.input-fill-solid) .input-wrapper {
608
+ border-bottom: var(--border-width) var(--border-style) var(--border-color);
609
+ }
610
+
611
+ /**
612
+ * If the input has a validity state, the
613
+ * border should reflect that as a color.
614
+ */
615
+ :host(.has-focus.input-fill-solid.ion-valid),
616
+ :host(.input-fill-solid.ion-touched.ion-invalid) {
617
+ --border-color: var(--highlight-color);
618
+ }
619
+
620
+ :host(.input-fill-solid) .input-bottom {
621
+ border-top: none;
622
+ }
623
+
624
+ /**
625
+ * Background and border should be
626
+ * slightly darker on hover.
627
+ */
628
+ @media (any-hover: hover) {
629
+ :host(.input-fill-solid:hover) {
630
+ --background: var(--ion-color-step-100, #e6e6e6);
631
+ --border-color: var(--ion-color-step-750, #404040);
632
+ }
633
+ }
634
+ /**
635
+ * Background and border should be
636
+ * much darker on focus.
637
+ */
638
+ :host(.input-fill-solid.has-focus) {
639
+ --background: var(--ion-color-step-150, #d9d9d9);
640
+ --border-color: var(--ion-color-step-750, #404040);
641
+ }
642
+
643
+ :host(.input-fill-solid) .input-wrapper {
644
+ /**
645
+ * Only the top left and top right borders should.
646
+ * have a radius when using a solid fill.
647
+ */
648
+ border-top-left-radius: var(--border-radius);
649
+ border-top-right-radius: var(--border-radius);
650
+ border-bottom-right-radius: 0px;
651
+ border-bottom-left-radius: 0px;
652
+ }
653
+ :host-context([dir=rtl]):host(.input-fill-solid) .input-wrapper, :host-context([dir=rtl]).input-fill-solid .input-wrapper {
654
+ border-top-left-radius: var(--border-radius);
655
+ border-top-right-radius: var(--border-radius);
656
+ border-bottom-right-radius: 0px;
657
+ border-bottom-left-radius: 0px;
658
+ }
659
+
660
+ @supports selector(:dir(rtl)) {
661
+ :host(.input-fill-solid) .input-wrapper:dir(rtl) {
662
+ border-top-left-radius: var(--border-radius);
663
+ border-top-right-radius: var(--border-radius);
664
+ border-bottom-right-radius: 0px;
665
+ border-bottom-left-radius: 0px;
666
+ }
667
+ }
668
+
669
+ :host(.input-fill-solid.input-label-placement-stacked) .label-text-wrapper,
670
+ :host(.has-focus.input-fill-solid.input-label-placement-floating) .label-text-wrapper,
671
+ :host(.has-value.input-fill-solid.input-label-placement-floating) .label-text-wrapper {
672
+ /**
673
+ * Label text should not extend
674
+ * beyond the bounds of the input.
675
+ */
676
+ max-width: calc(100% / 0.75);
677
+ }
678
+
679
+ :host(.input-fill-outline) {
680
+ --border-color: var(--ion-color-step-300, #b3b3b3);
681
+ --border-radius: 4px;
682
+ --padding-start: 16px;
683
+ --padding-end: 16px;
684
+ }
685
+
686
+ :host(.input-fill-outline.input-shape-round) {
687
+ --border-radius: 28px;
688
+ --padding-start: 32px;
689
+ --padding-end: 32px;
690
+ }
691
+
692
+ /**
693
+ * If the input has a validity state, the
694
+ * border should reflect that as a color.
695
+ */
696
+ :host(.has-focus.input-fill-outline.ion-valid),
697
+ :host(.input-fill-outline.ion-touched.ion-invalid) {
698
+ --border-color: var(--highlight-color);
699
+ }
700
+
701
+ /**
702
+ * Border should be
703
+ * slightly darker on hover.
704
+ */
705
+ @media (any-hover: hover) {
706
+ :host(.input-fill-outline:hover) {
707
+ --border-color: var(--ion-color-step-750, #404040);
708
+ }
709
+ }
710
+ /**
711
+ * The border should get thicker
712
+ * and take on component color when
713
+ * the input is focused.
714
+ */
715
+ :host(.input-fill-outline.has-focus) {
716
+ --border-width: 2px;
717
+ --border-color: var(--highlight-color);
718
+ }
719
+
720
+ /**
721
+ * The bottom content should never have
722
+ * a border with the outline style.
723
+ */
724
+ :host(.input-fill-outline) .input-bottom {
725
+ border-top: none;
726
+ }
727
+
728
+ /**
729
+ * Outline inputs do not have a bottom border.
730
+ * Instead, they have a border that wraps the
731
+ * input + label.
732
+ */
733
+ :host(.input-fill-outline) .input-wrapper {
734
+ border-bottom: none;
735
+ }
736
+
737
+ :host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper,
738
+ :host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper {
739
+ transform-origin: left top;
740
+ position: absolute;
741
+ /**
742
+ * Label text should not extend
743
+ * beyond the bounds of the input.
744
+ */
745
+ max-width: calc(100% - var(--padding-start) - var(--padding-end));
746
+ }
747
+ :host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-stacked .label-text-wrapper, :host-context([dir=rtl]):host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper, :host-context([dir=rtl]).input-fill-outline.input-label-placement-floating .label-text-wrapper {
748
+ transform-origin: right top;
749
+ }
750
+
751
+ @supports selector(:dir(rtl)) {
752
+ :host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper:dir(rtl), :host(.input-fill-outline.input-label-placement-floating) .label-text-wrapper:dir(rtl) {
753
+ transform-origin: right top;
754
+ }
755
+ }
756
+
757
+ /**
758
+ * The label should appear on top of an outline
759
+ * container that overlaps it so it is always clickable.
760
+ */
761
+ :host(.input-fill-outline) .label-text-wrapper,
762
+ :host(.input-fill-outline) .label-text-wrapper {
763
+ position: relative;
764
+ z-index: 1;
765
+ }
766
+
767
+ /**
768
+ * This makes the label sit above the input.
769
+ */
770
+ :host(.has-focus.input-fill-outline.input-label-placement-floating) .label-text-wrapper,
771
+ :host(.has-value.input-fill-outline.input-label-placement-floating) .label-text-wrapper,
772
+ :host(.input-fill-outline.input-label-placement-stacked) .label-text-wrapper {
773
+ transform: translateY(-32%) scale(0.75);
774
+ margin-left: 0;
775
+ margin-right: 0;
776
+ margin-top: 0;
777
+ margin-bottom: 0;
778
+ /**
779
+ * Label text should not extend
780
+ * beyond the bounds of the input.
781
+ */
782
+ max-width: calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75);
783
+ }
784
+
785
+ /**
786
+ * This ensures that the input does not
787
+ * overlap the floating label while still
788
+ * remaining visually centered.
789
+ */
790
+ :host(.input-fill-outline.input-label-placement-stacked) input,
791
+ :host(.input-fill-outline.input-label-placement-floating) input {
792
+ margin-left: 0;
793
+ margin-right: 0;
794
+ margin-top: 6px;
795
+ margin-bottom: 6px;
796
+ }
797
+
798
+ :host(.input-fill-outline) .input-outline-container {
799
+ left: 0;
800
+ right: 0;
801
+ top: 0;
802
+ bottom: 0;
803
+ display: flex;
804
+ position: absolute;
805
+ width: 100%;
806
+ height: 100%;
807
+ }
808
+
809
+ :host(.input-fill-outline) .input-outline-start,
810
+ :host(.input-fill-outline) .input-outline-end {
811
+ pointer-events: none;
812
+ }
813
+
814
+ /**
815
+ * By default, each piece of the container should have
816
+ * a top and bottom border. This gives the appearance
817
+ * of a unified container with a border.
818
+ */
819
+ :host(.input-fill-outline) .input-outline-start,
820
+ :host(.input-fill-outline) .input-outline-notch,
821
+ :host(.input-fill-outline) .input-outline-end {
822
+ border-top: var(--border-width) var(--border-style) var(--border-color);
823
+ border-bottom: var(--border-width) var(--border-style) var(--border-color);
824
+ }
825
+
826
+ /**
827
+ * Ensures long labels do not cause the notch to flow
828
+ * out of bounds.
829
+ */
830
+ :host(.input-fill-outline) .input-outline-notch {
831
+ max-width: calc(100% - var(--padding-start) - var(--padding-end));
832
+ }
833
+
834
+ /**
835
+ * This element ensures that the notch used
836
+ * the size of the scaled text so that the
837
+ * border cut out is the correct width.
838
+ * The text in this element should not
839
+ * be interactive.
840
+ */
841
+ :host(.input-fill-outline) .notch-spacer {
842
+ /**
843
+ * We need $input-md-floating-label-padding of padding on the right.
844
+ * However, we also subtracted $input-md-floating-label-padding from
845
+ * the width of .input-outline-start
846
+ * to create space, so we need to take
847
+ * that into consideration here.
848
+ */
849
+ -webkit-padding-end: 8px;
850
+ padding-inline-end: 8px;
851
+ font-size: calc(1em * 0.75);
852
+ opacity: 0;
853
+ pointer-events: none;
854
+ /**
855
+ * The spacer currently inherits
856
+ * border-box sizing from the Ionic reset styles.
857
+ * However, we do not want to include padding in
858
+ * the calculation of the element dimensions.
859
+ * This code can be removed if input is updated
860
+ * to use the Shadow DOM.
861
+ */
862
+ box-sizing: content-box;
863
+ }
864
+
865
+ :host(.input-fill-outline) .input-outline-start {
866
+ border-top-left-radius: var(--border-radius);
867
+ border-top-right-radius: 0px;
868
+ border-bottom-right-radius: 0px;
869
+ border-bottom-left-radius: var(--border-radius);
870
+ -webkit-border-start: var(--border-width) var(--border-style) var(--border-color);
871
+ border-inline-start: var(--border-width) var(--border-style) var(--border-color);
872
+ /**
873
+ * There should be spacing between the translated text
874
+ * and .input-outline-start. However, we can't add this
875
+ * spacing onto the notch because it would cause the
876
+ * label to look like it is not aligned with the
877
+ * text input. Instead, we subtract a few pixels from
878
+ * this element.
879
+ */
880
+ width: calc(var(--padding-start) - 4px);
881
+ }
882
+ :host-context([dir=rtl]):host(.input-fill-outline) .input-outline-start, :host-context([dir=rtl]).input-fill-outline .input-outline-start {
883
+ border-top-left-radius: 0px;
884
+ border-top-right-radius: var(--border-radius);
885
+ border-bottom-right-radius: var(--border-radius);
886
+ border-bottom-left-radius: 0px;
887
+ }
888
+
889
+ @supports selector(:dir(rtl)) {
890
+ :host(.input-fill-outline) .input-outline-start:dir(rtl) {
891
+ border-top-left-radius: 0px;
892
+ border-top-right-radius: var(--border-radius);
893
+ border-bottom-right-radius: var(--border-radius);
894
+ border-bottom-left-radius: 0px;
895
+ }
896
+ }
897
+
898
+ :host(.input-fill-outline) .input-outline-end {
899
+ -webkit-border-end: var(--border-width) var(--border-style) var(--border-color);
900
+ border-inline-end: var(--border-width) var(--border-style) var(--border-color);
901
+ border-top-left-radius: 0px;
902
+ border-top-right-radius: var(--border-radius);
903
+ border-bottom-right-radius: var(--border-radius);
904
+ border-bottom-left-radius: 0px;
905
+ /**
906
+ * The ending outline fragment
907
+ * should take up the remaining free space.
908
+ */
909
+ flex-grow: 1;
910
+ }
911
+ :host-context([dir=rtl]):host(.input-fill-outline) .input-outline-end, :host-context([dir=rtl]).input-fill-outline .input-outline-end {
912
+ border-top-left-radius: var(--border-radius);
913
+ border-top-right-radius: 0px;
914
+ border-bottom-right-radius: 0px;
915
+ border-bottom-left-radius: var(--border-radius);
916
+ }
917
+
918
+ @supports selector(:dir(rtl)) {
919
+ :host(.input-fill-outline) .input-outline-end:dir(rtl) {
920
+ border-top-left-radius: var(--border-radius);
921
+ border-top-right-radius: 0px;
922
+ border-bottom-right-radius: 0px;
923
+ border-bottom-left-radius: var(--border-radius);
924
+ }
925
+ }
926
+
927
+ /**
928
+ * When the input either has focus or a value,
929
+ * there should be a "cut out" at the top for
930
+ * the floating/stacked label. We simulate this "cut out"
931
+ * by removing the top border from the notch fragment.
932
+ */
933
+ :host(.has-focus.input-fill-outline.input-label-placement-floating) .input-outline-notch,
934
+ :host(.has-value.input-fill-outline.input-label-placement-floating) .input-outline-notch,
935
+ :host(.input-fill-outline.input-label-placement-stacked) .input-outline-notch {
936
+ border-top: none;
937
+ }
938
+
939
+ :host {
940
+ --border-width: 1px;
941
+ --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
942
+ font-size: inherit;
943
+ }
944
+
945
+ :host(.legacy-input) {
946
+ --padding-top: 10px;
947
+ --padding-end: 0;
948
+ --padding-bottom: 10px;
949
+ --padding-start: 8px;
950
+ }
951
+
952
+ :host-context(.item-label-stacked),
953
+ :host-context(.item-label-floating) {
954
+ --padding-top: 8px;
955
+ --padding-bottom: 8px;
956
+ --padding-start: 0;
957
+ }
958
+
959
+ .input-clear-icon ion-icon {
960
+ width: 22px;
961
+ height: 22px;
962
+ }
963
+
964
+ :host(.legacy-input) .native-input[disabled],
965
+ :host(.input-disabled) {
966
+ opacity: 0.38;
967
+ }
968
+
969
+ /**
970
+ * If the input has a validity state, the
971
+ * border and label should reflect that as a color.
972
+ */
973
+ :host(.has-focus.ion-valid),
974
+ :host(.ion-touched.ion-invalid) {
975
+ --border-color: var(--highlight-color);
976
+ }
977
+
978
+ .input-bottom .counter {
979
+ letter-spacing: 0.0333333333em;
980
+ }
981
+
982
+ :host(:not(.legacy-input)) {
983
+ min-height: 56px;
984
+ }
985
+
986
+ /**
987
+ * When the input is focused the label should
988
+ * take on the highlight color. This should
989
+ * only apply to floating or stacked labels.
990
+ */
991
+ :host(.input-label-placement-floating.has-focus) .label-text-wrapper,
992
+ :host(.input-label-placement-stacked.has-focus) .label-text-wrapper {
993
+ color: var(--highlight-color);
994
+ }
995
+
996
+ :host(.has-focus.input-label-placement-floating.ion-valid) .label-text-wrapper,
997
+ :host(.input-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,
998
+ :host(.has-focus.input-label-placement-stacked.ion-valid) .label-text-wrapper,
999
+ :host(.input-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper {
1000
+ color: var(--highlight-color);
1001
+ }
1002
+
1003
+ .input-highlight {
1004
+ bottom: -1px;
1005
+ position: absolute;
1006
+ width: 100%;
1007
+ height: 2px;
1008
+ transform: scale(0);
1009
+ transition: transform 200ms;
1010
+ background: var(--highlight-color);
1011
+ }
1012
+ @supports (inset-inline-start: 0) {
1013
+ .input-highlight {
1014
+ inset-inline-start: 0;
1015
+ }
1016
+ }
1017
+ @supports not (inset-inline-start: 0) {
1018
+ .input-highlight {
1019
+ left: 0;
1020
+ }
1021
+ :host-context([dir=rtl]) .input-highlight {
1022
+ left: unset;
1023
+ right: unset;
1024
+ right: 0;
1025
+ }
1026
+ [dir=rtl] .input-highlight {
1027
+ left: unset;
1028
+ right: unset;
1029
+ right: 0;
1030
+ }
1031
+ @supports selector(:dir(rtl)) {
1032
+ .input-highlight:dir(rtl) {
1033
+ left: unset;
1034
+ right: unset;
1035
+ right: 0;
1036
+ }
1037
+ }
1038
+ }
1039
+
1040
+ :host(.has-focus) .input-highlight {
1041
+ transform: scale(1);
1042
+ }
1043
+
1044
+ /**
1045
+ * Adjust the highlight up by 1px
1046
+ * so it is not cut off by the
1047
+ * the item's line (if one is present).
1048
+ */
1049
+ :host(.in-item) .input-highlight {
1050
+ bottom: 0;
1051
+ }
1052
+ @supports (inset-inline-start: 0) {
1053
+ :host(.in-item) .input-highlight {
1054
+ inset-inline-start: 0;
1055
+ }
1056
+ }
1057
+ @supports not (inset-inline-start: 0) {
1058
+ :host(.in-item) .input-highlight {
1059
+ left: 0;
1060
+ }
1061
+ :host-context([dir=rtl]):host(.in-item) .input-highlight, :host-context([dir=rtl]).in-item .input-highlight {
1062
+ left: unset;
1063
+ right: unset;
1064
+ right: 0;
1065
+ }
1066
+ @supports selector(:dir(rtl)) {
1067
+ :host(.in-item) .input-highlight:dir(rtl) {
1068
+ left: unset;
1069
+ right: unset;
1070
+ right: 0;
1071
+ }
1072
+ }
1073
+ }
1074
+
1075
+ :host(.input-shape-round) {
1076
+ --border-radius: 16px;
1077
+ }