@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,177 @@
1
+ import{__decorate as e,__metadata as t}from"tslib";import{LitElement as o,css as r,html as s}from"lit";import{property as i,customElement as a}from"lit/decorators.js";import{resolveRadius as n}from"../helper/utils/size-resolver.js";let p=class extends o{constructor(){super(...arguments),this.open=!1,this.side="left",this.width="320px",this.height="100%",this.radius="md",this.overlay=!0,this.persistent=!0,this.closeOnEsc=!1,this.scope="viewport",this.separator=!1,this._onKeydown=e=>{this.open&&"Escape"===e.key&&this.closeOnEsc&&!this.persistent&&this.close()},this._onOverlayClick=()=>{this.persistent||(this.close(),this.dispatchEvent(new CustomEvent("drawer-overlay-click",{detail:{side:this.side,scope:this.scope},bubbles:!0,composed:!0})))}}static{this.styles=r`
2
+ :host {
3
+ display: block;
4
+ pointer-events: none;
5
+ }
6
+
7
+ :host([open]) {
8
+ pointer-events: auto;
9
+ }
10
+
11
+ :host([scope="viewport"]) {
12
+ position: fixed;
13
+ inset: 0;
14
+ z-index: 1000;
15
+ }
16
+
17
+ :host([scope="parent"]) {
18
+ position: absolute;
19
+ top: 0;
20
+ left: 0;
21
+ right: 0;
22
+ bottom: 0;
23
+ }
24
+
25
+ :host([scope="parent"][open]) {
26
+ z-index: 10;
27
+ }
28
+
29
+ /* Overlay */
30
+ .overlay {
31
+ position: absolute;
32
+ inset: 0;
33
+ background: var(--sky-overlay-primary);
34
+ opacity: 0;
35
+ transition: opacity 0.2s ease;
36
+ }
37
+
38
+ :host([open][overlay]) .overlay {
39
+ opacity: 1;
40
+ }
41
+
42
+ :host(:not([overlay])) .overlay {
43
+ display: none;
44
+ }
45
+
46
+ /* Drawer panel */
47
+ .panel {
48
+ position: absolute;
49
+ top: 0;
50
+ height: var(--_height);
51
+ width: var(--_width);
52
+ background: var(--sky-glass-primary);
53
+ color: var(--sky-text-primary);
54
+ border-radius: var(--_radius);
55
+ box-shadow: none;
56
+ transform: translateX(var(--_tx));
57
+ transition: transform 0.28s ease;
58
+ will-change: transform;
59
+ display: flex;
60
+ flex-direction: column;
61
+
62
+ }
63
+
64
+ .panel::before {
65
+ content: "";
66
+ position: absolute;
67
+ inset: 0;
68
+ backdrop-filter: var(--sky-blur-primary) var(--sky-saturation-primary) var(--sky-brightness-primary);
69
+ -webkit-backdrop-filter: var(--sky-blur-primary) var(--sky-saturation-primary) var(--sky-brightness-primary);
70
+ border-radius: inherit;
71
+ z-index: -1;
72
+ }
73
+
74
+ :host([side="left"]) .panel {
75
+ left: 0;
76
+ border-left: none;
77
+ border-right: var(--sky-border-primary);
78
+ --_tx: -100%;
79
+ }
80
+
81
+ :host([side="right"]) .panel {
82
+ right: 0;
83
+ border-right: none;
84
+ border-left: var(--sky-border-primary);
85
+ --_tx: 100%;
86
+ }
87
+
88
+ :host([open]) .panel {
89
+ transform: translateX(0);
90
+ }
91
+
92
+ /* Header and footer */
93
+ .header,
94
+ .footer {
95
+ flex: 0 0 auto;
96
+ }
97
+
98
+ ::slotted([slot="header"]) {
99
+ padding: var(--sky-space-3) var(--sky-space-4);
100
+ box-sizing: border-box;
101
+ border-bottom: none;
102
+ }
103
+
104
+ ::slotted([slot="footer"]) {
105
+ padding: var(--sky-space-3) var(--sky-space-4);
106
+ box-sizing: border-box;
107
+ border-top: none;
108
+ }
109
+
110
+ /* Optional per-slot control: put separator on the slotted node itself */
111
+ ::slotted([slot="header"][separator]) {
112
+ border-bottom: 1px solid var(--sky-border-light);
113
+ }
114
+
115
+ ::slotted([slot="footer"][separator]) {
116
+ border-top: 1px solid var(--sky-border-light);
117
+ }
118
+
119
+ .header-content {
120
+ display: flex;
121
+ align-items: center;
122
+ }
123
+
124
+ .content {
125
+ flex: 1 1 auto;
126
+ overflow: auto;
127
+ box-sizing: border-box;
128
+ padding: var(--sky-space-3) var(--sky-space-4);
129
+ }
130
+
131
+ sky-icon {
132
+ display: inline-block;
133
+ width: 1em;
134
+ height: 1em;
135
+ }
136
+
137
+ /* RTL support */
138
+ :host([dir="rtl"][side="left"]) .panel {
139
+ left: auto;
140
+ right: 0;
141
+ border-left: var(--sky-border-primary);
142
+ border-right: none;
143
+ --_tx: 100%;
144
+ }
145
+
146
+ :host([dir="rtl"][side="right"]) .panel {
147
+ right: auto;
148
+ left: 0;
149
+ border-right: var(--sky-border-primary);
150
+ border-left: none;
151
+ --_tx: -100%;
152
+ }
153
+ `}openDrawer(){this.open=!0}close(){this.open=!1}toggle(){this.open=!this.open}connectedCallback(){super.connectedCallback(),this._applyDims(),window.addEventListener("keydown",this._onKeydown)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("keydown",this._onKeydown)}updated(e){(e.has("width")||e.has("height")||e.has("radius"))&&this._applyDims(),e.has("open")&&this.dispatchEvent(new CustomEvent("drawer-change",{detail:{open:this.open},bubbles:!0,composed:!0}))}_applyDims(){this.style.setProperty("--_width",this.width),this.style.setProperty("--_height",this.height),this.style.setProperty("--_radius",n(this.radius))}_stop(e){e.stopPropagation()}render(){return s`
154
+ <div
155
+ class="overlay"
156
+ part="overlay"
157
+ @click=${this._onOverlayClick}
158
+ @keydown=${this._stop}
159
+ tabindex="-1"
160
+ aria-hidden="true"
161
+ ></div>
162
+
163
+ <div class="panel" part="panel" @click=${this._stop}>
164
+ <div class="header" part="header">
165
+ <slot name="header"></slot>
166
+ </div>
167
+
168
+ <div class="content" part="content">
169
+ <slot></slot>
170
+ </div>
171
+
172
+ <div class="footer" part="footer">
173
+ <slot name="footer"></slot>
174
+ </div>
175
+ </div>
176
+ `}};e([i({type:Boolean,reflect:!0}),t("design:type",Object)],p.prototype,"open",void 0),e([i({type:String,reflect:!0}),t("design:type",String)],p.prototype,"side",void 0),e([i({type:String}),t("design:type",Object)],p.prototype,"width",void 0),e([i({type:String}),t("design:type",Object)],p.prototype,"height",void 0),e([i({type:String}),t("design:type",Object)],p.prototype,"radius",void 0),e([i({type:Boolean,reflect:!0}),t("design:type",Object)],p.prototype,"overlay",void 0),e([i({type:Boolean,reflect:!0}),t("design:type",Object)],p.prototype,"persistent",void 0),e([i({type:Boolean}),t("design:type",Object)],p.prototype,"closeOnEsc",void 0),e([i({type:String,reflect:!0}),t("design:type",String)],p.prototype,"scope",void 0),e([i({type:Boolean}),t("design:type",Object)],p.prototype,"separator",void 0),p=e([a("sky-drawer")],p);export{p as SkyDrawer};
177
+ //# sourceMappingURL=sky-drawer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-drawer.js","sources":["../../src/sky-drawer/sky-drawer.ts"],"sourcesContent":[null],"names":["SkyDrawer","LitElement","constructor","this","open","side","width","height","radius","overlay","persistent","closeOnEsc","scope","separator","_onKeydown","e","key","close","_onOverlayClick","dispatchEvent","CustomEvent","detail","bubbles","composed","styles","css","openDrawer","toggle","connectedCallback","super","_applyDims","window","addEventListener","disconnectedCallback","removeEventListener","updated","changed","has","style","setProperty","resolveRadius","_stop","stopPropagation","render","html","__decorate","property","type","Boolean","reflect","prototype","String","customElement"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./sky-dropdown";
@@ -0,0 +1 @@
1
+ export * from './sky-dropdown.js';
@@ -0,0 +1,252 @@
1
+ import { LitElement, PropertyValues } from "lit";
2
+ export type SkyDropdownTrigger = "click" | "hover";
3
+ export type SkyDropdownPlacement = "bottom" | "top" | "left" | "right";
4
+ export type SkyDropdownAlign = "start" | "center" | "end";
5
+ export type SkyDropdownSelectDetail = {
6
+ value: string;
7
+ text: string;
8
+ item: HTMLElement;
9
+ };
10
+ /** Payload for controlled open state (`v-model:open`). */
11
+ export type SkyDropdownOpenChangeDetail = {
12
+ open: boolean;
13
+ };
14
+ /**
15
+ * @element sky-dropdown
16
+ *
17
+ * @summary Accessible dropdown menu with trigger slot, smart positioning, keyboard navigation, and collision-aware popover behavior.
18
+ *
19
+ * @status stable
20
+ * @since 1.0.0
21
+ *
22
+ * @documentation https://library.sky-ui.com/components/dropdown
23
+ *
24
+ * @uiVModel value dropdown-select detail=value
25
+ * @uiVModel open open-change detail=open
26
+ *
27
+ * @slot trigger - The clickable/hoverable trigger content (e.g., a button).
28
+ * @slot - Default slot for menu content; typically `<sky-dropdown-item>` or any element with `role="menuitem"`.
29
+ *
30
+ * @csspart trigger - Wrapper around the slotted trigger content.
31
+ * @csspart content - The positioned popup container.
32
+ * @csspart content-inner - Scrollable inner wrapper that constrains max height.
33
+ *
34
+ * @fires {CustomEvent<void>} open - Dispatched when the dropdown is opened.
35
+ * @fires {CustomEvent<void>} close - Dispatched when the dropdown is closed.
36
+ * @fires {CustomEvent<SkyDropdownOpenChangeDetail>} open-change - Dispatched whenever open state changes (includes payload for `v-model:open`).
37
+ * @fires {CustomEvent<SkyDropdownSelectDetail>} dropdown-select - Dispatched when an item is activated.
38
+ *
39
+ * @property {SkyDropdownTrigger} trigger - How the dropdown opens.
40
+ * @property {SkyDropdownPlacement} placement - Preferred side; flips if needed.
41
+ * @property {SkyDropdownAlign} align - Alignment relative to trigger edge.
42
+ * @property {boolean} open - Whether the dropdown is open.
43
+ * @property {string} value - Last selected item value from `dropdown-select` (controlled selection mirror). Default: `""`.
44
+ * @property {"auto"|"trigger"|string} width - Popup width strategy or CSS length.
45
+ * @property {boolean} closeOnClick - Close when clicking an item.
46
+ * @property {boolean} closeOnEsc - Close on Escape.
47
+ * @property {number} hoverOpenDelay - Delay in milliseconds before opening on hover.
48
+ * @property {number} hoverCloseDelay - Delay in milliseconds before closing on hover-out.
49
+ * @property {number} offset - Gap in pixels between trigger and popup.
50
+ * @property {boolean} flip - Automatically flip placement when space is limited.
51
+ * @property {number} viewportPadding - Viewport edge padding for collision logic.
52
+ * @property {string} maxHeight - Max height CSS length for popup scroll area.
53
+ * @property {string} animateType - Animation preset used by popover controller.
54
+ * @method toggle Toggles dropdown open state.
55
+ * @method openDropdown Opens dropdown.
56
+ * @method close Closes dropdown.
57
+ * @method focusTrigger Focuses trigger wrapper.
58
+ *
59
+ * @Behavior
60
+ * - Uses `PopoverController` for intelligent positioning and collision detection
61
+ * - Supports both click and hover triggers with configurable delays
62
+ * - Automatically flips placement when insufficient viewport space
63
+ * - Provides keyboard navigation with roving focus
64
+ * - Manages accessibility attributes automatically
65
+ * - **click**: Opens on click, closes on click outside or Escape
66
+ * - **hover**: Opens on mouse enter with delay, closes on mouse leave with delay
67
+ * - Both modes support keyboard interaction (Space/Enter on trigger)
68
+ * - Trigger receives `role="button"`, `aria-expanded`, `aria-controls`
69
+ * - Dropdown uses `role="menu"` for screen readers
70
+ * - Keyboard navigation with Arrow keys, Home, End, Escape
71
+ * - Roving focus within menu items
72
+ * - Proper focus management on open/close
73
+ * - Respects reduced motion preferences
74
+ * - Supports any content with proper ARIA roles
75
+ * - When rendering menu items from an array, use Lit's `repeat()` with a stable key (e.g. item id or index).
76
+ * - Do not remove or replace the trigger slot content while the dropdown is open; positioning relies on the trigger element reference.
77
+ *
78
+ * @example
79
+ * ```html
80
+ * <sky-dropdown trigger="click" placement="bottom" align="start">
81
+ * <button slot="trigger">Open Menu</button>
82
+ * <sky-dropdown-item value="a">Alpha</sky-dropdown-item>
83
+ * <sky-dropdown-item value="b">Beta</sky-dropdown-item>
84
+ * <sky-dropdown-item value="c" disabled>Gamma (disabled)</sky-dropdown-item>
85
+ * </sky-dropdown>
86
+ * ```
87
+ * ```vue
88
+ * <template>
89
+ * <sky-dropdown trigger="click" placement="bottom" align="start">
90
+ * <button slot="trigger">Open Menu</button>
91
+ * <sky-dropdown-item value="a">Alpha</sky-dropdown-item>
92
+ * <sky-dropdown-item value="b">Beta</sky-dropdown-item>
93
+ * <sky-dropdown-item value="c" disabled>Gamma (disabled)</sky-dropdown-item>
94
+ * </sky-dropdown>
95
+ * </template>
96
+ * ```
97
+ * ```jsx
98
+ * export default function Demo() {
99
+ * return (
100
+ * <sky-dropdown trigger="click" placement="bottom" align="start">
101
+ * <button slot="trigger">Open Menu</button>
102
+ * <sky-dropdown-item value="a">Alpha</sky-dropdown-item>
103
+ * <sky-dropdown-item value="b">Beta</sky-dropdown-item>
104
+ * <sky-dropdown-item value="c" disabled>Gamma (disabled)</sky-dropdown-item>
105
+ * </sky-dropdown>
106
+ * );
107
+ * }
108
+ * ```
109
+ */
110
+ export declare class SkyDropdown extends LitElement {
111
+ /** @public How the dropdown opens. */
112
+ trigger: SkyDropdownTrigger;
113
+ /** @public Preferred side; flips if needed. */
114
+ placement: SkyDropdownPlacement;
115
+ /** @public Alignment relative to the trigger edge. */
116
+ align: SkyDropdownAlign;
117
+ /** @public Whether the dropdown is open. */
118
+ open: boolean;
119
+ /** @public Last activated menu value (mirrors `dropdown-select` detail.value). */
120
+ value: string;
121
+ /** @public Width of the dropdown. */
122
+ width: "auto" | "trigger" | string;
123
+ /** @public Close when clicking an item. */
124
+ closeOnClick: boolean;
125
+ /** @public Close on Escape. */
126
+ closeOnEsc: boolean;
127
+ /** @public Delay (ms) before opening on hover. */
128
+ hoverOpenDelay: number;
129
+ /** @public Delay (ms) before closing after hover-out. */
130
+ hoverCloseDelay: number;
131
+ /** @public Gap in px between trigger and dropdown. */
132
+ offset: number;
133
+ /** @public Automatically flip to an available side. */
134
+ flip: boolean;
135
+ /** @public Padding from viewport edges used by collision logic. */
136
+ viewportPadding: number;
137
+ /** @public Max height (CSS length) for the popup's inner scroll area. */
138
+ maxHeight: string;
139
+ /** @public Animation preset for open/close transitions. */
140
+ animateType: string;
141
+ /** @private Reference to the trigger element. */
142
+ private _triggerEl;
143
+ /** @private Reference to the content element. */
144
+ private _contentEl;
145
+ /** Non-reactive; hover-close logic only (avoids Lit change-in-update). */
146
+ private _isHoveringTrigger;
147
+ /** Non-reactive; hover-close logic only (avoids Lit change-in-update). */
148
+ private _isHoveringContent;
149
+ /** @private Timeout ID for opening on hover. */
150
+ private _openTimeout;
151
+ /** @private Timeout ID for closing on hover out. */
152
+ private _closeTimeout;
153
+ /** @private True after firstUpdated when targets exist. */
154
+ private _ready;
155
+ /** @private Guard to avoid open<->controller loop. */
156
+ private _syncingFromController;
157
+ /** @private Popover controller instance. */
158
+ private dropdownPopover;
159
+ static styles: import("lit").CSSResult;
160
+ /** @protected */
161
+ protected firstUpdated(_changed: PropertyValues): void;
162
+ /** @protected */
163
+ updated(changed: PropertyValues): void;
164
+ /** @protected */
165
+ connectedCallback(): void;
166
+ /** @protected */
167
+ disconnectedCallback(): void;
168
+ /**
169
+ * Applies the open state to the popover controller.
170
+ * @param previousOpen - Previous open state
171
+ * @private
172
+ */
173
+ private _applyOpenToController;
174
+ /**
175
+ * Clears all pending timeouts.
176
+ * @private
177
+ */
178
+ private _clearTimeouts;
179
+ /**
180
+ * Synchronizes accessibility attributes on the trigger.
181
+ * @private
182
+ */
183
+ private _syncTriggerA11y;
184
+ /**
185
+ * Handles mouse enter on trigger for hover mode.
186
+ * @private
187
+ */
188
+ private _onTriggerMouseEnter;
189
+ /**
190
+ * Handles mouse leave from trigger for hover mode.
191
+ * @private
192
+ */
193
+ private _onTriggerMouseLeave;
194
+ /**
195
+ * Handles mouse enter on content for hover mode.
196
+ * @private
197
+ */
198
+ private _onContentMouseEnter;
199
+ /**
200
+ * Handles mouse leave from content for hover mode.
201
+ * @private
202
+ */
203
+ private _onContentMouseLeave;
204
+ /**
205
+ * Schedules closing for hover mode.
206
+ * @private
207
+ */
208
+ private _scheduleClose;
209
+ /**
210
+ * Toggles the dropdown open/closed.
211
+ * @public
212
+ */
213
+ toggle(): void;
214
+ /**
215
+ * Opens the dropdown.
216
+ * @public
217
+ */
218
+ openDropdown(): void;
219
+ /**
220
+ * Closes the dropdown.
221
+ * @public
222
+ */
223
+ close(): void;
224
+ /**
225
+ * Focuses the dropdown trigger.
226
+ * @public
227
+ */
228
+ focusTrigger(): void;
229
+ /**
230
+ * Handles trigger click for click mode.
231
+ * @param e - Mouse event
232
+ * @private
233
+ */
234
+ private _onTriggerClick;
235
+ /**
236
+ * Handles item clicks within the dropdown.
237
+ * @param e - Click event
238
+ * @private
239
+ */
240
+ private _onItemClick;
241
+ /** Slotted `sky-dropdown-item` nodes bubble `dropdown-item-click` to this host. */
242
+ private _onDropdownItemClick;
243
+ private _resolveItemValue;
244
+ /**
245
+ * Activates a dropdown item.
246
+ * @param item - The item element to activate
247
+ * @private
248
+ */
249
+ private _activateItem;
250
+ /** @protected */
251
+ render(): import("lit-html").TemplateResult<1>;
252
+ }
@@ -0,0 +1,58 @@
1
+ import{__decorate as e,__metadata as t}from"tslib";import{LitElement as o,css as i,html as s}from"lit";import{property as r,query as n,customElement as p}from"lit/decorators.js";import{PopoverController as d}from"../helper/controllers/popover-controller.js";let h=class extends o{constructor(){super(...arguments),this.trigger="click",this.placement="bottom",this.align="center",this.open=!1,this.value="",this.width="auto",this.closeOnClick=!0,this.closeOnEsc=!0,this.hoverOpenDelay=120,this.hoverCloseDelay=160,this.offset=8,this.flip=!0,this.viewportPadding=8,this.maxHeight="auto",this.animateType="fade",this._isHoveringTrigger=!1,this._isHoveringContent=!1,this._openTimeout=null,this._closeTimeout=null,this._ready=!1,this._syncingFromController=!1,this.dropdownPopover=new d(this,{getAnchor:()=>this._triggerEl,getPopover:()=>this._contentEl,cssVarLeft:"--sky-dd-left",cssVarTop:"--sky-dd-top",cssVarWidth:"--sky-dd-width",getPlacement:()=>this.placement,getAlign:()=>this.align,getGap:()=>this.offset,getPadding:()=>this.viewportPadding,getMatchAnchorWidth:()=>"trigger"===this.width,getFlip:()=>this.flip,getPreset:()=>this.animateType,getCloseOnEscape:()=>this.closeOnEsc,getCloseOnOutside:()=>!0,getRestoreFocusOnClose:()=>!0,maxWidthToViewport:!0,maxWidthMode:"cap",flipOrder:["bottom","top","right","left"],animateReposition:!0,repositionMs:160,sideAttr:"data-side",respectReducedMotion:!0,onOpenChange:e=>{const t=this.open!==e;t&&(this._syncingFromController=!0,this.open=e,this._syncingFromController=!1),t&&(this.dispatchEvent(new CustomEvent(e?"open":"close",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("open-change",{detail:{open:e},bubbles:!0,composed:!0}))),e||(this._isHoveringTrigger=!1,this._isHoveringContent=!1,this._clearTimeouts()),t&&this._syncTriggerA11y()}}),this._onTriggerMouseEnter=()=>{"hover"===this.trigger&&(this._isHoveringTrigger=!0,this._clearTimeouts(),this._openTimeout=window.setTimeout(()=>{this.open||this.openDropdown()},this.hoverOpenDelay))},this._onTriggerMouseLeave=()=>{"hover"===this.trigger&&(this._isHoveringTrigger=!1,this._isHoveringContent||this._scheduleClose())},this._onContentMouseEnter=()=>{"hover"===this.trigger&&(this._isHoveringContent=!0,this._clearTimeouts())},this._onContentMouseLeave=()=>{"hover"===this.trigger&&(this._isHoveringContent=!1,this._isHoveringTrigger||this._scheduleClose())},this._onTriggerClick=e=>{"click"===this.trigger&&(e.stopPropagation(),this.toggle())},this._onItemClick=e=>{const t=e.composedPath().find(e=>e instanceof HTMLElement&&("sky-dropdown-item"===e.tagName.toLowerCase()||"menuitem"===e.role));t&&this._activateItem(t)},this._onDropdownItemClick=e=>{const t=e.composedPath().find(e=>e instanceof HTMLElement&&"sky-dropdown-item"===e.tagName.toLowerCase());t&&this._activateItem(t)}}static{this.styles=i`
2
+ :host {
3
+ display: inline-block;
4
+ position: relative;
5
+ }
6
+
7
+ .dropdown-trigger {
8
+ cursor: pointer;
9
+ outline: none;
10
+ }
11
+
12
+ .dropdown-content {
13
+ position: fixed;
14
+ left: var(--sky-dd-left, 0px);
15
+ top: var(--sky-dd-top, 0px);
16
+ background: var(--sky-glass-primary);
17
+ border: var(--sky-border-primary);
18
+ border-radius: var(--sky-radius-secondary);
19
+ box-shadow: var(--sky-box-shadow-primary);
20
+ padding: 0.25rem;
21
+ box-sizing: border-box;
22
+ backdrop-filter: var(--sky-blur-primary) var(--sky-brightness-primary)
23
+ var(--sky-saturation-primary);
24
+ outline: none;
25
+
26
+ }
27
+
28
+ .dropdown-content-inner {
29
+ overflow-y: auto;
30
+ max-height: var(--dropdown-max-h, 320px);
31
+ }
32
+ `}firstUpdated(e){super.firstUpdated(e),this._ready=!0,this.style.setProperty("--dropdown-max-h",this.maxHeight),this.dropdownPopover.refreshTargets(),this._syncTriggerA11y(),this._applyOpenToController(!1)}updated(e){if(super.updated(e),e.has("maxHeight")&&this.style.setProperty("--dropdown-max-h",this.maxHeight),e.has("trigger")&&(this._isHoveringTrigger=!1,this._isHoveringContent=!1,this._clearTimeouts()),this._ready&&this.open&&(e.has("placement")||e.has("align")||e.has("offset")||e.has("viewportPadding")||e.has("flip")||e.has("width")||e.has("animateType"))&&this.dropdownPopover.refreshTargets(),e.has("open")){const t=Boolean(e.get("open"));this._applyOpenToController(t)}}connectedCallback(){super.connectedCallback(),this.addEventListener("dropdown-item-click",this._onDropdownItemClick)}disconnectedCallback(){this.removeEventListener("dropdown-item-click",this._onDropdownItemClick),super.disconnectedCallback(),this._clearTimeouts();try{this.dropdownPopover.open&&this.dropdownPopover.closePopover("api")}catch{}this._ready=!1}_applyOpenToController(e){this._ready&&(this._syncingFromController||(!this.open||this.dropdownPopover.open?this.open||!e&&!this.dropdownPopover.open||this.dropdownPopover.closePopover("api"):this.dropdownPopover.openPopover()))}_clearTimeouts(){this._openTimeout&&(clearTimeout(this._openTimeout),this._openTimeout=null),this._closeTimeout&&(clearTimeout(this._closeTimeout),this._closeTimeout=null)}_syncTriggerA11y(){const e=this._triggerEl;e&&(e.setAttribute("role","button"),e.setAttribute("aria-expanded",String(this.open)),e.setAttribute("aria-haspopup","menu"),this._contentEl?.id?e.setAttribute("aria-controls",this._contentEl.id):this._contentEl&&(this._contentEl.id||=`sky-dd-${crypto?.randomUUID?.()??Math.random().toString(16).slice(2)}`,e.setAttribute("aria-controls",this._contentEl.id)))}_scheduleClose(){this._clearTimeouts(),this._closeTimeout=window.setTimeout(()=>{!this.open||"hover"!==this.trigger||this._isHoveringTrigger||this._isHoveringContent||this.close()},this.hoverCloseDelay)}toggle(){this.dropdownPopover.open?this.dropdownPopover.closePopover("toggle"):this.dropdownPopover.openPopover()}openDropdown(){this.open=!0}close(){this.open=!1,this._clearTimeouts()}focusTrigger(){this._triggerEl&&this._triggerEl.focus()}_resolveItemValue(e){const t=e,o=t.value?.trim();if(o)return o;const i=e.getAttribute("value")?.trim();return i||(t.label??"").trim()}_activateItem(e){const t=this._resolveItemValue(e);if(e.disabled??!1)return;const o=(e.textContent??"").trim();this.value=t,this.dispatchEvent(new CustomEvent("dropdown-select",{detail:{value:t,text:o,item:e},bubbles:!0,composed:!0})),this.closeOnClick&&this.close()}render(){return s`
33
+ <div
34
+ class="dropdown-trigger"
35
+ part="trigger"
36
+ @click=${this._onTriggerClick}
37
+ @mouseenter=${this._onTriggerMouseEnter}
38
+ @mouseleave=${this._onTriggerMouseLeave}
39
+ >
40
+ <slot name="trigger" @slotchange=${this._syncTriggerA11y}></slot>
41
+ </div>
42
+
43
+ <div
44
+ class="dropdown-content"
45
+ part="content"
46
+ popover="manual"
47
+ role="menu"
48
+ @toggle=${this.dropdownPopover.onToggle}
49
+ @click=${this._onItemClick}
50
+ @mouseenter=${this._onContentMouseEnter}
51
+ @mouseleave=${this._onContentMouseLeave}
52
+ >
53
+ <div class="dropdown-content-inner" part="content-inner">
54
+ <slot></slot>
55
+ </div>
56
+ </div>
57
+ `}};e([r({type:String,reflect:!0}),t("design:type",String)],h.prototype,"trigger",void 0),e([r({type:String,reflect:!0}),t("design:type",String)],h.prototype,"placement",void 0),e([r({type:String,reflect:!0}),t("design:type",String)],h.prototype,"align",void 0),e([r({type:Boolean,reflect:!0}),t("design:type",Object)],h.prototype,"open",void 0),e([r({type:String}),t("design:type",Object)],h.prototype,"value",void 0),e([r({type:String}),t("design:type",String)],h.prototype,"width",void 0),e([r({type:Boolean}),t("design:type",Object)],h.prototype,"closeOnClick",void 0),e([r({type:Boolean}),t("design:type",Object)],h.prototype,"closeOnEsc",void 0),e([r({type:Number}),t("design:type",Object)],h.prototype,"hoverOpenDelay",void 0),e([r({type:Number}),t("design:type",Object)],h.prototype,"hoverCloseDelay",void 0),e([r({type:Number}),t("design:type",Object)],h.prototype,"offset",void 0),e([r({type:Boolean}),t("design:type",Object)],h.prototype,"flip",void 0),e([r({type:Number}),t("design:type",Object)],h.prototype,"viewportPadding",void 0),e([r({type:String}),t("design:type",Object)],h.prototype,"maxHeight",void 0),e([r({type:String}),t("design:type",String)],h.prototype,"animateType",void 0),e([n(".dropdown-trigger"),t("design:type",HTMLElement)],h.prototype,"_triggerEl",void 0),e([n(".dropdown-content"),t("design:type",HTMLElement)],h.prototype,"_contentEl",void 0),h=e([p("sky-dropdown")],h);export{h as SkyDropdown};
58
+ //# sourceMappingURL=sky-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-dropdown.js","sources":["../../src/sky-dropdown/sky-dropdown.ts"],"sourcesContent":[null],"names":["SkyDropdown","LitElement","constructor","this","trigger","placement","align","open","value","width","closeOnClick","closeOnEsc","hoverOpenDelay","hoverCloseDelay","offset","flip","viewportPadding","maxHeight","animateType","_isHoveringTrigger","_isHoveringContent","_openTimeout","_closeTimeout","_ready","_syncingFromController","dropdownPopover","PopoverController","getAnchor","_triggerEl","getPopover","_contentEl","cssVarLeft","cssVarTop","cssVarWidth","getPlacement","getAlign","getGap","getPadding","getMatchAnchorWidth","getFlip","getPreset","getCloseOnEscape","getCloseOnOutside","getRestoreFocusOnClose","maxWidthToViewport","maxWidthMode","flipOrder","animateReposition","repositionMs","sideAttr","respectReducedMotion","onOpenChange","openChanged","dispatchEvent","CustomEvent","bubbles","composed","detail","_clearTimeouts","_syncTriggerA11y","_onTriggerMouseEnter","window","setTimeout","openDropdown","_onTriggerMouseLeave","_scheduleClose","_onContentMouseEnter","_onContentMouseLeave","_onTriggerClick","e","stopPropagation","toggle","_onItemClick","item","composedPath","find","n","HTMLElement","tagName","toLowerCase","role","_activateItem","_onDropdownItemClick","styles","css","firstUpdated","_changed","super","style","setProperty","refreshTargets","_applyOpenToController","updated","changed","has","prev","Boolean","get","connectedCallback","addEventListener","disconnectedCallback","removeEventListener","closePopover","previousOpen","openPopover","clearTimeout","t","setAttribute","String","id","crypto","randomUUID","Math","random","toString","slice","close","focusTrigger","focus","_resolveItemValue","withFields","fromProp","trim","fromAttr","getAttribute","label","disabled","text","textContent","render","html","onToggle","__decorate","property","type","reflect","prototype","Number","query","customElement"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./sky-dropdown-item";
@@ -0,0 +1 @@
1
+ export * from './sky-dropdown-item.js';