@mhmo91/schmancy 0.2.110 → 0.2.111

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 (223) hide show
  1. package/dist/{animated-text-DVOOMC1D.js → animated-text-CmvbdVJF.js} +3 -3
  2. package/dist/{animated-text-DVOOMC1D.js.map → animated-text-CmvbdVJF.js.map} +1 -1
  3. package/dist/{animated-text-DlKO_Vrs.cjs → animated-text-CrZbI_E_.cjs} +2 -2
  4. package/dist/{animated-text-DlKO_Vrs.cjs.map → animated-text-CrZbI_E_.cjs.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component-CsuNu7IV.cjs → area.component-BmSDlykT.cjs} +2 -2
  9. package/dist/{area.component-CsuNu7IV.cjs.map → area.component-BmSDlykT.cjs.map} +1 -1
  10. package/dist/{area.component-DjuS-Jbn.js → area.component-D99_ptNx.js} +3 -3
  11. package/dist/{area.component-DjuS-Jbn.js.map → area.component-D99_ptNx.js.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-M8WGHj-g.cjs → autocomplete-Bsx63fvs.cjs} +2 -2
  14. package/dist/{autocomplete-M8WGHj-g.cjs.map → autocomplete-Bsx63fvs.cjs.map} +1 -1
  15. package/dist/{autocomplete-DfMYQcMT.js → autocomplete-C7d1TghO.js} +3 -3
  16. package/dist/{autocomplete-DfMYQcMT.js.map → autocomplete-C7d1TghO.js.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/busy.cjs +1 -1
  20. package/dist/busy.js +1 -1
  21. package/dist/button.cjs +1 -1
  22. package/dist/button.js +1 -1
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/{checkbox-4_xm2-8p.cjs → checkbox-D5Zw8R82.cjs} +2 -2
  26. package/dist/{checkbox-4_xm2-8p.cjs.map → checkbox-D5Zw8R82.cjs.map} +1 -1
  27. package/dist/{checkbox-DjOoDL3Z.js → checkbox-Ddc3Nogy.js} +2 -2
  28. package/dist/{checkbox-DjOoDL3Z.js.map → checkbox-Ddc3Nogy.js.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-BiH92xO_.js → chips-Bm_VYwr5.js} +3 -3
  32. package/dist/{chips-BiH92xO_.js.map → chips-Bm_VYwr5.js.map} +1 -1
  33. package/dist/{chips-CQiuGfz9.cjs → chips-D5ADFFCU.cjs} +2 -2
  34. package/dist/{chips-CQiuGfz9.cjs.map → chips-D5ADFFCU.cjs.map} +1 -1
  35. package/dist/chips.cjs +1 -1
  36. package/dist/chips.js +1 -1
  37. package/dist/components.cjs +1 -1
  38. package/dist/components.js +1 -1
  39. package/dist/content-drawer.cjs +1 -1
  40. package/dist/content-drawer.js +1 -1
  41. package/dist/{date-range-B48asllR.cjs → date-range-CH-IKoMW.cjs} +2 -2
  42. package/dist/{date-range-B48asllR.cjs.map → date-range-CH-IKoMW.cjs.map} +1 -1
  43. package/dist/{date-range-L44lnjhw.js → date-range-LMnnBclq.js} +3 -3
  44. package/dist/{date-range-L44lnjhw.js.map → date-range-LMnnBclq.js.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-ClXoku51.cjs → delay-DSBPkKzK.cjs} +2 -2
  48. package/dist/{delay-ClXoku51.cjs.map → delay-DSBPkKzK.cjs.map} +1 -1
  49. package/dist/{delay-CEuQodz9.js → delay-Nnqipc2p.js} +2 -2
  50. package/dist/{delay-CEuQodz9.js.map → delay-Nnqipc2p.js.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-Ov02T5Fs.js → divider-C7JP4sSG.js} +3 -3
  54. package/dist/{divider-Ov02T5Fs.js.map → divider-C7JP4sSG.js.map} +1 -1
  55. package/dist/{divider-BI9weq1x.cjs → divider-CcTSaeAl.cjs} +2 -2
  56. package/dist/{divider-BI9weq1x.cjs.map → divider-CcTSaeAl.cjs.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/{flex-DGkaKhhw.cjs → flex-B_mVCq18.cjs} +2 -2
  60. package/dist/{flex-DGkaKhhw.cjs.map → flex-B_mVCq18.cjs.map} +1 -1
  61. package/dist/{flex-05flA0jO.js → flex-P9rZBgGQ.js} +2 -2
  62. package/dist/{flex-05flA0jO.js.map → flex-P9rZBgGQ.js.map} +1 -1
  63. package/dist/{form-Cz7y2wCT.js → form-DPcVlChy.js} +2 -2
  64. package/dist/{form-Cz7y2wCT.js.map → form-DPcVlChy.js.map} +1 -1
  65. package/dist/{form-Cxd2Gv-H.cjs → form-cxzC6GVM.cjs} +2 -2
  66. package/dist/{form-Cxd2Gv-H.cjs.map → form-cxzC6GVM.cjs.map} +1 -1
  67. package/dist/form.cjs +1 -1
  68. package/dist/form.js +1 -1
  69. package/dist/{icon-C8_DfC7_.cjs → icon-BEKKW3-2.cjs} +2 -2
  70. package/dist/{icon-C8_DfC7_.cjs.map → icon-BEKKW3-2.cjs.map} +1 -1
  71. package/dist/{icon-C3FJZ48a.js → icon-BGWDEYcH.js} +3 -3
  72. package/dist/{icon-C3FJZ48a.js.map → icon-BGWDEYcH.js.map} +1 -1
  73. package/dist/{icon-button-ChK-DjdA.cjs → icon-button-ChOGnclR.cjs} +2 -2
  74. package/dist/{icon-button-ChK-DjdA.cjs.map → icon-button-ChOGnclR.cjs.map} +1 -1
  75. package/dist/{icon-button-DTiU4XLv.js → icon-button-DlC2-vLK.js} +3 -3
  76. package/dist/{icon-button-DTiU4XLv.js.map → icon-button-DlC2-vLK.js.map} +1 -1
  77. package/dist/icons.cjs +1 -1
  78. package/dist/icons.js +1 -1
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +57 -58
  81. package/dist/{input-IHvsWbQB.cjs → input-C7C9t_rb.cjs} +2 -2
  82. package/dist/{input-IHvsWbQB.cjs.map → input-C7C9t_rb.cjs.map} +1 -1
  83. package/dist/{input-M-qJTNjt.js → input-CIRYUKIL.js} +2 -2
  84. package/dist/{input-M-qJTNjt.js.map → input-CIRYUKIL.js.map} +1 -1
  85. package/dist/input.cjs +1 -1
  86. package/dist/input.js +1 -1
  87. package/dist/layout.cjs +1 -1
  88. package/dist/layout.js +1 -1
  89. package/dist/{list-BWqWQl65.js → list-Bzx4a2RJ.js} +2 -2
  90. package/dist/{list-BWqWQl65.js.map → list-Bzx4a2RJ.js.map} +1 -1
  91. package/dist/{list-CiPO2APk.cjs → list-D1kS-XDO.cjs} +2 -2
  92. package/dist/{list-CiPO2APk.cjs.map → list-D1kS-XDO.cjs.map} +1 -1
  93. package/dist/list.cjs +1 -1
  94. package/dist/list.js +1 -1
  95. package/dist/{litElement.mixin-CmIssdvT.js → litElement.mixin-Dx9_p_nV.js} +2 -2
  96. package/dist/{litElement.mixin-CmIssdvT.js.map → litElement.mixin-Dx9_p_nV.js.map} +1 -1
  97. package/dist/{litElement.mixin-DhNtGNmS.cjs → litElement.mixin-PVEJyATw.cjs} +2 -2
  98. package/dist/{litElement.mixin-DhNtGNmS.cjs.map → litElement.mixin-PVEJyATw.cjs.map} +1 -1
  99. package/dist/{menu-CBGSAgDq.js → menu-CzcGpZXF.js} +3 -3
  100. package/dist/{menu-CBGSAgDq.js.map → menu-CzcGpZXF.js.map} +1 -1
  101. package/dist/{menu-DyYcxMo9.cjs → menu-D30w9YPg.cjs} +2 -2
  102. package/dist/{menu-DyYcxMo9.cjs.map → menu-D30w9YPg.cjs.map} +1 -1
  103. package/dist/menu.cjs +1 -1
  104. package/dist/menu.js +1 -1
  105. package/dist/nav-drawer.cjs +1 -1
  106. package/dist/nav-drawer.js +1 -1
  107. package/dist/notification.cjs +1 -1
  108. package/dist/notification.js +2 -3
  109. package/dist/{option-BMehxrZp.js → option-igpxXgTd.js} +2 -2
  110. package/dist/{option-BMehxrZp.js.map → option-igpxXgTd.js.map} +1 -1
  111. package/dist/{option-DbUli08g.cjs → option-x_W6-_iT.cjs} +2 -2
  112. package/dist/{option-DbUli08g.cjs.map → option-x_W6-_iT.cjs.map} +1 -1
  113. package/dist/option.cjs +1 -1
  114. package/dist/option.js +1 -1
  115. package/dist/outlet-DqRiezsh.cjs +61 -0
  116. package/dist/outlet-DqRiezsh.cjs.map +1 -0
  117. package/dist/outlet-DzAi4iKo.js +128 -0
  118. package/dist/outlet-DzAi4iKo.js.map +1 -0
  119. package/dist/{payment-card-form-IuFrmEnf.js → payment-card-form-CwqKB8Tm.js} +3 -3
  120. package/dist/{payment-card-form-IuFrmEnf.js.map → payment-card-form-CwqKB8Tm.js.map} +1 -1
  121. package/dist/{payment-card-form-bxddazUs.cjs → payment-card-form-IamvKqiN.cjs} +2 -2
  122. package/dist/{payment-card-form-bxddazUs.cjs.map → payment-card-form-IamvKqiN.cjs.map} +1 -1
  123. package/dist/{radio-group-CzjbJO0T.js → radio-group-C9UaGgCL.js} +2 -2
  124. package/dist/{radio-group-CzjbJO0T.js.map → radio-group-C9UaGgCL.js.map} +1 -1
  125. package/dist/{radio-group-BccKUiKW.cjs → radio-group-zGJIFNCR.cjs} +2 -2
  126. package/dist/{radio-group-BccKUiKW.cjs.map → radio-group-zGJIFNCR.cjs.map} +1 -1
  127. package/dist/radio-group.cjs +1 -1
  128. package/dist/radio-group.js +1 -1
  129. package/dist/{select-BhPMWNbW.js → select-5ob4WHTf.js} +3 -3
  130. package/dist/{select-BhPMWNbW.js.map → select-5ob4WHTf.js.map} +1 -1
  131. package/dist/{select-BS2sXDR9.cjs → select-B194j_5a.cjs} +2 -2
  132. package/dist/{select-BS2sXDR9.cjs.map → select-B194j_5a.cjs.map} +1 -1
  133. package/dist/select.cjs +1 -1
  134. package/dist/select.js +1 -1
  135. package/dist/{sheet-CwwT5thu.js → sheet-C2RxblaX.js} +3 -3
  136. package/dist/{sheet-CwwT5thu.js.map → sheet-C2RxblaX.js.map} +1 -1
  137. package/dist/{sheet-DOwu96wF.cjs → sheet-CHFHgh29.cjs} +2 -2
  138. package/dist/{sheet-DOwu96wF.cjs.map → sheet-CHFHgh29.cjs.map} +1 -1
  139. package/dist/sheet.cjs +1 -1
  140. package/dist/sheet.js +1 -1
  141. package/dist/{slider-D7m05_ay.js → slider-BOTY8Lhv.js} +3 -3
  142. package/dist/{slider-D7m05_ay.js.map → slider-BOTY8Lhv.js.map} +1 -1
  143. package/dist/{slider-BAESvAar.cjs → slider-BgNoOOeQ.cjs} +2 -2
  144. package/dist/{slider-BAESvAar.cjs.map → slider-BgNoOOeQ.cjs.map} +1 -1
  145. package/dist/slider.cjs +1 -1
  146. package/dist/slider.js +1 -1
  147. package/dist/{spinner-CoNNKh0e.js → spinner-Vwv-mKip.js} +3 -3
  148. package/dist/{spinner-CoNNKh0e.js.map → spinner-Vwv-mKip.js.map} +1 -1
  149. package/dist/{spinner-7jk2tm5-.cjs → spinner-vBTOD2N0.cjs} +2 -2
  150. package/dist/{spinner-7jk2tm5-.cjs.map → spinner-vBTOD2N0.cjs.map} +1 -1
  151. package/dist/{surface-oLJxHIii.js → surface-CryISDFd.js} +2 -2
  152. package/dist/{surface-oLJxHIii.js.map → surface-CryISDFd.js.map} +1 -1
  153. package/dist/{surface-DaLDGARV.cjs → surface-Csc8YLks.cjs} +2 -2
  154. package/dist/{surface-DaLDGARV.cjs.map → surface-Csc8YLks.cjs.map} +1 -1
  155. package/dist/surface.cjs +1 -1
  156. package/dist/surface.js +1 -1
  157. package/dist/{table-BcHZEysB.cjs → table-DHHo5etf.cjs} +2 -2
  158. package/dist/{table-BcHZEysB.cjs.map → table-DHHo5etf.cjs.map} +1 -1
  159. package/dist/{table-CniLq7FP.js → table-DRL3oAjo.js} +2 -2
  160. package/dist/{table-CniLq7FP.js.map → table-DRL3oAjo.js.map} +1 -1
  161. package/dist/table.cjs +1 -1
  162. package/dist/table.js +1 -1
  163. package/dist/{tabs-group-B78YHrsf.cjs → tabs-group-BRVzKIRX.cjs} +2 -2
  164. package/dist/{tabs-group-B78YHrsf.cjs.map → tabs-group-BRVzKIRX.cjs.map} +1 -1
  165. package/dist/{tabs-group-BtEJCfxW.js → tabs-group-BcXgpxUw.js} +2 -2
  166. package/dist/{tabs-group-BtEJCfxW.js.map → tabs-group-BcXgpxUw.js.map} +1 -1
  167. package/dist/tabs.cjs +1 -1
  168. package/dist/tabs.js +1 -1
  169. package/dist/tailwind.mixin-BM-bjRjT.cjs +2 -0
  170. package/dist/{tailwind.mixin-HfEdtDL9.cjs.map → tailwind.mixin-BM-bjRjT.cjs.map} +1 -1
  171. package/dist/tailwind.mixin-YEy_iITN.js +43 -0
  172. package/dist/{tailwind.mixin-BqYiHta7.js.map → tailwind.mixin-YEy_iITN.js.map} +1 -1
  173. package/dist/teleport.cjs +1 -1
  174. package/dist/{teleport.component-Dr3mMZpf.cjs → teleport.component-Bv5uSZu2.cjs} +2 -2
  175. package/dist/{teleport.component-Dr3mMZpf.cjs.map → teleport.component-Bv5uSZu2.cjs.map} +1 -1
  176. package/dist/{teleport.component-CexA5J_f.js → teleport.component-CNo2XXL6.js} +35 -35
  177. package/dist/{teleport.component-CexA5J_f.js.map → teleport.component-CNo2XXL6.js.map} +1 -1
  178. package/dist/teleport.js +1 -1
  179. package/dist/{textarea-BxFi32D9.js → textarea-BzI6HMKy.js} +2 -2
  180. package/dist/{textarea-BxFi32D9.js.map → textarea-BzI6HMKy.js.map} +1 -1
  181. package/dist/{textarea-B9raf8_D.cjs → textarea-CUi2u7J7.cjs} +2 -2
  182. package/dist/{textarea-B9raf8_D.cjs.map → textarea-CUi2u7J7.cjs.map} +1 -1
  183. package/dist/textarea.cjs +1 -1
  184. package/dist/textarea.js +1 -1
  185. package/dist/{theme-button-DoJnYU3H.cjs → theme-button-BJe1x0Cs.cjs} +2 -2
  186. package/dist/{theme-button-DoJnYU3H.cjs.map → theme-button-BJe1x0Cs.cjs.map} +1 -1
  187. package/dist/{theme-button-BKEGXvgI.js → theme-button-DhD5GksO.js} +2 -2
  188. package/dist/{theme-button-BKEGXvgI.js.map → theme-button-DhD5GksO.js.map} +1 -1
  189. package/dist/theme-button.cjs +1 -1
  190. package/dist/theme-button.js +1 -1
  191. package/dist/theme.cjs +1 -1
  192. package/dist/{theme.component-CXo8UXgG.cjs → theme.component-BI2OGjYG.cjs} +2 -2
  193. package/dist/{theme.component-CXo8UXgG.cjs.map → theme.component-BI2OGjYG.cjs.map} +1 -1
  194. package/dist/{theme.component-BNn_72QE.js → theme.component-D4WBav-_.js} +2 -2
  195. package/dist/{theme.component-BNn_72QE.js.map → theme.component-D4WBav-_.js.map} +1 -1
  196. package/dist/theme.js +1 -1
  197. package/dist/{tree-Fx-Zhp0w.cjs → tree-8ORo7bDg.cjs} +2 -2
  198. package/dist/{tree-Fx-Zhp0w.cjs.map → tree-8ORo7bDg.cjs.map} +1 -1
  199. package/dist/{tree-GRbYc_5D.js → tree-D42tswgB.js} +2 -2
  200. package/dist/{tree-GRbYc_5D.js.map → tree-D42tswgB.js.map} +1 -1
  201. package/dist/tree.cjs +1 -1
  202. package/dist/tree.js +1 -1
  203. package/dist/{typewriter-DdSoLHgM.js → typewriter-BwNXbsZp.js} +4 -4
  204. package/dist/{typewriter-DdSoLHgM.js.map → typewriter-BwNXbsZp.js.map} +1 -1
  205. package/dist/{typewriter-DSOyGh9X.cjs → typewriter-JuHIja1a.cjs} +2 -2
  206. package/dist/{typewriter-DSOyGh9X.cjs.map → typewriter-JuHIja1a.cjs.map} +1 -1
  207. package/dist/typewriter.cjs +1 -1
  208. package/dist/typewriter.js +1 -1
  209. package/dist/{typography-ZVK1c0Z3.cjs → typography-BMkQ3cH-.cjs} +2 -2
  210. package/dist/{typography-ZVK1c0Z3.cjs.map → typography-BMkQ3cH-.cjs.map} +1 -1
  211. package/dist/{typography-DtXgIuFu.js → typography-CaOb3D3z.js} +2 -2
  212. package/dist/{typography-DtXgIuFu.js.map → typography-CaOb3D3z.js.map} +1 -1
  213. package/dist/typography.cjs +1 -1
  214. package/dist/typography.js +1 -1
  215. package/package.json +1 -1
  216. package/types/src/notification/$notification.d.ts +6 -6
  217. package/types/src/notification/notification.d.ts +1 -3
  218. package/dist/outlet-CcJZw_-p.cjs +0 -24
  219. package/dist/outlet-CcJZw_-p.cjs.map +0 -1
  220. package/dist/outlet-Dn_2_r0T.js +0 -78
  221. package/dist/outlet-Dn_2_r0T.js.map +0 -1
  222. package/dist/tailwind.mixin-BqYiHta7.js +0 -43
  223. package/dist/tailwind.mixin-HfEdtDL9.cjs +0 -2
@@ -3,7 +3,7 @@ import { property as o, customElement as d } from "lit/decorators.js";
3
3
  import { Subject as h } from "rxjs";
4
4
  import "lit/directives/class-map.js";
5
5
  import "lit/directives/style-map.js";
6
- import { T as m } from "./tailwind.mixin-BqYiHta7.js";
6
+ import { T as m } from "./tailwind.mixin-YEy_iITN.js";
7
7
  import { when as u } from "lit/directives/when.js";
8
8
  var b = Object.defineProperty, y = Object.getOwnPropertyDescriptor, r = (e, t, a, l) => {
9
9
  for (var n, i = l > 1 ? void 0 : l ? y(t, a) : t, c = e.length - 1; c >= 0; c--) (n = e[c]) && (i = (l ? n(t, a, i) : n(i)) || i);
@@ -55,4 +55,4 @@ r([o({ type: String })], s.prototype, "label", 2), r([o({ type: String })], s.pr
55
55
  export {
56
56
  s as R
57
57
  };
58
- //# sourceMappingURL=radio-group-CzjbJO0T.js.map
58
+ //# sourceMappingURL=radio-group-C9UaGgCL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group-CzjbJO0T.js","sources":["../src/radio-group/radio-group.ts"],"sourcesContent":["import { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { Subject } from 'rxjs'\nimport style from './radio-group.scss?inline'\nimport { TailwindElement } from '@mixins/index'\nimport { when } from 'lit/directives/when.js'\n\nexport type SchmancyRadioGroupOption = {\n\tlabel: string\n\tvalue: string\n}\nexport type SchmancyRadioGroupChangeEvent = CustomEvent<{\n\tvalue: string\n}>\n@customElement('schmancy-radio-group')\nexport class RadioGroup extends TailwindElement(style) {\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) name = ''\n\t@property({ type: String }) selected = ''\n\t@property({ type: Array }) options: SchmancyRadioGroupOption[] = []\n\t@property({ type: Boolean }) required: boolean = false\n\tprivate selection$ = new Subject<SchmancyRadioGroupOption>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.selection$.subscribe(value => {\n\t\t\tthis.selected = value.value\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: value,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.selection$?.unsubscribe()\n\t}\n\tprivate handleSelection(value: SchmancyRadioGroupOption) {\n\t\tthis.selection$.next(value)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"grid gap-4\">\n\t\t\t\t${when(this.label, () => html` <label class=\"text-base font-semibold text-gray-900\">${this.label}</label> `)}\n\t\t\t\t${this.options?.map(\n\t\t\t\t\toption => html`\n\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\tid=${option.value}\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4 border-gray-300 text-indigo-600 focus:ring-indigo-600\"\n\t\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\t\tname=${this.name}\n\t\t\t\t\t\t\t\t.value=${option.value}\n\t\t\t\t\t\t\t\t.checked=${option.value === this.selected}\n\t\t\t\t\t\t\t\t@change=${() => this.handleSelection(option)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label for=${option.value} class=\"ml-3 block text-sm font-medium leading-6 text-gray-900\"\n\t\t\t\t\t\t\t\t>${option.value}</label\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-radio-group': RadioGroup\n\t}\n}\n"],"names":["RadioGroup","TailwindElement","constructor","super","arguments","this","label","name","selected","options","required","selection$","Subject","connectedCallback","subscribe","value","dispatchEvent","CustomEvent","detail","bubbles","disconnectedCallback","unsubscribe","next","render","html","when","map","option","handleSelection","__decorateClass","property","type","String","prototype","Array","Boolean","customElement"],"mappings":";;;;;;;;;;;AAeO,IAAMA,IAAN,cAAyBC;EAAzB,cAAAC;AAAAC,UAAAC,GAAAA,SAAAA,GAC8BC,KAAAC,QAAA,IACDD,KAAAE,OAAA,IACIF,KAAAG,WAAA,IACZH,KAAAI,UAAsC,CAChBJ,GAAAA,KAAAK,WAAA,IACzCL,KAAAM,aAAa,IAAIC;AAAAA,EAAkC;AAAA,EAE3D,oBAAAC;AACCV,UAAMU,kBAAAA,GACDR,KAAAM,WAAWG,UAAmBC,CAAAA,MAClCV;AAAAA,WAAKG,WAAWO,EAAMA,OACjBV,KAAAW,cACJ,IAAIC,YAAY,UAAU,EACzBC,QAAQH,GACRI,SAAS,GAAA,CAAA,CAAA;AAAA,IAEX,CACA;AAAA,EAAA;AAAA,EAGF,uBACChB;;AAAAA,UAAMiB,qBACNf,IAAAA,IAAAA,KAAKM,eAALN,QAAAA,EAAiBgB;AAAAA,EAAY;AAAA,EAEtB,gBAAgBN,GAClBV;AAAAA,SAAAM,WAAWW,KAAKP,CAAK;AAAA,EAAA;AAAA,EAG3B,SAAAQ;;AACQ,WAAAC;AAAAA;AAAAA,MAEHC,EAAKpB,KAAKC,OAAO,MAAMkB,0DAA6DnB,KAAKC,KAAAA,WAAAA,CAAAA;AAAAA,OACzFD,IAAAA,KAAKI,YAALJ,gBAAAA,EAAcqB,IACLC,CAAAA,MAAAH;AAAAA;AAAAA;AAAAA,oBAGKnB,KAAKK,QAAAA;AAAAA,aACZiB,EAAOZ,KAAAA;AAAAA;AAAAA;AAAAA,eAGLV,KAAKE,IAAAA;AAAAA,iBACHoB,EAAOZ,KAAAA;AAAAA,mBACLY,EAAOZ,UAAUV,KAAKG,QAAAA;AAAAA,kBACvB,MAAMH,KAAKuB,gBAAgBD,CAAAA,CAAAA;AAAAA;AAAAA,oBAEzBA,EAAOZ,KAAAA;AAAAA,WAChBY,EAAOZ,KAAAA;AAAAA;AAAAA;AAAAA;;;EAIb;AAlDwBc;AAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,YADNhC,EACgBiC,WAAA,SAAA,CAAA,GACAJ,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,OAFNhC,CAAAA,CAAAA,GAAAA,EAEgBiC,WAAA,QAAA,CACAJ,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,OAHNhC,CAAAA,CAAAA,GAAAA,EAGgBiC,WAAA,YAAA,CAAA,GACDJ,EAAA,CAA1BC,EAAS,EAAEC,MAAMG,MAAAA,CAAAA,CAAAA,GAJNlC,EAIeiC,WAAA,WAAA,CAAA,GACEJ,EAAA,CAA5BC,EAAS,EAAEC,MAAMI,QALNnC,CAAAA,CAAAA,GAAAA,EAKiBiC,WAAA,YAAA,CALjBjC,GAAAA,IAAN6B,EAAA,CADNO,EAAc,sBAAA,CAAA,GACFpC;"}
1
+ {"version":3,"file":"radio-group-C9UaGgCL.js","sources":["../src/radio-group/radio-group.ts"],"sourcesContent":["import { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { Subject } from 'rxjs'\nimport style from './radio-group.scss?inline'\nimport { TailwindElement } from '@mixins/index'\nimport { when } from 'lit/directives/when.js'\n\nexport type SchmancyRadioGroupOption = {\n\tlabel: string\n\tvalue: string\n}\nexport type SchmancyRadioGroupChangeEvent = CustomEvent<{\n\tvalue: string\n}>\n@customElement('schmancy-radio-group')\nexport class RadioGroup extends TailwindElement(style) {\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) name = ''\n\t@property({ type: String }) selected = ''\n\t@property({ type: Array }) options: SchmancyRadioGroupOption[] = []\n\t@property({ type: Boolean }) required: boolean = false\n\tprivate selection$ = new Subject<SchmancyRadioGroupOption>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.selection$.subscribe(value => {\n\t\t\tthis.selected = value.value\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: value,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.selection$?.unsubscribe()\n\t}\n\tprivate handleSelection(value: SchmancyRadioGroupOption) {\n\t\tthis.selection$.next(value)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"grid gap-4\">\n\t\t\t\t${when(this.label, () => html` <label class=\"text-base font-semibold text-gray-900\">${this.label}</label> `)}\n\t\t\t\t${this.options?.map(\n\t\t\t\t\toption => html`\n\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\tid=${option.value}\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4 border-gray-300 text-indigo-600 focus:ring-indigo-600\"\n\t\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\t\tname=${this.name}\n\t\t\t\t\t\t\t\t.value=${option.value}\n\t\t\t\t\t\t\t\t.checked=${option.value === this.selected}\n\t\t\t\t\t\t\t\t@change=${() => this.handleSelection(option)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label for=${option.value} class=\"ml-3 block text-sm font-medium leading-6 text-gray-900\"\n\t\t\t\t\t\t\t\t>${option.value}</label\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-radio-group': RadioGroup\n\t}\n}\n"],"names":["RadioGroup","TailwindElement","constructor","super","arguments","this","label","name","selected","options","required","selection$","Subject","connectedCallback","subscribe","value","dispatchEvent","CustomEvent","detail","bubbles","disconnectedCallback","unsubscribe","next","render","html","when","map","option","handleSelection","__decorateClass","property","type","String","prototype","Array","Boolean","customElement"],"mappings":";;;;;;;;;;;AAeO,IAAMA,IAAN,cAAyBC;EAAzB,cAAAC;AAAAC,UAAAC,GAAAA,SAAAA,GAC8BC,KAAAC,QAAA,IACDD,KAAAE,OAAA,IACIF,KAAAG,WAAA,IACZH,KAAAI,UAAsC,CAChBJ,GAAAA,KAAAK,WAAA,IACzCL,KAAAM,aAAa,IAAIC;AAAAA,EAAkC;AAAA,EAE3D,oBAAAC;AACCV,UAAMU,kBAAAA,GACDR,KAAAM,WAAWG,UAAmBC,CAAAA,MAClCV;AAAAA,WAAKG,WAAWO,EAAMA,OACjBV,KAAAW,cACJ,IAAIC,YAAY,UAAU,EACzBC,QAAQH,GACRI,SAAS,GAAA,CAAA,CAAA;AAAA,IAEX,CACA;AAAA,EAAA;AAAA,EAGF,uBACChB;;AAAAA,UAAMiB,qBACNf,IAAAA,IAAAA,KAAKM,eAALN,QAAAA,EAAiBgB;AAAAA,EAAY;AAAA,EAEtB,gBAAgBN,GAClBV;AAAAA,SAAAM,WAAWW,KAAKP,CAAK;AAAA,EAAA;AAAA,EAG3B,SAAAQ;;AACQ,WAAAC;AAAAA;AAAAA,MAEHC,EAAKpB,KAAKC,OAAO,MAAMkB,0DAA6DnB,KAAKC,KAAAA,WAAAA,CAAAA;AAAAA,OACzFD,IAAAA,KAAKI,YAALJ,gBAAAA,EAAcqB,IACLC,CAAAA,MAAAH;AAAAA;AAAAA;AAAAA,oBAGKnB,KAAKK,QAAAA;AAAAA,aACZiB,EAAOZ,KAAAA;AAAAA;AAAAA;AAAAA,eAGLV,KAAKE,IAAAA;AAAAA,iBACHoB,EAAOZ,KAAAA;AAAAA,mBACLY,EAAOZ,UAAUV,KAAKG,QAAAA;AAAAA,kBACvB,MAAMH,KAAKuB,gBAAgBD,CAAAA,CAAAA;AAAAA;AAAAA,oBAEzBA,EAAOZ,KAAAA;AAAAA,WAChBY,EAAOZ,KAAAA;AAAAA;AAAAA;AAAAA;;;EAIb;AAlDwBc;AAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,YADNhC,EACgBiC,WAAA,SAAA,CAAA,GACAJ,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,OAFNhC,CAAAA,CAAAA,GAAAA,EAEgBiC,WAAA,QAAA,CACAJ,GAAAA,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,OAHNhC,CAAAA,CAAAA,GAAAA,EAGgBiC,WAAA,YAAA,CAAA,GACDJ,EAAA,CAA1BC,EAAS,EAAEC,MAAMG,MAAAA,CAAAA,CAAAA,GAJNlC,EAIeiC,WAAA,WAAA,CAAA,GACEJ,EAAA,CAA5BC,EAAS,EAAEC,MAAMI,QALNnC,CAAAA,CAAAA,GAAAA,EAKiBiC,WAAA,YAAA,CALjBjC,GAAAA,IAAN6B,EAAA,CADNO,EAAc,sBAAA,CAAA,GACFpC;"}
@@ -1,4 +1,4 @@
1
- "use strict";const c=require("lit"),i=require("lit/decorators.js"),p=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-HfEdtDL9.cjs"),u=require("lit/directives/when.js");var h=Object.defineProperty,b=Object.getOwnPropertyDescriptor,o=(e,t,l,s)=>{for(var a,r=s>1?void 0:s?b(t,l):t,n=e.length-1;n>=0;n--)(a=e[n])&&(r=(s?a(t,l,r):a(r))||r);return s&&r&&h(t,l,r),r};exports.RadioGroup=class extends d.TailwindElement(":host{display:inherit;position:inherit}"){constructor(){super(...arguments),this.label="",this.name="",this.selected="",this.options=[],this.required=!1,this.selection$=new p.Subject}connectedCallback(){super.connectedCallback(),this.selection$.subscribe(e=>{this.selected=e.value,this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0}))})}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this.selection$)==null||e.unsubscribe()}handleSelection(e){this.selection$.next(e)}render(){var e;return c.html`
1
+ "use strict";const c=require("lit"),i=require("lit/decorators.js"),p=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-BM-bjRjT.cjs"),u=require("lit/directives/when.js");var h=Object.defineProperty,b=Object.getOwnPropertyDescriptor,o=(e,t,l,s)=>{for(var a,r=s>1?void 0:s?b(t,l):t,n=e.length-1;n>=0;n--)(a=e[n])&&(r=(s?a(t,l,r):a(r))||r);return s&&r&&h(t,l,r),r};exports.RadioGroup=class extends d.TailwindElement(":host{display:inherit;position:inherit}"){constructor(){super(...arguments),this.label="",this.name="",this.selected="",this.options=[],this.required=!1,this.selection$=new p.Subject}connectedCallback(){super.connectedCallback(),this.selection$.subscribe(e=>{this.selected=e.value,this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0}))})}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this.selection$)==null||e.unsubscribe()}handleSelection(e){this.selection$.next(e)}render(){var e;return c.html`
2
2
  <div class="grid gap-4">
3
3
  ${u.when(this.label,()=>c.html` <label class="text-base font-semibold text-gray-900">${this.label}</label> `)}
4
4
  ${(e=this.options)==null?void 0:e.map(t=>c.html`
@@ -20,4 +20,4 @@
20
20
  `)}
21
21
  </div>
22
22
  `}},o([i.property({type:String})],exports.RadioGroup.prototype,"label",2),o([i.property({type:String})],exports.RadioGroup.prototype,"name",2),o([i.property({type:String})],exports.RadioGroup.prototype,"selected",2),o([i.property({type:Array})],exports.RadioGroup.prototype,"options",2),o([i.property({type:Boolean})],exports.RadioGroup.prototype,"required",2),exports.RadioGroup=o([i.customElement("schmancy-radio-group")],exports.RadioGroup);
23
- //# sourceMappingURL=radio-group-BccKUiKW.cjs.map
23
+ //# sourceMappingURL=radio-group-zGJIFNCR.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio-group-BccKUiKW.cjs","sources":["../src/radio-group/radio-group.ts"],"sourcesContent":["import { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { Subject } from 'rxjs'\nimport style from './radio-group.scss?inline'\nimport { TailwindElement } from '@mixins/index'\nimport { when } from 'lit/directives/when.js'\n\nexport type SchmancyRadioGroupOption = {\n\tlabel: string\n\tvalue: string\n}\nexport type SchmancyRadioGroupChangeEvent = CustomEvent<{\n\tvalue: string\n}>\n@customElement('schmancy-radio-group')\nexport class RadioGroup extends TailwindElement(style) {\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) name = ''\n\t@property({ type: String }) selected = ''\n\t@property({ type: Array }) options: SchmancyRadioGroupOption[] = []\n\t@property({ type: Boolean }) required: boolean = false\n\tprivate selection$ = new Subject<SchmancyRadioGroupOption>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.selection$.subscribe(value => {\n\t\t\tthis.selected = value.value\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: value,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.selection$?.unsubscribe()\n\t}\n\tprivate handleSelection(value: SchmancyRadioGroupOption) {\n\t\tthis.selection$.next(value)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"grid gap-4\">\n\t\t\t\t${when(this.label, () => html` <label class=\"text-base font-semibold text-gray-900\">${this.label}</label> `)}\n\t\t\t\t${this.options?.map(\n\t\t\t\t\toption => html`\n\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\tid=${option.value}\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4 border-gray-300 text-indigo-600 focus:ring-indigo-600\"\n\t\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\t\tname=${this.name}\n\t\t\t\t\t\t\t\t.value=${option.value}\n\t\t\t\t\t\t\t\t.checked=${option.value === this.selected}\n\t\t\t\t\t\t\t\t@change=${() => this.handleSelection(option)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label for=${option.value} class=\"ml-3 block text-sm font-medium leading-6 text-gray-900\"\n\t\t\t\t\t\t\t\t>${option.value}</label\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-radio-group': RadioGroup\n\t}\n}\n"],"names":["RadioGroup","TailwindElement","super","arguments","this","label","name","selected","options","required","selection$","Subject","connectedCallback","subscribe","value","dispatchEvent","CustomEvent","detail","bubbles","disconnectedCallback","unsubscribe","next","html","when","map","option","handleSelection","__decorateClass","property","type","String","prototype","Array","Boolean","customElement"],"mappings":"wbAeaA,QAAAA,WAAN,cAAyBC,6DAAzB,aAAAC,CAAAA,MAAAA,GAAAC,SAC8BC,EAAAA,KAAAC,MAAA,GACDD,KAAAE,KAAA,GACIF,KAAAG,SAAA,GACZH,KAAAI,QAAsC,CAChBJ,EAAAA,KAAAK,SAAA,GACzCL,KAAAM,WAAa,IAAIC,SAAkC,CAE3D,mBAAAC,CACCV,MAAMU,kBAAAA,EACDR,KAAAM,WAAWG,UAAmBC,GAClCV,CAAAA,KAAKG,SAAWO,EAAMA,MACjBV,KAAAW,cACJ,IAAIC,YAAY,SAAU,CACzBC,OAAQH,EACRI,QAAAA,EAEF,CAAA,CAAA,CAAA,CAAA,CACA,CAGF,sBAAAC,OACCjB,MAAMiB,qBAAAA,GACNf,EAAAA,KAAKM,aAALN,MAAAA,EAAiBgB,aAAY,CAEtB,gBAAgBN,EAClBV,CAAAA,KAAAM,WAAWW,KAAKP,EAAK,CAG3B,QACQ,OAAA,OAAAQ,EAAAA;AAAAA;AAAAA,MAEHC,EAAAA,KAAKnB,KAAKC,MAAO,IAAMiB,EAAAA,6DAA6DlB,KAAKC,KAAAA,WAAAA,CAAAA;AAAAA,OACzFD,EAAAA,KAAKI,UAALJ,YAAAA,EAAcoB,IACLC,GAAAH,EAAAA;AAAAA;AAAAA;AAAAA,oBAGKlB,KAAKK,QAAAA;AAAAA,aACZgB,EAAOX,KAAAA;AAAAA;AAAAA;AAAAA,eAGLV,KAAKE,IAAAA;AAAAA,iBACHmB,EAAOX,KAAAA;AAAAA,mBACLW,EAAOX,QAAUV,KAAKG,QAAAA;AAAAA,kBACvB,IAAMH,KAAKsB,gBAAgBD,CAAAA,CAAAA;AAAAA;AAAAA,oBAEzBA,EAAOX,KAAAA;AAAAA,WAChBW,EAAOX,KAAAA;AAAAA;AAAAA;AAAAA;;GAIb,CAAA,EAlDwBa,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,MADN9B,CAAAA,CAAAA,EAAAA,mBACgB+B,UAAA,QAAA,CAAA,EACAJ,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,MAAAA,CAAAA,CAAAA,EAFN9B,mBAEgB+B,UAAA,OAAA,CAAA,EACAJ,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,UAHN9B,mBAGgB+B,UAAA,WAAA,CACDJ,EAAAA,EAAA,CAA1BC,WAAS,CAAEC,KAAMG,KAJNhC,CAAAA,CAAAA,EAAAA,mBAIe+B,UAAA,UAAA,CAAA,EACEJ,EAAA,CAA5BC,WAAS,CAAEC,KAAMI,OAAAA,CAAAA,CAAAA,EALNjC,mBAKiB+B,UAAA,WAAA,CAAA,EALjB/B,QAANA,WAAA2B,EAAA,CADNO,EAAAA,cAAc,yBACFlC"}
1
+ {"version":3,"file":"radio-group-zGJIFNCR.cjs","sources":["../src/radio-group/radio-group.ts"],"sourcesContent":["import { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { Subject } from 'rxjs'\nimport style from './radio-group.scss?inline'\nimport { TailwindElement } from '@mixins/index'\nimport { when } from 'lit/directives/when.js'\n\nexport type SchmancyRadioGroupOption = {\n\tlabel: string\n\tvalue: string\n}\nexport type SchmancyRadioGroupChangeEvent = CustomEvent<{\n\tvalue: string\n}>\n@customElement('schmancy-radio-group')\nexport class RadioGroup extends TailwindElement(style) {\n\t@property({ type: String }) label = ''\n\t@property({ type: String }) name = ''\n\t@property({ type: String }) selected = ''\n\t@property({ type: Array }) options: SchmancyRadioGroupOption[] = []\n\t@property({ type: Boolean }) required: boolean = false\n\tprivate selection$ = new Subject<SchmancyRadioGroupOption>()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.selection$.subscribe(value => {\n\t\t\tthis.selected = value.value\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: value,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.selection$?.unsubscribe()\n\t}\n\tprivate handleSelection(value: SchmancyRadioGroupOption) {\n\t\tthis.selection$.next(value)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div class=\"grid gap-4\">\n\t\t\t\t${when(this.label, () => html` <label class=\"text-base font-semibold text-gray-900\">${this.label}</label> `)}\n\t\t\t\t${this.options?.map(\n\t\t\t\t\toption => html`\n\t\t\t\t\t\t<div class=\"flex items-center\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\tid=${option.value}\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4 border-gray-300 text-indigo-600 focus:ring-indigo-600\"\n\t\t\t\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t\t\t\tname=${this.name}\n\t\t\t\t\t\t\t\t.value=${option.value}\n\t\t\t\t\t\t\t\t.checked=${option.value === this.selected}\n\t\t\t\t\t\t\t\t@change=${() => this.handleSelection(option)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<label for=${option.value} class=\"ml-3 block text-sm font-medium leading-6 text-gray-900\"\n\t\t\t\t\t\t\t\t>${option.value}</label\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-radio-group': RadioGroup\n\t}\n}\n"],"names":["RadioGroup","TailwindElement","super","arguments","this","label","name","selected","options","required","selection$","Subject","connectedCallback","subscribe","value","dispatchEvent","CustomEvent","detail","bubbles","disconnectedCallback","unsubscribe","next","html","when","map","option","handleSelection","__decorateClass","property","type","String","prototype","Array","Boolean","customElement"],"mappings":"wbAeaA,QAAAA,WAAN,cAAyBC,6DAAzB,aAAAC,CAAAA,MAAAA,GAAAC,SAC8BC,EAAAA,KAAAC,MAAA,GACDD,KAAAE,KAAA,GACIF,KAAAG,SAAA,GACZH,KAAAI,QAAsC,CAChBJ,EAAAA,KAAAK,SAAA,GACzCL,KAAAM,WAAa,IAAIC,SAAkC,CAE3D,mBAAAC,CACCV,MAAMU,kBAAAA,EACDR,KAAAM,WAAWG,UAAmBC,GAClCV,CAAAA,KAAKG,SAAWO,EAAMA,MACjBV,KAAAW,cACJ,IAAIC,YAAY,SAAU,CACzBC,OAAQH,EACRI,QAAAA,EAEF,CAAA,CAAA,CAAA,CAAA,CACA,CAGF,sBAAAC,OACCjB,MAAMiB,qBAAAA,GACNf,EAAAA,KAAKM,aAALN,MAAAA,EAAiBgB,aAAY,CAEtB,gBAAgBN,EAClBV,CAAAA,KAAAM,WAAWW,KAAKP,EAAK,CAG3B,QACQ,OAAA,OAAAQ,EAAAA;AAAAA;AAAAA,MAEHC,EAAAA,KAAKnB,KAAKC,MAAO,IAAMiB,EAAAA,6DAA6DlB,KAAKC,KAAAA,WAAAA,CAAAA;AAAAA,OACzFD,EAAAA,KAAKI,UAALJ,YAAAA,EAAcoB,IACLC,GAAAH,EAAAA;AAAAA;AAAAA;AAAAA,oBAGKlB,KAAKK,QAAAA;AAAAA,aACZgB,EAAOX,KAAAA;AAAAA;AAAAA;AAAAA,eAGLV,KAAKE,IAAAA;AAAAA,iBACHmB,EAAOX,KAAAA;AAAAA,mBACLW,EAAOX,QAAUV,KAAKG,QAAAA;AAAAA,kBACvB,IAAMH,KAAKsB,gBAAgBD,CAAAA,CAAAA;AAAAA;AAAAA,oBAEzBA,EAAOX,KAAAA;AAAAA,WAChBW,EAAOX,KAAAA;AAAAA;AAAAA;AAAAA;;GAIb,CAAA,EAlDwBa,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,MADN9B,CAAAA,CAAAA,EAAAA,mBACgB+B,UAAA,QAAA,CAAA,EACAJ,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,MAAAA,CAAAA,CAAAA,EAFN9B,mBAEgB+B,UAAA,OAAA,CAAA,EACAJ,EAAA,CAA3BC,WAAS,CAAEC,KAAMC,UAHN9B,mBAGgB+B,UAAA,WAAA,CACDJ,EAAAA,EAAA,CAA1BC,WAAS,CAAEC,KAAMG,KAJNhC,CAAAA,CAAAA,EAAAA,mBAIe+B,UAAA,UAAA,CAAA,EACEJ,EAAA,CAA5BC,WAAS,CAAEC,KAAMI,OAAAA,CAAAA,CAAAA,EALNjC,mBAKiB+B,UAAA,WAAA,CAAA,EALjB/B,QAANA,WAAA2B,EAAA,CADNO,EAAAA,cAAc,yBACFlC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./radio-group-BccKUiKW.cjs");Object.defineProperty(exports,"RadioGroup",{enumerable:!0,get:()=>e.RadioGroup});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./radio-group-zGJIFNCR.cjs");Object.defineProperty(exports,"RadioGroup",{enumerable:!0,get:()=>e.RadioGroup});
2
2
  //# sourceMappingURL=radio-group.cjs.map
@@ -1,4 +1,4 @@
1
- import { R as a } from "./radio-group-CzjbJO0T.js";
1
+ import { R as a } from "./radio-group-C9UaGgCL.js";
2
2
  export {
3
3
  a as RadioGroup
4
4
  };
@@ -2,8 +2,8 @@ import { autoUpdate as d, computePosition as u, offset as y, flip as v, shift as
2
2
  import "rxjs";
3
3
  import { classMap as b } from "lit/directives/class-map.js";
4
4
  import "lit/directives/style-map.js";
5
- import { $ as f } from "./litElement.mixin-CmIssdvT.js";
6
- import "./tailwind.mixin-BqYiHta7.js";
5
+ import { $ as f } from "./litElement.mixin-Dx9_p_nV.js";
6
+ import "./tailwind.mixin-YEy_iITN.js";
7
7
  import { c as g } from "./ripple-BumgqsDT.js";
8
8
  import { S as w } from "./theme.interface-C5Kj6WjD.js";
9
9
  import { css as O, html as A } from "lit";
@@ -178,4 +178,4 @@ a([r({ type: String })], o.prototype, "name", 2), a([r({ type: Boolean })], o.pr
178
178
  export {
179
179
  o as S
180
180
  };
181
- //# sourceMappingURL=select-BhPMWNbW.js.map
181
+ //# sourceMappingURL=select-5ob4WHTf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-BhPMWNbW.js","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, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\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// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value: string | string[] = '' // for single-select or multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\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@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\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\t\t\toption.tabIndex = -1\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: '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})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\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\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\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(this.options, Math.min(current + 1, this.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(this.options, Math.max(current - 1, 0))\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 (current >= 0) this.handleOptionSelect(this.options[current].value)\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: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\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\t\t\tlet selectedValues = Array.isArray(this.value) ? [...this.value] : []\n\n\t\t\tif (option.selected) {\n\t\t\t\tselectedValues = [...selectedValues, value]\n\t\t\t} else {\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\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\n\t\t\tthis.dispatchChange(selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\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.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\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\t}\n\n\tpublic checkValidity(): boolean {\n\t\tthis.isValid = this.multi ? Array.isArray(this.value) && this.value.length > 0 : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"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\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\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\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 z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\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","arguments","this","required","placeholder","value","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","firstUpdated","syncSelection","setupOptionsAccessibility","selectedValues","Array","isArray","options","forEach","o","selected","includes","length","filter","map","join","selectedOption","find","option","index","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","positionDropdown","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","Boolean","checkValidity","inputRef","message","render","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"select-5ob4WHTf.js","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, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\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// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value: string | string[] = '' // for single-select or multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\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@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\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\t\t\toption.tabIndex = -1\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: '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})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\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\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\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(this.options, Math.min(current + 1, this.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(this.options, Math.max(current - 1, 0))\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 (current >= 0) this.handleOptionSelect(this.options[current].value)\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: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\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\t\t\tlet selectedValues = Array.isArray(this.value) ? [...this.value] : []\n\n\t\t\tif (option.selected) {\n\t\t\t\tselectedValues = [...selectedValues, value]\n\t\t\t} else {\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\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\n\t\t\tthis.dispatchChange(selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\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.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\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\t}\n\n\tpublic checkValidity(): boolean {\n\t\tthis.isValid = this.multi ? Array.isArray(this.value) && this.value.length > 0 : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"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\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\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\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 z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\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","arguments","this","required","placeholder","value","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","firstUpdated","syncSelection","setupOptionsAccessibility","selectedValues","Array","isArray","options","forEach","o","selected","includes","length","filter","map","join","selectedOption","find","option","index","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","positionDropdown","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","Boolean","checkValidity","inputRef","message","render","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const r=require("@floating-ui/dom");require("rxjs");const p=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const u=require("./litElement.mixin-DhNtGNmS.cjs");require("./tailwind.mixin-HfEdtDL9.cjs");const d=require("./ripple-C2BHbhcS.cjs"),y=require("./theme.interface-Xg5Zi46a.cjs"),h=require("lit"),o=require("lit/decorators.js");var m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,a=(e,t,i,s)=>{for(var l,n=s>1?void 0:s?v(t,i):t,c=e.length-1;c>=0;c--)(l=e[c])&&(n=(s?l(t,i,n):l(n))||n);return s&&n&&m(t,i,n),n};exports.SchmancySelect=class extends u.$LitElement(h.css`
1
+ "use strict";const r=require("@floating-ui/dom");require("rxjs");const p=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const u=require("./litElement.mixin-PVEJyATw.cjs");require("./tailwind.mixin-BM-bjRjT.cjs");const d=require("./ripple-C2BHbhcS.cjs"),y=require("./theme.interface-Xg5Zi46a.cjs"),h=require("lit"),o=require("lit/decorators.js");var m=Object.defineProperty,v=Object.getOwnPropertyDescriptor,a=(e,t,i,s)=>{for(var l,n=s>1?void 0:s?v(t,i):t,c=e.length-1;c>=0;c--)(l=e[c])&&(n=(s?l(t,i,n):l(n))||n);return s&&n&&m(t,i,n),n};exports.SchmancySelect=class extends u.$LitElement(h.css`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -51,4 +51,4 @@
51
51
  </ul>
52
52
  </div>
53
53
  `}},a([o.property({type:String})],exports.SchmancySelect.prototype,"name",2),a([o.property({type:Boolean})],exports.SchmancySelect.prototype,"required",2),a([o.property({type:String})],exports.SchmancySelect.prototype,"placeholder",2),a([o.property({type:String})],exports.SchmancySelect.prototype,"value",2),a([o.property({type:Boolean})],exports.SchmancySelect.prototype,"multi",2),a([o.property({type:String})],exports.SchmancySelect.prototype,"label",2),a([o.state()],exports.SchmancySelect.prototype,"isOpen",2),a([o.state()],exports.SchmancySelect.prototype,"valueLabel",2),a([o.state()],exports.SchmancySelect.prototype,"isValid",2),a([o.property({type:String})],exports.SchmancySelect.prototype,"validationMessage",2),a([o.query("ul")],exports.SchmancySelect.prototype,"ul",2),a([o.query("schmancy-input")],exports.SchmancySelect.prototype,"inputRef",2),a([o.queryAssignedElements({flatten:!0})],exports.SchmancySelect.prototype,"options",2),exports.SchmancySelect=a([o.customElement("schmancy-select")],exports.SchmancySelect);
54
- //# sourceMappingURL=select-BS2sXDR9.cjs.map
54
+ //# sourceMappingURL=select-B194j_5a.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"select-BS2sXDR9.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, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\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// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value: string | string[] = '' // for single-select or multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\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@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\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\t\t\toption.tabIndex = -1\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: '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})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\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\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\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(this.options, Math.min(current + 1, this.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(this.options, Math.max(current - 1, 0))\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 (current >= 0) this.handleOptionSelect(this.options[current].value)\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: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\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\t\t\tlet selectedValues = Array.isArray(this.value) ? [...this.value] : []\n\n\t\t\tif (option.selected) {\n\t\t\t\tselectedValues = [...selectedValues, value]\n\t\t\t} else {\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\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\n\t\t\tthis.dispatchChange(selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\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.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\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\t}\n\n\tpublic checkValidity(): boolean {\n\t\tthis.isValid = this.multi ? Array.isArray(this.value) && this.value.length > 0 : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"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\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\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\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 z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\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","arguments","this","required","placeholder","value","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","syncSelection","setupOptionsAccessibility","selectedValues","Array","isArray","options","forEach","o","selected","includes","length","filter","map","join","selectedOption","find","option","index","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","positionDropdown","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","Boolean","checkValidity","inputRef","message","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","state","query","queryAssignedElements","flatten","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"select-B194j_5a.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, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\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// API\n\t@property({ type: String }) name: string | undefined\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) value: string | string[] = '' // for single-select or multi-select\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) label = ''\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@query('ul') private ul!: HTMLUListElement\n\n\t@query('schmancy-input') private inputRef!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate cleanupPositioner?: () => void\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-select-${Math.random().toString(36).substr(2, 9)}`\n\t\t}\n\t\tthis.addEventListener('keydown', this.handleKeyDown)\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.removeEventListener('keydown', this.handleKeyDown)\n\t\tthis.cleanupPositioner?.()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.syncSelection()\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate syncSelection() {\n\t\tif (this.multi) {\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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(', ')\n\t\t\t\t\t: this.placeholder\n\t\t} else {\n\t\t\tconst selectedOption = this.options.find(o => o.value === this.value)\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\t\t\toption.tabIndex = -1\n\t\t\tconst selectedValues = Array.isArray(this.value) ? this.value : []\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\t// Get the available height\n\t\tconst availableHeight = window.innerHeight - reference.getBoundingClientRect().bottom - 10 // 10px buffer\n\t\tthis.ul.style.maxHeight = `${availableHeight}px` // Set max height\n\n\t\tthis.cleanupPositioner = autoUpdate(reference, this.ul, async () => {\n\t\t\tconst { x, y } = await computePosition(reference, this.ul, {\n\t\t\t\tplacement: '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})\n\t\t})\n\t}\n\n\tprivate handleKeyDown(e: KeyboardEvent) {\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\tconst current = this.options.findIndex(o => o.matches(':focus')) ?? -1\n\n\t\tswitch (e.key) {\n\t\t\tcase 'Escape':\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(this.options, Math.min(current + 1, this.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(this.options, Math.max(current - 1, 0))\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 (current >= 0) this.handleOptionSelect(this.options[current].value)\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: HTMLElement[], index: number) {\n\t\tconst option = options[index]\n\t\tif (option) {\n\t\t\toption.focus()\n\t\t\tconst combobox = this.renderRoot.querySelector('.trigger')\n\t\t\tcombobox?.setAttribute('aria-activedescendant', option.id)\n\t\t}\n\t}\n\n\tprivate async openDropdown(report = false) {\n\t\tthis.isOpen = true\n\t\tawait this.updateComplete\n\n\t\tthis.positionDropdown()\n\t\tthis.setupOptionsAccessibility()\n\n\t\tconst options = Array.from(this.ul.querySelectorAll('[role=\"option\"]')) as HTMLElement[]\n\t\tconst selectedIndex = this.multi ? 0 : options.findIndex(o => o.getAttribute('value') === this.value)\n\t\tthis.focusOption(options, Math.max(selectedIndex, 0))\n\t\tif (report) this.reportValidity()\n\t}\n\n\tprivate closeDropdown() {\n\t\tthis.isOpen = false\n\t\tthis.cleanupPositioner?.()\n\t\tconst combobox = this.renderRoot.querySelector<HTMLElement>('.trigger')\n\t\tcombobox?.removeAttribute('aria-activedescendant')\n\t\tcombobox?.focus()\n\t}\n\n\tprivate handleOptionSelect(value: string) {\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\t\t\tlet selectedValues = Array.isArray(this.value) ? [...this.value] : []\n\n\t\t\tif (option.selected) {\n\t\t\t\tselectedValues = [...selectedValues, value]\n\t\t\t} else {\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\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\n\t\t\tthis.dispatchChange(selectedValues)\n\t\t} else {\n\t\t\tthis.options.forEach(o => (o.selected = o.value === value))\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.dispatchChange(value)\n\t\t\tthis.closeDropdown()\n\t\t}\n\n\t\tthis.setupOptionsAccessibility()\n\t}\n\n\tprivate dispatchChange(value: string | string[]) {\n\t\tthis.isValid = true // Reset validation on change\n\t\tthis.validationMessage = ''\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\t}\n\n\tpublic checkValidity(): boolean {\n\t\tthis.isValid = this.multi ? Array.isArray(this.value) && this.value.length > 0 : Boolean(this.value)\n\t\tthis.validationMessage = this.isValid ? '' : 'Please select an option.'\n\t\treturn this.isValid\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.required) {\n\t\t\tthis.checkValidity()\n\t\t\tthis.inputRef.required = true\n\t\t\tif (!this.isValid) {\n\t\t\t\tthis.openDropdown()\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tthis.inputRef.reportValidity()\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\n\tpublic setCustomValidity(message: string) {\n\t\tthis.validationMessage = message\n\t}\n\n\trender(): TemplateResult {\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<schmancy-input\n\t\t\t\t\t.name=${this.name}\n\t\t\t\t\ttabIndex=\"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\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\treadonly\n\t\t\t\t\t@click=${() => (this.isOpen ? this.closeDropdown() : this.openDropdown(true))}\n\t\t\t\t></schmancy-input>\n\n\t\t\t\t<div\n\t\t\t\t\tid=\"overlay\"\n\t\t\t\t\tclass=\"fixed inset-0\"\n\t\t\t\t\t?hidden=${!this.isOpen}\n\t\t\t\t\t@click=${this.closeDropdown}\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\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 z-[1000] mt-1 w-full rounded-md shadow-sm': true,\n\t\t\t\t\t\thidden: !this.isOpen,\n\t\t\t\t\t})}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\tconst customEvt = e as CustomEvent\n\t\t\t\t\t\tconst detailVal = customEvt.detail?.value\n\t\t\t\t\t\tif (detailVal) {\n\t\t\t\t\t\t\tthis.handleOptionSelect(detailVal)\n\t\t\t\t\t\t}\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","arguments","this","required","placeholder","value","multi","label","isOpen","valueLabel","isValid","validationMessage","connectedCallback","id","Math","random","toString","substr","addEventListener","handleKeyDown","disconnectedCallback","removeEventListener","cleanupPositioner","syncSelection","setupOptionsAccessibility","selectedValues","Array","isArray","options","forEach","o","selected","includes","length","filter","map","join","selectedOption","find","option","index","setAttribute","tabIndex","String","reference","renderRoot","querySelector","ul","availableHeight","window","innerHeight","getBoundingClientRect","bottom","style","maxHeight","autoUpdate","async","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","e","key","preventDefault","openDropdown","current","findIndex","matches","closeDropdown","focusOption","min","max","handleOptionSelect","focus","combobox","report","updateComplete","positionDropdown","from","querySelectorAll","selectedIndex","getAttribute","reportValidity","removeAttribute","v","dispatchChange","dispatchEvent","CustomEvent","detail","bubbles","composed","Boolean","checkValidity","inputRef","message","html","name","classMap","hidden","color","bgColor","SchmancyTheme","sys","surface","container","customEvt","detailVal","__decorateClass","property","type","prototype","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-BS2sXDR9.cjs");Object.defineProperty(exports,"SchmancySelect",{enumerable:!0,get:()=>e.SchmancySelect});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./select-B194j_5a.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-BhPMWNbW.js";
1
+ import { S } from "./select-5ob4WHTf.js";
2
2
  export {
3
3
  S as SchmancySelect
4
4
  };
@@ -1,10 +1,10 @@
1
1
  import { Subject as x, switchMap as D, forkJoin as S, fromEvent as d, of as C, takeUntil as f, timer as F, map as m, defaultIfEmpty as $, tap as h, delay as y, filter as U, take as j, mergeMap as P, merge as B } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
- import { T } from "./tailwind.mixin-BqYiHta7.js";
4
+ import { T } from "./tailwind.mixin-YEy_iITN.js";
5
5
  import { html as g } from "lit";
6
6
  import { property as c, customElement as A, query as z, queryAssignedElements as q } from "lit/decorators.js";
7
- import { $ as I } from "./litElement.mixin-CmIssdvT.js";
7
+ import { $ as I } from "./litElement.mixin-Dx9_p_nV.js";
8
8
  import { when as L } from "lit/directives/when.js";
9
9
  var N = Object.defineProperty, M = Object.getOwnPropertyDescriptor, k = (t, e, s, i) => {
10
10
  for (var a, o = i > 1 ? void 0 : i ? M(e, s) : e, l = t.length - 1; l >= 0; l--) (a = t[l]) && (o = (i ? a(e, s, o) : a(o)) || o);
@@ -179,4 +179,4 @@ export {
179
179
  E as b,
180
180
  v as s
181
181
  };
182
- //# sourceMappingURL=sheet-CwwT5thu.js.map
182
+ //# sourceMappingURL=sheet-C2RxblaX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-CwwT5thu.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.service.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement() {\n\t@property() title: string\n\trender() {\n\t\tconst classes = {\n\t\t\tabsolute: this.title.length === 0,\n\t\t\trelative: this.title.length > 0,\n\t\t}\n\t\treturn html`\n\t\t\t<schmancy-grid class=\"${this.classMap(classes)}\" align=\"center\" justify=\"stretch\" cols=\"auto 1fr auto\">\n\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\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>\n\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t</schmancy-button>\n\t\t\t\t</slot>\n\t\t\t\t<schmancy-typography transform=\"capitalize\" type=\"headline\" token=\"lg\"> ${this.title} </schmancy-typography>\n\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\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>\n\t\t\t\t\t\tclose\n\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import {\n\tdefaultIfEmpty,\n\tdelay,\n\tfilter,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n\t/**\n\t * @deprecated use bottom instead\n\t */\n\tBottomCenter = 'bottom-center',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tTopRight = 'top-right',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tBottomRight = 'bottom-right',\n}\n\ntype BottomSheeetTarget = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tallowOverlyDismiss?: boolean\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n}\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet: SchmancySheet\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\tconstructor() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(0)),\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid: target.uid ?? target.component.tagName },\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]),\n\t\t\t\t),\n\t\t\t\tmap(([sheet, target]) => {\n\t\t\t\t\tconsole.log(sheet, target)\n\t\t\t\t\tif (!sheet) {\n\t\t\t\t\t\t// if sheet is not found, create it\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tdocument.body.appendChild(sheet)\n\t\t\t\t\t}\n\t\t\t\t\tsheet.setAttribute('uid', target.uid ?? target.component.tagName)\n\n\t\t\t\t\t// **Use the dynamic position function here**\n\t\t\t\t\tconst position = target.position || getPosition() // Use target.position if it's set, otherwise determine based on screen size\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tsheet.setAttribute('allowOverlyDismiss', target.allowOverlyDismiss === false ? 'false' : 'true')\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', target.persist ?? false)\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t\treturn { target, sheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\tfilter(({ target, sheet }) => {\n\t\t\t\t\t// if the sheet has already the component, just show it\n\t\t\t\t\tif (\n\t\t\t\t\t\ttarget.persist &&\n\t\t\t\t\t\tsheet?.shadowRoot\n\t\t\t\t\t\t\t?.querySelector('slot')\n\t\t\t\t\t\t\t?.assignedElements()\n\t\t\t\t\t\t\t.find(e => e.tagName === target.component.tagName)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t\t\treturn false\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true // if the sheet does not have the component, continue to the next step\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t}),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(e => {\n\t\t\t\t\t\t\tconst target = e.target as SchmancySheet\n\t\t\t\t\t\t\tconsole.log(target)\n\n\t\t\t\t\t\t\tif (!target?.persist) target?.remove()\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)), // Some people say why 10? I say why not?\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([sheet]) => {\n\t\t\t\t\tsheet?.closeSheet()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tdismiss(uid: string) {\n\t\tthis.$dismiss.next(uid)\n\t}\n\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n}\nexport const sheet = new BottomSheetService()\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, 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 }) allowOverlayDismiss = 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\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus()) {\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.allowOverlayDismiss) sheet.dismiss(this.uid)\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","render","classes","absolute","this","title","length","relative","html","classMap","dispatchEvent","CustomEvent","bubbles","composed","__decorateClass","property","prototype","customElement","SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","bottomSheet","Subject","$dismiss","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","of","target","tap","uid","component","tagName","document","createElement","body","appendChild","setAttribute","position","innerWidth","allowOverlyDismiss","persist","header","style","overflow","delay","filter","shadowRoot","querySelector","assignedElements","find","take","subscribe","remove","mergeMap","closeSheet","next","SchmancySheet","$LitElement","super","arguments","open","Side","allowOverlayDismiss","focusAttribute","lastFocusedElement","handleFocusIn","contains","focus","_oldValue","newValue","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","popState$","preventDefault","keyUp$","event","key","sheetContainsFocus","dismiss","rickyComm$","announcePresence","merge","addEventListener","removeEventListener","isShown","String","getFocusElement","selector","el","matches","stopPropagation","when","propName","options","type","reflect","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-C2RxblaX.js","sources":["../src/sheet/header.ts","../src/sheet/sheet.service.ts","../src/sheet/sheet.ts","../src/sheet/hook.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-sheet-header')\nexport default class SchmancySheetHeader extends TailwindElement() {\n\t@property() title: string\n\trender() {\n\t\tconst classes = {\n\t\t\tabsolute: this.title.length === 0,\n\t\t\trelative: this.title.length > 0,\n\t\t}\n\t\treturn html`\n\t\t\t<schmancy-grid class=\"${this.classMap(classes)}\" align=\"center\" justify=\"stretch\" cols=\"auto 1fr auto\">\n\t\t\t\t<slot name=\"back\">\n\t\t\t\t\t<schmancy-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\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>\n\t\t\t\t\t\t<span class=\"text-[24px]\">&#8592; </span>\n\t\t\t\t\t</schmancy-button>\n\t\t\t\t</slot>\n\t\t\t\t<schmancy-typography transform=\"capitalize\" type=\"headline\" token=\"lg\"> ${this.title} </schmancy-typography>\n\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t@click=${() => {\n\t\t\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\t\t\tnew CustomEvent('dismiss', {\n\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\tcomposed: true,\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>\n\t\t\t\t\t\tclose\n\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</schmancy-grid>\n\t\t`\n\t}\n}\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet-header': SchmancySheetHeader\n\t}\n}\n","import {\n\tdefaultIfEmpty,\n\tdelay,\n\tfilter,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n\t/**\n\t * @deprecated use bottom instead\n\t */\n\tBottomCenter = 'bottom-center',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tTopRight = 'top-right',\n\t/**\n\t * @deprecated use side instead\n\t */\n\tBottomRight = 'bottom-right',\n}\n\ntype BottomSheeetTarget = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tallowOverlyDismiss?: boolean\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n}\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet: SchmancySheet\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\tconstructor() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(0)),\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid: target.uid ?? target.component.tagName },\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]),\n\t\t\t\t),\n\t\t\t\tmap(([sheet, target]) => {\n\t\t\t\t\tconsole.log(sheet, target)\n\t\t\t\t\tif (!sheet) {\n\t\t\t\t\t\t// if sheet is not found, create it\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tdocument.body.appendChild(sheet)\n\t\t\t\t\t}\n\t\t\t\t\tsheet.setAttribute('uid', target.uid ?? target.component.tagName)\n\n\t\t\t\t\t// **Use the dynamic position function here**\n\t\t\t\t\tconst position = target.position || getPosition() // Use target.position if it's set, otherwise determine based on screen size\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tsheet.setAttribute('allowOverlyDismiss', target.allowOverlyDismiss === false ? 'false' : 'true')\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', target.persist ?? false)\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t\treturn { target, sheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\tfilter(({ target, sheet }) => {\n\t\t\t\t\t// if the sheet has already the component, just show it\n\t\t\t\t\tif (\n\t\t\t\t\t\ttarget.persist &&\n\t\t\t\t\t\tsheet?.shadowRoot\n\t\t\t\t\t\t\t?.querySelector('slot')\n\t\t\t\t\t\t\t?.assignedElements()\n\t\t\t\t\t\t\t.find(e => e.tagName === target.component.tagName)\n\t\t\t\t\t) {\n\t\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t\t\treturn false\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true // if the sheet does not have the component, continue to the next step\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\t\t\t\t}),\n\t\t\t\ttap(({ sheet }) => {\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(e => {\n\t\t\t\t\t\t\tconst target = e.target as SchmancySheet\n\t\t\t\t\t\t\tconsole.log(target)\n\n\t\t\t\t\t\t\tif (!target?.persist) target?.remove()\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)), // Some people say why 10? I say why not?\n\t\t\t\t\t\t\tmap(e => e.detail.sheet),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([sheet]) => {\n\t\t\t\t\tsheet?.closeSheet()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tdismiss(uid: string) {\n\t\tthis.$dismiss.next(uid)\n\t}\n\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n}\nexport const sheet = new BottomSheetService()\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, 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 }) allowOverlayDismiss = 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\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(window, 'keyup').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.sheetContainsFocus()) {\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.allowOverlayDismiss) sheet.dismiss(this.uid)\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","render","classes","absolute","this","title","length","relative","html","classMap","dispatchEvent","CustomEvent","bubbles","composed","__decorateClass","property","prototype","customElement","SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","bottomSheet","Subject","$dismiss","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","of","target","tap","uid","component","tagName","document","createElement","body","appendChild","setAttribute","position","innerWidth","allowOverlyDismiss","persist","header","style","overflow","delay","filter","shadowRoot","querySelector","assignedElements","find","take","subscribe","remove","mergeMap","closeSheet","next","SchmancySheet","$LitElement","super","arguments","open","Side","allowOverlayDismiss","focusAttribute","lastFocusedElement","handleFocusIn","contains","focus","_oldValue","newValue","activeElement","addFocusTrap","removeFocusTrap","connectedCallback","setupEventListeners","disconnectedCallback","disconnecting","popState$","preventDefault","keyUp$","event","key","sheetContainsFocus","dismiss","rickyComm$","announcePresence","merge","addEventListener","removeEventListener","isShown","String","getFocusElement","selector","el","matches","stopPropagation","when","propName","options","type","reflect","Boolean","query","queryAssignedElements","flatten","protoOrDescriptor","name","willUpdate","Object","assign","waitUntilFirstUpdate","changedProps","call","has","oldValue","get","hasUpdated"],"mappings":";;;;;;;;;;;;AAKA,IAAqBA,IAArB,cAAiDC,EAAAA,EAAAA;AAAAA,EAEhD,SAAAC;AACC,UAAMC,IAAU,EACfC,UAAUC,KAAKC,MAAMC,WAAW,GAChCC,UAAUH,KAAKC,MAAMC,SAAS,EAExB;AAAA,WAAAE;AAAAA,2BACkBJ,KAAKK,SAASP,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA,eAG1B,MACHE;AAAAA,WAAAM,cACJ,IAAIC,YAAY,WAAW,EAC1BC,SAAAA,IACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8EAMuET,KAAKC,KAAAA;AAAAA;AAAAA;AAAAA,eAGpE,MACHD;AAAAA,WAAAM,cACJ,IAAIC,YAAY,WAAW,EAC1BC,SAAAA,IACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACA;AAAA;AAhCMC,EAAA,CAAXC,EADmBhB,CAAAA,GAAAA,EACRiB,WAAA,SAAA,CAAA,GADQjB,IAArBe,EAAA,CADCG,EAAc,uBACMlB,CAAAA,GAAAA,CAAAA;ACaT,IAAAmB,KAAAA,QACXA,EAAO,OAAA,QACPA,EAAS,SAAA,UAITA,EAAe,eAAA,iBAIfA,EAAW,WAAA,aAIXA,EAAc,cAAA,gBAdHA,IAAAA,KAAA,CAAA,CAAA;AAgCL,MAAMC,IAAwB,uBAKxBC,IAAiB,YAwHjBC,IAAQ,IAjHrB,MAAA;AAAA,EAGC,cAFAjB;AAAAA,SAAAkB,cAAc,IAAIC,KAClBnB,KAAAoB,WAAW,IAAID,KAEdnB,KAAKkB,YACHG,KACAC,SACCC,EAAS,CACRC,EAA+BC,QAAQT,GAAgBK,KACtDK,EAAUC,EAAM,CAAA,CAAA,GAChBC,EAAIC,CAAAA,MAAKA,EAAEC,OAAOb,KAAAA,GAClBc,EAAe,MAAA,CAAA,GAEhBC,EAAGC,CAAAA,EAAQZ,KACVa,EAAI,MAAA;AACIT,aAAAnB,cACN,IAAIC,YAAYQ,GAAuB,EACtCe,QAAQ,EAAEK,KAAKF,EAAOE,OAAOF,EAAOG,UAAUC,QAAAA,EAAAA,CAAAA,CAAAA;AAAAA,IAEhD,CAKJT,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,EAAI,EAAEX,GAAOgB,CAAAA,MAAAA;AAEPhB,YAEJA,IAAQqB,SAASC,cAAc,gBAAA,GACtBD,SAAAE,KAAKC,YAAYxB,CAE3BA,IAAAA,EAAMyB,aAAa,OAAOT,EAAOE,OAAOF,EAAOG,UAAUC;AAGnD,YAAAM,IAAWV,EAAOU,aArCrBlB,OAAOmB,cAAc,MAAM,SAA6B;AA6CpD,aAPP3B,EAAMyB,aAAa,YAAYC,CAAAA,GAE/B1B,EAAMyB,aAAa,sBAAsBT,EAAOY,uBAAuB,KAAQ,UAAU,MACzFZ,GAAAA,EAAOhC,SAASgB,EAAMyB,aAAa,SAAST,EAAOhC,QACnDgC,EAAOa,WAAW7B,EAAMyB,aAAa,WAAWT,EAAOa,WAAW,EAAA,GAClEb,EAAOc,UAAU9B,EAAMyB,aAAa,UAAUT,EAAOc,MAC5CT,GAAAA,SAAAE,KAAKQ,MAAMC,WAAW,UACxB,EAAEhB,QAAQhB,GAAAA,OAAAA,EAAM;AAAA,IAAA,CAAA,GAExBiC,EAAM,EAAA,GACNC,EAAO,CAAGlB,EAAAA,QAAAA,GAAQhB,OAAAA,EAAAA,MAAAA;;AAAAA,cAGhBgB,EAAOa,WACP7B,GAAAA,KAAAA,IAAAA,uBAAOmC,eAAPnC,gBAAAA,EACGoC,cAAc,YADjBpC,QAAAA,EAEGqC,mBACDC,YAAU1B,EAAEQ,YAAYJ,EAAOG,UAAUC,cAE3CpB,eAAOyB,aAAa,QAAQ,SACrB;AAAA,KAAA,GAKTR,EAAI,CAAGD,EAAAA,QAAAA,GAAQhB,OAAAA,EAAAA,MAAAA;AACdA,qBAAOwB,YAAYR,EAAOG;AAAAA,IAAS,CAAA,GAEpCc,EAAM,CAAA,GACNhB,EAAI,CAAA,EAAGjB,OAAAA,EACNA,MAAAA;AAAAA,qBAAOyB,aAAa,QAAQ;AAAA,IAAM,CAEnCR,GAAAA,EAAI,CAAGjB,EAAAA,OAAAA;AACNO,MAAAA,EAAuBP,GAAO,OAC5BI,EAAAA,KAAKmC,EAAK,CAAA,CAAA,EACVnC,KAAK6B,EAAM,MACXO,UAAe5B,CAAAA,MAAAA;AACf,cAAMI,IAASJ,EAAEI;AAGZA,QAAAA,KAAAA,QAAAA,EAAQa,YAASb,KAAAA,QAAAA,EAAQyB,WACrBpB,SAAAE,KAAKQ,MAAMC,WAAW;AAAA,MAAA,CAAA;AAAA,IAC/B,CAGHQ,CAAAA,EAAAA,UAAAA,GAEFzD,KAAKoB,SACHC,KACAsC,SACCpC,EAAS,CACRC,EAA+BC,QAAQT,CAAAA,EAAgBK,KACtDK,EAAUC,EAAM,GAChBC,CAAAA,GAAAA,EAAIC,CAAAA,MAAKA,EAAEC,OAAOb,KAAAA,GAClBc,QAEDC,CAAAA,GAAAA,EAAGG,CAAKd,EAAAA,KACPa,EAAI,MACIT;AAAAA,aAAAnB,cAAc,IAAIC,YAAYQ,GAAuB,EAAEe,QAAQ,EAAEK,KAAQ,EAAA,EAAA,CAAA,CAAA;AAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAKpFD,EAAI,CAAA,CAAEjB;AACLA,qBAAO2C;AAAAA,IAAW,CAGnBH,CAAAA,EAAAA,UAAAA;AAAAA,EAAU;AAAA,EAGb,QAAQtB,GACFnC;AAAAA,SAAAoB,SAASyC,KAAK1B,CAAAA;AAAAA,EAAG;AAAA,EAGvB,KAAKF,GAAAA;AACCjC,SAAAkB,YAAY2C,KAAK5B,CAAM;AAAA,EAAA;AAAA;;;;;AC5J9B,IAAqB6B,IAArB,cAA2CC,6lCAA3C,EAAA;AAAA,EAAA;AAAAC,UAAAC,GAAAA,SAAAA,GAEoDjE,KAAAkE,OAAAA,IACuBlE,KAAA+C,SAAA,WAC/B/C,KAAA2C,WAAkC7B,EAAsBqD,MAC7CnE,KAAA8C,cACY9C,KAAAoE,sBAAA,IACfpE,KAAAC,QAAA,IAKtBD,KAAAqE,iBAAA,aAC7BrE,KAAQsE,qBAAyC,MA2EzCtE,KAAAuE,gBAAiB1C,OAAAA;;AACnB7B,OAAAA,IAAAA,KAAKiB,UAALjB,QAAAA,EAAYwE,SAAS3C,EAAEI,WAC3BjC,KAAKyE,MAAAA;AAAAA,IAAM;AAAA,EAEb;AAAA,EA5EA,aAAaC,GAAoBC;;AAC5BA,SACH3E,KAAKsE,qBAAqBhC,SAASsC,eACnC5E,KAAK6E,aACL7E,GAAAA,KAAKyE,YAELzE,KAAK8E,gBAAAA,IACL9E,IAAAA,KAAKsE,uBAALtE,QAAAA,EAAyByE,SACzBzE,KAAKsE,qBAAqB;AAAA,EAC3B;AAAA,EAGD,oBACCN;AAAAA,UAAMe,kBACN/E,GAAAA,KAAKgF,oBAAoB;AAAA,EAAA;AAAA,EAG1B,uBAAAC;AACCjB,UAAMiB,qBACDjF,GAAAA,KAAAkF,cAAcrB,KAAAA;EAAS;AAAA,EAGrB,sBAEP;AAAA,UAAMsB,IAAY3D,EAAyBC,QAAQ,UAAYJ,EAAAA,KAC9Da,EAASL,CAAAA,MAAAA;AACRA,MAAAA,EAAEuD,eAAAA,GACFpF,KAAK4D,WAAW;AAAA,IAAA,CAAA,CAAA,GAKZyB,IAAS7D,EAAyBC,QAAQ,OAASJ,EAAAA,KACxDa,EAAaoD,CAAAA,MAAAA;AACM,MAAdA,EAAMC,QAAQ,YAAavF,KAAKwF,mBAAAA,KAC7BvE,EAAAwE,QAAQzF,KAAKmC,GAAAA;AAAAA,IAAG,KAMnBuD,IAAalE,EAAsCC,QAAQV,CAAAA,EAAuBM,KACvFa,EAASL,CAAAA,MAAAA;AACJA,MAAAA,EAAEC,OAAOK,QAAQnC,KAAKmC,YAAUwD,iBAAAA;AAAAA,IAAiB,CAIjDC,CAAAA;AAAAA,IAAAA,EAAAT,GAAWE,GAAQK,GAAYrE,KAAKK,EAAU1B,KAAKkF,aAAAA,CAAAA,EAAgBzB;EAAU;AAAA,EAG5E,qBACP;;AAAA,aAAOzD,IAAAA,KAAKiB,UAALjB,gBAAAA,EAAYwE,SAASlC,SAASsC,mBAAAA;AAAAA,EAAkB;AAAA,EAGhD,mBAAAe;AACF3F,SAAAM,cACJ,IAAIC,YAAYS,GAAgB,EAC/Bc,QAAQ,EAAEb,OAAOjB,KAAAA,GACjBQ,aACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,EAAA;AAAA,EAGO,eAAAoE;AACEvC,aAAAuD,iBAAiB,WAAW7F,KAAKuE,aAAAA;AAAAA,EAAa;AAAA,EAGhD;AACEjC,aAAAwD,oBAAoB,WAAW9F,KAAKuE;EAAa;AAAA,EAS3D,gBAAgBwB,GAAAA;;AACf/F,KAAAA,IAAAA,KAAKiB,UAALjB,QAAAA,EAAY0C,aAAa,eAAesD,QAAQD,CAChD/F,KAAAA,IAAAA,KAAKiB,UAALjB,QAAAA,EAAY0C,aAAa,cAAcsD,OAAOD,CAAAA;AAAAA,EAAQ;AAAA,EAGvD;AACC/F,SAAKkE,OAAAA,IACLlE,KAAKM,cAAc,IAAIC,YAAY,OAAA,CAAA;AAAA,EAAQ;AAAA,EAGpC,kBAAA0F;AACD,UAAAC,IAAW,IAAIlG,KAAKqE,cAAAA;AAC1B,WAAQrE,KAAKsD,iBAAiBC,KAAK4C,OAAMA,EAAGC,QAAQF,CAAaC,KAAAA,EAAG9C,cAAc6C,CAAAA,CAAAA,KAA8B;AAAA,EAAA;AAAA,EAGxG,QACHlG;;AAAAA,KAAAA,IAAAA,KAAAiG,sBAAAjG,QAAAA,EAAmByE;AAAAA,EAAM;AAAA,EAG/B,SAAA5E;AACQ,WAAAO;AAAAA,gFACwEJ,CAAAA,KAAKkE,mBAAmBlE,KAAKkE,IAAAA;AAAAA;AAAAA;AAAAA,cAG/FrC,OAAAA;AACTA,QAAEwE,gBACErG,GAAAA,KAAKoE,uBAA2BnD,EAAAwE,QAAQzF,KAAKmC,GAAG;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA,YAI9CnC,KAAK+C,WAAW,WAAW,QAAQ,UAAA;AAAA;AAAA,qBAE1B/C,KAAK2C,QAAAA;AAAAA;AAAAA,OAEnB2D,EACDtG,KAAK+C,WAAW,UAChB,MACC3C;AAAAA;AAAAA,mBAEayB,OAAAA;AACXA,QAAEwE,gBAAAA,GACIpF,EAAAwE,QAAQzF,KAAKmC,GAAG;AAAA,IAAA,CAAA;AAAA;AAAA,gBAGfnC,KAAKC,KAAAA;AAAAA;;;;;;;;EAEf;AAAA;AC1IU,IAAGsG,GAAkBC;ADDO9F,EAAA,CAA1CC,EAAS,EAAE8F,MAAMT,QAAQU,SAAS,GAAA,CAAA,CAAA,GADf5C,EACuBlD,WAAA,OAAA,IACCF,EAAA,CAA3CC,EAAS,EAAE8F,MAAME,SAASD,SAAAA,QAFP5C,EAEwBlD,WAAA,QAAA,CACDF,GAAAA,EAAA,CAA1CC,EAAS,EAAE8F,MAAMT,QAAQU,SAAAA,QAHN5C,EAGuBlD,WAAA,UAAA,CACAF,GAAAA,EAAA,CAA1CC,EAAS,EAAE8F,MAAMT,QAAQU,YAJN5C,CAAAA,CAAAA,GAAAA,EAIuBlD,WAAA,YAAA,CAAA,GACCF,EAAA,CAA3CC,EAAS,EAAE8F,MAAME,SAASD,YALP5C,CAAAA,CAAAA,GAAAA,EAKwBlD,WAAA,WAAA,CAAA,GACAF,EAAA,CAA3CC,EAAS,EAAE8F,MAAME,SAASD,SAAS,GAAA,CAAA,CAAA,GANhB5C,EAMwBlD,WAAA,uBAAA,IACDF,EAAA,CAA1CC,EAAS,EAAE8F,MAAMT,QAAQU,SAAS,GAAA,CAAA,CAAA,GAPf5C,EAOuBlD,WAAA,SAAA,IAElBF,EAAA,CAAxBkG,EAAM,QAAA,CAAA,GATa9C,EASKlD,WAAA,SAAA,IACyBF,EAAA,CAAjDmG,EAAsB,EAAEC,SAAAA,GAVLhD,CAAAA,CAAAA,GAAAA,EAU8BlD,WAAA,oBAAA,CAAA,GAEtCF,EAAA,CAAXC,EAAAA,CAAAA,GAZmBmD,EAYRlD,WAAA,kBAAA,CAIZF,GAAAA,EAAA,ECdkB6F,IDad,QCZG,CAACQ,GAAwBC,MAAAA;AACzB,UAAAC,YAAEA,EAAAA,IAAeF;AAEvBP,EAAAA,IAAUU,OAAOC,OAAO,EAAEC,sBAAAA,MAA+BZ,CAEvCO,GAAAA,EAAAE,aAAa,SAAUI,GAAAA;AAGpC,QAFOJ,EAAAK,KAAKtH,MAAMqH,CAAAA,GAElBA,EAAaE,IAAIhB,CAAAA,GAAW;AACzB,YAAAiB,IAAWH,EAAaI,IAAIlB,CAAAA,GAC5B5B,IAAW3E,KAAKuG,CAAAA;AAElBiB,MAAAA,MAAa7C,MACX6B,KAAAA,QAAAA,EAASY,yBAAwBpH,KAAK0H,cAC1C1H,KAAKgH,CAAAA,EAAMM,KAAKtH,MAAMwH,GAAU7C;IAElC;AAAA,EAEF;AAAA,KDrBmBb,EAgBpBlD,WAAA,gBAAA,CAhBoBkD,GAAAA,IAArBpD,EAAA,CADCG,EAAc,oBACMiD;"}
@@ -1,4 +1,4 @@
1
- "use strict";const s=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const w=require("./tailwind.mixin-HfEdtDL9.cjs"),b=require("lit"),a=require("lit/decorators.js"),E=require("./litElement.mixin-DhNtGNmS.cjs"),S=require("lit/directives/when.js");var k=Object.defineProperty,x=Object.getOwnPropertyDescriptor,g=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?x(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&k(e,i,n),n};let v=class extends w.TailwindElement(){render(){const t={absolute:this.title.length===0,relative:this.title.length>0};return b.html`
1
+ "use strict";const s=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const w=require("./tailwind.mixin-BM-bjRjT.cjs"),b=require("lit"),a=require("lit/decorators.js"),E=require("./litElement.mixin-PVEJyATw.cjs"),S=require("lit/directives/when.js");var k=Object.defineProperty,x=Object.getOwnPropertyDescriptor,g=(t,e,i,o)=>{for(var c,n=o>1?void 0:o?x(e,i):e,l=t.length-1;l>=0;l--)(c=t[l])&&(n=(o?c(e,i,n):c(n))||n);return o&&n&&k(e,i,n),n};let v=class extends w.TailwindElement(){render(){const t={absolute:this.title.length===0,relative:this.title.length>0};return b.html`
2
2
  <schmancy-grid class="${this.classMap(t)}" align="center" justify="stretch" cols="auto 1fr auto">
3
3
  <slot name="back">
4
4
  <schmancy-button
@@ -40,4 +40,4 @@
40
40
  </schmancy-grid>
41
41
  </div>
42
42
  `}};var p,d;h([a.property({type:String,reflect:!0})],r.prototype,"uid",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"open",2),h([a.property({type:String,reflect:!0})],r.prototype,"header",2),h([a.property({type:String,reflect:!0})],r.prototype,"position",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"persist",2),h([a.property({type:Boolean,reflect:!0})],r.prototype,"allowOverlayDismiss",2),h([a.property({type:String,reflect:!0})],r.prototype,"title",2),h([a.query(".sheet")],r.prototype,"sheet",2),h([a.queryAssignedElements({flatten:!0})],r.prototype,"assignedElements",2),h([a.property()],r.prototype,"focusAttribute",2),h([(p="open",(t,e)=>{const{willUpdate:i}=t;d=Object.assign({waitUntilFirstUpdate:!1},d),t.willUpdate=function(o){if(i.call(this,o),o.has(p)){const c=o.get(p),n=this[p];c!==n&&(d!=null&&d.waitUntilFirstUpdate&&!this.hasUpdated||this[e].call(this,c,n))}}})],r.prototype,"onOpenChange",1),r=h([a.customElement("schmancy-sheet")],r),exports.SchmancySheetPosition=f,exports.SheetHereMorty=y,exports.SheetWhereAreYouRicky=m,exports.sheet=u;
43
- //# sourceMappingURL=sheet-DOwu96wF.cjs.map
43
+ //# sourceMappingURL=sheet-CHFHgh29.cjs.map