@sky.ui/core 0.0.1

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 (320) hide show
  1. package/LICENSE.md +139 -0
  2. package/README.md +113 -0
  3. package/auto-import-loader.js +60 -0
  4. package/auto-import.js +93 -0
  5. package/dist/custom-elements.json +27051 -0
  6. package/dist/helper/controllers/animation-controller.d.ts +120 -0
  7. package/dist/helper/controllers/animation-controller.js +2 -0
  8. package/dist/helper/controllers/animation-controller.js.map +1 -0
  9. package/dist/helper/controllers/index.d.ts +2 -0
  10. package/dist/helper/controllers/popover-controller.d.ts +162 -0
  11. package/dist/helper/controllers/popover-controller.js +2 -0
  12. package/dist/helper/controllers/popover-controller.js.map +1 -0
  13. package/dist/helper/form-control-base.d.ts +1 -0
  14. package/dist/helper/iconify-offline.d.ts +73 -0
  15. package/dist/helper/iconify-offline.js +2 -0
  16. package/dist/helper/iconify-offline.js.map +1 -0
  17. package/dist/helper/index.d.ts +5 -0
  18. package/dist/helper/internals/form-control-base.d.ts +81 -0
  19. package/dist/helper/internals/form-control-base.js +2 -0
  20. package/dist/helper/internals/form-control-base.js.map +1 -0
  21. package/dist/helper/internals/index.d.ts +1 -0
  22. package/dist/helper/utils/color-resolver.d.ts +139 -0
  23. package/dist/helper/utils/color-resolver.js +2 -0
  24. package/dist/helper/utils/color-resolver.js.map +1 -0
  25. package/dist/helper/utils/index.d.ts +2 -0
  26. package/dist/helper/utils/size-resolver.d.ts +6 -0
  27. package/dist/helper/utils/size-resolver.js +2 -0
  28. package/dist/helper/utils/size-resolver.js.map +1 -0
  29. package/dist/index.d.ts +58 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/sky-accordion/index.d.ts +1 -0
  33. package/dist/sky-accordion/index.js +1 -0
  34. package/dist/sky-accordion/sky-accordion.d.ts +201 -0
  35. package/dist/sky-accordion/sky-accordion.js +85 -0
  36. package/dist/sky-accordion/sky-accordion.js.map +1 -0
  37. package/dist/sky-accordion-item/index.d.ts +1 -0
  38. package/dist/sky-accordion-item/index.js +1 -0
  39. package/dist/sky-accordion-item/sky-accordion-item.d.ts +161 -0
  40. package/dist/sky-accordion-item/sky-accordion-item.js +191 -0
  41. package/dist/sky-accordion-item/sky-accordion-item.js.map +1 -0
  42. package/dist/sky-alert/index.d.ts +1 -0
  43. package/dist/sky-alert/index.js +1 -0
  44. package/dist/sky-alert/sky-alert.d.ts +136 -0
  45. package/dist/sky-alert/sky-alert.js +292 -0
  46. package/dist/sky-alert/sky-alert.js.map +1 -0
  47. package/dist/sky-appbar/index.d.ts +1 -0
  48. package/dist/sky-appbar/index.js +1 -0
  49. package/dist/sky-appbar/sky-appbar.d.ts +84 -0
  50. package/dist/sky-appbar/sky-appbar.js +173 -0
  51. package/dist/sky-appbar/sky-appbar.js.map +1 -0
  52. package/dist/sky-avatar/index.d.ts +1 -0
  53. package/dist/sky-avatar/index.js +1 -0
  54. package/dist/sky-avatar/sky-avatar.d.ts +104 -0
  55. package/dist/sky-avatar/sky-avatar.js +152 -0
  56. package/dist/sky-avatar/sky-avatar.js.map +1 -0
  57. package/dist/sky-badge/index.d.ts +1 -0
  58. package/dist/sky-badge/index.js +1 -0
  59. package/dist/sky-badge/sky-badge.d.ts +154 -0
  60. package/dist/sky-badge/sky-badge.js +148 -0
  61. package/dist/sky-badge/sky-badge.js.map +1 -0
  62. package/dist/sky-breadcrumb/index.d.ts +1 -0
  63. package/dist/sky-breadcrumb/index.js +1 -0
  64. package/dist/sky-breadcrumb/sky-breadcrumb.d.ts +111 -0
  65. package/dist/sky-breadcrumb/sky-breadcrumb.js +230 -0
  66. package/dist/sky-breadcrumb/sky-breadcrumb.js.map +1 -0
  67. package/dist/sky-button/index.d.ts +1 -0
  68. package/dist/sky-button/index.js +1 -0
  69. package/dist/sky-button/sky-button.d.ts +118 -0
  70. package/dist/sky-button/sky-button.js +172 -0
  71. package/dist/sky-button/sky-button.js.map +1 -0
  72. package/dist/sky-button-group/index.d.ts +1 -0
  73. package/dist/sky-button-group/index.js +1 -0
  74. package/dist/sky-button-group/sky-button-group.d.ts +93 -0
  75. package/dist/sky-button-group/sky-button-group.js +281 -0
  76. package/dist/sky-button-group/sky-button-group.js.map +1 -0
  77. package/dist/sky-card/index.d.ts +1 -0
  78. package/dist/sky-card/index.js +1 -0
  79. package/dist/sky-card/sky-card.d.ts +143 -0
  80. package/dist/sky-card/sky-card.js +186 -0
  81. package/dist/sky-card/sky-card.js.map +1 -0
  82. package/dist/sky-carousel/index.d.ts +1 -0
  83. package/dist/sky-carousel/index.js +1 -0
  84. package/dist/sky-carousel/sky-carousel.d.ts +265 -0
  85. package/dist/sky-carousel/sky-carousel.js +211 -0
  86. package/dist/sky-carousel/sky-carousel.js.map +1 -0
  87. package/dist/sky-checkbox/index.d.ts +1 -0
  88. package/dist/sky-checkbox/index.js +1 -0
  89. package/dist/sky-checkbox/sky-checkbox.d.ts +165 -0
  90. package/dist/sky-checkbox/sky-checkbox.js +276 -0
  91. package/dist/sky-checkbox/sky-checkbox.js.map +1 -0
  92. package/dist/sky-chip/index.d.ts +1 -0
  93. package/dist/sky-chip/index.js +1 -0
  94. package/dist/sky-chip/sky-chip.d.ts +95 -0
  95. package/dist/sky-chip/sky-chip.js +210 -0
  96. package/dist/sky-chip/sky-chip.js.map +1 -0
  97. package/dist/sky-col/index.d.ts +1 -0
  98. package/dist/sky-col/index.js +1 -0
  99. package/dist/sky-col/sky-col.d.ts +84 -0
  100. package/dist/sky-col/sky-col.js +46 -0
  101. package/dist/sky-col/sky-col.js.map +1 -0
  102. package/dist/sky-combobox/index.d.ts +1 -0
  103. package/dist/sky-combobox/index.js +1 -0
  104. package/dist/sky-combobox/sky-combobox.d.ts +313 -0
  105. package/dist/sky-combobox/sky-combobox.js +1146 -0
  106. package/dist/sky-combobox/sky-combobox.js.map +1 -0
  107. package/dist/sky-counter/index.d.ts +1 -0
  108. package/dist/sky-counter/index.js +1 -0
  109. package/dist/sky-counter/sky-counter.d.ts +130 -0
  110. package/dist/sky-counter/sky-counter.js +101 -0
  111. package/dist/sky-counter/sky-counter.js.map +1 -0
  112. package/dist/sky-dialog/index.d.ts +1 -0
  113. package/dist/sky-dialog/index.js +1 -0
  114. package/dist/sky-dialog/sky-dialog.d.ts +237 -0
  115. package/dist/sky-dialog/sky-dialog.js +265 -0
  116. package/dist/sky-dialog/sky-dialog.js.map +1 -0
  117. package/dist/sky-divider/index.d.ts +1 -0
  118. package/dist/sky-divider/index.js +1 -0
  119. package/dist/sky-divider/sky-divider.d.ts +120 -0
  120. package/dist/sky-divider/sky-divider.js +42 -0
  121. package/dist/sky-divider/sky-divider.js.map +1 -0
  122. package/dist/sky-drawer/index.d.ts +1 -0
  123. package/dist/sky-drawer/index.js +1 -0
  124. package/dist/sky-drawer/sky-drawer.d.ts +161 -0
  125. package/dist/sky-drawer/sky-drawer.js +177 -0
  126. package/dist/sky-drawer/sky-drawer.js.map +1 -0
  127. package/dist/sky-dropdown/index.d.ts +1 -0
  128. package/dist/sky-dropdown/index.js +1 -0
  129. package/dist/sky-dropdown/sky-dropdown.d.ts +252 -0
  130. package/dist/sky-dropdown/sky-dropdown.js +58 -0
  131. package/dist/sky-dropdown/sky-dropdown.js.map +1 -0
  132. package/dist/sky-dropdown-item/index.d.ts +1 -0
  133. package/dist/sky-dropdown-item/index.js +1 -0
  134. package/dist/sky-dropdown-item/sky-dropdown-item.d.ts +207 -0
  135. package/dist/sky-dropdown-item/sky-dropdown-item.js +341 -0
  136. package/dist/sky-dropdown-item/sky-dropdown-item.js.map +1 -0
  137. package/dist/sky-flexbar/index.d.ts +1 -0
  138. package/dist/sky-flexbar/index.js +1 -0
  139. package/dist/sky-flexbar/sky-flexbar.d.ts +189 -0
  140. package/dist/sky-flexbar/sky-flexbar.js +148 -0
  141. package/dist/sky-flexbar/sky-flexbar.js.map +1 -0
  142. package/dist/sky-flexbox/index.d.ts +1 -0
  143. package/dist/sky-flexbox/index.js +1 -0
  144. package/dist/sky-flexbox/sky-flexbox.d.ts +156 -0
  145. package/dist/sky-flexbox/sky-flexbox.js +40 -0
  146. package/dist/sky-flexbox/sky-flexbox.js.map +1 -0
  147. package/dist/sky-flexcol/index.d.ts +1 -0
  148. package/dist/sky-flexcol/index.js +1 -0
  149. package/dist/sky-flexcol/sky-flexcol.d.ts +154 -0
  150. package/dist/sky-flexcol/sky-flexcol.js +14 -0
  151. package/dist/sky-flexcol/sky-flexcol.js.map +1 -0
  152. package/dist/sky-flexitem/index.d.ts +1 -0
  153. package/dist/sky-flexitem/index.js +1 -0
  154. package/dist/sky-flexitem/sky-flexitem.d.ts +114 -0
  155. package/dist/sky-flexitem/sky-flexitem.js +45 -0
  156. package/dist/sky-flexitem/sky-flexitem.js.map +1 -0
  157. package/dist/sky-form/index.d.ts +1 -0
  158. package/dist/sky-form/index.js +1 -0
  159. package/dist/sky-form/sky-form.d.ts +286 -0
  160. package/dist/sky-form/sky-form.js +66 -0
  161. package/dist/sky-form/sky-form.js.map +1 -0
  162. package/dist/sky-grid/index.d.ts +1 -0
  163. package/dist/sky-grid/index.js +1 -0
  164. package/dist/sky-grid/sky-grid.d.ts +78 -0
  165. package/dist/sky-grid/sky-grid.js +40 -0
  166. package/dist/sky-grid/sky-grid.js.map +1 -0
  167. package/dist/sky-icon/index.d.ts +1 -0
  168. package/dist/sky-icon/index.js +1 -0
  169. package/dist/sky-icon/ion-local.json.js +2 -0
  170. package/dist/sky-icon/ion-local.json.js.map +1 -0
  171. package/dist/sky-icon/sky-icon.d.ts +123 -0
  172. package/dist/sky-icon/sky-icon.js +40 -0
  173. package/dist/sky-icon/sky-icon.js.map +1 -0
  174. package/dist/sky-image/index.d.ts +1 -0
  175. package/dist/sky-image/index.js +1 -0
  176. package/dist/sky-image/sky-image.d.ts +102 -0
  177. package/dist/sky-image/sky-image.js +29 -0
  178. package/dist/sky-image/sky-image.js.map +1 -0
  179. package/dist/sky-input/index.d.ts +1 -0
  180. package/dist/sky-input/index.js +1 -0
  181. package/dist/sky-input/sky-input.d.ts +345 -0
  182. package/dist/sky-input/sky-input.js +820 -0
  183. package/dist/sky-input/sky-input.js.map +1 -0
  184. package/dist/sky-list/index.d.ts +1 -0
  185. package/dist/sky-list/index.js +1 -0
  186. package/dist/sky-list/sky-list.d.ts +85 -0
  187. package/dist/sky-list/sky-list.js +41 -0
  188. package/dist/sky-list/sky-list.js.map +1 -0
  189. package/dist/sky-listitem/index.d.ts +1 -0
  190. package/dist/sky-listitem/index.js +1 -0
  191. package/dist/sky-listitem/sky-listitem.d.ts +76 -0
  192. package/dist/sky-listitem/sky-listitem.js +104 -0
  193. package/dist/sky-listitem/sky-listitem.js.map +1 -0
  194. package/dist/sky-navbar/index.d.ts +1 -0
  195. package/dist/sky-navbar/index.js +1 -0
  196. package/dist/sky-navbar/sky-navbar.d.ts +207 -0
  197. package/dist/sky-navbar/sky-navbar.js +521 -0
  198. package/dist/sky-navbar/sky-navbar.js.map +1 -0
  199. package/dist/sky-navpanel/index.d.ts +1 -0
  200. package/dist/sky-navpanel/index.js +1 -0
  201. package/dist/sky-navpanel/sky-navpanel.d.ts +186 -0
  202. package/dist/sky-navpanel/sky-navpanel.js +404 -0
  203. package/dist/sky-navpanel/sky-navpanel.js.map +1 -0
  204. package/dist/sky-notification/index.d.ts +1 -0
  205. package/dist/sky-notification/index.js +1 -0
  206. package/dist/sky-notification/sky-notification.d.ts +152 -0
  207. package/dist/sky-notification/sky-notification.js +456 -0
  208. package/dist/sky-notification/sky-notification.js.map +1 -0
  209. package/dist/sky-otp/index.d.ts +1 -0
  210. package/dist/sky-otp/index.js +1 -0
  211. package/dist/sky-otp/sky-otp.d.ts +101 -0
  212. package/dist/sky-otp/sky-otp.js +96 -0
  213. package/dist/sky-otp/sky-otp.js.map +1 -0
  214. package/dist/sky-overlay/index.d.ts +1 -0
  215. package/dist/sky-overlay/index.js +1 -0
  216. package/dist/sky-overlay/sky-overlay.d.ts +71 -0
  217. package/dist/sky-overlay/sky-overlay.js +26 -0
  218. package/dist/sky-overlay/sky-overlay.js.map +1 -0
  219. package/dist/sky-pagination/index.d.ts +1 -0
  220. package/dist/sky-pagination/index.js +1 -0
  221. package/dist/sky-pagination/sky-pagination.d.ts +167 -0
  222. package/dist/sky-pagination/sky-pagination.js +453 -0
  223. package/dist/sky-pagination/sky-pagination.js.map +1 -0
  224. package/dist/sky-progress/index.d.ts +1 -0
  225. package/dist/sky-progress/index.js +1 -0
  226. package/dist/sky-progress/sky-progress.d.ts +70 -0
  227. package/dist/sky-progress/sky-progress.js +87 -0
  228. package/dist/sky-progress/sky-progress.js.map +1 -0
  229. package/dist/sky-radio/index.d.ts +1 -0
  230. package/dist/sky-radio/index.js +1 -0
  231. package/dist/sky-radio/sky-radio.d.ts +118 -0
  232. package/dist/sky-radio/sky-radio.js +109 -0
  233. package/dist/sky-radio/sky-radio.js.map +1 -0
  234. package/dist/sky-radio-group/index.d.ts +1 -0
  235. package/dist/sky-radio-group/index.js +1 -0
  236. package/dist/sky-radio-group/sky-radio-group.d.ts +186 -0
  237. package/dist/sky-radio-group/sky-radio-group.js +239 -0
  238. package/dist/sky-radio-group/sky-radio-group.js.map +1 -0
  239. package/dist/sky-range/index.d.ts +1 -0
  240. package/dist/sky-range/index.js +1 -0
  241. package/dist/sky-range/sky-range.d.ts +110 -0
  242. package/dist/sky-range/sky-range.js +196 -0
  243. package/dist/sky-range/sky-range.js.map +1 -0
  244. package/dist/sky-row/index.d.ts +1 -0
  245. package/dist/sky-row/index.js +1 -0
  246. package/dist/sky-row/sky-row.d.ts +57 -0
  247. package/dist/sky-row/sky-row.js +6 -0
  248. package/dist/sky-row/sky-row.js.map +1 -0
  249. package/dist/sky-serial/index.d.ts +1 -0
  250. package/dist/sky-serial/index.js +1 -0
  251. package/dist/sky-serial/sky-serial.d.ts +127 -0
  252. package/dist/sky-serial/sky-serial.js +133 -0
  253. package/dist/sky-serial/sky-serial.js.map +1 -0
  254. package/dist/sky-sheet/index.d.ts +1 -0
  255. package/dist/sky-sheet/index.js +1 -0
  256. package/dist/sky-sheet/sky-sheet.d.ts +70 -0
  257. package/dist/sky-sheet/sky-sheet.js +47 -0
  258. package/dist/sky-sheet/sky-sheet.js.map +1 -0
  259. package/dist/sky-skeleton/index.d.ts +1 -0
  260. package/dist/sky-skeleton/index.js +1 -0
  261. package/dist/sky-skeleton/sky-skeleton.d.ts +80 -0
  262. package/dist/sky-skeleton/sky-skeleton.js +233 -0
  263. package/dist/sky-skeleton/sky-skeleton.js.map +1 -0
  264. package/dist/sky-slider/index.d.ts +1 -0
  265. package/dist/sky-slider/index.js +1 -0
  266. package/dist/sky-slider/sky-slider.d.ts +96 -0
  267. package/dist/sky-slider/sky-slider.js +139 -0
  268. package/dist/sky-slider/sky-slider.js.map +1 -0
  269. package/dist/sky-speeddial/index.d.ts +1 -0
  270. package/dist/sky-speeddial/index.js +1 -0
  271. package/dist/sky-speeddial/sky-speeddial.d.ts +86 -0
  272. package/dist/sky-speeddial/sky-speeddial.js +154 -0
  273. package/dist/sky-speeddial/sky-speeddial.js.map +1 -0
  274. package/dist/sky-spinner/index.d.ts +1 -0
  275. package/dist/sky-spinner/index.js +1 -0
  276. package/dist/sky-spinner/sky-spinner.d.ts +87 -0
  277. package/dist/sky-spinner/sky-spinner.js +334 -0
  278. package/dist/sky-spinner/sky-spinner.js.map +1 -0
  279. package/dist/sky-steps/index.d.ts +1 -0
  280. package/dist/sky-steps/index.js +1 -0
  281. package/dist/sky-steps/sky-steps.d.ts +170 -0
  282. package/dist/sky-steps/sky-steps.js +455 -0
  283. package/dist/sky-steps/sky-steps.js.map +1 -0
  284. package/dist/sky-switch/index.d.ts +1 -0
  285. package/dist/sky-switch/index.js +1 -0
  286. package/dist/sky-switch/sky-switch.d.ts +116 -0
  287. package/dist/sky-switch/sky-switch.js +191 -0
  288. package/dist/sky-switch/sky-switch.js.map +1 -0
  289. package/dist/sky-tab/index.d.ts +1 -0
  290. package/dist/sky-tab/index.js +1 -0
  291. package/dist/sky-tab/sky-tab.d.ts +188 -0
  292. package/dist/sky-tab/sky-tab.js +390 -0
  293. package/dist/sky-tab/sky-tab.js.map +1 -0
  294. package/dist/sky-tab-button/index.d.ts +1 -0
  295. package/dist/sky-tab-button/index.js +1 -0
  296. package/dist/sky-tab-button/sky-tab-button.d.ts +114 -0
  297. package/dist/sky-tab-button/sky-tab-button.js +167 -0
  298. package/dist/sky-tab-button/sky-tab-button.js.map +1 -0
  299. package/dist/sky-theme-provider/index.d.ts +1 -0
  300. package/dist/sky-theme-provider/index.js +1 -0
  301. package/dist/sky-theme-provider/sky-theme-provider.d.ts +169 -0
  302. package/dist/sky-theme-provider/sky-theme-provider.js +12 -0
  303. package/dist/sky-theme-provider/sky-theme-provider.js.map +1 -0
  304. package/dist/sky-theme-switcher/index.d.ts +1 -0
  305. package/dist/sky-theme-switcher/index.js +1 -0
  306. package/dist/sky-theme-switcher/sky-theme-switcher.d.ts +92 -0
  307. package/dist/sky-theme-switcher/sky-theme-switcher.js +43 -0
  308. package/dist/sky-theme-switcher/sky-theme-switcher.js.map +1 -0
  309. package/dist/sky-tooltip/index.d.ts +1 -0
  310. package/dist/sky-tooltip/index.js +1 -0
  311. package/dist/sky-tooltip/sky-tooltip.d.ts +156 -0
  312. package/dist/sky-tooltip/sky-tooltip.js +242 -0
  313. package/dist/sky-tooltip/sky-tooltip.js.map +1 -0
  314. package/package.json +475 -0
  315. package/plugins/rollup-plugin.d.ts +19 -0
  316. package/plugins/rollup-plugin.js +129 -0
  317. package/plugins/vite-plugin.d.ts +22 -0
  318. package/plugins/vite-plugin.js +116 -0
  319. package/plugins/webpack-plugin.d.ts +12 -0
  320. package/plugins/webpack-plugin.js +46 -0
@@ -0,0 +1,1146 @@
1
+ import{__decorate as t,__metadata as e}from"tslib";import{css as i,LitElement as r,html as s}from"lit";import{property as o,state as a,query as n,queryAll as l,queryAssignedElements as p,customElement as d}from"lit/decorators.js";import{unsafeHTML as h}from"lit/directives/unsafe-html.js";import{when as c}from"lit/directives/when.js";import{repeat as y}from"lit/directives/repeat.js";import{classMap as u}from"lit/directives/class-map.js";import{resolveColor as v}from"../helper/utils/color-resolver.js";import{PopoverController as g}from"../helper/controllers/popover-controller.js";import{FormControlBase as m}from"../helper/internals/form-control-base.js";import{SkyIcon as f}from"../sky-icon/sky-icon.js";import{SkyCheckbox as b}from"../sky-checkbox/sky-checkbox.js";var x;let k=class extends m{static{x=this}static{this.dependencies={"sky-icon":f,"sky-checkbox":b}}static{this._SEARCH_DEBOUNCE_MS=150}static{this._SEARCH_DEBOUNCE_OPTIONS_THRESHOLD=100}static{this.styles=i`
2
+ :host {
3
+ display: block;
4
+ font-family: var(--sky-font);
5
+ width: 100%;
6
+ }
7
+
8
+ :host([disabled]) {
9
+ pointer-events: none;
10
+ opacity: 0.6;
11
+ }
12
+
13
+ :host([readonly]) .input-wrapper {
14
+ cursor: default;
15
+ }
16
+
17
+ :host([variant="highlight"]) {
18
+ .label{
19
+ color: var(--sky-dropdown-color);
20
+ }
21
+ }
22
+
23
+ .combo-box-container:focus-within .label {
24
+ color: var(--sky-dropdown-color);
25
+ font-size: var(--sky-font-size-sm);
26
+ transition: all 0.3s ease;
27
+ }
28
+ .label {
29
+ font-size: var(--sky-font-size-sm);
30
+ margin-bottom: 5px;
31
+ text-align: start;
32
+ white-space: nowrap;
33
+ overflow: hidden;
34
+ text-overflow: ellipsis;
35
+ font-family: var(--sky-font);
36
+ }
37
+
38
+ .combo-box-container:focus-within[compact] .label {
39
+ font-size: var(--sky-font-size-xs);
40
+ color: var(--sky-dropdown-color);
41
+ }
42
+
43
+ .combo-box-container {
44
+ position: relative;
45
+ display: flex;
46
+ flex-direction: column;
47
+ max-width: 100%;
48
+ overflow: visible;
49
+ width: 100%;
50
+ }
51
+
52
+ .combo-box-container.shake {
53
+ animation: shake 0.3s ease-in-out;
54
+ animation-iteration-count: 1;
55
+ }
56
+
57
+ @keyframes shake {
58
+ 0% {
59
+ transform: translateX(0);
60
+ }
61
+ 25% {
62
+ transform: translateX(-3px);
63
+ }
64
+ 50% {
65
+ transform: translateX(3px);
66
+ }
67
+ 75% {
68
+ transform: translateX(-3px);
69
+ }
70
+ 100% {
71
+ transform: translateX(0);
72
+ }
73
+ }
74
+
75
+ .search-container {
76
+ display: flex;
77
+ align-items: center;
78
+ padding: 8px 10px;
79
+ gap: 5px;
80
+ border-bottom: 1px solid var(--sky-border-light);
81
+ justify-content: space-between;
82
+ margin-bottom: 5px;
83
+ }
84
+
85
+ .search-container sky-icon {
86
+ width: 16px;
87
+ height: 16px;
88
+ color: var(--sky-text-secondary);
89
+ transition: color 0.15s ease;
90
+ }
91
+
92
+ .search-container:has(.input:focus) sky-icon {
93
+ color: var(--sky-active-primary);
94
+ }
95
+
96
+ .new-option-btn {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ width: 22px;
101
+ height: 22px;
102
+ border-radius: var(--sky-radius-primary);
103
+ margin-left: 6px;
104
+ cursor: pointer;
105
+ background: var(--sky-hover-primary);
106
+ border: var(--sky-border-primary);
107
+ box-shadow: var(--sky-box-shadow-primary);
108
+ color: var(--sky-dropdown-color);
109
+ flex-shrink: 0;
110
+ transition: color 0.15s ease;
111
+ }
112
+ .new-option-btn:hover {
113
+ color: var(--sky-active-primary);
114
+ }
115
+ .new-option-btn[disabled] {
116
+ opacity: 0.6;
117
+ pointer-events: none;
118
+ }
119
+
120
+ .input-wrapper {
121
+ display: flex;
122
+ align-items: center;
123
+ background: var(--sky-glass-primary);
124
+ box-sizing: border-box;
125
+ border-radius: var(--sky-radius-secondary);
126
+ height: 38px;
127
+ width: 100%;
128
+ flex-wrap: nowrap;
129
+ position: relative;
130
+ border: var(--sky-border-primary);
131
+ box-shadow: var(--sky-box-shadow-primary);
132
+ transition: all 0.3s ease;
133
+ flex: 1 1 auto;
134
+ min-width: 0;
135
+
136
+ }
137
+
138
+ .input-wrapper:focus-visible {
139
+ border-bottom: 1px solid var(--sky-dropdown-color);
140
+ outline: none;
141
+ }
142
+
143
+ .input-wrapper::before {
144
+ content: "";
145
+ position: absolute;
146
+ inset: 0px;
147
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
148
+ var(--sky-saturation-primary);
149
+ -webkit-backdrop-filter: var(--sky-blur-primary)
150
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
151
+ z-index: -1;
152
+ border-radius: inherit;
153
+ }
154
+
155
+ .input-wrapper::after {
156
+ content: "";
157
+ position: absolute;
158
+ top: -1px;
159
+ left: -1px;
160
+ right: -1px;
161
+ bottom: -1px;
162
+ border-radius: inherit;
163
+ border: 1px solid transparent;
164
+ border-bottom-color: transparent;
165
+ opacity: 0;
166
+ transition:
167
+ opacity 0.3s ease,
168
+ border-color 0.3s ease;
169
+ pointer-events: none;
170
+ }
171
+
172
+ .input-wrapper[open]::after {
173
+ opacity: 1;
174
+ border-bottom-color: var(--sky-dropdown-color);
175
+ }
176
+
177
+ :host([validationActive]:invalid) .input-wrapper::after {
178
+ opacity: 1;
179
+ border-bottom-color: var(--sky-danger-primary);
180
+ }
181
+ :host([validationActive]:invalid) .label {
182
+ color: var(--sky-danger-primary);
183
+ }
184
+
185
+ :host([validationActive]:invalid) .icon-slot {
186
+ color: var(--sky-danger-primary);
187
+ }
188
+
189
+ .placeholder-label.active[compact] {
190
+ top: 10px;
191
+ background-color: var(--sky-dropdown-color);
192
+ color: white;
193
+ font-size: var(--sky-font-size-xs);
194
+ padding: 0 5px;
195
+ border-radius: 4px;
196
+ }
197
+
198
+ .input-wrapper[compact] {
199
+ height: 30px;
200
+ }
201
+
202
+ :host([compact]) .placeholder-label {
203
+ font-size: var(--sky-font-size-sm);
204
+ }
205
+
206
+ sky-icon {
207
+ display: inline-block;
208
+ width: 1em;
209
+ height: 1em;
210
+ }
211
+
212
+ .chip-container {
213
+ margin-left: 5px;
214
+ display: flex;
215
+ gap: 8px;
216
+ flex: 1 1 auto;
217
+ min-width: 0;
218
+ flex-wrap: nowrap;
219
+ }
220
+
221
+ :dir(rtl).chip-container {
222
+ margin-right: 5px;
223
+ margin-left: 0px;
224
+ }
225
+
226
+ .chip-container::-webkit-scrollbar {
227
+ display: none;
228
+ }
229
+
230
+ .chip-container[compact] {
231
+ gap: 4px;
232
+ }
233
+
234
+ .chip {
235
+ background-color: var(--sky-glass-primary);
236
+ border-radius: var(--sky-radius-primary);
237
+ padding: 4px 8px;
238
+ font-size: var(--sky-font-size-sm);
239
+ display: flex;
240
+ align-items: center;
241
+ gap: 6px;
242
+ flex-shrink: 0;
243
+ min-width: 0;
244
+ border: var(--sky-border-primary);
245
+ box-shadow: var(--sky-box-shadow-primary);
246
+ font-family: var(--sky-font);
247
+ }
248
+
249
+ .chip .chip-label {
250
+ min-width: 0;
251
+ flex: 1 1 auto;
252
+ overflow: hidden;
253
+ text-overflow: ellipsis;
254
+ white-space: nowrap;
255
+ }
256
+
257
+ .chip[single-select] {
258
+ background-color: transparent;
259
+ box-shadow: none;
260
+ border: none;
261
+ font-size: var(--sky-font-size-md);
262
+ padding: 4px;
263
+ gap: 0;
264
+ overflow: hidden;
265
+ text-overflow: ellipsis;
266
+ white-space: nowrap;
267
+ min-width: 0;
268
+ }
269
+
270
+ .chip[single-select] .chip-label {
271
+ flex: 1 1 auto;
272
+ min-width: 0;
273
+ }
274
+
275
+ :host([icon-left]) .chip[single-select] {
276
+ padding:4px 0;
277
+ }
278
+
279
+ .chip[single-select] .remove-chip {
280
+ display: none;
281
+ }
282
+
283
+ .chip .remove-chip[compact] {
284
+ flex-shrink: 0;
285
+ }
286
+ .remove-chip-inner {
287
+ font-size: var(--sky-font-size-md);
288
+ color: var(--sky-dropdown-color);
289
+ background-color: var(--sky-hover-primary);
290
+ border-radius: 50%;
291
+ border: var(--sky-border-primary);
292
+ }
293
+ .remove-chip-inner:hover {
294
+ color: var(--sky-danger-primary);
295
+ }
296
+ .remove-chip:hover {
297
+ color: var(--sky-danger-primary);
298
+ }
299
+
300
+ .chip .remove-chip {
301
+ position: static;
302
+ flex-shrink: 0;
303
+ align-self: center;
304
+ font-size: var(--sky-font-size-sm);
305
+ background-color: var(--sky-hover-primary);
306
+ border-radius: 50%;
307
+ cursor: pointer;
308
+ box-shadow: var(--sky-box-shadow-primary);
309
+ border: var(--sky-border-primary);
310
+ }
311
+
312
+ .input {
313
+ border: none;
314
+ font-family: var(--sky-font);
315
+ outline: none;
316
+ font-size: var(--sky-font-size-md);
317
+ background: transparent;
318
+ box-sizing: border-box;
319
+ color: var(--sky-text-secondary);
320
+ width: 100%;
321
+ transition: all 0.2 ease-in-out;
322
+ }
323
+
324
+ .search-container:has(.input:focus:focus) {
325
+ border-bottom-color: var(--sky-active-primary);
326
+ }
327
+
328
+ .input:-webkit-autofill {
329
+ -webkit-text-fill-color: var(--sky-text-secondary, inherit) !important;
330
+ transition: background-color 9999s ease-in-out 0s !important;
331
+ }
332
+
333
+ .input[disabled] {
334
+ opacity: 70%;
335
+ color: var(--sky-text-primary);
336
+ cursor: disabled;
337
+ }
338
+
339
+ .input-wrapper[disabled] {
340
+ opacity: 0.6;
341
+ pointer-events: none;
342
+ }
343
+
344
+ .dropdown {
345
+ position: fixed;
346
+ padding: 5px;
347
+ background: var(--sky-glass-primary);
348
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
349
+ var(--sky-saturation-primary);
350
+ -webkit-backdrop-filter: var(--sky-blur-primary)
351
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
352
+ border-radius: var(--sky-radius-secondary);
353
+ box-shadow: var(--sky-box-shadow-primary);
354
+ box-sizing: border-box;
355
+ pointer-events: auto;
356
+ margin: 0;
357
+
358
+ border: var(--sky-border-primary);
359
+
360
+ }
361
+
362
+ .dropdown-scroller {
363
+ max-height: var(--sky-scroll-height);
364
+ overflow: auto;
365
+ }
366
+
367
+ .dropdown-scroller::-webkit-scrollbar {
368
+ width: 4px;
369
+ height: 4px;
370
+ }
371
+
372
+ .dropdown-scroller::-webkit-scrollbar-thumb {
373
+ background-color: var(--sky-text-tertiary);
374
+ border-radius: 4px;
375
+ transition: background-color 0.3s ease-in-out;
376
+
377
+ cursor: grab;
378
+ }
379
+
380
+ .dropdown-scroller::-webkit-scrollbar-thumb:hover {
381
+ background-color: var(--sky-text-secondary);
382
+ transition: background-color 0.3s ease-in-out;
383
+ }
384
+
385
+ .dropdown-scroller::-webkit-scrollbar-track {
386
+ background-color: var(--sky-border-light);
387
+ border-radius: 4px;
388
+ }
389
+
390
+ .dropdown-scroller::-webkit-scrollbar-button {
391
+ background-color: transparent;
392
+ }
393
+
394
+ .dropdown-item.active {
395
+ background-color: var(--sky-hover-primary);
396
+ }
397
+ .dropdown-item.selected {
398
+ color: var(--sky-dropdown-color, #007bff);
399
+ }
400
+
401
+ .dropdown-item.active.selected {
402
+ background-color: var(--sky-active-g0);
403
+ }
404
+
405
+ .dropdown-item {
406
+ display: flex;
407
+ align-items: center;
408
+ gap: 8px;
409
+ padding: 8px 10px;
410
+ border-radius: var(--sky-radius-secondary);
411
+ cursor: pointer;
412
+ text-align: left;
413
+ font-size: var(--sky-font-size-sm);
414
+ color: var(--sky-text-primary);
415
+ transition: all 0.2s ease-in-out;
416
+ box-sizing: border-box;
417
+ margin: 2px 0;
418
+ font-family: var(--sky-font);
419
+ }
420
+
421
+ :host([compact]) .dropdown-item {
422
+ font-size: var(--sky-font-size-sm);
423
+ padding: 5px 8px;
424
+ margin: 1px 0;
425
+ }
426
+
427
+ .icon-slot {
428
+ display: none;
429
+ justify-content: center;
430
+ font-size: var(--sky-font-size-xl);
431
+ align-items: center;
432
+ border-radius: var(--sky-radius-secondary);
433
+ height: inherit;
434
+ max-height: 100%;
435
+ box-sizing: border-box;
436
+ min-width: 36px;
437
+ background: var(--sky-glass-primary);
438
+ color: var(--sky-text-primary);
439
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
440
+ var(--sky-saturation-primary);
441
+ -webkit-backdrop-filter: var(--sky-blur-primary)
442
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
443
+ box-shadow: var(--sky-box-shadow-primary);
444
+
445
+ transition:
446
+ transform 0.3s ease,
447
+ box-shadow 0.3s ease,
448
+ color 0.3s ease;
449
+ }
450
+
451
+ .hidden-chips-dropdown {
452
+ position: fixed; /* important: popover top layer */
453
+ background: var(--sky-glass-primary);
454
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
455
+ var(--sky-saturation-primary);
456
+ -webkit-backdrop-filter: var(--sky-blur-primary)
457
+ var(--sky-brightness-primary) var(--sky-saturation-primary);
458
+ box-shadow: var(--sky-box-shadow-primary);
459
+ border-radius: var(--sky-radius-secondary);
460
+ border: var(--sky-border-primary);
461
+ width: max-content;
462
+
463
+ opacity: 0;
464
+ transform: scale(0.98);
465
+ transition: opacity 0.15s ease, transform 0.15s ease;
466
+ margin: 0;
467
+ }
468
+
469
+ .hidden-chips-dropdown:popover-open {
470
+ opacity: 1;
471
+ transform: scale(1);
472
+ }
473
+
474
+
475
+ .hidden-chip-inner {
476
+ padding: 4px 8px;
477
+ display: flex;
478
+ align-items: center;
479
+ justify-content: space-between;
480
+ cursor: pointer;
481
+ gap: 5px;
482
+ font-size: var(--sky-font-size-sm);
483
+ border-bottom: var(--sky-border-primary);
484
+ font-family: var(--sky-font);
485
+ }
486
+
487
+ .hidden-chip-inner:last-child {
488
+ border-bottom: none;
489
+ }
490
+
491
+ .icon-slot[filled] {
492
+ display: flex;
493
+ cursor: pointer;
494
+ }
495
+ .icon-slot.left {
496
+ border-right: var(--sky-border-primary);
497
+ }
498
+
499
+ :dir(rtl) .icon-slot.left {
500
+ border-left: var(--sky-border-primary);
501
+ border-right: unset;
502
+ }
503
+
504
+ .icon-slot.right {
505
+ border-left: var(--sky-border-primary);
506
+ }
507
+
508
+ :dir(rtl) .icon-slot.right {
509
+ border-right: var(--sky-border-primary);
510
+ border-left: unset;
511
+ }
512
+
513
+ .input-wrapper[open] .icon-slot {
514
+ transform: translate(-5px, -5px);
515
+ border: var(--sky-border-primary) !important;
516
+ box-shadow: var(--sky-box-shadow-primary);
517
+ color: var(--sky-dropdown-color);
518
+ background-color: var(--sky-glass-primary);
519
+ }
520
+
521
+ :dir(rtl) .input-wrapper[open] .icon-slot {
522
+ transform: translate(5px, -5px);
523
+ }
524
+
525
+ .input-wrapper[open] .icon-slot.right {
526
+ transform: translate(5px, -5px);
527
+ }
528
+
529
+ :dir(rtl) .input-wrapper[open] .icon-slot.right {
530
+ transform: translate(-5px, -5px);
531
+ }
532
+
533
+ .placeholder-label {
534
+ white-space: nowrap;
535
+ padding: 0 8px;
536
+ flex: 1 1 0%;
537
+ text-align: start;
538
+ font-size: var(--sky-font-size-md);
539
+ color: var(--sky-text-tertiary);
540
+ transition: all 0.3s ease;
541
+ pointer-events: none;
542
+ overflow: hidden;
543
+ text-overflow: ellipsis;
544
+ font-family: var(--sky-font);
545
+ }
546
+
547
+ .placeholder-label.active {
548
+ display: none;
549
+ }
550
+
551
+ .placeholder-label.active[compact] {
552
+ top: 0px;
553
+ left: 30px;
554
+ }
555
+
556
+ :dir(rtl).placeholder-label.active[compact] {
557
+ left: unset;
558
+ right: 30px;
559
+ }
560
+
561
+ .input-wrapper:has(.icon-slot[filled].right)
562
+ .placeholder-label:not(.active) {
563
+ left: 15px;
564
+ }
565
+
566
+ :dir(rtl):has(.icon-slot[filled].right) .placeholder-label:not(.active) {
567
+ left: unset;
568
+ right: 15px;
569
+ }
570
+
571
+ .input-wrapper:has(.icon-slot[filled].right) .placeholder-label.active {
572
+ left: 15px;
573
+ }
574
+ .input-wrapper:has(.icon-slot[filled].left) .placeholder-label.active {
575
+ left: 40px;
576
+ }
577
+
578
+ :dir(rtl):has(.icon-slot[filled].right) .placeholder-label.active {
579
+ left: unset;
580
+ right: 15px;
581
+ }
582
+ :dir(rtl):has(.icon-slot[filled].left) .placeholder-label.active {
583
+ left: unset;
584
+ right: 40px;
585
+ }
586
+
587
+ .placeholder-label.active[compact] {
588
+ top: 0px;
589
+ left: 20px;
590
+ background-color: var(--sky-dropdown-color);
591
+ color: white;
592
+ font-size: var(--sky-font-size-xs);
593
+ padding: 0 5px;
594
+ border-radius: var(--sky-radius-primary);
595
+ }
596
+ :dir(rtl) .placeholder-label.active[compact] {
597
+ left: unset;
598
+ right: 20px;
599
+ }
600
+
601
+ .input-wrapper:has(.icon-slot[filled].left)
602
+ .placeholder-label.active[compact] {
603
+ left: 30px;
604
+ background-color: var(--sky-dropdown-color);
605
+ color: white;
606
+ font-size: var(--sky-font-size-xs);
607
+ padding: 0 5px;
608
+ border-radius: var(--sky-radius-primary);
609
+ }
610
+
611
+ :dir(rtl)
612
+ .input-wrapper:has(.icon-slot[filled].left)
613
+ .placeholder-label.active[compact] {
614
+ left: unset;
615
+ right: 30px;
616
+ }
617
+
618
+ .input-wrapper:has(.icon-slot[filled].right) input {
619
+ padding: 0px 0 0 15px;
620
+ }
621
+
622
+ :dir(rtl) .input-wrapper:has(.icon-slot[filled].right) input {
623
+ padding: 0px 15px 0 0;
624
+ }
625
+
626
+ .input-wrapper:has(.icon-slot[filled].right) .clear-button {
627
+ padding-right: 40px;
628
+ }
629
+ .input-wrapper:has(.icon-slot[filled].right) .dropdown-button {
630
+ right: 40px;
631
+ }
632
+
633
+ .input-wrapper:has(.icon-slot[filled].left)
634
+ .placeholder-label:not(.active) {
635
+ left: 45px;
636
+ }
637
+ .input-wrapper:has(.icon-slot[filled].left)
638
+ .placeholder-label:not(.active)[compact] {
639
+ left: 35px;
640
+ }
641
+
642
+ .input-wrapper:has(.icon-slot[filled].left) input {
643
+ padding: 0px 10px 0 5px;
644
+ }
645
+
646
+ :dir(rtl) .input-wrapper:has(.icon-slot[filled].right) .clear-button {
647
+ padding-right: unset;
648
+ padding-left: 40px;
649
+ }
650
+ :dir(rtl) .input-wrapper:has(.icon-slot[filled].right) .dropdown-button {
651
+ right: unset;
652
+ left: 40px;
653
+ }
654
+
655
+ :dir(rtl)
656
+ .input-wrapper:has(.icon-slot[filled].left)
657
+ .placeholder-label:not(.active) {
658
+ left: unset;
659
+ right: 45px;
660
+ }
661
+ :dir(rtl)
662
+ .input-wrapper:has(.icon-slot[filled].left)
663
+ .placeholder-label:not(.active)[compact] {
664
+ left: unset;
665
+ right: 35px;
666
+ }
667
+
668
+ :dir(rtl) .input-wrapper:has(.icon-slot[filled].left) input {
669
+ padding: 0px 5px 0 10px;
670
+ }
671
+
672
+ .dropdown-item:hover {
673
+ background-color: var(--sky-hover-primary);
674
+ }
675
+
676
+ .clear-button {
677
+ position: absolute;
678
+ right: 30px;
679
+ border: none;
680
+ font-size: var(--sky-font-size-xl);
681
+ color: var(--sky-dropdown-color);
682
+ background-color: var(--sky-hover-primary);
683
+ border-radius: 50%;
684
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
685
+ var(--sky-saturation-primary);
686
+ cursor: pointer;
687
+ transition: color 0.3s ease;
688
+ }
689
+
690
+ :dir(rtl) .clear-button {
691
+ left: 30px;
692
+ right: unset;
693
+ }
694
+ .clear-button[compact] {
695
+ font-size: var(--sky-font-size-md);
696
+ }
697
+
698
+ .clear-button[loading] {
699
+ right: 55px;
700
+ }
701
+
702
+ :dir(rtl) .clear-button[loading] {
703
+ right: unset;
704
+ left: 55px;
705
+ }
706
+
707
+ .clear-button:hover {
708
+ color: var(--sky-danger-primary);
709
+ }
710
+
711
+ .dropdown-button {
712
+ color: var(--sky-text-primary);
713
+ height: 100%;
714
+ width: auto;
715
+ aspect-ratio: 1;
716
+ display: flex;
717
+ border: none;
718
+ font-size: var(--sky-font-size-sm);
719
+ cursor: pointer;
720
+ transition: color 0.3s ease;
721
+ }
722
+
723
+ :dir(rtl) .dropdown-button {
724
+ left: 0px;
725
+ right: unset;
726
+ }
727
+
728
+ .dropdown-button[compact] {
729
+ font-size: var(--sky-font-size-md);
730
+ }
731
+
732
+ .dropdown-button[loading] {
733
+ right: 40px;
734
+ }
735
+
736
+ :dir(rtl) .dropdown-button[loading] {
737
+ right: unset;
738
+ left: 40px;
739
+ }
740
+ .input-wrapper:has(.clear-button) input {
741
+ padding-right: 40px;
742
+ }
743
+
744
+ :dir(rtl).input-wrapper:has(.clear-button) input {
745
+ padding-right: unset;
746
+ padding-left: 40px;
747
+ }
748
+
749
+ .loading-indicator {
750
+ position: absolute;
751
+ right: 30px;
752
+ width: 16px;
753
+ height: 16px;
754
+ border: 2px solid var(--sky-text-white);
755
+ border-top: 2px solid var(--sky-dropdown-color, #007bff);
756
+ border-radius: 50%;
757
+ animation: spin 1s linear infinite;
758
+ }
759
+
760
+ :dir(rtl) .loading-indicator {
761
+ right: unset;
762
+ left: 30px;
763
+ }
764
+
765
+ :dir(rtl) .input-wrapper:has(.icon-slot[filled].right) .loading-indicator {
766
+ left: 45px;
767
+ right: unset;
768
+ }
769
+
770
+ ::slotted(.icon-slot) {
771
+ display: block;
772
+ }
773
+
774
+ @keyframes spin {
775
+ 0% {
776
+ transform: rotate(0deg);
777
+ }
778
+ 100% {
779
+ transform: rotate(360deg);
780
+ }
781
+ }
782
+
783
+ .highlight {
784
+ color: var(--sky-dropdown-color);
785
+ font-weight: var(--sky-font-weight-semibold);
786
+ }
787
+
788
+ .progress-container {
789
+ display: flex;
790
+ flex-direction: column;
791
+ justify-content: flex-start;
792
+ align-items: flex-start;
793
+ position: absolute;
794
+ width: 100%;
795
+ top: 95%;
796
+ }
797
+
798
+ .progress-message {
799
+ pointer-events: none;
800
+ width: 100%;
801
+ overflow: hidden;
802
+ white-space: nowrap;
803
+ text-overflow: ellipsis;
804
+ font-size: var(--sky-font-size-sm);
805
+ margin-left: 5px;
806
+ font-family: var(--sky-font);
807
+ }
808
+
809
+ :dir(rtl) .progress-message {
810
+ margin-left: unset;
811
+ margin-right: 5px;
812
+ }
813
+
814
+ .error-list {
815
+ list-style: none;
816
+ margin: 0;
817
+ padding: 0;
818
+ width: 100%;
819
+ }
820
+
821
+ .error {
822
+ font-size: var(--sky-font-size-xs);
823
+ color: var(--sky-danger-primary);
824
+ text-align: start;
825
+ white-space: nowrap;
826
+ text-overflow: ellipsis;
827
+ font-family: var(--sky-font);
828
+ }
829
+ .sky-checkbox {
830
+ appearance: none;
831
+ flex-shrink: 0;
832
+ width: 16px;
833
+ height: 16px;
834
+ border-radius: 6px;
835
+ margin-right: 5px;
836
+ border: 1px solid var(--sky-text-tertiary);
837
+ background-color: transparent;
838
+ box-shadow: none;
839
+ cursor: pointer;
840
+ position: relative;
841
+ transition:
842
+ background-color 0.3s ease,
843
+ border-color 0.3s ease,
844
+ box-shadow 0.3s ease;
845
+ }
846
+
847
+ .sky-checkbox:hover {
848
+ background-color: var(--sky-text-tertiary);
849
+ border-color: var(--sky-text-tertiary);
850
+ }
851
+
852
+ .sky-checkbox:focus-visible {
853
+ background-color: var(--sky-text-tertiary);
854
+ border-color: var(--sky-text-tertiary);
855
+ outline: none;
856
+ }
857
+
858
+ .sky-checkbox:checked {
859
+ background-color: var(--sky-active-primary);
860
+ border-color: var(--sky-active-primary);
861
+ }
862
+
863
+ .sky-checkbox::after {
864
+ content: "";
865
+ width: 8px;
866
+ height: 4px;
867
+ border: 2px solid var(--sky-text-white);
868
+ border-top: none;
869
+ border-right: none;
870
+ position: absolute;
871
+ top: 6px;
872
+ left: 50%;
873
+ transform: translate(-50%, -50%) rotate(-90deg) scale(0.8);
874
+ opacity: 0;
875
+ transition:
876
+ opacity 0.2s ease-in-out,
877
+ transform 0.2s ease-in-out;
878
+ }
879
+
880
+ .sky-checkbox.indeterminate {
881
+ background-color: var(--sky-active-primary);
882
+ border-color: var(--sky-active-primary);
883
+ }
884
+
885
+ .sky-checkbox.indeterminate::after {
886
+ width: 8px;
887
+ height: 2px;
888
+ background-color: var(--sky-text-white);
889
+ border: none;
890
+ top: 50%;
891
+ left: 50%;
892
+ opacity: 1;
893
+ transform: translate(-50%, -50%) scale(1);
894
+ }
895
+
896
+ .sky-checkbox:checked::after {
897
+ opacity: 1;
898
+ transform: translate(-50%, -50%) rotate(-45deg) scale(1);
899
+ }
900
+
901
+ .sky-checkbox:disabled {
902
+ opacity: 0.6;
903
+ cursor: not-allowed;
904
+ }
905
+ `}constructor(){super(),this.value="",this.placeholder="Select An Option",this.searchPlaceholder="Search...",this.label="",this.options=[],this.chipSize=20,this.color="primary",this.clearable=!1,this.loading=!1,this.compact=!1,this.disabled=!1,this.searchable=!1,this.multiSelect=!1,this.visibleChips=2,this.selectAll=!1,this.validations=[],this.showErrors=!1,this.errorDisplayMode="single",this.required=!1,this.emitFullObject=!1,this.emittedKey="value",this.displayKey="",this.addOption=!1,this.validationArrayFormat=!1,this.prefix="",this.suffix="",this.prefixColor="",this.suffixColor="",this.justify="flex-start",this.zIndex=11,this.height="200px",this.requiredMessage="Selection is required.",this.readonly=!1,this.enforceMinOneSelection=!1,this.openAbove=!1,this.validationActive=!1,this.invalid=!1,this.variant="default",this.searchQuery="",this.filteredOptions=[],this.focused=!1,this.open=!1,this.selectedItems=[],this.hiddenChipsOpen=!1,this.activeIndex=-1,this.validationErrors=[],this.validationStatus=[],this.hasLeftIcon=!1,this.hasRightIcon=!1,this.optionSlotSet=new Set,this._searchDebounceId=null,this.dropdownPopover=new g(this,{getAnchor:()=>this.inputWrapperEl,getPopover:()=>this.dropdownEl,cssVarLeft:"--sky-dd-left",cssVarTop:"--sky-dd-top",cssVarWidth:"--sky-dd-width",getPlacement:()=>"bottom",getAlign:()=>"start",getGap:()=>6,getPadding:()=>8,getMatchAnchorWidth:()=>!0,getMaxWidthToViewport:()=>!0,getMaxWidthMode:()=>"cap",getFlip:()=>!0,getFlipOrder:()=>[],getAnimateReposition:()=>!0,getRepositionMs:()=>160,getCloseOnEscape:()=>!0,getCloseOnOutside:()=>!0,getRestoreFocusOnClose:()=>!0,onOpenChange:(t,e)=>{this.open=t,t?(this.validationActive=!0,this.filterOptions(),requestAnimationFrame(()=>this.focusOnOpen())):(this.activeIndex=-1,this.searchQuery="",this.emitSearchQueryChanged(),this.filterOptions(),this.hiddenChipsOpen=!1,this.hiddenPopover.closePopover("api"))}}),this.hiddenPopover=new g(this,{getAnchor:()=>this.overflowChipEl,getPopover:()=>this.hiddenDropdownEl,cssVarLeft:"--sky-hc-left",cssVarTop:"--sky-hc-top",cssVarWidth:"--sky-hc-width",getPlacement:()=>"bottom",getAlign:()=>"center",getGap:()=>4,getPadding:()=>8,getMatchAnchorWidth:()=>!1,getMaxWidthToViewport:()=>!0,getMaxWidthMode:()=>"cap",getFlip:()=>!0,getFlipOrder:()=>[],getAnimateReposition:()=>!0,getRepositionMs:()=>120,getCloseOnEscape:()=>!0,getCloseOnOutside:()=>!0,getRestoreFocusOnClose:()=>!1,onOpenChange:t=>{this.hiddenChipsOpen=t,t&&this.open&&this.dropdownPopover.closePopover("api")}}),this.refreshOptionSlots=()=>{const t=new Set;this.querySelectorAll('[slot^="option-"]').forEach(e=>{const i=e.slot;i&&t.add(i)}),this.optionSlotSet=t},this.onSearchKeydown=t=>{const{key:e,shiftKey:i}=t;if("Enter"===e)return t.preventDefault(),t.stopPropagation(),void this.commitDropdownEnter();if("ArrowDown"===e||"ArrowUp"===e||"Tab"===e){t.preventDefault(),t.stopPropagation();const i=this.searchable||this.addOption,r=this.multiSelect&&this.selectAll?i?1:0:this.headerRows,s=this.headerRows+Math.max(0,this.filteredOptions.length)-1,o="ArrowUp"===e||"Tab"===e&&t.shiftKey?-1:1;this.activeIndex<r?this.activeIndex=r:this.activeIndex=this.activeIndex+o<r?s:this.activeIndex+o>s?r:this.activeIndex+o,this.scrollActiveItemIntoView()}return"Escape"===e?(t.preventDefault(),t.stopPropagation(),void this.dropdownPopover.closePopover("escape")):void 0},this.handleAddaddOption=t=>{if(t.stopPropagation(),this.disabled||this.readonly)return;if(!this.canAddaddOption())return;const e=this.searchQuery.trim();this.dispatchEvent(new CustomEvent("add-new-option",{detail:{value:e},bubbles:!0,composed:!0})),this.searchQuery="",this.emitSearchQueryChanged(),this.filterOptions()},this.onIconSlotChange=()=>{this.hasLeftIcon=(this.iconLeftEls?.length??0)>0,this.hasRightIcon=(this.iconRightEls?.length??0)>0},this.captureDefaultValue("")}static{this.shadowRootOptions={...r.shadowRootOptions,delegatesFocus:!0}}connectedCallback(){super.connectedCallback(),this.hasAttribute("tabindex")||(this.tabIndex=this.disabled?-1:0),this.refreshOptionSlots()}firstUpdated(){this.dropdownPopover.refreshTargets(),this.hiddenPopover.refreshTargets()}getFormValue(){if(this.disabled||!this.name)return null;if(this.multiSelect){const t=new FormData;return this.selectedItems.forEach(e=>{const i=this.emitFullObject?JSON.stringify(e):String(this.getOptionValue(e));t.append(this.name,i)}),0===this.selectedItems.length&&this.required&&t.append(this.name,""),t}{if(0===this.selectedItems.length)return"";const t=this.selectedItems[0];return this.emitFullObject?JSON.stringify(t):String(this.getOptionValue(t))}}setValueFromFormState(t){if(null===t||""===t)return this.value=this.multiSelect?[]:"",void(this.selectedItems=[]);if(this.multiSelect){let e=[];if(t instanceof FormData)e=t.getAll(this.name);else if(Array.isArray(t))e=t;else if("string"==typeof t)try{const i=JSON.parse(t);e=Array.isArray(i)?i:[t]}catch{e=[t]}this.setValueFromArray(e)}else{let e="";"string"==typeof t?e=t:t instanceof FormData?e=t.get(this.name)?.toString()||"":Array.isArray(t)&&t.length>0&&(e=t[0].toString()),this.value=e,this.syncSelectedItemsWithValue()}}syncFormValue(){if(!this.name||this.disabled)return void this.internals.setFormValue(null);const t=this.getFormValue();if(null!==t)if(this.multiSelect&&Array.isArray(t)){const e=new FormData;t.forEach(t=>{null!=t&&""!==t&&e.append(this.name,String(t))}),this.internals.setFormValue(e)}else this.internals.setFormValue(t);else this.internals.setFormValue(null)}setValueFromArray(t){const e=Array.isArray(this.options)?this.options:[];this.selectedItems=e.filter(e=>{const i=this.getOptionValue(e),r=this.emitFullObject?JSON.stringify(e):String(i);return t.some(t=>{const e=String(t);if(!this.emitFullObject)return e===r;try{const t=JSON.parse(e);return JSON.stringify(t)===r}catch{return e===r}})}),this.value=this.selectedItems.map(t=>this.emitFullObject?t:this.getOptionValue(t))}getValidityAnchor(){return this}isEmpty(){return this.multiSelect?0===this.selectedItems.length:0===this.selectedItems.length||!this.value}getNativeControl(){return this.inputWrapperEl||null}getCustomErrorMessage(){return this.validationErrors?.[0]||""}onFormReset(){super.onFormReset(),this.searchQuery="",this.emitSearchQueryChanged(),this.open=!1,this.invalid=!1,this.validationErrors=[],this.validationActive=!1}onFormDisabled(t){this.disabled=t}onFormStateRestore(t){this.setValueFromFormState(t)}toggleSelectAll(){if(this.disabled||this.readonly)return;const t=t=>String(this.getOptionValue(t));if(this.isAllFilteredSelected()){const e=new Set(this.filteredOptions.map(t=>String(this.getOptionValue(t.original)))),i=this.selectedItems.filter(i=>!e.has(t(i)));if(this.enforceMinOneSelection&&0===i.length)return;this.selectedItems=i}else{const e=new Set(this.selectedItems.map(e=>t(e))),i=this.filteredOptions.map(t=>t.original).filter(i=>!e.has(t(i)));this.selectedItems=[...this.selectedItems,...i]}const e=this.selectedItems.map(t=>this.emitFullObject?t:this.getOptionValue(t));this.value=e,this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:e,selectedItems:[...this.selectedItems],emittedValues:e,isFilteredSelection:!!this.searchQuery.trim()},bubbles:!0,composed:!0})),this.syncFormValue(),this.syncValidity(),this.requestUpdate()}isAllFilteredSelected(){if(0===this.filteredOptions.length)return!1;return this.filteredOptions.map(t=>this.getOptionValue(t.original)).every(t=>this.selectedItems.some(e=>this.getOptionValue(e)===t))}truncateText(t,e){return t.length>e?t.slice(0,e)+"...":t}validateInput(){if(!this.validationActive)return;this.validationErrors=[];const t=this.validationArrayFormat?this.selectedItems:this.value;if(this.required&&this.isEmpty())this.validationErrors.push(this.requiredMessage||"Selection is required.");else if(Array.isArray(this.validations)&&this.validations.length)for(const e of this.validations){const i=e(t);!0!==i&&this.validationErrors.push(String(i||"Invalid value."))}this.invalid=this.validationErrors.length>0,this.dispatchEvent(new CustomEvent(this.invalid?"validation-error":"validation-success",{detail:this.invalid?{errors:this.validationErrors}:{value:this.selectedItems},bubbles:!0,composed:!0})),this.syncValidity(),this.requestUpdate()}validateForForm(){if(this.disabled)return"";const t=this.validationArrayFormat?this.selectedItems:this.value;if(Array.isArray(this.validations)&&this.validations.length)for(const e of this.validations){const i=e(t);if(!0!==i)return String(i||"Invalid value.")}return this.enforceMinOneSelection&&this.isEmpty()?this.requiredMessage||"At least one selection is required.":this.required&&this.isEmpty()?this.requiredMessage||"Selection is required.":""}focus(t){super.focus(t),this.searchInputEl?this.searchInputEl.focus(t):this.inputWrapperEl&&this.inputWrapperEl.focus(t)}blur(){this.open&&this.dropdownPopover.closePopover("light-dismiss"),super.blur()}handleFocus(){this.focused=!0,this.validationActive||(this.validationActive=!0)}reset(){this.value=this.multiSelect?[]:"",this.selectedItems=[],this.searchQuery="",this.emitSearchQueryChanged(),this.filterOptions(),this.validationErrors=[],this.validationActive=!1,this.open=!1,this.invalid=!1,this.syncFormValue(),this.syncValidity(),this.requestUpdate()}openDropdown(){this.disabled||this.readonly||this.dropdownPopover.openPopover()}closeDropdown(){this.dropdownPopover.closePopover("api")}clearSelection(){this.handleClear()}handleBlur(){this.focused=!1,this.validationActive&&this.validateInput()}updated(t){t.has("color")&&this.style.setProperty("--sky-dropdown-color",v(this.color)),t.has("height")&&this.style.setProperty("--sky-scroll-height",this.height)}willUpdate(t){t.has("value")&&(this.syncSelectedItemsWithValue(),this.syncFormValue(),this.syncValidity()),t.has("options")&&(Array.isArray(this.options)||(this.options=[]),this.syncSelectedItemsWithValue(),this.filterOptions(),this.syncFormValue(),this.syncValidity()),t.has("searchable")&&this.filterOptions(),t.has("searchQuery")&&this.filterOptions(),t.has("validationErrors")&&this.requestUpdate()}syncSelectedItemsWithValue(){const t=Array.isArray(this.options)?this.options:[],e=this.multiSelect&&Array.isArray(this.value)&&0===this.value.length;if(null==this.value||""===this.value||e)return this.selectedItems=[],void(this.value=this.multiSelect?[]:"");if(this.multiSelect&&"string"==typeof this.value)try{const t=JSON.parse(this.value);Array.isArray(t)&&(this.value=t)}catch(t){}const i=t=>{const e=this.getOptionValue(t);return"object"==typeof e?JSON.stringify(e):String(e)};if(this.multiSelect){const e=Array.isArray(this.value)?this.value:[this.value],r=new Set(e.map(t=>this.emitFullObject&&"object"==typeof t?JSON.stringify(t):String(t)));this.selectedItems=t.filter(t=>{const e=this.emitFullObject?JSON.stringify(t):i(t);return r.has(e)}),this.value=this.selectedItems.map(t=>this.emitFullObject?t:this.getOptionValue(t))}else{const e=this.emitFullObject&&"object"==typeof this.value?JSON.stringify(this.value):String(this.value),r=t.find(t=>(this.emitFullObject?JSON.stringify(t):i(t))===e);this.selectedItems=r?[r]:[],this.value=r?this.emitFullObject?r:this.getOptionValue(r):""}}filterOptions(){const t=Array.isArray(this.options)?this.options:[],e=(t,e)=>{const i=this.getOptionLabel(t);return{original:t,_idx:e,label:i,highlighted:i}};if(!this.searchable||!this.searchQuery.trim())return void(this.filteredOptions=t.map(e));const i=this.searchQuery.toLowerCase();this.filteredOptions=t.map(e).filter(t=>String(t.label).toLowerCase().includes(i)).map(t=>{const e=new RegExp(`(${i})`,"gi");return{...t,highlighted:String(t.label).replace(e,t=>`<span class="highlight">${t}</span>`)}})}emitSearchQueryChanged(){this.dispatchEvent(new CustomEvent("search-query-changed",{detail:{searchQuery:this.searchQuery},bubbles:!0,composed:!0}))}handleInput(t){if(this.disabled||this.readonly)return;this.searchQuery=t.target.value;const e=Array.isArray(this.options)?this.options.length:0,i=this.searchable&&e>x._SEARCH_DEBOUNCE_OPTIONS_THRESHOLD,r=()=>{this.filterOptions(),this.emitSearchQueryChanged()};i?(null!=this._searchDebounceId&&clearTimeout(this._searchDebounceId),this._searchDebounceId=setTimeout(()=>{this._searchDebounceId=null,r()},x._SEARCH_DEBOUNCE_MS)):r()}disconnectedCallback(){super.disconnectedCallback(),null!=this._searchDebounceId&&(clearTimeout(this._searchDebounceId),this._searchDebounceId=null)}handleClear(){if(this.disabled||this.readonly)return;const t=this.multiSelect?this.selectedItems.length>0:!!this.value;this.enforceMinOneSelection&&t||(this.value=this.multiSelect?[]:"",this.selectedItems=[],this.searchQuery="",this.emitSearchQueryChanged(),this.open=!1,this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value,selectedItems:[],isFilteredSelection:!1},bubbles:!0,composed:!0})),this.syncFormValue(),this.syncValidity())}selectOption(t){if(this.disabled||this.readonly)return;const e=t=>this.emitFullObject?t:this.getOptionValue(t),i=t=>{const e=this.getOptionValue(t);return"object"==typeof e?JSON.stringify(e):String(e)},r=""!==this.searchQuery.trim();if(!this.multiSelect){const s=this.selectedItems.length&&i(this.selectedItems[0])===i(t);return s&&this.enforceMinOneSelection?void(this.open=!1):(s?(this.selectedItems=[],this.value=""):(this.selectedItems=[t],this.value=e(t)),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value,selectedItems:this.selectedItems,emittedValues:this.selectedItems.map(e),isFilteredSelection:r},bubbles:!0,composed:!0})),this.searchQuery="",this.emitSearchQueryChanged(),this.dropdownPopover.closePopover("api"),this.syncFormValue(),this.syncValidity(),void this.requestUpdate())}const s=this.selectedItems.findIndex(e=>i(e)===i(t));let o;o=s>-1?[...this.selectedItems.slice(0,s),...this.selectedItems.slice(s+1)]:[...this.selectedItems,t],this.enforceMinOneSelection&&0===o.length||(this.selectedItems=o,this.value=o.map(e),this.validateInput(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value,selectedItems:this.selectedItems,emittedValues:this.value,isFilteredSelection:r},bubbles:!0,composed:!0})),this.syncFormValue(),this.syncValidity(),this.open=!0,this.requestUpdate())}toggleHiddenChips(t){t.stopPropagation(),t.preventDefault(),this.disabled||this.readonly||(this.open&&this.dropdownPopover.closePopover("api"),this.hiddenPopover.toggle())}renderHiddenChipsDropdown(){return s`
906
+ <div
907
+ class="hidden-chips-dropdown"
908
+ part="hidden-chips-dropdown"
909
+ popover="manual"
910
+ @toggle=${this.hiddenPopover.onToggle}
911
+ @click=${t=>t.stopPropagation()}
912
+ style="
913
+ left: var(--sky-hc-left, 0px);
914
+ top: var(--sky-hc-top, 0px);
915
+ width: var(--sky-hc-width, max-content);
916
+ z-index: ${this.zIndex};
917
+ "
918
+ >
919
+ ${y(this.selectedItems.slice(this.visibleChips),t=>String(this.getOptionValue(t)),t=>s`
920
+ <div class="hidden-chip-inner" part="hidden-chip-inner">
921
+ <span part="hidden-chip-label">
922
+ ${this.truncateText(String(this.getOptionLabel(t)),this.chipSize)}
923
+ </span>
924
+ <sky-icon
925
+ part="remove-chip-icon"
926
+ class="remove-chip-inner"
927
+ icon="ion:close"
928
+ @click=${e=>{e.stopPropagation(),this.removeChip(t)}}
929
+ ></sky-icon>
930
+ </div>
931
+ `)}
932
+ </div>
933
+ `}removeChip(t){if(this.disabled||this.readonly)return;const e=t=>String(this.getOptionValue(t)),i=this.selectedItems.filter(i=>e(i)!==e(t));if(!this.enforceMinOneSelection||0!==i.length){if(this.selectedItems=i,this.selectedItems.length<=this.visibleChips&&this.hiddenPopover.closePopover("api"),this.multiSelect){const t=this.selectedItems.map(t=>this.emitFullObject?t:this.getOptionValue(t));this.value=t,this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:t,selectedItems:[...this.selectedItems],emittedValues:t,isFilteredSelection:!1},bubbles:!0,composed:!0}))}else this.value="",this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value,selectedItems:[],isFilteredSelection:!1},bubbles:!0,composed:!0}));this.syncFormValue(),this.syncValidity(),this.validateInput(),this.requestUpdate()}}renderChips(){if(!this.multiSelect&&this.selectedItems.length)return s`
934
+ <span class="chip" single-select part="single-select-chip">
935
+ <span class="chip-label" part="chip-label"
936
+ >${this.getOptionLabel(this.selectedItems[0])}</span
937
+ >
938
+ </span>
939
+ `;const t=Array.isArray(this.selectedItems)?this.selectedItems.slice(0,this.visibleChips):[],e=this.selectedItems.length-this.visibleChips;return s`
940
+ ${y(t,t=>String(this.getOptionValue(t)),t=>s`
941
+ <span class="chip" ?compact=${this.compact} part="chip">
942
+ <span class="chip-label" part="chip-label"
943
+ >${this.truncateText(String(this.getOptionLabel(t)),this.chipSize)}</span
944
+ >
945
+ ${c(this.multiSelect,()=>s`
946
+ <sky-icon
947
+ class="remove-chip"
948
+ part="remove-chip-icon"
949
+ ?compact=${this.compact}
950
+ @click=${e=>{e.stopPropagation(),this.removeChip(t)}}
951
+ icon="ion:close"
952
+ ></sky-icon>
953
+ `)}
954
+ </span>
955
+ `)}
956
+ ${c(e>0,()=>s`
957
+ <span
958
+ class="chip overflow-chip"
959
+ part="overflow-chip"
960
+ style="cursor:pointer"
961
+ ?compact=${this.compact}
962
+ @click=${this.toggleHiddenChips}
963
+ >
964
+ + ${e}
965
+ </span>
966
+ `)}
967
+ `}handleKeydown(t){if(t.target?.closest(".search-container"))return;const{key:e,shiftKey:i}=t;if(!this.open&&("ArrowDown"===e||"ArrowUp"===e||"Enter"===e))return this.dropdownPopover.openPopover(),void t.preventDefault();if(!this.open)return;const r=this.searchable||this.addOption,s=this.multiSelect&&this.selectAll?r?1:0:this.headerRows,o=this.headerRows+Math.max(0,this.filteredOptions.length)-1;if(this.activeIndex<s&&(this.activeIndex=s),"ArrowDown"===e){const e=this.activeIndex<s?s:this.activeIndex;return this.activeIndex=e>=o?s:e+1,this.scrollActiveItemIntoView(),void t.preventDefault()}if("ArrowUp"===e){const e=this.activeIndex<s?s:this.activeIndex;return this.activeIndex=e<=s?o:e-1,this.scrollActiveItemIntoView(),void t.preventDefault()}if("Tab"===e){if(i){const t=this.activeIndex<s?s:this.activeIndex;this.activeIndex=t<=s?o:t-1}else{const t=this.activeIndex<s?s:this.activeIndex;this.activeIndex=t>=o?s:t+1}return this.scrollActiveItemIntoView(),void t.preventDefault()}return"Enter"===e?(t.preventDefault(),t.stopPropagation(),void this.commitDropdownEnter()):this.readonly?void("Escape"===e&&(this.open=!1,t.preventDefault())):"Home"===e?(this.activeIndex=s,this.scrollActiveItemIntoView(),void t.preventDefault()):"End"===e?(this.activeIndex=Math.max(s,o),this.scrollActiveItemIntoView(),void t.preventDefault()):void 0}get headerRows(){let t=0;return(this.searchable||this.addOption)&&(t+=1),this.multiSelect&&this.selectAll&&(t+=1),t}getOptionByActiveIndex(){if(!this.open)return null;const t=this.activeIndex;if(t<0)return null;if((this.searchable||this.addOption)&&0===t)return{kind:"search"};const e=this.searchable||this.addOption?1:0;if(this.multiSelect&&this.selectAll&&t===e)return{kind:"select-all"};const i=t-this.headerRows;return i>=0&&i<this.filteredOptions.length?{kind:"option",optionIndex:i}:null}commitDropdownEnter(){const t=this.getOptionByActiveIndex();if(t)if("search"!==t.kind)if("select-all"!==t.kind){if("option"===t.kind&&"number"==typeof t.optionIndex){const e=this.filteredOptions[t.optionIndex].original;this.selectOption(e),this.searchQuery="",this.emitSearchQueryChanged()}}else this.toggleSelectAll();else this.addOption&&this.canAddaddOption()?(this.dispatchEvent(new CustomEvent("add-new-option",{detail:{value:this.searchQuery.trim()},bubbles:!0,composed:!0})),this.searchQuery="",this.emitSearchQueryChanged(),this.filterOptions()):this.filteredOptions.length>0&&(this.selectOption(this.filteredOptions[0].original),this.searchQuery="",this.emitSearchQueryChanged())}focusOnOpen(){const t=this.searchInputEl;if(t)return document.activeElement!==t&&requestAnimationFrame(()=>t.focus()),this.activeIndex=0,void this.scrollActiveItemIntoView();let e=0;if(this.selectedItems.length>0){const t=this.getOptionValue(this.selectedItems[0]),i=this.filteredOptions.findIndex(e=>this.getOptionValue(e.original)===t);i>=0&&(e=i)}this.activeIndex=this.headerRows+e,this.scrollActiveItemIntoView()}canAddaddOption(){if(!this.addOption)return!1;const t=this.searchQuery.trim();if(!t)return!1;return!(Array.isArray(this.options)?this.options:[]).some(e=>{const i=String(this.getOptionLabel(e)||"").toLowerCase(),r=(this.getOptionValue(e)??"").toString().toLowerCase();return i===t.toLowerCase()||r===t.toLowerCase()})}scrollActiveItemIntoView(){const t=Array.from(this.rowEls).find(t=>Number(t.dataset.rowIndex)===this.activeIndex);t?.scrollIntoView({block:"nearest",behavior:"smooth"})}toggleDropdown(t){t.stopPropagation(),this.disabled||this.readonly||(this.hiddenChipsOpen&&this.hiddenPopover.closePopover("api"),this.validationActive=!0,this.dropdownPopover.toggle())}renderDropdown(){return s`
968
+ <div
969
+ class="dropdown"
970
+ part="dropdown"
971
+ popover="manual"
972
+ @toggle=${this.dropdownPopover.onToggle}
973
+ @click=${t=>t.stopPropagation()}
974
+ style="
975
+ left: var(--sky-dd-left, 0px);
976
+ top: var(--sky-dd-top, 0px);
977
+ min-width: var(--sky-dd-width, 100%);
978
+ "
979
+ >
980
+ ${c(this.searchable||this.addOption,()=>s`
981
+ <div
982
+ class="search-container"
983
+ data-row-index="0"
984
+ part="search-container"
985
+ >
986
+ <sky-icon icon="ion:search"></sky-icon>
987
+
988
+ <input
989
+ .value=${this.searchQuery}
990
+ part="search-input"
991
+ tabindex="0"
992
+ ?readonly=${this.readonly||!this.searchable&&!this.addOption}
993
+ @input=${this.searchable||this.addOption?this.handleInput:null}
994
+ @keydown=${this.onSearchKeydown}
995
+ @focus=${this.searchable||this.addOption?this.handleFocus:null}
996
+ @blur=${this.searchable||this.addOption?this.handleBlur:null}
997
+ ?compact=${this.compact}
998
+ ?disabled=${this.disabled}
999
+ placeholder=${this.searchPlaceholder}
1000
+ class="input"
1001
+ />
1002
+
1003
+ ${c(this.addOption,()=>s`
1004
+ <sky-icon
1005
+ class="new-option-btn"
1006
+ icon="ion:add"
1007
+ part="add-option-icon"
1008
+ title="Add as new option"
1009
+ aria-label="Add as new option"
1010
+ @click=${this.handleAddaddOption}
1011
+ ></sky-icon>
1012
+ `)}
1013
+ </div>
1014
+ `)}
1015
+
1016
+ <div class="dropdown-scroller">
1017
+ ${c(this.multiSelect&&this.selectAll&&this.filteredOptions.length,()=>{const t=this.searchable||this.addOption?1:0,e=u({"dropdown-item":!0,active:this.activeIndex===t,selected:this.isAllFilteredSelected()});return s`
1018
+ <div
1019
+ class=${e}
1020
+ data-row-index=${t}
1021
+ style="justify-content: ${this.justify};"
1022
+ part="select-all"
1023
+ @click=${this.toggleSelectAll}
1024
+ >
1025
+ <sky-checkbox
1026
+ .checked=${this.isAllFilteredSelected()}
1027
+ readonly
1028
+ ></sky-checkbox>
1029
+ Select All
1030
+ </div>
1031
+ `})}
1032
+ ${c(this.filteredOptions.length>0,()=>y(this.filteredOptions,({original:t,_idx:e})=>`${e}-${String(this.getOptionValue(t))}`,({original:t,highlighted:e,_idx:i},r)=>{const o=`option-${i}`,a=this.optionSlotSet.has(o),n=t=>String(this.getOptionValue(t.original??t)),l=Array.isArray(this.selectedItems)&&this.selectedItems.some(e=>n(e)===n(t)),p=this.headerRows+r,d=p===this.activeIndex,y=u({"dropdown-item":!0,active:d,selected:l});return s`
1033
+ <div
1034
+ class=${y}
1035
+ data-row-index=${p}
1036
+ style="justify-content: ${this.justify};"
1037
+ part="option"
1038
+ @click=${()=>this.selectOption(t)}
1039
+ ?compact=${this.compact}
1040
+ >
1041
+ ${c(this.multiSelect,()=>s` <sky-checkbox
1042
+ .checked=${l}
1043
+ readonly
1044
+ ></sky-checkbox>`)}
1045
+ ${c(a,()=>s`
1046
+ <div style="display: flex; gap: 8px;width:100%">
1047
+ <slot name=${o}>
1048
+ <span
1049
+ class="highlighted-text"
1050
+ part="highlighted-text"
1051
+ >${h(e)}</span
1052
+ >
1053
+ </slot>
1054
+ </div>
1055
+ `,()=>s`<span
1056
+ class="highlighted-text"
1057
+ part="highlighted-text"
1058
+ >${h(e)}</span
1059
+ >`)}
1060
+ </div>
1061
+ `}),()=>s`<div
1062
+ class="dropdown-item"
1063
+ part="no-options"
1064
+ data-row-index=${this.headerRows}
1065
+ >
1066
+ No options found
1067
+ </div>`)}
1068
+ </div>
1069
+ </div>
1070
+ `}getOptionValue(t){return this.emitFullObject?t:"object"==typeof t&&null!==t?this.emittedKey in t?t[this.emittedKey]:"value"in t?t.value:t:t}getOptionLabel(t){if(!t)return"";if(!Array.isArray(this.options)||this.options,this.displayKey&&"object"==typeof t&&t[this.displayKey])return String(t[this.displayKey]);if("object"==typeof t){const e=Object.values(t).filter(t=>"string"==typeof t);return e.length>0?e[0]:JSON.stringify(t)}return String(t)}renderValidationErrors(){if(!this.showErrors||!this.validationActive)return null;const t=this.getErrorMessages();if(!t.length)return null;const e=`${this.id||"sky-combobox"}-errors`;return s`
1071
+ <div class="progress-message">
1072
+ <ul id=${e} class="error-list" part="error-list">
1073
+ ${y(t,t=>t,t=>s`<li class="error" part="error-item">${t}</li>`)}
1074
+ </ul>
1075
+ </div>
1076
+ `}getErrorMessages(){const t=Array.isArray(this.validationErrors)?this.validationErrors:[];switch(this.errorDisplayMode){case"single":return t.slice(0,1);case"all":return t;default:return[]}}handleIconClick(t,e){this.dispatchEvent(new CustomEvent("icon-click",{detail:{position:t,event:e},bubbles:!0,composed:!0}))}render(){const t=u({"icon-slot":!0,left:!0,focused:this.focused}),e=u({"icon-slot":!0,right:!0,focused:this.focused}),i=u({"placeholder-label":!0,active:this.selectedItems.length>0});return s`
1077
+ <div class="combo-box-container" part="combo-box-container">
1078
+ ${c(this.label,()=>s`<div class="label" part="label">${this.label}</div>`)}
1079
+ <div
1080
+ class="input-wrapper"
1081
+ tabindex="0"
1082
+ part="input-wrapper"
1083
+ ?disabled=${this.disabled}
1084
+ ?compact=${this.compact}
1085
+ ?loading=${this.loading}
1086
+ ?open=${this.open}
1087
+ ?invalid=${this.invalid}
1088
+ @click=${t=>{this.disabled||this.readonly||this.toggleDropdown(t)}}
1089
+ @keydown=${this.handleKeydown}
1090
+ >
1091
+ <!-- Left Icon or Loading Indicator -->
1092
+ <div
1093
+ class=${t}
1094
+ part="icon-slot"
1095
+ ?filled=${this.hasLeftIcon}
1096
+ @click=${t=>this.handleIconClick("left",t)}
1097
+ >
1098
+ <slot name="icon-left" @slotchange=${this.onIconSlotChange}></slot>
1099
+ </div>
1100
+ ${c(this.selectedItems.length>0,()=>s`
1101
+ <div
1102
+ class="chip-container"
1103
+ part="chip-container"
1104
+ ?compact=${this.compact}
1105
+ >
1106
+ ${this.renderChips()}
1107
+ </div>
1108
+ `,()=>s`<label
1109
+ class=${i}
1110
+ part="placeholder-label"
1111
+ ?compact=${this.compact}
1112
+ >
1113
+ <span style="color:${this.prefixColor}">${this.prefix}</span
1114
+ >${this.placeholder}<span style="color:${this.suffixColor}"
1115
+ >${this.suffix}</span
1116
+ >
1117
+ </label>`)}
1118
+ ${c(this.clearable&&!this.enforceMinOneSelection&&(this.value||this.selectedItems.length),()=>s`<sky-icon
1119
+ class="clear-button"
1120
+ part="clear-button"
1121
+ @click=${this.handleClear}
1122
+ ?loading=${this.loading}
1123
+ icon="ion:close"
1124
+ ></sky-icon>`)}
1125
+ ${c(this.loading,()=>s`<div class="loading-indicator right"></div>`,()=>s`<div
1126
+ part="icon-slot"
1127
+ class=${e}
1128
+ ?filled=${this.hasRightIcon}
1129
+ @click=${t=>this.handleIconClick("right",t)}
1130
+ >
1131
+ <slot name="icon-right" @slotchange=${this.onIconSlotChange}></slot>
1132
+ </div>`)}
1133
+ <sky-icon
1134
+ class="dropdown-button"
1135
+ part="dropdown-button"
1136
+ @click=${t=>{this.disabled||this.readonly||this.toggleDropdown(t)}}
1137
+ icon=${this.open?"ion:ios-arrow-up":"ion:chevron-down"}
1138
+ >
1139
+ </sky-icon>
1140
+ </div>
1141
+ ${this.renderHiddenChipsDropdown()} ${this.renderDropdown()}
1142
+ ${this.renderValidationErrors()}
1143
+ <slot style="display:none" @slotchange=${this.refreshOptionSlots}></slot>
1144
+ </div>
1145
+ `}};t([o(),e("design:type",Object)],k.prototype,"value",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"placeholder",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"searchPlaceholder",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"label",void 0),t([o({type:Array}),e("design:type",Array)],k.prototype,"options",void 0),t([o({type:Number}),e("design:type",Number)],k.prototype,"chipSize",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"color",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"clearable",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"loading",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"compact",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"disabled",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"searchable",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"multiSelect",void 0),t([o({type:Number,reflect:!0}),e("design:type",Number)],k.prototype,"visibleChips",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"selectAll",void 0),t([o({type:Array}),e("design:type",Array)],k.prototype,"validations",void 0),t([o({type:Boolean}),e("design:type",Boolean)],k.prototype,"showErrors",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"errorDisplayMode",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"required",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"emitFullObject",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"emittedKey",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"displayKey",void 0),t([o({type:Boolean}),e("design:type",Boolean)],k.prototype,"addOption",void 0),t([o({type:Boolean}),e("design:type",Boolean)],k.prototype,"validationArrayFormat",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"prefix",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"suffix",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"prefixColor",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"suffixColor",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"justify",void 0),t([o({type:Number}),e("design:type",Number)],k.prototype,"zIndex",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"height",void 0),t([o({type:String}),e("design:type",String)],k.prototype,"requiredMessage",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"readonly",void 0),t([o({type:Boolean}),e("design:type",Boolean)],k.prototype,"enforceMinOneSelection",void 0),t([o({type:Boolean}),e("design:type",Boolean)],k.prototype,"openAbove",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Boolean)],k.prototype,"validationActive",void 0),t([o({type:Boolean,reflect:!0}),e("design:type",Object)],k.prototype,"invalid",void 0),t([o({type:String,reflect:!0}),e("design:type",String)],k.prototype,"variant",void 0),t([o({type:String,attribute:!1}),e("design:type",Object)],k.prototype,"searchQuery",void 0),t([a(),e("design:type",Array)],k.prototype,"filteredOptions",void 0),t([a(),e("design:type",Boolean)],k.prototype,"focused",void 0),t([a(),e("design:type",Boolean)],k.prototype,"open",void 0),t([a(),e("design:type",Array)],k.prototype,"selectedItems",void 0),t([a(),e("design:type",Boolean)],k.prototype,"hiddenChipsOpen",void 0),t([a(),e("design:type",Number)],k.prototype,"activeIndex",void 0),t([a(),e("design:type",Array)],k.prototype,"validationErrors",void 0),t([a(),e("design:type",Array)],k.prototype,"validationStatus",void 0),t([a(),e("design:type",Object)],k.prototype,"hasLeftIcon",void 0),t([a(),e("design:type",Object)],k.prototype,"hasRightIcon",void 0),t([a(),e("design:type",Object)],k.prototype,"optionSlotSet",void 0),t([n(".input-wrapper"),e("design:type",HTMLElement)],k.prototype,"inputWrapperEl",void 0),t([n(".dropdown"),e("design:type",HTMLElement)],k.prototype,"dropdownEl",void 0),t([n(".hidden-chips-dropdown"),e("design:type",HTMLElement)],k.prototype,"hiddenDropdownEl",void 0),t([n(".search-container .input"),e("design:type",HTMLInputElement)],k.prototype,"searchInputEl",void 0),t([n(".overflow-chip"),e("design:type",HTMLElement)],k.prototype,"overflowChipEl",void 0),t([n(".combo-box-container"),e("design:type",HTMLElement)],k.prototype,"comboContainerEl",void 0),t([l("[data-row-index]"),e("design:type",Object)],k.prototype,"rowEls",void 0),t([p({slot:"icon-left"}),e("design:type",Array)],k.prototype,"iconLeftEls",void 0),t([p({slot:"icon-right"}),e("design:type",Array)],k.prototype,"iconRightEls",void 0),k=x=t([d("sky-combobox"),e("design:paramtypes",[])],k);export{k as SkyCombobox};
1146
+ //# sourceMappingURL=sky-combobox.js.map