@mhmo91/schmancy 0.4.13 → 0.4.15

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 (314) hide show
  1. package/ai/busy.md +6 -7
  2. package/ai/button.md +5 -5
  3. package/ai/card.md +1 -1
  4. package/ai/checkbox.md +15 -25
  5. package/ai/form.md +63 -66
  6. package/ai/input.md +33 -28
  7. package/ai/notification.md +47 -61
  8. package/ai/radio-group.md +47 -29
  9. package/ai/select.md +3 -3
  10. package/ai/typography.md +12 -12
  11. package/dist/ai/busy.md +6 -7
  12. package/dist/ai/button.md +5 -5
  13. package/dist/ai/card.md +1 -1
  14. package/dist/ai/checkbox.md +15 -25
  15. package/dist/ai/form.md +63 -66
  16. package/dist/ai/input.md +33 -28
  17. package/dist/ai/notification.md +47 -61
  18. package/dist/ai/radio-group.md +47 -29
  19. package/dist/ai/select.md +3 -3
  20. package/dist/ai/typography.md +12 -12
  21. package/dist/{animated-text-DrgxxVXA.js → animated-text-CuOeUPBc.js} +3 -3
  22. package/dist/{animated-text-DrgxxVXA.js.map → animated-text-CuOeUPBc.js.map} +1 -1
  23. package/dist/{animated-text-aOZ4KXTt.cjs → animated-text-vI_J_T4H.cjs} +2 -2
  24. package/dist/{animated-text-aOZ4KXTt.cjs.map → animated-text-vI_J_T4H.cjs.map} +1 -1
  25. package/dist/animated-text.cjs +1 -1
  26. package/dist/animated-text.js +1 -1
  27. package/dist/area.cjs +1 -1
  28. package/dist/{area.component-BNENor9z.js → area.component-BM9ihM3x.js} +3 -3
  29. package/dist/{area.component-BNENor9z.js.map → area.component-BM9ihM3x.js.map} +1 -1
  30. package/dist/{area.component-BEiNkBI9.cjs → area.component-DMXMTNuu.cjs} +2 -2
  31. package/dist/{area.component-BEiNkBI9.cjs.map → area.component-DMXMTNuu.cjs.map} +1 -1
  32. package/dist/area.js +1 -1
  33. package/dist/{autocomplete-L0aas1vi.cjs → autocomplete-BF2L9FvO.cjs} +2 -2
  34. package/dist/{autocomplete-L0aas1vi.cjs.map → autocomplete-BF2L9FvO.cjs.map} +1 -1
  35. package/dist/{autocomplete-86x1z92h.js → autocomplete-BmY1HiRm.js} +3 -3
  36. package/dist/{autocomplete-86x1z92h.js.map → autocomplete-BmY1HiRm.js.map} +1 -1
  37. package/dist/autocomplete.cjs +1 -1
  38. package/dist/autocomplete.js +1 -1
  39. package/dist/{avatar-Cy-cEMb2.cjs → avatar-C4oY5hJn.cjs} +2 -2
  40. package/dist/{avatar-Cy-cEMb2.cjs.map → avatar-C4oY5hJn.cjs.map} +1 -1
  41. package/dist/{avatar-DtzFyhlM.js → avatar-Cpqpem_H.js} +45 -45
  42. package/dist/{avatar-DtzFyhlM.js.map → avatar-Cpqpem_H.js.map} +1 -1
  43. package/dist/badge.cjs +1 -1
  44. package/dist/badge.js +1 -1
  45. package/dist/{boat-CMO8rBpx.js → boat-DhLd0NFJ.js} +2 -2
  46. package/dist/{boat-CMO8rBpx.js.map → boat-DhLd0NFJ.js.map} +1 -1
  47. package/dist/{boat-BMESV9c8.cjs → boat-GHXDYUXo.cjs} +2 -2
  48. package/dist/{boat-BMESV9c8.cjs.map → boat-GHXDYUXo.cjs.map} +1 -1
  49. package/dist/boat.cjs +1 -1
  50. package/dist/boat.js +1 -1
  51. package/dist/busy.cjs +1 -1
  52. package/dist/busy.js +1 -1
  53. package/dist/button.cjs +1 -1
  54. package/dist/button.js +1 -1
  55. package/dist/card.cjs +1 -1
  56. package/dist/card.js +1 -1
  57. package/dist/{checkbox-Chh3OgWJ.js → checkbox-BOQEemBC.js} +2 -2
  58. package/dist/{checkbox-Chh3OgWJ.js.map → checkbox-BOQEemBC.js.map} +1 -1
  59. package/dist/{checkbox-C7Xx4zVu.cjs → checkbox-CRwmpo0I.cjs} +2 -2
  60. package/dist/{checkbox-C7Xx4zVu.cjs.map → checkbox-CRwmpo0I.cjs.map} +1 -1
  61. package/dist/checkbox.cjs +1 -1
  62. package/dist/checkbox.js +1 -1
  63. package/dist/{chips-CZWOuWYh.js → chips-CAdNz2hu.js} +3 -3
  64. package/dist/{chips-CZWOuWYh.js.map → chips-CAdNz2hu.js.map} +1 -1
  65. package/dist/{chips-BPaU1fIQ.cjs → chips-CL4ex3S5.cjs} +2 -2
  66. package/dist/{chips-BPaU1fIQ.cjs.map → chips-CL4ex3S5.cjs.map} +1 -1
  67. package/dist/chips.cjs +1 -1
  68. package/dist/chips.js +1 -1
  69. package/dist/{circular-progress-xJRFI7FV.js → circular-progress-Byjn--Fy.js} +3 -3
  70. package/dist/{circular-progress-xJRFI7FV.js.map → circular-progress-Byjn--Fy.js.map} +1 -1
  71. package/dist/{circular-progress-B716jMbW.cjs → circular-progress-DHLvm1dK.cjs} +2 -2
  72. package/dist/{circular-progress-B716jMbW.cjs.map → circular-progress-DHLvm1dK.cjs.map} +1 -1
  73. package/dist/circular-progress.cjs +1 -1
  74. package/dist/circular-progress.js +1 -1
  75. package/dist/code-highlight.cjs +1 -1
  76. package/dist/code-highlight.js +1 -1
  77. package/dist/{code-preview-D1CCeP9o.cjs → code-preview-C0kMHrZp.cjs} +2 -2
  78. package/dist/{code-preview-D1CCeP9o.cjs.map → code-preview-C0kMHrZp.cjs.map} +1 -1
  79. package/dist/{code-preview-BMLIHTbp.js → code-preview-KWJFLNdy.js} +2 -2
  80. package/dist/{code-preview-BMLIHTbp.js.map → code-preview-KWJFLNdy.js.map} +1 -1
  81. package/dist/components.cjs +1 -1
  82. package/dist/components.js +1 -1
  83. package/dist/content-drawer.cjs +1 -1
  84. package/dist/content-drawer.js +1 -1
  85. package/dist/{date-range-fP7yi819.js → date-range-Dbw7tlTg.js} +3 -3
  86. package/dist/{date-range-fP7yi819.js.map → date-range-Dbw7tlTg.js.map} +1 -1
  87. package/dist/{date-range-BncoO-ye.cjs → date-range-Dq9AYUX9.cjs} +2 -2
  88. package/dist/{date-range-BncoO-ye.cjs.map → date-range-Dq9AYUX9.cjs.map} +1 -1
  89. package/dist/date-range.cjs +1 -1
  90. package/dist/date-range.js +1 -1
  91. package/dist/{delay-oQ9qrOV_.cjs → delay-CHFrBv7q.cjs} +2 -2
  92. package/dist/{delay-oQ9qrOV_.cjs.map → delay-CHFrBv7q.cjs.map} +1 -1
  93. package/dist/{delay-DN_yNSsK.js → delay-DVNcXeFo.js} +2 -2
  94. package/dist/{delay-DN_yNSsK.js.map → delay-DVNcXeFo.js.map} +1 -1
  95. package/dist/delay.cjs +1 -1
  96. package/dist/delay.js +1 -1
  97. package/dist/{dialog-content-BxiEOcGi.js → dialog-content-BUZnNGK5.js} +3 -3
  98. package/dist/{dialog-content-BxiEOcGi.js.map → dialog-content-BUZnNGK5.js.map} +1 -1
  99. package/dist/{dialog-content-aKmUf0nh.cjs → dialog-content-Bgc7dtoN.cjs} +2 -2
  100. package/dist/{dialog-content-aKmUf0nh.cjs.map → dialog-content-Bgc7dtoN.cjs.map} +1 -1
  101. package/dist/dialog.cjs +1 -1
  102. package/dist/dialog.js +1 -1
  103. package/dist/{divider-CZMnnY6N.js → divider-Baxo2_bg.js} +3 -3
  104. package/dist/{divider-CZMnnY6N.js.map → divider-Baxo2_bg.js.map} +1 -1
  105. package/dist/{divider-DH4gDqR3.cjs → divider-ONYdMCC3.cjs} +2 -2
  106. package/dist/{divider-DH4gDqR3.cjs.map → divider-ONYdMCC3.cjs.map} +1 -1
  107. package/dist/divider.cjs +1 -1
  108. package/dist/divider.js +1 -1
  109. package/dist/{dropdown-content-CDONqec-.js → dropdown-content-Di_ThsYr.js} +3 -3
  110. package/dist/{dropdown-content-CDONqec-.js.map → dropdown-content-Di_ThsYr.js.map} +1 -1
  111. package/dist/{dropdown-content-B_nQ7JQb.cjs → dropdown-content-DjcEmYM4.cjs} +2 -2
  112. package/dist/{dropdown-content-B_nQ7JQb.cjs.map → dropdown-content-DjcEmYM4.cjs.map} +1 -1
  113. package/dist/dropdown.cjs +1 -1
  114. package/dist/dropdown.js +1 -1
  115. package/dist/extra.cjs +1 -1
  116. package/dist/extra.js +1 -1
  117. package/dist/{flex-CdU3dsnT.cjs → flex-B_mu8j3k.cjs} +2 -2
  118. package/dist/{flex-CdU3dsnT.cjs.map → flex-B_mu8j3k.cjs.map} +1 -1
  119. package/dist/{flex-DpEq-xBP.js → flex-CqNaXCKb.js} +2 -2
  120. package/dist/{flex-DpEq-xBP.js.map → flex-CqNaXCKb.js.map} +1 -1
  121. package/dist/{form-DOXwEWEA.cjs → form-ha4Eqx8c.cjs} +2 -2
  122. package/dist/{form-DOXwEWEA.cjs.map → form-ha4Eqx8c.cjs.map} +1 -1
  123. package/dist/{form-CBQ7tqoN.js → form-t3eedyiY.js} +2 -2
  124. package/dist/{form-CBQ7tqoN.js.map → form-t3eedyiY.js.map} +1 -1
  125. package/dist/form.cjs +1 -1
  126. package/dist/form.js +1 -1
  127. package/dist/{formField.mixin-Dua_nJpW.js → formField.mixin-DzKDhHbR.js} +2 -2
  128. package/dist/{formField.mixin-Dua_nJpW.js.map → formField.mixin-DzKDhHbR.js.map} +1 -1
  129. package/dist/{formField.mixin-s6FQGAPU.cjs → formField.mixin-d14Fm5er.cjs} +2 -2
  130. package/dist/{formField.mixin-s6FQGAPU.cjs.map → formField.mixin-d14Fm5er.cjs.map} +1 -1
  131. package/dist/{icon-MwCR53u1.cjs → icon-CFCGmi4A.cjs} +2 -2
  132. package/dist/{icon-MwCR53u1.cjs.map → icon-CFCGmi4A.cjs.map} +1 -1
  133. package/dist/{icon-button-Dv6GLseS.cjs → icon-button-D4GrKqC0.cjs} +2 -2
  134. package/dist/{icon-button-Dv6GLseS.cjs.map → icon-button-D4GrKqC0.cjs.map} +1 -1
  135. package/dist/{icon-button-nX-6I8-n.js → icon-button-UhONt-F9.js} +3 -3
  136. package/dist/{icon-button-nX-6I8-n.js.map → icon-button-UhONt-F9.js.map} +1 -1
  137. package/dist/{icon-h6T16FZr.js → icon-tJDnrQSl.js} +2 -2
  138. package/dist/{icon-h6T16FZr.js.map → icon-tJDnrQSl.js.map} +1 -1
  139. package/dist/icons.cjs +1 -1
  140. package/dist/icons.js +1 -1
  141. package/dist/index.cjs +1 -1
  142. package/dist/index.js +43 -43
  143. package/dist/{input-CRyjA5vL.js → input-BKGOpZ3z.js} +3 -3
  144. package/dist/{input-CRyjA5vL.js.map → input-BKGOpZ3z.js.map} +1 -1
  145. package/dist/{input-oZQ_ATz5.cjs → input-dNXzVzgY.cjs} +2 -2
  146. package/dist/{input-oZQ_ATz5.cjs.map → input-dNXzVzgY.cjs.map} +1 -1
  147. package/dist/input.cjs +1 -1
  148. package/dist/input.js +1 -1
  149. package/dist/layout.cjs +1 -1
  150. package/dist/layout.js +1 -1
  151. package/dist/{list-le1t7wnv.js → list-BXQI_aVt.js} +2 -2
  152. package/dist/{list-le1t7wnv.js.map → list-BXQI_aVt.js.map} +1 -1
  153. package/dist/{list-DsOs1b2s.cjs → list-DLKOrlMB.cjs} +2 -2
  154. package/dist/{list-DsOs1b2s.cjs.map → list-DLKOrlMB.cjs.map} +1 -1
  155. package/dist/list.cjs +1 -1
  156. package/dist/list.js +1 -1
  157. package/dist/{litElement.mixin-nh8G1Uii.js → litElement.mixin-BFshhc99.js} +2 -2
  158. package/dist/{litElement.mixin-nh8G1Uii.js.map → litElement.mixin-BFshhc99.js.map} +1 -1
  159. package/dist/{litElement.mixin-HAhKNS-6.cjs → litElement.mixin-D80K-DKp.cjs} +2 -2
  160. package/dist/{litElement.mixin-HAhKNS-6.cjs.map → litElement.mixin-D80K-DKp.cjs.map} +1 -1
  161. package/dist/{media-BP4kiHwu.js → media-CMy1y_G4.js} +2 -2
  162. package/dist/{media-BP4kiHwu.js.map → media-CMy1y_G4.js.map} +1 -1
  163. package/dist/{media-D90bHvDD.cjs → media-DrrOd3Cp.cjs} +2 -2
  164. package/dist/{media-D90bHvDD.cjs.map → media-DrrOd3Cp.cjs.map} +1 -1
  165. package/dist/{menu-BirD28L0.js → menu-CIbYjq5w.js} +3 -3
  166. package/dist/{menu-BirD28L0.js.map → menu-CIbYjq5w.js.map} +1 -1
  167. package/dist/{menu-C0F6gTv9.cjs → menu-HxSHRr44.cjs} +2 -2
  168. package/dist/{menu-C0F6gTv9.cjs.map → menu-HxSHRr44.cjs.map} +1 -1
  169. package/dist/menu.cjs +1 -1
  170. package/dist/menu.js +1 -1
  171. package/dist/nav-drawer.cjs +1 -1
  172. package/dist/nav-drawer.js +1 -1
  173. package/dist/{notification-service-COqkYPMO.cjs → notification-service-D6dwccSa.cjs} +2 -2
  174. package/dist/{notification-service-COqkYPMO.cjs.map → notification-service-D6dwccSa.cjs.map} +1 -1
  175. package/dist/{notification-service-CX1notpL.js → notification-service-DqhrEhim.js} +3 -3
  176. package/dist/{notification-service-CX1notpL.js.map → notification-service-DqhrEhim.js.map} +1 -1
  177. package/dist/notification.cjs +1 -1
  178. package/dist/notification.js +1 -1
  179. package/dist/{option-BgfgOhne.js → option-B7mh5iBR.js} +2 -2
  180. package/dist/{option-BgfgOhne.js.map → option-B7mh5iBR.js.map} +1 -1
  181. package/dist/{option-C2ioIuX3.cjs → option-YZacOiKm.cjs} +2 -2
  182. package/dist/{option-C2ioIuX3.cjs.map → option-YZacOiKm.cjs.map} +1 -1
  183. package/dist/option.cjs +1 -1
  184. package/dist/option.js +1 -1
  185. package/dist/{payment-card-form-CPdQDBjl.cjs → payment-card-form-Ba3j-mko.cjs} +2 -2
  186. package/dist/{payment-card-form-CPdQDBjl.cjs.map → payment-card-form-Ba3j-mko.cjs.map} +1 -1
  187. package/dist/{payment-card-form-BV5TjuAP.js → payment-card-form-jeoZZi6p.js} +3 -3
  188. package/dist/{payment-card-form-BV5TjuAP.js.map → payment-card-form-jeoZZi6p.js.map} +1 -1
  189. package/dist/progress-CZXKwGBB.cjs +35 -0
  190. package/dist/progress-CZXKwGBB.cjs.map +1 -0
  191. package/dist/progress-D4y0dpK9.js +57 -0
  192. package/dist/progress-D4y0dpK9.js.map +1 -0
  193. package/dist/progress.cjs +1 -1
  194. package/dist/progress.js +1 -1
  195. package/dist/{radio-button-D6ZQIEMc.js → radio-button-CKty5_sG.js} +3 -3
  196. package/dist/{radio-button-D6ZQIEMc.js.map → radio-button-CKty5_sG.js.map} +1 -1
  197. package/dist/{radio-button-Bplx6LUo.cjs → radio-button-DeAY1R3D.cjs} +2 -2
  198. package/dist/{radio-button-Bplx6LUo.cjs.map → radio-button-DeAY1R3D.cjs.map} +1 -1
  199. package/dist/radio-group.cjs +1 -1
  200. package/dist/radio-group.js +1 -1
  201. package/dist/{schmancy-steps-container-CI_dfEaJ.cjs → schmancy-steps-container-CmSXDf7C.cjs} +2 -2
  202. package/dist/{schmancy-steps-container-CI_dfEaJ.cjs.map → schmancy-steps-container-CmSXDf7C.cjs.map} +1 -1
  203. package/dist/{schmancy-steps-container-feCUXcti.js → schmancy-steps-container-DdxlPOl3.js} +2 -2
  204. package/dist/{schmancy-steps-container-feCUXcti.js.map → schmancy-steps-container-DdxlPOl3.js.map} +1 -1
  205. package/dist/{select-B4HKxJNd.js → select-DCqtkgHe.js} +7 -7
  206. package/dist/select-DCqtkgHe.js.map +1 -0
  207. package/dist/select-JeuY2nWW.cjs +56 -0
  208. package/dist/select-JeuY2nWW.cjs.map +1 -0
  209. package/dist/select.cjs +1 -1
  210. package/dist/select.js +1 -1
  211. package/dist/{sheet-CoHqDHlJ.js → sheet-q6FFKREE.js} +4 -4
  212. package/dist/{sheet-CoHqDHlJ.js.map → sheet-q6FFKREE.js.map} +1 -1
  213. package/dist/{sheet-BD7mNPgo.cjs → sheet-t4A4BeGz.cjs} +2 -2
  214. package/dist/{sheet-BD7mNPgo.cjs.map → sheet-t4A4BeGz.cjs.map} +1 -1
  215. package/dist/sheet.cjs +1 -1
  216. package/dist/sheet.js +2 -2
  217. package/dist/{theme.component-CqT-wazM.cjs → sheet.service-DO-2bnGp.cjs} +3 -3
  218. package/dist/sheet.service-DO-2bnGp.cjs.map +1 -0
  219. package/dist/{theme.component-Biom0Mmq.js → sheet.service-DqO2aRtR.js} +60 -60
  220. package/dist/sheet.service-DqO2aRtR.js.map +1 -0
  221. package/dist/{slider-D8YnrJ-8.cjs → slider-BtKp18tE.cjs} +2 -2
  222. package/dist/{slider-D8YnrJ-8.cjs.map → slider-BtKp18tE.cjs.map} +1 -1
  223. package/dist/{slider-B7r8w_31.js → slider-Cv78iuoH.js} +3 -3
  224. package/dist/{slider-B7r8w_31.js.map → slider-Cv78iuoH.js.map} +1 -1
  225. package/dist/slider.cjs +1 -1
  226. package/dist/slider.js +1 -1
  227. package/dist/spinner-BZKI4Aje.cjs +77 -0
  228. package/dist/spinner-BZKI4Aje.cjs.map +1 -0
  229. package/dist/spinner-DIXpf7Xc.js +106 -0
  230. package/dist/spinner-DIXpf7Xc.js.map +1 -0
  231. package/dist/steps.cjs +1 -1
  232. package/dist/steps.js +1 -1
  233. package/dist/{surface-CjUKBdLJ.cjs → surface-6Kwk9NCC.cjs} +2 -2
  234. package/dist/{surface-CjUKBdLJ.cjs.map → surface-6Kwk9NCC.cjs.map} +1 -1
  235. package/dist/{surface-Bw7q1kMH.js → surface-By-1_D5m.js} +2 -2
  236. package/dist/{surface-Bw7q1kMH.js.map → surface-By-1_D5m.js.map} +1 -1
  237. package/dist/surface.cjs +1 -1
  238. package/dist/surface.js +1 -1
  239. package/dist/{table-DQ38Z4T0.js → table-BKdxrE64.js} +2 -2
  240. package/dist/{table-DQ38Z4T0.js.map → table-BKdxrE64.js.map} +1 -1
  241. package/dist/{table-DFnbyo4s.cjs → table-BojV1cr-.cjs} +2 -2
  242. package/dist/{table-DFnbyo4s.cjs.map → table-BojV1cr-.cjs.map} +1 -1
  243. package/dist/table.cjs +1 -1
  244. package/dist/table.js +1 -1
  245. package/dist/{tabs-compatibility-DYErcu_5.js → tabs-compatibility-BddIPDk-.js} +2 -2
  246. package/dist/{tabs-compatibility-DYErcu_5.js.map → tabs-compatibility-BddIPDk-.js.map} +1 -1
  247. package/dist/{tabs-compatibility-BFULPNKJ.cjs → tabs-compatibility-BuSTUrbW.cjs} +2 -2
  248. package/dist/{tabs-compatibility-BFULPNKJ.cjs.map → tabs-compatibility-BuSTUrbW.cjs.map} +1 -1
  249. package/dist/tabs.cjs +1 -1
  250. package/dist/tabs.js +1 -1
  251. package/dist/tailwind.mixin-C9wSwMyj.cjs +2 -0
  252. package/dist/{tailwind.mixin-DN3mj7AF.cjs.map → tailwind.mixin-C9wSwMyj.cjs.map} +1 -1
  253. package/dist/tailwind.mixin-CjS7whsn.js +43 -0
  254. package/dist/{tailwind.mixin-CGuZJSAV.js.map → tailwind.mixin-CjS7whsn.js.map} +1 -1
  255. package/dist/teleport.cjs +1 -1
  256. package/dist/teleport.js +1 -1
  257. package/dist/{textarea-DUQC00Fd.js → textarea-BkUV1o5c.js} +2 -2
  258. package/dist/{textarea-DUQC00Fd.js.map → textarea-BkUV1o5c.js.map} +1 -1
  259. package/dist/{textarea-B1kV_2eH.cjs → textarea-Csc71VAg.cjs} +2 -2
  260. package/dist/{textarea-B1kV_2eH.cjs.map → textarea-Csc71VAg.cjs.map} +1 -1
  261. package/dist/textarea.cjs +1 -1
  262. package/dist/textarea.js +1 -1
  263. package/dist/{theme-button-nswF-4e7.cjs → theme-button-BBAfag6o.cjs} +2 -2
  264. package/dist/{theme-button-nswF-4e7.cjs.map → theme-button-BBAfag6o.cjs.map} +1 -1
  265. package/dist/{theme-button-CXnJIlOE.js → theme-button-D-bDzeOP.js} +2 -2
  266. package/dist/{theme-button-CXnJIlOE.js.map → theme-button-D-bDzeOP.js.map} +1 -1
  267. package/dist/theme-button.cjs +1 -1
  268. package/dist/theme-button.js +1 -1
  269. package/dist/theme.cjs +1 -1
  270. package/dist/theme.js +1 -1
  271. package/dist/{timezone-DEfdZ7Ih.js → timezone-CRh0TVA5.js} +3 -3
  272. package/dist/{timezone-DEfdZ7Ih.js.map → timezone-CRh0TVA5.js.map} +1 -1
  273. package/dist/{timezone-BanTl7db.cjs → timezone-DntF7Anf.cjs} +2 -2
  274. package/dist/{timezone-BanTl7db.cjs.map → timezone-DntF7Anf.cjs.map} +1 -1
  275. package/dist/{tooltip-DyiokkSK.cjs → tooltip-7Vz-0dIm.cjs} +2 -2
  276. package/dist/{tooltip-DyiokkSK.cjs.map → tooltip-7Vz-0dIm.cjs.map} +1 -1
  277. package/dist/{tooltip-Cwd97bhO.js → tooltip-DSZZBYgA.js} +2 -2
  278. package/dist/{tooltip-Cwd97bhO.js.map → tooltip-DSZZBYgA.js.map} +1 -1
  279. package/dist/tooltip.cjs +1 -1
  280. package/dist/tooltip.js +1 -1
  281. package/dist/{tree-DiGklPGH.js → tree-BNtkejK4.js} +2 -2
  282. package/dist/{tree-DiGklPGH.js.map → tree-BNtkejK4.js.map} +1 -1
  283. package/dist/{tree-CkEPnffd.cjs → tree-CPQBVpEO.cjs} +2 -2
  284. package/dist/{tree-CkEPnffd.cjs.map → tree-CPQBVpEO.cjs.map} +1 -1
  285. package/dist/tree.cjs +1 -1
  286. package/dist/tree.js +1 -1
  287. package/dist/{typewriter-CclJKtWA.js → typewriter-Brhk0nKN.js} +4 -4
  288. package/dist/{typewriter-CclJKtWA.js.map → typewriter-Brhk0nKN.js.map} +1 -1
  289. package/dist/{typewriter-3DNeJHA8.cjs → typewriter-h4SJqRGh.cjs} +2 -2
  290. package/dist/{typewriter-3DNeJHA8.cjs.map → typewriter-h4SJqRGh.cjs.map} +1 -1
  291. package/dist/typewriter.cjs +1 -1
  292. package/dist/typewriter.js +1 -1
  293. package/dist/{typography-CddeXVmZ.cjs → typography-7ntwHeb5.cjs} +2 -2
  294. package/dist/{typography-CddeXVmZ.cjs.map → typography-7ntwHeb5.cjs.map} +1 -1
  295. package/dist/{typography-UQvNQS6H.js → typography-Bt0EPE8x.js} +2 -2
  296. package/dist/{typography-UQvNQS6H.js.map → typography-Bt0EPE8x.js.map} +1 -1
  297. package/dist/typography.cjs +1 -1
  298. package/dist/typography.js +1 -1
  299. package/package.json +1 -1
  300. package/dist/progress-C7nnUVNo.cjs +0 -30
  301. package/dist/progress-C7nnUVNo.cjs.map +0 -1
  302. package/dist/progress-DNoDfb2_.js +0 -52
  303. package/dist/progress-DNoDfb2_.js.map +0 -1
  304. package/dist/select-7MfozdvB.cjs +0 -56
  305. package/dist/select-7MfozdvB.cjs.map +0 -1
  306. package/dist/select-B4HKxJNd.js.map +0 -1
  307. package/dist/spinner-CXfX6eka.js +0 -77
  308. package/dist/spinner-CXfX6eka.js.map +0 -1
  309. package/dist/spinner-DYX-qUui.cjs +0 -45
  310. package/dist/spinner-DYX-qUui.cjs.map +0 -1
  311. package/dist/tailwind.mixin-CGuZJSAV.js +0 -43
  312. package/dist/tailwind.mixin-DN3mj7AF.cjs +0 -2
  313. package/dist/theme.component-Biom0Mmq.js.map +0 -1
  314. package/dist/theme.component-CqT-wazM.cjs.map +0 -1
@@ -0,0 +1,56 @@
1
+ "use strict";const h=require("@floating-ui/dom"),p=require("rxjs"),f=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const m=require("./litElement.mixin-D80K-DKp.cjs");require("./tailwind.mixin-C9wSwMyj.cjs");const a=require("lit/decorators.js"),v=require("./ripple-C2BHbhcS.cjs"),u=require("./theme.interface-Xg5Zi46a.cjs"),c=require("lit");var b=Object.defineProperty,S=Object.getOwnPropertyDescriptor,o=(t,e,i,s)=>{for(var n,l=s>1?void 0:s?S(e,i):e,r=t.length-1;r>=0;r--)(n=t[r])&&(l=(s?n(e,i,l):n(l))||l);return s&&l&&b(e,i,l),l};exports.SchmancySelect=class extends m.$LitElement(c.css`
2
+ :host {
3
+ display: block;
4
+ position: relative;
5
+ }
6
+
7
+ [role='listbox'] {
8
+ overflow-y: auto;
9
+ outline: none;
10
+ }
11
+ `){constructor(){super(),this.required=!1,this.disabled=!1,this.placeholder="",this.value="",this.multi=!1,this.label="",this.hint="",this.validateOn="touched",this.isOpen=!1,this.valueLabel="",this.isValid=!0,this.validationMessage="",this.defaultValue="",this._userInteracted=!1,this._touched=!1,this._dirty=!1,this._submitted=!1,this._focusedOptionId="",this.formSubmitHandler=()=>{this._submitted=!0,this.checkValidity()},this.formResetHandler=()=>{this.reset()},this.handleKeyDown=t=>{if(this.disabled)return;if(!this.isOpen)return void(["Enter"," ","ArrowDown"].includes(t.key)&&(t.preventDefault(),this.openDropdown(!1)));const e=Array.from(this.options||[]),i=e.findIndex(s=>s.id===this._focusedOptionId)??-1;switch(t.key){case"Escape":t.preventDefault(),this.closeDropdown();break;case"ArrowDown":t.preventDefault(),this.focusOption(e,Math.min(i+1,e.length-1));break;case"ArrowUp":t.preventDefault(),this.focusOption(e,Math.max(i-1,0));break;case"Home":t.preventDefault(),this.focusOption(e,0);break;case"End":t.preventDefault(),this.focusOption(e,e.length-1);break;case"Enter":case" ":if(t.preventDefault(),this._focusedOptionId){const s=e.find(n=>n.id===this._focusedOptionId);s&&this.handleOptionSelect(s.value)}break;case"Tab":this.closeDropdown()}};try{this.internals=this.attachInternals()}catch{}}get form(){return this.internals?.form}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-select-${Math.random().toString(36).substring(2,9)}`),this.defaultValue=this.value,p.fromEvent(this,"keydown").pipe(p.takeUntil(this.disconnecting)).subscribe(this.handleKeyDown),p.fromEvent(this,"option-select").pipe(p.takeUntil(this.disconnecting)).subscribe(t=>{t.stopPropagation(),this.handleOptionSelect(t.detail.value)}),this.internals?.form&&(this.internals.form.addEventListener("submit",this.formSubmitHandler),this.internals.form.addEventListener("reset",this.formResetHandler)),this.inputRef&&(this.inputRef.error=!1)}disconnectedCallback(){super.disconnectedCallback(),this.cleanupPositioner?.(),this.internals?.form&&(this.internals.form.removeEventListener("submit",this.formSubmitHandler),this.internals.form.removeEventListener("reset",this.formResetHandler))}firstUpdated(){this.syncSelection(),this.setupOptionsAccessibility()}updated(t){if(super.updated(t),t.has("value")){const e=Array.isArray(this.value)?this.value.join(","):this.value;this.internals?.setFormValue(e),this.hasUpdated&&(this._dirty=!0),this.syncSelection(),this.hasUpdated&&this.checkValidity()}t.has("isOpen")&&(this.isOpen?this.positionDropdown():this.cleanupPositioner?.())}shouldShowValidation(t=!1){if(t)return!0;switch(this.validateOn){case"always":return!0;case"touched":default:return this._touched;case"dirty":return this._dirty;case"submitted":return this._submitted}}syncSelection(){if(this.multi){const t=Array.isArray(this.value)?this.value:this.value?this.value.split(","):[];this.options?.forEach(e=>e.selected=t.includes(e.value)),this.valueLabel=t.length>0&&this.options?.filter(e=>t.includes(e.value)).map(e=>e.label).join(", ")||this.placeholder}else{const t=String(this.value);this.options?.forEach(i=>{i.selected=i.value===t});const e=this.options?.find(i=>i.value===t);this.valueLabel=e?.label||this.placeholder}}setupOptionsAccessibility(){this.options?.forEach((t,e)=>{t.setAttribute("role","option"),t.id||(t.id=`${this.id}-option-${e}`),t.tabIndex=-1;const i=Array.isArray(this.value)?this.value:this.value?this.value.split(","):[];t.setAttribute("aria-selected",String(this.multi?i.includes(t.value):t.value===this.value))})}async positionDropdown(){const t=this.renderRoot.querySelector(".trigger");t&&this.ul&&(this.cleanupPositioner=h.autoUpdate(t,this.ul,async()=>{const e=window.innerHeight,i=t.getBoundingClientRect(),s=e-i.bottom,n=i.top,l=Math.max(.75*Math.max(s,n),150),r=s<200&&n>s;this.ul.style.maxHeight=`${l}px`;const{x:d,y}=await h.computePosition(t,this.ul,{placement:r?"top-start":"bottom-start",middleware:[h.offset(5),h.flip(),h.shift({padding:5})]});Object.assign(this.ul.style,{left:`${d}px`,top:`${y}px`,position:"absolute",width:`${t.offsetWidth}px`})}))}focusOption(t,e){const i=t[e];if(i){i.focus(),this._focusedOptionId=i.id;const s=this.renderRoot.querySelector(".trigger");if(s&&s.setAttribute("aria-activedescendant",i.id),this.ul&&i.offsetTop!==void 0){const n=i.offsetTop,l=i.offsetHeight,r=this.ul.scrollTop,d=this.ul.clientHeight;n<r?this.ul.scrollTop=n:n+l>r+d&&(this.ul.scrollTop=n+l-d)}}}async openDropdown(t=!1){if(this.disabled)return;this.syncSelection(),this.isOpen=!0,await this.updateComplete;const e=Array.from(this.options||[]),i=this.multi?0:e.findIndex(s=>s.value===String(this.value));this.focusOption(e,Math.max(i,0)),t&&this.reportValidity()}closeDropdown(){this._userInteracted&&(this._touched=!0),this.isOpen=!1,this._focusedOptionId="";const t=this.renderRoot.querySelector(".trigger");t&&(t.removeAttribute("aria-activedescendant"),t?.focus()),this._userInteracted&&this.shouldShowValidation()&&this.checkValidity()}handleOptionSelect(t){if(this._userInteracted=!0,this._touched=!0,this._dirty=!0,this.multi){const e=this.options.find(s=>s.value===t);if(!e)return;let i;e.selected=!e.selected,i=Array.isArray(this.value)?[...this.value]:this.value?this.value.split(","):[],e.selected?i.includes(t)||i.push(t):i=i.filter(s=>s!==t),this.value=i,this.valueLabel=i.length>0?this.options.filter(s=>i.includes(s.value)).map(s=>s.label).join(", "):this.placeholder}else this.options.forEach(e=>{e.selected=e.value===t}),this.value=t,this.valueLabel=this.options.find(e=>e.value===t)?.label||this.placeholder,this.closeDropdown();this.setupOptionsAccessibility(),this.dispatchChange(this.value)}dispatchChange(t){this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0})),this.checkValidity()}checkValidity(){if(this.disabled)return!0;const t=this.multi&&Array.isArray(this.value)?this.value.length===0:!this.value,e=!(this.required&&t);if(this.isValid=e,this.isValid?(this.validationMessage="",this.internals?.setValidity({})):(this.validationMessage="Please select an option.",this.internals?.setValidity({valueMissing:!0},"Please select an option.",this.inputRef)),this.inputRef&&this.hasUpdated){const i=!this.isValid&&this.shouldShowValidation();this.inputRef.error=i,this.inputRef.hint=i?this.validationMessage:this.hint}return this.isValid}reportValidity(){const t=this.checkValidity();return this.inputRef&&(this.inputRef.error=!t,this.inputRef.hint=t?this.hint:this.validationMessage,t||this.isOpen||this.openDropdown(!1),t||this.inputRef.reportValidity()),t}setCustomValidity(t){this.validationMessage=t,t?(this.isValid=!1,this.internals?.setValidity({customError:!0},t,this.inputRef)):(this.isValid=!0,this.internals?.setValidity({})),this.inputRef&&this.shouldShowValidation()&&(this.inputRef.error=!this.isValid,this.inputRef.hint=this.isValid?this.hint:this.validationMessage)}reset(){this.value=this.defaultValue,this.valueLabel=this.placeholder,this.isValid=!0,this.validationMessage="",this._touched=!1,this._dirty=!1,this._submitted=!1,this._userInteracted=!1,this.internals?.setValidity({}),this.syncSelection(),this.inputRef&&(this.inputRef.error=!1,this.inputRef.hint=this.hint)}render(){const t=!this.isValid&&this.shouldShowValidation()&&!this.isOpen,e=this.isOpen?c.html`<span class="absolute right-3 top-1/2 transform -translate-y-1/2">▲</span>`:c.html`<span class="absolute right-3 top-1/2 transform -translate-y-1/2">▼</span>`;return c.html`
12
+ <div class="relative ${this.disabled?"opacity-60 cursor-not-allowed":""}">
13
+ <sch-input
14
+ .name=${this.name}
15
+ tabIndex=${this.disabled?"-1":"0"}
16
+ class="trigger"
17
+ role="combobox"
18
+ aria-haspopup="listbox"
19
+ aria-expanded=${this.isOpen}
20
+ aria-controls="options"
21
+ aria-autocomplete="none"
22
+ aria-required=${this.required}
23
+ aria-activedescendant=${this._focusedOptionId||void 0}
24
+ aria-disabled=${this.disabled}
25
+ .label=${this.label}
26
+ .placeholder=${this.placeholder}
27
+ .value=${this.valueLabel}
28
+ .required=${this.required}
29
+ .disabled=${this.disabled}
30
+ .hint=${t?this.validationMessage:this.hint}
31
+ .error=${t}
32
+ .validateOn=${this.validateOn}
33
+ readonly
34
+ clickable
35
+ @click=${i=>{if(this.disabled)return i.preventDefault(),void i.stopPropagation();this.isOpen?(this._userInteracted=!0,this.closeDropdown()):this.openDropdown(!1)}}
36
+ >
37
+ ${e}
38
+ </sch-input>
39
+
40
+ <!-- Overlay for capturing clicks outside when dropdown is open -->
41
+ ${this.isOpen?c.html` <div class="fixed inset-0 z-10" @click=${this.closeDropdown} tabindex="-1" aria-hidden="true"></div> `:""}
42
+
43
+ <ul
44
+ id="options"
45
+ role="listbox"
46
+ aria-multiselectable=${this.multi}
47
+ class=${f.classMap({"absolute min-w-full w-full z-20 mt-1 rounded-md shadow-lg":!0,hidden:!this.isOpen})}
48
+ ${v.color({bgColor:u.SchmancyTheme.sys.color.surface.low,color:u.SchmancyTheme.sys.color.surface.on})}
49
+ >
50
+ <slot
51
+ @slotchange=${()=>{this.syncSelection(),this.setupOptionsAccessibility()}}
52
+ ></slot>
53
+ </ul>
54
+ </div>
55
+ `}},exports.SchmancySelect.formAssociated=!0,o([a.property({type:String})],exports.SchmancySelect.prototype,"name",2),o([a.property({type:Boolean,reflect:!0})],exports.SchmancySelect.prototype,"required",2),o([a.property({type:Boolean,reflect:!0})],exports.SchmancySelect.prototype,"disabled",2),o([a.property({type:String})],exports.SchmancySelect.prototype,"placeholder",2),o([a.property({type:String,reflect:!0})],exports.SchmancySelect.prototype,"value",2),o([a.property({type:Boolean})],exports.SchmancySelect.prototype,"multi",2),o([a.property({type:String})],exports.SchmancySelect.prototype,"label",2),o([a.property({type:String})],exports.SchmancySelect.prototype,"hint",2),o([a.property({type:String})],exports.SchmancySelect.prototype,"validateOn",2),o([a.state()],exports.SchmancySelect.prototype,"isOpen",2),o([a.state()],exports.SchmancySelect.prototype,"valueLabel",2),o([a.state()],exports.SchmancySelect.prototype,"isValid",2),o([a.property({type:String})],exports.SchmancySelect.prototype,"validationMessage",2),o([a.state()],exports.SchmancySelect.prototype,"defaultValue",2),o([a.query("ul")],exports.SchmancySelect.prototype,"ul",2),o([a.query("sch-input")],exports.SchmancySelect.prototype,"inputRef",2),o([a.queryAssignedElements({flatten:!0})],exports.SchmancySelect.prototype,"options",2),o([a.state()],exports.SchmancySelect.prototype,"_userInteracted",2),o([a.state()],exports.SchmancySelect.prototype,"_touched",2),o([a.state()],exports.SchmancySelect.prototype,"_dirty",2),o([a.state()],exports.SchmancySelect.prototype,"_submitted",2),o([a.state()],exports.SchmancySelect.prototype,"_focusedOptionId",2),exports.SchmancySelect=o([a.customElement("schmancy-select")],exports.SchmancySelect);
56
+ //# sourceMappingURL=select-JeuY2nWW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-JeuY2nWW.cjs","sources":["../src/select/select.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\nexport type SchmancySelectChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-select')\nexport class SchmancySelect extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t}\n\n\t[role='listbox'] {\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t}\n`) {\n\t// Form association setup\n\tstatic formAssociated = true\n\tprivate internals?: ElementInternals\n\n\t// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean, reflect: true }) required = false\n\t@property({ type: Boolean, reflect: true }) disabled = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value: string | string[] = '' // for single-select or multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) hint = ''\n\t@property({ type: String }) validateOn: 'always' | 'touched' | 'dirty' | 'submitted' = 'touched'\n\n\t// Internal states\n\t@state() private isOpen = false\n\t@state() private valueLabel = ''\n\t@state() private isValid = true\n\t@property({ type: String }) validationMessage = ''\n\n\t// Store the initial/default value for reset behavior\n\t@state() private defaultValue: string | string[] = ''\n\n\t@query('ul') private ul!: HTMLUListElement\n\t@query('sch-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\t@state() _userInteracted = false\n\t@state() private _touched = false\n\t@state() private _dirty = false\n\t@state() private _submitted = false\n\n\t// Reference to current focused option (for keyboard navigation)\n\t@state() private _focusedOptionId = ''\n\n\t// Store form event handlers as class properties to properly remove them\n\tprivate formSubmitHandler = () => {\n\t\tthis._submitted = true\n\t\tthis.checkValidity()\n\t}\n\n\tprivate formResetHandler = () => {\n\t\tthis.reset()\n\t}\n\n\tconstructor() {\n\t\tsuper()\n\t\t// Initialize ElementInternals for form association\n\t\ttry {\n\t\t\tthis.internals = this.attachInternals()\n\t\t} catch (e) {\n\t\t\tconsole.warn('FormAssociated elements not supported in this browser', e)\n\t\t}\n\t}\n\n\tget form() {\n\t\treturn this.internals?.form\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substring(2, 9)}`\n\t\t}\n\n\t\t// Store initial value for reset\n\t\tthis.defaultValue = this.value\n\n\t\t// Add keyboard handling to host element\n\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(takeUntil(this.disconnecting)).subscribe(this.handleKeyDown)\n\n\t\t// Listen for option-select events from child options\n\t\tfromEvent<CustomEvent>(this, 'option-select')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe((e) => {\n\t\t\t\te.stopPropagation() // Prevent event from bubbling further\n\t\t\t\tthis.handleOptionSelect(e.detail.value)\n\t\t\t})\n\n\t\t// Listen for form submission events to mark field as submitted\n\t\tif (this.internals?.form) {\n\t\t\tthis.internals.form.addEventListener('submit', this.formSubmitHandler)\n\n\t\t\t// Listen for form reset\n\t\t\tthis.internals.form.addEventListener('reset', this.formResetHandler)\n\t\t}\n\n\t\t// Initially hide any validation errors until user interacts\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.cleanupPositioner?.()\n\n\t\t// Remove form event listeners using stored handler references\n\t\tif (this.internals?.form) {\n\t\t\tthis.internals.form.removeEventListener('submit', this.formSubmitHandler)\n\t\t\tthis.internals.form.removeEventListener('reset', this.formResetHandler)\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('value')) {\n\t\t\t// Update form value when component value changes\n\t\t\tconst formValue = Array.isArray(this.value) ? this.value.join(',') : this.value\n\t\t\tthis.internals?.setFormValue(formValue)\n\n\t\t\t// Mark as dirty if value changes from initial value\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis._dirty = true\n\t\t\t}\n\n\t\t\t// Update selection state of options\n\t\t\tthis.syncSelection()\n\n\t\t\t// Check validity based on validation strategy\n\t\t\tif (this.hasUpdated) {\n\t\t\t\tthis.checkValidity()\n\t\t\t}\n\t\t}\n\n\t\t// When open state changes, setup or cleanup the dropdown positioner\n\t\tif (changedProps.has('isOpen')) {\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.positionDropdown()\n\t\t\t} else {\n\t\t\t\tthis.cleanupPositioner?.()\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Determines if validation errors should be shown based on current state\n\t * and validation strategy\n\t */\n\tprivate shouldShowValidation(forceValidation = false): boolean {\n\t\tif (forceValidation) return true\n\n\t\tswitch (this.validateOn) {\n\t\t\tcase 'always':\n\t\t\t\treturn true\n\t\t\tcase 'touched':\n\t\t\t\treturn this._touched\n\t\t\tcase 'dirty':\n\t\t\t\treturn this._dirty\n\t\t\tcase 'submitted':\n\t\t\t\treturn this._submitted\n\t\t\tdefault:\n\t\t\t\treturn this._touched\n\t\t}\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : this.value ? this.value.split(',') : []\n\t\t\tthis.options?.forEach(o => (o.selected = selectedValues.includes(o.value))) // Update option selected state\n\t\t\tthis.valueLabel =\n\t\t\t\tselectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t?.filter(o => selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ') || this.placeholder\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\t// Single select - update option selected state AND value label\n\t\t\tconst currentValue = String(this.value) // Convert to string for safer comparison\n\t\t\tthis.options?.forEach(o => {\n\t\t\t\t// Set selected property on each option based on matching value\n\t\t\t\to.selected = o.value === currentValue\n\t\t\t})\n\t\t\tconst selectedOption = this.options?.find(o => o.value === currentValue)\n\t\t\tthis.valueLabel = selectedOption?.label || this.placeholder\n\t\t}\n\t}\n\n\tprivate setupOptionsAccessibility() {\n\t\tthis.options?.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\n\t\t\t// Set tabindex to -1 so they're focusable programmatically but not in the tab order\n\t\t\toption.tabIndex = -1\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : this.value ? this.value.split(',') : []\n\n\t\t\toption.setAttribute(\n\t\t\t\t'aria-selected',\n\t\t\t\tString(this.multi ? selectedValues.includes(option.value) : option.value === this.value),\n\t\t\t)\n\t\t})\n\t}\n\n\tprivate async positionDropdown() {\n\t\tconst reference = this.renderRoot.querySelector('.trigger') as HTMLElement\n\t\tif (!reference || !this.ul) return\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\t// Get viewport dimensions\n\t\t\tconst viewportHeight = window.innerHeight\n\t\t\tconst triggerRect = reference.getBoundingClientRect()\n\n\t\t\t// Calculate available space below and above\n\t\t\tconst spaceBelow = viewportHeight - triggerRect.bottom\n\t\t\tconst spaceAbove = triggerRect.top\n\n\t\t\t// Calculate max height - use 75% of the largest available space, but at least 150px\n\t\t\tconst maxHeight = Math.max(Math.max(spaceBelow, spaceAbove) * 0.75, 150)\n\n\t\t\t// Determine if we should flip\n\t\t\tconst shouldFlip = spaceBelow < 200 && spaceAbove > spaceBelow\n\n\t\t\t// Apply max height\n\t\t\tthis.ul.style.maxHeight = `${maxHeight}px`\n\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: shouldFlip ? 'top-start' : 'bottom-start',\n\t\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t\t})\n\n\t\t\tObject.assign(this.ul.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t\tposition: 'absolute',\n\t\t\t\twidth: `${reference.offsetWidth}px`, // Match the width of the trigger\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\t// Don't handle keyboard events when disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.isOpen) {\n\t\t\tif (['Enter', ' ', 'ArrowDown'].includes(e.key)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// Find current focused option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst current = options.findIndex(o => o.id === this._focusedOptionId) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.min(current + 1, options.length - 1))\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, Math.max(current - 1, 0))\n\t\t\t\tbreak\n\t\t\tcase 'Home':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, 0)\n\t\t\t\tbreak\n\t\t\tcase 'End':\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.focusOption(options, options.length - 1)\n\t\t\t\tbreak\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (this._focusedOptionId) {\n\t\t\t\t\tconst focusedOption = options.find(opt => opt.id === this._focusedOptionId)\n\t\t\t\t\tif (focusedOption) {\n\t\t\t\t\t\tthis.handleOptionSelect(focusedOption.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tcase 'Tab':\n\t\t\t\tthis.closeDropdown()\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate focusOption(options: SchmancyOption[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tthis._focusedOptionId = option.id\n\n\t\t\t// Update aria-activedescendant on the combobox\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tif (combobox) {\n\t\t\t\tcombobox.setAttribute('aria-activedescendant', option.id)\n\t\t\t}\n\n\t\t\t// Ensure option is visible in the scrollable area\n\t\t\tif (this.ul && option.offsetTop !== undefined) {\n\t\t\t\t// Get position info\n\t\t\t\tconst optionTop = option.offsetTop\n\t\t\t\tconst optionHeight = option.offsetHeight\n\t\t\t\tconst scrollTop = this.ul.scrollTop\n\t\t\t\tconst ulHeight = this.ul.clientHeight\n\n\t\t\t\t// Scroll into view if needed\n\t\t\t\tif (optionTop < scrollTop) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop\n\t\t\t\t} else if (optionTop + optionHeight > scrollTop + ulHeight) {\n\t\t\t\t\tthis.ul.scrollTop = optionTop + optionHeight - ulHeight\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\t// Don't open if disabled\n\t\tif (this.disabled) {\n\t\t\treturn\n\t\t}\n\n\t\t// Don't mark as touched on opening - we'll do that on closing\n\t\t// so errors only show after interaction is complete\n\n\t\t// Make sure options' selected state is in sync before opening\n\t\tthis.syncSelection()\n\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\t// Focus first or selected option\n\t\tconst options = Array.from(this.options || [])\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.value === String(this.value))\n\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\n\t\t// Don't automatically validate when opening\n\t\t// Only validate if explicitly requested (like from a form submission)\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\t// Only mark as touched if the user actually interacted with the component\n\t\t// and made a selection or explicitly closed it without selecting\n\t\tif (this._userInteracted) {\n\t\t\tthis._touched = true\n\t\t}\n\n\t\tthis.isOpen = false\n\t\tthis._focusedOptionId = ''\n\n\t\t// Update combobox to remove aria-activedescendant\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tif (combobox) {\n\t\t\tcombobox.removeAttribute('aria-activedescendant')\n\t\t\tcombobox?.focus()\n\t\t}\n\n\t\t// Only check validity when closing if the user has actually interacted\n\t\t// with the component and validation should be shown\n\t\tif (this._userInteracted && this.shouldShowValidation()) {\n\t\t\tthis.checkValidity()\n\t\t}\n\t}\n\n\tprivate handleOptionSelect(value: string) {\n\t\tthis._userInteracted = true\n\t\tthis._touched = true\n\t\tthis._dirty = true\n\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (!option) return\n\n\t\t\toption.selected = !option.selected\n\n\t\t\tlet selectedValues: string[]\n\t\t\tif (Array.isArray(this.value)) {\n\t\t\t\tselectedValues = [...this.value]\n\t\t\t} else {\n\t\t\t\tselectedValues = this.value ? this.value.split(',') : []\n\t\t\t}\n\n\t\t\tif (option.selected) {\n\t\t\t\t// Add value if not already present\n\t\t\t\tif (!selectedValues.includes(value)) {\n\t\t\t\t\tselectedValues.push(value)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Remove value\n\t\t\t\tselectedValues = selectedValues.filter(v => v !== value)\n\t\t\t}\n\n\t\t\tthis.value = selectedValues\n\n\t\t\t// Update display label\n\t\t\tthis.valueLabel =\n\t\t\t\tselectedValues.length > 0\n\t\t\t\t\t? this.options\n\t\t\t\t\t\t\t.filter(o => selectedValues.includes(o.value))\n\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t.join(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\t// Single select - explicitly update all options' selection state\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === value\n\t\t\t})\n\t\t\tthis.value = value\n\t\t\tthis.valueLabel = this.options.find(o => o.value === value)?.label || this.placeholder\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\t// Update the option's accessibility state\n\t\tthis.setupOptionsAccessibility()\n\n\t\t// Dispatch change event\n\t\tthis.dispatchChange(this.value)\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\t// Dispatch only one change event with the value in detail\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancySelectChangeEvent['detail']>('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\t// Then check validity (only show error if validation should be shown)\n\t\tthis.checkValidity()\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\t// Disabled fields are always valid\n\t\tif (this.disabled) {\n\t\t\treturn true\n\t\t}\n\n\t\t// Determine if the select is empty based on whether it's multi-select or single-select\n\t\tconst isEmpty = this.multi ? (Array.isArray(this.value) ? this.value.length === 0 : !this.value) : !this.value\n\n\t\t// Check if the value is valid (not empty when required)\n\t\tconst isValid = !(this.required && isEmpty)\n\n\t\t// Set the validity state\n\t\tthis.isValid = isValid\n\n\t\tif (!this.isValid) {\n\t\t\tthis.validationMessage = 'Please select an option.'\n\t\t\tthis.internals?.setValidity({ valueMissing: true }, 'Please select an option.', this.inputRef)\n\t\t} else {\n\t\t\t// Clear validation message\n\t\t\tthis.validationMessage = ''\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update the input component to reflect our validation state\n\t\tif (this.inputRef && this.hasUpdated) {\n\t\t\tconst showError = !this.isValid && this.shouldShowValidation()\n\t\t\tthis.inputRef.error = showError\n\t\t\tthis.inputRef.hint = showError ? this.validationMessage : this.hint\n\t\t}\n\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\t// Force validation display regardless of validation strategy\n\t\tconst valid = this.checkValidity()\n\n\t\t// Force the input to show validation errors\n\t\tif (this.inputRef) {\n\t\t\t// Set the input's error state\n\t\t\tthis.inputRef.error = !valid\n\t\t\tthis.inputRef.hint = !valid ? this.validationMessage : this.hint\n\n\t\t\t// If invalid and not already open, automatically open the dropdown to show options\n\t\t\tif (!valid && !this.isOpen) {\n\t\t\t\t// Open the dropdown but don't mark as user interaction yet\n\t\t\t\t// This helps users immediately see available options when validation fails\n\t\t\t\tthis.openDropdown(false)\n\t\t\t}\n\n\t\t\t// Only call reportValidity on the input if invalid to show the native popup\n\t\t\tif (!valid) {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t}\n\t\t}\n\n\t\treturn valid\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t\tif (message) {\n\t\t\tthis.isValid = false\n\t\t\tthis.internals?.setValidity({ customError: true }, message, this.inputRef)\n\t\t} else {\n\t\t\tthis.isValid = true\n\t\t\tthis.internals?.setValidity({})\n\t\t}\n\n\t\t// Update input if needed\n\t\tif (this.inputRef && this.shouldShowValidation()) {\n\t\t\tthis.inputRef.error = !this.isValid\n\t\t\tthis.inputRef.hint = !this.isValid ? this.validationMessage : this.hint\n\t\t}\n\t}\n\n\tpublic reset() {\n\t\t// Reset to initial value\n\t\tthis.value = this.defaultValue\n\t\tthis.valueLabel = this.placeholder\n\t\tthis.isValid = true\n\t\tthis.validationMessage = ''\n\t\tthis._touched = false\n\t\tthis._dirty = false\n\t\tthis._submitted = false\n\t\tthis._userInteracted = false\n\t\tthis.internals?.setValidity({})\n\t\tthis.syncSelection() // Update the options to match the reset value\n\n\t\tif (this.inputRef) {\n\t\t\tthis.inputRef.error = false\n\t\t\tthis.inputRef.hint = this.hint\n\t\t}\n\t}\n\n\trender(): TemplateResult {\n\t\t// Determine if we should show errors based on the validation strategy and interaction\n\t\t// Never show errors on initial render or if the dropdown is open\n\t\tconst showErrors = !this.isValid && this.shouldShowValidation() && !this.isOpen\n\n\t\t// Add caret icon based on open state\n\t\tconst caretIcon = this.isOpen\n\t\t\t? html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▲</span>`\n\t\t\t: html`<span class=\"absolute right-3 top-1/2 transform -translate-y-1/2\">▼</span>`\n\n\t\treturn html`\n\t\t\t<div class=\"relative ${this.disabled ? 'opacity-60 cursor-not-allowed' : ''}\">\n\t\t\t\t<sch-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=${this.disabled ? '-1' : '0'}\n\t\t\t\t\tclass=\"trigger\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\taria-expanded=${this.isOpen}\n\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\taria-autocomplete=\"none\"\n\t\t\t\t\taria-required=${this.required}\n\t\t\t\t\taria-activedescendant=${this._focusedOptionId || undefined}\n\t\t\t\t\taria-disabled=${this.disabled}\n\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t.value=${this.valueLabel}\n\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t.disabled=${this.disabled}\n\t\t\t\t\t.hint=${showErrors ? this.validationMessage : this.hint}\n\t\t\t\t\t.error=${showErrors}\n\t\t\t\t\t.validateOn=${this.validateOn}\n\t\t\t\t\treadonly\n\t\t\t\t\tclickable\n\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\t// Don't process clicks if disabled\n\t\t\t\t\t\tif (this.disabled) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// On first click, don't count this as user interaction yet\n\t\t\t\t\t\tif (!this.isOpen) {\n\t\t\t\t\t\t\t// Open without triggering validation - we'll validate when they close\n\t\t\t\t\t\t\tthis.openDropdown(false)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Mark as interacted when they close the dropdown\n\t\t\t\t\t\t\tthis._userInteracted = true\n\t\t\t\t\t\t\tthis.closeDropdown()\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t${caretIcon}\n\t\t\t\t</sch-input>\n\n\t\t\t\t<!-- Overlay for capturing clicks outside when dropdown is open -->\n\t\t\t\t${this.isOpen\n\t\t\t\t\t? html` <div class=\"fixed inset-0 z-10\" @click=${this.closeDropdown} tabindex=\"-1\" aria-hidden=\"true\"></div> `\n\t\t\t\t\t: ''}\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi}\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\t'absolute min-w-full w-full z-20 mt-1 rounded-md shadow-lg': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.low,\n\t\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.syncSelection()\n\t\t\t\t\t\t\tthis.setupOptionsAccessibility()\n\t\t\t\t\t\t}}\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-select': SchmancySelect\n\t}\n}\n"],"names":["SchmancySelect","$LitElement","css","super","this","required","disabled","placeholder","value","multi","label","hint","validateOn","isOpen","valueLabel","isValid","validationMessage","defaultValue","_userInteracted","_touched","_dirty","_submitted","_focusedOptionId","formSubmitHandler","checkValidity","formResetHandler","reset","handleKeyDown","e","includes","key","preventDefault","openDropdown","options","Array","from","current","findIndex","o","id","closeDropdown","focusOption","Math","min","length","max","focusedOption","find","opt","handleOptionSelect","internals","attachInternals","form","connectedCallback","random","toString","substring","fromEvent","pipe","takeUntil","disconnecting","subscribe","stopPropagation","detail","addEventListener","inputRef","error","disconnectedCallback","cleanupPositioner","removeEventListener","firstUpdated","syncSelection","setupOptionsAccessibility","changedProps","updated","has","formValue","isArray","join","setFormValue","hasUpdated","positionDropdown","forceValidation","selectedValues","split","forEach","selected","filter","map","currentValue","String","selectedOption","option","index","setAttribute","tabIndex","reference","renderRoot","querySelector","ul","autoUpdate","async","viewportHeight","window","innerHeight","triggerRect","getBoundingClientRect","spaceBelow","bottom","spaceAbove","top","maxHeight","shouldFlip","style","x","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","y","position","width","offsetWidth","focus","combobox","offsetTop","optionTop","optionHeight","offsetHeight","scrollTop","ulHeight","clientHeight","report","updateComplete","selectedIndex","reportValidity","removeAttribute","shouldShowValidation","push","v","dispatchChange","dispatchEvent","CustomEvent","bubbles","composed","isEmpty","setValidity","valueMissing","showError","valid","message","customError","showErrors","caretIcon","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","low","on","formAssociated","__decorateClass","property","type","prototype","Boolean","reflect","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
package/dist/select.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./select-7MfozdvB.cjs");Object.defineProperty(exports,"SchmancySelect",{enumerable:!0,get:()=>e.SchmancySelect});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./select-JeuY2nWW.cjs");Object.defineProperty(exports,"SchmancySelect",{enumerable:!0,get:()=>e.SchmancySelect});
2
2
  //# sourceMappingURL=select.cjs.map
package/dist/select.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S } from "./select-B4HKxJNd.js";
1
+ import { S } from "./select-DCqtkgHe.js";
2
2
  export {
3
3
  S as SchmancySelect
4
4
  };
@@ -1,12 +1,12 @@
1
1
  import { fromEvent as d, tap as p, of as b, take as g, merge as w, takeUntil as E } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
- import { T as x } from "./tailwind.mixin-CGuZJSAV.js";
4
+ import { T as x } from "./tailwind.mixin-CjS7whsn.js";
5
5
  import { customElement as v, property as c, query as k, queryAssignedElements as F } from "lit/decorators.js";
6
6
  import { css as S, html as y } from "lit";
7
- import { $ as C } from "./litElement.mixin-nh8G1Uii.js";
7
+ import { $ as C } from "./litElement.mixin-BFshhc99.js";
8
8
  import { when as $ } from "lit/directives/when.js";
9
- import { S as O, s as u, a as U, b as j } from "./theme.component-Biom0Mmq.js";
9
+ import { S as O, s as u, a as U, b as j } from "./sheet.service-DqO2aRtR.js";
10
10
  var P = Object.getOwnPropertyDescriptor;
11
11
  let f = class extends x(S``) {
12
12
  render() {
@@ -138,4 +138,4 @@ o([c({ type: String, reflect: !0 })], n.prototype, "uid", 2), o([c({ type: Boole
138
138
  }
139
139
  };
140
140
  })], n.prototype, "onOpenChange", 1), n = o([v("schmancy-sheet")], n);
141
- //# sourceMappingURL=sheet-CoHqDHlJ.js.map
141
+ //# sourceMappingURL=sheet-q6FFKREE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-CoHqDHlJ.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - respect allowOverlayDismiss\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\t// Only handle ESC key dismissal if allowOverlayDismiss is true\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus() && !this.lock) {\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (!this.lock) {\n\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","focusAttribute","lastFocusedElement","handleFocusIn","e","sheet","contains","target","focus","_oldValue","newValue","document","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","sheetContainsFocus","dismiss","uid","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","addEventListener","removeEventListener","isShown","setAttribute","String","selector","assignedElements","find","el","matches","querySelector","getFocusElement","stopPropagation","when","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
1
+ {"version":3,"file":"sheet-q6FFKREE.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - respect allowOverlayDismiss\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\t// Only handle ESC key dismissal if allowOverlayDismiss is true\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus() && !this.lock) {\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (!this.lock) {\n\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","render","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","constructor","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","focusAttribute","lastFocusedElement","handleFocusIn","e","sheet","contains","target","focus","_oldValue","newValue","document","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","sheetContainsFocus","dismiss","uid","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","addEventListener","removeEventListener","isShown","setAttribute","String","selector","assignedElements","find","el","matches","querySelector","getFocusElement","stopPropagation","when","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const a=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const v=require("./tailwind.mixin-DN3mj7AF.cjs"),r=require("lit/decorators.js"),u=require("lit"),f=require("./litElement.mixin-HAhKNS-6.cjs"),b=require("lit/directives/when.js"),d=require("./theme.component-CqT-wazM.cjs");var g=Object.getOwnPropertyDescriptor;let y=class extends v.TailwindElement(u.css``){render(){return u.html`
1
+ "use strict";const a=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const v=require("./tailwind.mixin-C9wSwMyj.cjs"),r=require("lit/decorators.js"),u=require("lit"),f=require("./litElement.mixin-D80K-DKp.cjs"),b=require("lit/directives/when.js"),d=require("./sheet.service-DO-2bnGp.cjs");var g=Object.getOwnPropertyDescriptor;let y=class extends v.TailwindElement(u.css``){render(){return u.html`
2
2
  <sch-flex class="absolute top-0 left-0 md:left-[unset] md:right-0">
3
3
  <div class="block md:hidden flex-1 justify-start items-start">
4
4
  <slot name="back">
@@ -44,4 +44,4 @@
44
44
  </schmancy-grid>
45
45
  </div>
46
46
  `}};var p,m;o([r.property({type:String,reflect:!0})],n.prototype,"uid",2),o([r.property({type:Boolean,reflect:!0})],n.prototype,"open",2),o([r.property({type:String,reflect:!0})],n.prototype,"header",2),o([r.property({type:String,reflect:!0})],n.prototype,"position",2),o([r.property({type:Boolean,reflect:!0})],n.prototype,"persist",2),o([r.property({type:Boolean,reflect:!0})],n.prototype,"lock",2),o([r.property({type:Boolean,reflect:!0})],n.prototype,"handleHistory",2),o([r.property({type:String,reflect:!0})],n.prototype,"title",2),o([r.query(".sheet")],n.prototype,"sheet",2),o([r.queryAssignedElements({flatten:!0})],n.prototype,"assignedElements",2),o([r.property()],n.prototype,"focusAttribute",2),o([(p="open",(t,s)=>{const{willUpdate:c}=t;m=Object.assign({waitUntilFirstUpdate:!1},m),t.willUpdate=function(e){if(c.call(this,e),e.has(p)){const h=e.get(p),i=this[p];h!==i&&(m?.waitUntilFirstUpdate&&!this.hasUpdated||this[s].call(this,h,i))}}})],n.prototype,"onOpenChange",1),n=o([r.customElement("schmancy-sheet")],n);
47
- //# sourceMappingURL=sheet-BD7mNPgo.cjs.map
47
+ //# sourceMappingURL=sheet-t4A4BeGz.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-BD7mNPgo.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - respect allowOverlayDismiss\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\t// Only handle ESC key dismissal if allowOverlayDismiss is true\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus() && !this.lock) {\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (!this.lock) {\n\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","focusAttribute","lastFocusedElement","handleFocusIn","e","sheet","contains","target","focus","_oldValue","newValue","document","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","sheetContainsFocus","dismiss","uid","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","addEventListener","removeEventListener","isShown","setAttribute","String","selector","assignedElements","find","el","matches","querySelector","getFocusElement","stopPropagation","when","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
1
+ {"version":3,"file":"sheet-t4A4BeGz.cjs","sources":["../src/sheet/header.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement(css``) {\n\trender() {\n\t\treturn html`\n\t\t\t<sch-flex class=\"absolute top-0 left-0 md:left-[unset] md:right-0\">\n\t\t\t\t<div class=\"block md:hidden flex-1 justify-start items-start\">\n\t\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"hidden md:block flex-1 justify-end items-end\">\n\t\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tclose\n\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t</slot>\n\t\t\t\t</div>\n\t\t\t</sch-flex>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { fromEvent, merge, of, take, takeUntil, tap } from 'rxjs'\nimport { on } from './hook'\nimport style from './sheet.scss?inline'\nimport {\n\tSchmancySheetPosition,\n\tSheetHereMorty,\n\tSheetWhereAreYouRicky,\n\tSheetWhereAreYouRickyEvent,\n\tsheet,\n} from './sheet.service'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(style) {\n\t@property({ type: String, reflect: true }) uid!: string\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) header: 'hidden' | 'visible' = 'visible'\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\t@property({ type: String, reflect: true }) title = ''\n\n\t@query('.sheet') private sheet!: HTMLElement\n\t@queryAssignedElements({ flatten: true }) private assignedElements!: HTMLElement[]\n\n\t@property() focusAttribute = 'autofocus'\n\tprivate lastFocusedElement: HTMLElement | null = null\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.addFocusTrap()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.removeFocusTrap()\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button - only if handleHistory is true\n\t\tconst popState$ = this.handleHistory\n\t\t\t? fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\t\ttap(e => {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\tthis.closeSheet()\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t: of(null).pipe(take(0)) // Empty observable if handleHistory is false\n\n\t\t// Handle ESC key - respect allowOverlayDismiss\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\t// Only handle ESC key dismissal if allowOverlayDismiss is true\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus() && !this.lock) {\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle inter-component communication\n\t\tconst rickyComm$ = fromEvent<SheetWhereAreYouRickyEvent>(window, SheetWhereAreYouRicky).pipe(\n\t\t\ttap(e => {\n\t\t\t\tif (e.detail.uid === this.uid) this.announcePresence()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, rickyComm$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate sheetContainsFocus(): boolean {\n\t\treturn this.sheet?.contains(document.activeElement) ?? false\n\t}\n\n\tprivate announcePresence() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent(SheetHereMorty, {\n\t\t\t\tdetail: { sheet: this },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate addFocusTrap() {\n\t\tdocument.addEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate removeFocusTrap() {\n\t\tdocument.removeEventListener('focusin', this.handleFocusIn)\n\t}\n\n\tprivate handleFocusIn = (e: Event) => {\n\t\tif (!this.sheet?.contains(e.target as Node)) {\n\t\t\tthis.focus()\n\t\t}\n\t}\n\n\tsetIsSheetShown(isShown: boolean) {\n\t\tthis.sheet?.setAttribute('aria-hidden', String(!isShown))\n\t\tthis.sheet?.setAttribute('aria-modal', String(isShown))\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\tprivate getFocusElement(): HTMLElement | null {\n\t\tconst selector = `[${this.focusAttribute}]`\n\t\treturn (this.assignedElements.find(el => el.matches(selector) || el.querySelector(selector)) as HTMLElement) ?? null\n\t}\n\n\toverride focus() {\n\t\tthis.getFocusElement()?.focus()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"sheet\" role=\"dialog\" aria-labelledby=\"sheet-title\" aria-hidden=${!this.open} aria-modal=${this.open}>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"overlay\"\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tif (!this.lock) {\n\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t></div>\n\t\t\t\t<schmancy-grid\n\t\t\t\t\trows=${this.header === 'hidden' ? '1fr' : 'auto 1fr'}\n\t\t\t\t\tclass=\"content w-full\"\n\t\t\t\t\tdata-position=${this.position}\n\t\t\t\t>\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.header !== 'hidden',\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\thtml`<schmancy-sheet-header\n\t\t\t\t\t\t\t\tclass=\"sticky top-0 z-50 w-full\"\n\t\t\t\t\t\t\t\t@dismiss=${(e: CustomEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tid=\"sheet-title\"\n\t\t\t\t\t\t\t\ttitle=${this.title}\n\t\t\t\t\t\t\t></schmancy-sheet-header>`,\n\t\t\t\t\t)}\n\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=\"overflow-auto\" type=\"surface\">\n\t\t\t\t\t\t<schmancy-scroll> <slot></slot></schmancy-scroll>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</schmancy-grid>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n","// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["SchmancySheetHeader","TailwindElement","css","html","this","dispatchEvent","CustomEvent","bubbles","composed","customElement","SchmancySheet","$LitElement","super","arguments","open","header","position","SchmancySheetPosition","Side","persist","lock","handleHistory","title","focusAttribute","lastFocusedElement","handleFocusIn","e","sheet","contains","target","focus","_oldValue","newValue","document","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","next","popState$","fromEvent","window","pipe","tap","preventDefault","closeSheet","of","take","keyUp$","event","key","sheetContainsFocus","dismiss","uid","rickyComm$","SheetWhereAreYouRicky","detail","announcePresence","merge","takeUntil","subscribe","SheetHereMorty","addEventListener","removeEventListener","isShown","setAttribute","String","selector","assignedElements","find","el","matches","querySelector","getFocusElement","stopPropagation","when","propName","options","__decorateClass","property","type","reflect","prototype","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":"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"}
package/dist/sheet.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./sheet-BD7mNPgo.cjs");const e=require("./theme.component-CqT-wazM.cjs");exports.SchmancySheetPosition=e.SchmancySheetPosition,exports.SheetHereMorty=e.SheetHereMorty,exports.SheetWhereAreYouRicky=e.SheetWhereAreYouRicky,exports.sheet=e.sheet;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("./sheet-t4A4BeGz.cjs");const e=require("./sheet.service-DO-2bnGp.cjs");exports.SchmancySheetPosition=e.SchmancySheetPosition,exports.SheetHereMorty=e.SheetHereMorty,exports.SheetWhereAreYouRicky=e.SheetWhereAreYouRicky,exports.sheet=e.sheet;
2
2
  //# sourceMappingURL=sheet.cjs.map
package/dist/sheet.js CHANGED
@@ -1,5 +1,5 @@
1
- import "./sheet-CoHqDHlJ.js";
2
- import { S as r, b as s, a, s as h } from "./theme.component-Biom0Mmq.js";
1
+ import "./sheet-q6FFKREE.js";
2
+ import { S as r, b as s, a, s as h } from "./sheet.service-DqO2aRtR.js";
3
3
  export {
4
4
  r as SchmancySheetPosition,
5
5
  s as SheetHereMorty,