@mhmo91/schmancy 0.2.42 → 0.2.43

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 (241) hide show
  1. package/dist/{animated-text-DAIxzGoB.cjs → animated-text-CHKjskbo.cjs} +2 -2
  2. package/dist/{animated-text-DAIxzGoB.cjs.map → animated-text-CHKjskbo.cjs.map} +1 -1
  3. package/dist/{animated-text-D5czXLWn.js → animated-text-Y4ycrTGo.js} +3 -3
  4. package/dist/{animated-text-D5czXLWn.js.map → animated-text-Y4ycrTGo.js.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-BSCRps7h.js → area.component-CpltGFtZ.js} +3 -3
  9. package/dist/{area.component-BSCRps7h.js.map → area.component-CpltGFtZ.js.map} +1 -1
  10. package/dist/{area.component-CJlITW0a.cjs → area.component-PjmcLIgT.cjs} +2 -2
  11. package/dist/{area.component-CJlITW0a.cjs.map → area.component-PjmcLIgT.cjs.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/autocomplete-DlA7Zj8y.js +266 -0
  14. package/dist/autocomplete-DlA7Zj8y.js.map +1 -0
  15. package/dist/autocomplete-sjP09kRE.cjs +49 -0
  16. package/dist/autocomplete-sjP09kRE.cjs.map +1 -0
  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 +2 -2
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/{checkbox-DSi2sG8X.js → checkbox-BUckVPbf.js} +2 -2
  26. package/dist/{checkbox-DSi2sG8X.js.map → checkbox-BUckVPbf.js.map} +1 -1
  27. package/dist/{checkbox-CYZ8DVr_.cjs → checkbox-BlyeBJaT.cjs} +2 -2
  28. package/dist/{checkbox-CYZ8DVr_.cjs.map → checkbox-BlyeBJaT.cjs.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-D0DqtIre.cjs → chips-B5s6nFCv.cjs} +2 -2
  32. package/dist/{chips-D0DqtIre.cjs.map → chips-B5s6nFCv.cjs.map} +1 -1
  33. package/dist/{chips-DHLvFgzm.js → chips-B_MkXiVt.js} +3 -3
  34. package/dist/{chips-DHLvFgzm.js.map → chips-B_MkXiVt.js.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-CiWMMHbW.js → date-range-BCS0HlLD.js} +3 -3
  42. package/dist/{date-range-CiWMMHbW.js.map → date-range-BCS0HlLD.js.map} +1 -1
  43. package/dist/{date-range-BarHKApD.cjs → date-range-DdwMl-RM.cjs} +2 -2
  44. package/dist/{date-range-BarHKApD.cjs.map → date-range-DdwMl-RM.cjs.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-C6SepD3P.cjs → delay-C7mn_Xn7.cjs} +2 -2
  48. package/dist/{delay-C6SepD3P.cjs.map → delay-C7mn_Xn7.cjs.map} +1 -1
  49. package/dist/{delay-BK67Hk_M.js → delay-O3A85T24.js} +2 -2
  50. package/dist/{delay-BK67Hk_M.js.map → delay-O3A85T24.js.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-COtzJBn4.js → divider-3bWzZ4Rm.js} +3 -3
  54. package/dist/{divider-COtzJBn4.js.map → divider-3bWzZ4Rm.js.map} +1 -1
  55. package/dist/{divider-DX5e0m-H.cjs → divider-BCpoxMEa.cjs} +2 -2
  56. package/dist/{divider-DX5e0m-H.cjs.map → divider-BCpoxMEa.cjs.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/form-2b-1v-m1.cjs +8 -0
  60. package/dist/form-2b-1v-m1.cjs.map +1 -0
  61. package/dist/{form-B6BML4Gw.js → form-DqhBSlIk.js} +5 -5
  62. package/dist/form-DqhBSlIk.js.map +1 -0
  63. package/dist/form.cjs +1 -1
  64. package/dist/form.js +1 -1
  65. package/dist/{icon-BkDy6f59.cjs → icon-C-Un0Yey.cjs} +2 -2
  66. package/dist/{icon-BkDy6f59.cjs.map → icon-C-Un0Yey.cjs.map} +1 -1
  67. package/dist/icon-button-C3lDDtmo.cjs +69 -0
  68. package/dist/icon-button-C3lDDtmo.cjs.map +1 -0
  69. package/dist/icon-button-mX6k_EOF.js +160 -0
  70. package/dist/icon-button-mX6k_EOF.js.map +1 -0
  71. package/dist/{icon-DE_mryLI.js → icon-yJxSVMJB.js} +3 -3
  72. package/dist/{icon-DE_mryLI.js.map → icon-yJxSVMJB.js.map} +1 -1
  73. package/dist/icons.cjs +1 -1
  74. package/dist/icons.js +1 -1
  75. package/dist/index.cjs +1 -1
  76. package/dist/index.js +34 -34
  77. package/dist/{input-CdgeGV93.cjs → input-1mohwkxJ.cjs} +10 -10
  78. package/dist/input-1mohwkxJ.cjs.map +1 -0
  79. package/dist/{input-By2qm_Uq.js → input-RBly67_Q.js} +11 -11
  80. package/dist/input-RBly67_Q.js.map +1 -0
  81. package/dist/input.cjs +1 -1
  82. package/dist/input.js +1 -1
  83. package/dist/layout.cjs +1 -1
  84. package/dist/layout.js +1 -1
  85. package/dist/{list-DUV3tZ3A.cjs → list-DM_Y-zwH.cjs} +2 -2
  86. package/dist/{list-DUV3tZ3A.cjs.map → list-DM_Y-zwH.cjs.map} +1 -1
  87. package/dist/{list-Dc_EEdf-.js → list-Dyy-SpiA.js} +2 -2
  88. package/dist/{list-Dc_EEdf-.js.map → list-Dyy-SpiA.js.map} +1 -1
  89. package/dist/list.cjs +1 -1
  90. package/dist/list.js +1 -1
  91. package/dist/{litElement.mixin-BYMdyxuB.js → litElement.mixin-B7v8pDMc.js} +2 -2
  92. package/dist/{litElement.mixin-BYMdyxuB.js.map → litElement.mixin-B7v8pDMc.js.map} +1 -1
  93. package/dist/{litElement.mixin-Cw4_sB4P.cjs → litElement.mixin-BhS9oGuC.cjs} +2 -2
  94. package/dist/{litElement.mixin-Cw4_sB4P.cjs.map → litElement.mixin-BhS9oGuC.cjs.map} +1 -1
  95. package/dist/{menu-D5De6nkC.cjs → menu-1oIiQdXk.cjs} +2 -2
  96. package/dist/{menu-D5De6nkC.cjs.map → menu-1oIiQdXk.cjs.map} +1 -1
  97. package/dist/{menu-cDlpZG8h.js → menu-BPvSwS8i.js} +3 -3
  98. package/dist/{menu-cDlpZG8h.js.map → menu-BPvSwS8i.js.map} +1 -1
  99. package/dist/menu.cjs +1 -1
  100. package/dist/menu.js +1 -1
  101. package/dist/mixins/tailwind.css +2 -2
  102. package/dist/nav-drawer.cjs +1 -1
  103. package/dist/nav-drawer.js +1 -1
  104. package/dist/notification.cjs +1 -1
  105. package/dist/notification.js +1 -1
  106. package/dist/{option-BHH_JwXm.js → option-BMdsMjZc.js} +5 -5
  107. package/dist/option-BMdsMjZc.js.map +1 -0
  108. package/dist/{option-D2uLD4HI.cjs → option-P1eP1gPa.cjs} +3 -3
  109. package/dist/option-P1eP1gPa.cjs.map +1 -0
  110. package/dist/option.cjs +1 -1
  111. package/dist/option.js +1 -1
  112. package/dist/{outlet-gf5ui1xs.js → outlet-BJ6YjF7v.js} +2 -2
  113. package/dist/{outlet-gf5ui1xs.js.map → outlet-BJ6YjF7v.js.map} +1 -1
  114. package/dist/{outlet-DGwK90-g.cjs → outlet-grvppFfL.cjs} +2 -2
  115. package/dist/{outlet-DGwK90-g.cjs.map → outlet-grvppFfL.cjs.map} +1 -1
  116. package/dist/{payment-card-form-DSZz3XAw.cjs → payment-card-form-BC-KTuAM.cjs} +2 -2
  117. package/dist/{payment-card-form-DSZz3XAw.cjs.map → payment-card-form-BC-KTuAM.cjs.map} +1 -1
  118. package/dist/{payment-card-form-BEg1aL_V.js → payment-card-form-CkuozUmp.js} +3 -3
  119. package/dist/{payment-card-form-BEg1aL_V.js.map → payment-card-form-CkuozUmp.js.map} +1 -1
  120. package/dist/{radio-group-DeTqT89g.cjs → radio-group-DJ15xUxA.cjs} +2 -2
  121. package/dist/{radio-group-DeTqT89g.cjs.map → radio-group-DJ15xUxA.cjs.map} +1 -1
  122. package/dist/{radio-group-D5qSmAIk.js → radio-group-k4NlKFzF.js} +2 -2
  123. package/dist/{radio-group-D5qSmAIk.js.map → radio-group-k4NlKFzF.js.map} +1 -1
  124. package/dist/radio-group.cjs +1 -1
  125. package/dist/radio-group.js +1 -1
  126. package/dist/{scroll-DJhZyWFl.js → scroll-DFMvmm21.js} +2 -2
  127. package/dist/{scroll-DJhZyWFl.js.map → scroll-DFMvmm21.js.map} +1 -1
  128. package/dist/{scroll-DbSG1gU1.cjs → scroll-DJQVW4VV.cjs} +2 -2
  129. package/dist/{scroll-DbSG1gU1.cjs.map → scroll-DJQVW4VV.cjs.map} +1 -1
  130. package/dist/select-CV5sua6X.cjs +54 -0
  131. package/dist/select-CV5sua6X.cjs.map +1 -0
  132. package/dist/{select-CZfw92Ty.js → select-DOuDb1OD.js} +35 -27
  133. package/dist/select-DOuDb1OD.js.map +1 -0
  134. package/dist/select.cjs +1 -1
  135. package/dist/select.js +1 -1
  136. package/dist/{sheet-BnwMNJKD.js → sheet-BNHSnKxu.js} +4 -5
  137. package/dist/sheet-BNHSnKxu.js.map +1 -0
  138. package/dist/{sheet-0256n1h7.cjs → sheet-DEi77u64.cjs} +5 -6
  139. package/dist/sheet-DEi77u64.cjs.map +1 -0
  140. package/dist/sheet.cjs +1 -1
  141. package/dist/sheet.js +1 -1
  142. package/dist/{slider-CVlX-GTS.js → slider-B1mWE8IL.js} +3 -3
  143. package/dist/{slider-CVlX-GTS.js.map → slider-B1mWE8IL.js.map} +1 -1
  144. package/dist/{slider-CtmVndmy.cjs → slider-BVqs9NxT.cjs} +2 -2
  145. package/dist/{slider-CtmVndmy.cjs.map → slider-BVqs9NxT.cjs.map} +1 -1
  146. package/dist/slider.cjs +1 -1
  147. package/dist/slider.js +1 -1
  148. package/dist/{spinner-Aq68t0qW.cjs → spinner-BQV8GutW.cjs} +2 -2
  149. package/dist/{spinner-Aq68t0qW.cjs.map → spinner-BQV8GutW.cjs.map} +1 -1
  150. package/dist/{spinner-JGfRqdwd.js → spinner-CjCEXMhX.js} +3 -3
  151. package/dist/{spinner-JGfRqdwd.js.map → spinner-CjCEXMhX.js.map} +1 -1
  152. package/dist/{surface-DoAY0NAL.cjs → surface-DI0zgakM.cjs} +2 -2
  153. package/dist/{surface-DoAY0NAL.cjs.map → surface-DI0zgakM.cjs.map} +1 -1
  154. package/dist/{surface-3TH7Q60g.js → surface-Dr9ZU9gu.js} +2 -2
  155. package/dist/{surface-3TH7Q60g.js.map → surface-Dr9ZU9gu.js.map} +1 -1
  156. package/dist/surface.cjs +1 -1
  157. package/dist/surface.js +1 -1
  158. package/dist/{table-DgFcgs4M.js → table-BmH69A60.js} +2 -2
  159. package/dist/{table-DgFcgs4M.js.map → table-BmH69A60.js.map} +1 -1
  160. package/dist/{table-Cyx1_9fP.cjs → table-Dupu_sw5.cjs} +2 -2
  161. package/dist/{table-Cyx1_9fP.cjs.map → table-Dupu_sw5.cjs.map} +1 -1
  162. package/dist/table.cjs +1 -1
  163. package/dist/table.js +1 -1
  164. package/dist/{tabs-group-CHJ1VE5L.cjs → tabs-group-C3A9t09Q.cjs} +2 -2
  165. package/dist/{tabs-group-CHJ1VE5L.cjs.map → tabs-group-C3A9t09Q.cjs.map} +1 -1
  166. package/dist/{tabs-group-6xcNqJVh.js → tabs-group-C8zeef3S.js} +2 -2
  167. package/dist/{tabs-group-6xcNqJVh.js.map → tabs-group-C8zeef3S.js.map} +1 -1
  168. package/dist/tabs.cjs +1 -1
  169. package/dist/tabs.js +1 -1
  170. package/dist/{tailwind.mixin-dEqmlmEI.cjs → tailwind.mixin-C16PXbzn.cjs} +2 -2
  171. package/dist/{tailwind.mixin-dEqmlmEI.cjs.map → tailwind.mixin-C16PXbzn.cjs.map} +1 -1
  172. package/dist/{tailwind.mixin-D2ZmggHb.js → tailwind.mixin-DZPJ7kCh.js} +2 -2
  173. package/dist/{tailwind.mixin-D2ZmggHb.js.map → tailwind.mixin-DZPJ7kCh.js.map} +1 -1
  174. package/dist/teleport.cjs +1 -1
  175. package/dist/{teleport.component-C5EPU5Hd.cjs → teleport.component-B_fXeDDQ.cjs} +2 -2
  176. package/dist/{teleport.component-C5EPU5Hd.cjs.map → teleport.component-B_fXeDDQ.cjs.map} +1 -1
  177. package/dist/{teleport.component-C0giJ7oR.js → teleport.component-CoGQ6xi-.js} +35 -35
  178. package/dist/{teleport.component-C0giJ7oR.js.map → teleport.component-CoGQ6xi-.js.map} +1 -1
  179. package/dist/teleport.js +1 -1
  180. package/dist/{textarea-T7Ae6OQS.cjs → textarea-08CHLJIt.cjs} +2 -2
  181. package/dist/{textarea-T7Ae6OQS.cjs.map → textarea-08CHLJIt.cjs.map} +1 -1
  182. package/dist/{textarea-DznXY4XP.js → textarea-CJX8ufEk.js} +2 -2
  183. package/dist/{textarea-DznXY4XP.js.map → textarea-CJX8ufEk.js.map} +1 -1
  184. package/dist/textarea.cjs +1 -1
  185. package/dist/textarea.js +1 -1
  186. package/dist/{theme-button-rAhvYWSo.js → theme-button-C0189bng.js} +2 -2
  187. package/dist/{theme-button-rAhvYWSo.js.map → theme-button-C0189bng.js.map} +1 -1
  188. package/dist/{theme-button-FAUTvtnc.cjs → theme-button-DIq9Bwd6.cjs} +2 -2
  189. package/dist/{theme-button-FAUTvtnc.cjs.map → theme-button-DIq9Bwd6.cjs.map} +1 -1
  190. package/dist/theme-button.cjs +1 -1
  191. package/dist/theme-button.js +1 -1
  192. package/dist/theme.cjs +1 -1
  193. package/dist/{theme.component-DWs2jXQN.js → theme.component-BJ8UIA_A.js} +2 -2
  194. package/dist/{theme.component-DWs2jXQN.js.map → theme.component-BJ8UIA_A.js.map} +1 -1
  195. package/dist/{theme.component-BccS626x.cjs → theme.component-CQZlNAYr.cjs} +2 -2
  196. package/dist/{theme.component-BccS626x.cjs.map → theme.component-CQZlNAYr.cjs.map} +1 -1
  197. package/dist/theme.js +1 -1
  198. package/dist/{tree-BbcH5gXF.cjs → tree-BeLMM0l5.cjs} +2 -2
  199. package/dist/{tree-BbcH5gXF.cjs.map → tree-BeLMM0l5.cjs.map} +1 -1
  200. package/dist/{tree-E21dLomQ.js → tree-Do6jY6lM.js} +2 -2
  201. package/dist/{tree-E21dLomQ.js.map → tree-Do6jY6lM.js.map} +1 -1
  202. package/dist/tree.cjs +1 -1
  203. package/dist/tree.js +1 -1
  204. package/dist/{typewriter-DS5Vx68F.cjs → typewriter-DPSbDZLc.cjs} +2 -2
  205. package/dist/{typewriter-DS5Vx68F.cjs.map → typewriter-DPSbDZLc.cjs.map} +1 -1
  206. package/dist/{typewriter-DKB-PEGO.js → typewriter-QBZimgx6.js} +4 -4
  207. package/dist/{typewriter-DKB-PEGO.js.map → typewriter-QBZimgx6.js.map} +1 -1
  208. package/dist/typewriter.cjs +1 -1
  209. package/dist/typewriter.js +1 -1
  210. package/dist/{typography-BX0GzBGU.cjs → typography-BbLaRssU.cjs} +2 -2
  211. package/dist/{typography-BX0GzBGU.cjs.map → typography-BbLaRssU.cjs.map} +1 -1
  212. package/dist/{typography-QSUB3lBd.js → typography-C4sugoW2.js} +2 -2
  213. package/dist/{typography-QSUB3lBd.js.map → typography-C4sugoW2.js.map} +1 -1
  214. package/dist/typography.cjs +1 -1
  215. package/dist/typography.js +1 -1
  216. package/package.json +1 -1
  217. package/types/src/autocomplete/autocomplete.d.ts +29 -3
  218. package/types/src/button/button.d.ts +12 -9
  219. package/types/src/button/icon-button.d.ts +15 -11
  220. package/types/src/form/form.d.ts +0 -1
  221. package/types/src/select/select.d.ts +0 -19
  222. package/dist/autocomplete-CHpArsZC.cjs +0 -48
  223. package/dist/autocomplete-CHpArsZC.cjs.map +0 -1
  224. package/dist/autocomplete-CiCw7cWc.js +0 -225
  225. package/dist/autocomplete-CiCw7cWc.js.map +0 -1
  226. package/dist/form-B6BML4Gw.js.map +0 -1
  227. package/dist/form-o9voayRS.cjs +0 -8
  228. package/dist/form-o9voayRS.cjs.map +0 -1
  229. package/dist/icon-button-CIxJbF_T.cjs +0 -38
  230. package/dist/icon-button-CIxJbF_T.cjs.map +0 -1
  231. package/dist/icon-button-CYNjACmd.js +0 -123
  232. package/dist/icon-button-CYNjACmd.js.map +0 -1
  233. package/dist/input-By2qm_Uq.js.map +0 -1
  234. package/dist/input-CdgeGV93.cjs.map +0 -1
  235. package/dist/option-BHH_JwXm.js.map +0 -1
  236. package/dist/option-D2uLD4HI.cjs.map +0 -1
  237. package/dist/select-CZfw92Ty.js.map +0 -1
  238. package/dist/select-DYwm6zVU.cjs +0 -52
  239. package/dist/select-DYwm6zVU.cjs.map +0 -1
  240. package/dist/sheet-0256n1h7.cjs.map +0 -1
  241. package/dist/sheet-BnwMNJKD.js.map +0 -1
@@ -4,7 +4,7 @@ export interface SchmancyButtonEventMap {
4
4
  SchmancyBlur: CustomEvent<void>;
5
5
  }
6
6
  export type ButtonVariant = 'elevated' | 'filled' | 'filled tonal' | 'outlined' | 'text';
7
- declare const SchmnacyButton_base: CustomElementConstructor & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
7
+ declare const SchmancyButton_base: CustomElementConstructor & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
8
8
  /**
9
9
  * A button component.
10
10
  * @element schmancy-button
@@ -12,7 +12,7 @@ declare const SchmnacyButton_base: CustomElementConstructor & import("@mixins/in
12
12
  * @slot prefix - The prefix slot.
13
13
  * @slot suffix - The suffix slot.
14
14
  */
15
- export declare class SchmnacyButton extends SchmnacyButton_base {
15
+ export declare class SchmancyButton extends SchmancyButton_base {
16
16
  protected static shadowRootOptions: {
17
17
  mode: string;
18
18
  delegatesFocus: boolean;
@@ -22,30 +22,32 @@ export declare class SchmnacyButton extends SchmnacyButton_base {
22
22
  private nativeElement;
23
23
  private _ariaLabel;
24
24
  /**
25
- * The variant of the button. Defaults to undefined.
25
+ * The variant of the button.
26
26
  * @attr
27
- * @default 'filled'
27
+ * @default 'text'
28
28
  * @public
29
29
  */
30
30
  variant: ButtonVariant;
31
31
  /**
32
- * The width of the button. Defaults to 'auto'.
33
- * @attr
32
+ * The width of the button.
33
+ * @attr
34
34
  * @type {'full' | 'auto'}
35
35
  * @default 'auto'
36
36
  * @public
37
37
  */
38
38
  width: 'full' | 'auto';
39
39
  /**
40
- * The type of the button. Defaults to undefined.
40
+ * The type of the button.
41
+ * Defaults to 'button' (preventing accidental form submissions).
41
42
  * @attr
42
43
  */
43
44
  type: 'button' | 'reset' | 'submit';
44
45
  /**
45
46
  * The URL the button points to.
47
+ * If provided, the component will render as an anchor element.
46
48
  * @attr
47
49
  */
48
- href: string;
50
+ href?: string;
49
51
  /**
50
52
  * Determines whether the button is disabled.
51
53
  * @attr
@@ -62,11 +64,12 @@ export declare class SchmnacyButton extends SchmnacyButton_base {
62
64
  protected get imgClasses(): string[];
63
65
  firstUpdated(): void;
64
66
  click(): void;
67
+ private _preventDefault;
65
68
  render(): import("lit-html").TemplateResult<1>;
66
69
  }
67
70
  declare global {
68
71
  interface HTMLElementTagNameMap {
69
- 'schmancy-button': SchmnacyButton;
72
+ 'schmancy-button': SchmancyButton;
70
73
  }
71
74
  }
72
75
  export {};
@@ -2,11 +2,9 @@ import { LitElement, PropertyValueMap } from 'lit';
2
2
  import { ButtonVariant } from './button';
3
3
  declare const SchmnacyIconButton_base: CustomElementConstructor & import("@mixins/index").Constructor<LitElement> & import("@mixins/index").Constructor<import("@mixins/index").IBaseMixin>;
4
4
  /**
5
- * A button component.
5
+ * An icon button component.
6
6
  * @element schmancy-icon-button
7
7
  * @slot - The default slot.
8
- * @slot prefix - The prefix slot.
9
- * @slot suffix - The suffix slot.
10
8
  */
11
9
  export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
12
10
  protected static shadowRootOptions: {
@@ -17,32 +15,37 @@ export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
17
15
  };
18
16
  private nativeElement;
19
17
  private _ariaLabel;
18
+ /**
19
+ * The size of the icon.
20
+ * @attr
21
+ * @default 'md'
22
+ */
20
23
  size: 'sm' | 'md' | 'lg';
21
24
  /**
22
- * The variant of the button. Defaults to undefined.
25
+ * The variant of the button.
23
26
  * @attr
24
- * @default 'filled'
25
- * @public
27
+ * @default 'text'
26
28
  */
27
29
  variant: ButtonVariant;
28
30
  /**
29
- * The width of the button. Defaults to 'auto'.
30
- * @attr
31
+ * The width of the button.
32
+ * @attr
31
33
  * @type {'full' | 'auto'}
32
34
  * @default 'auto'
33
- * @public
34
35
  */
35
36
  width: 'full' | 'auto';
36
37
  /**
37
- * The type of the button. Defaults to undefined.
38
+ * The type of the button.
39
+ * Defaults to 'button' (preventing accidental form submissions).
38
40
  * @attr
39
41
  */
40
42
  type: 'button' | 'reset' | 'submit';
41
43
  /**
42
44
  * The URL the button points to.
45
+ * If provided, the component will render as an anchor element.
43
46
  * @attr
44
47
  */
45
- href: string;
48
+ href?: string;
46
49
  /**
47
50
  * Determines whether the button is disabled.
48
51
  * @attr
@@ -55,6 +58,7 @@ export declare class SchmnacyIconButton extends SchmnacyIconButton_base {
55
58
  /** Removes focus from the button. */
56
59
  blur(): void;
57
60
  click(): void;
61
+ private _preventDefault;
58
62
  protected firstUpdated(_changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
59
63
  render(): import("lit-html").TemplateResult<1>;
60
64
  }
@@ -18,7 +18,6 @@ declare const SchmancyForm_base: import("@mixins/index").Constructor<CustomEleme
18
18
  export default class SchmancyForm extends SchmancyForm_base {
19
19
  private $disconnecting;
20
20
  static readonly tagName = "schmancy-form";
21
- tabIndex: number;
22
21
  protected static shadowRootOptions: {
23
22
  mode: string;
24
23
  delegatesFocus: boolean;
@@ -17,32 +17,13 @@ export declare class SchmancySelect extends SchmancySelect_base {
17
17
  connectedCallback(): void;
18
18
  disconnectedCallback(): void;
19
19
  firstUpdated(): void;
20
- /**
21
- * Whenever new <schmancy-option> children get slotted in,
22
- * or whenever properties change, ensure the correct .selected states
23
- * and display text are applied.
24
- */
25
20
  private syncSelection;
26
- /**
27
- * We can also set up any ARIA attributes here.
28
- * Note that we’re toggling `aria-selected` for screen readers,
29
- * but the highlight in CSS is triggered by the option’s `selected` property.
30
- */
31
21
  private setupOptionsAccessibility;
32
- /**
33
- * Use @floating-ui/dom to position the <ul> under the "trigger" input.
34
- */
35
22
  private positionDropdown;
36
- /**
37
- * Keydown logic for opening/closing the dropdown and navigating options.
38
- */
39
23
  private handleKeyDown;
40
24
  private focusOption;
41
25
  private openDropdown;
42
26
  private closeDropdown;
43
- /**
44
- * Main method for toggling or setting selected items.
45
- */
46
27
  private handleOptionSelect;
47
28
  private dispatchChange;
48
29
  render(): import("lit-html").TemplateResult<1>;
@@ -1,48 +0,0 @@
1
- "use strict";const O=require("@floating-ui/dom"),I=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const H=require("./litElement.mixin-Cw4_sB4P.cjs");require("./tailwind.mixin-dEqmlmEI.cjs");const M=require("./ripple-C2BHbhcS.cjs"),P=require("./theme.interface-Xg5Zi46a.cjs"),U=require("lit"),u=require("lit/decorators.js"),D=require("lit/directives/ref.js"),$=require("rxjs/operators"),C=new Uint32Array(65536),z=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const n=i.length,l=o.length,r=1<<n-1;let p=-1,f=0,S=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<l;h++){let g=C[o.charCodeAt(h)];const v=g|f;g|=(g&p)+p^p,f|=~(g|p),p&=g,f&r&&S++,p&r&&S--,f=f<<1|1,p=p<<1|~(v|f),f&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return S})(t,e):((i,o)=>{const n=o.length,l=i.length,r=[],p=[],f=Math.ceil(n/32),S=Math.ceil(l/32);for(let s=0;s<f;s++)p[s]=-1,r[s]=0;let h=0;for(;h<S-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,l)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const q=C[o.charCodeAt(a)],b=p[a/32|0]>>>a&1,y=r[a/32|0]>>>a&1,Y=q|s,j=((q|y)&m)+m^m|q|y;let A=s|~(j|m),V=m&j;A>>>31^b&&(p[a/32|0]^=1<<a),V>>>31^y&&(r[a/32|0]^=1<<a),A=A<<1|b,V=V<<1|y,m=V|~(Y|A),s=A&Y}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let g=0,v=-1;const k=32*h,T=Math.min(32,l-k)+k;for(let s=k;s<T;s++)C[i.charCodeAt(s)]|=1<<s;let E=l;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=r[s/32|0]>>>s&1,a=m|g,q=((m|w)&v)+v^v|m|w;let b=g|~(q|v),y=v&q;E+=b>>>l-1&1,E-=y>>>l-1&1,b>>>31^x&&(p[s/32|0]^=1<<s),y>>>31^w&&(r[s/32|0]^=1<<s),b=b<<1|x,y=y<<1|w,v=y|~(a|b),g=b&a}for(let s=k;s<T;s++)C[i.charCodeAt(s)]=0;return E})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,l=o>1?void 0:o?B(e,i):e,r=t.length-1;r>=0;r--)(n=t[r])&&(l=(o?n(e,i,l):n(l))||l);return o&&l&&N(e,i,l),l};let c=class extends H.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.inputRef=D.createRef(),this.searchTerm$=new I.Subject,this.startY=0}connectedCallback(){super.connectedCallback(),this.searchTerm$.pipe($.takeUntil(this.disconnecting),$.distinctUntilChanged(),$.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const n=o.label.toLowerCase();return{option:o,levDistance:z(e,n)}}).filter(({option:o,levDistance:n})=>e.length<3||n<=o.label.toLowerCase().length-e.length).sort((o,n)=>o.levDistance-n.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.requestUpdate()})).subscribe(()=>{this.showOptions()}),I.fromEvent(this,"focusout").pipe($.takeUntil(this.disconnecting),$.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),$.switchMap(()=>{const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:250,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return I.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue()}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.display="block";const{x:t,y:e}=await O.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[O.offset(5),O.flip(),O.shift({padding:5}),O.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:l}){const r=l.reference.width;n.floating.style.minWidth=`${r}px`,n.floating.style.maxWidth=`${i}px`,n.floating.style.maxHeight=`${o}px`}})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",overflowY:"auto"})}hideOptions(){var t;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),this.optionsContainer&&(this.optionsContainer.style.display="none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var l,r;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((r=(l=t.touches)==null?void 0:l[0])==null?void 0:r.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return U.html`
2
- <div class="relative">
3
- <!-- The trigger slot (if any) overrides the default SchmancyInput -->
4
- <slot name="trigger">
5
- <schmancy-input
6
- ${D.ref(this.inputRef)}
7
- id="input"
8
- class="w-full"
9
- .label=${this.label}
10
- .placeholder=${this.placeholder}
11
- .required=${this.required}
12
- type="search"
13
- inputmode="text"
14
- autocomplete="off"
15
- clickable
16
- role="combobox"
17
- aria-autocomplete="list"
18
- aria-haspopup="listbox"
19
- aria-controls="options"
20
- aria-expanded=${t}
21
- @focus=${()=>this.showOptions()}
22
- @input=${this.handleInputChange}
23
- >
24
- </schmancy-input>
25
- </slot>
26
-
27
- <ul
28
- id="options"
29
- tabindex="-1"
30
- class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
31
- role="listbox"
32
- hidden
33
- @click=${i=>{var n;const o=(n=i.detail)==null?void 0:n.value;o&&this.handleOptionClick(o)}}
34
- @touchstart=${this.handleTouchStart}
35
- @touchmove=${this.preventScroll}
36
- ${M.color({bgColor:P.SchmancyTheme.sys.color.surface.container})}
37
- >
38
- <!-- "No results" option -->
39
- <li id="empty" tabindex="-1">
40
- <schmancy-typography type="label">No results found</schmancy-typography>
41
- </li>
42
-
43
- <!-- Slot for the <schmancy-option> elements -->
44
- <slot @slotchange=${this.handleSlotChange}> </slot>
45
- </ul>
46
- </div>
47
- `}};d([u.property({type:Boolean})],c.prototype,"required",2),d([u.property({type:String})],c.prototype,"placeholder",2),d([u.property({type:String,reflect:!0})],c.prototype,"value",2),d([u.property({type:String,reflect:!0})],c.prototype,"label",2),d([u.property({type:String})],c.prototype,"maxHeight",2),d([u.property({type:Boolean})],c.prototype,"multi",2),d([u.query("#options")],c.prototype,"optionsContainer",2),d([u.query("#empty")],c.prototype,"empty",2),d([u.query("schmancy-input")],c.prototype,"input",2),d([u.queryAssignedElements({flatten:!0})],c.prototype,"options",2),d([u.eventOptions({passive:!0})],c.prototype,"handleOptionClick",1),c=d([u.customElement("schmancy-autocomplete")],c);
48
- //# sourceMappingURL=autocomplete-CHpArsZC.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-CHpArsZC.cjs","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import {\n\tcomputePosition,\n\tflip,\n\toffset,\n\tshift,\n\tsize, // <-- NEW\n} 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 { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input>. */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// 1) Search filtering\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// If very short searchTerm, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\t// Otherwise, filter by distance\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus out animation\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\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)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Resync the input after closing\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\tprivate handleSlotChange() {\n\t\t// If no visible options, show \"empty\"\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown, using Floating UI to size it\n\t * to the available space, and at least as wide as the input.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\tflip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// NEW: Let the floating element fill available space,\n\t\t\t\t// but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// The middleware is setting max-height, but if you want\n\t\t\t// a fallback you can still do:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@input=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> dispatches CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}> </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-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","next","selected","input","join","find","firstUpdated","updateInputValue","changedProps","updated","has","syncSelectionFromValue","some","values","split","v","Boolean","includes","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","size","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","hideOptions","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","hasAttribute","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","handleSlotChange","__decorateClass","property","type","prototype","String","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,225 +0,0 @@
1
- import { computePosition as Y, offset as D, flip as H, shift as M, size as P } from "@floating-ui/dom";
2
- import { Subject as z, fromEvent as N, from as U } from "rxjs";
3
- import "lit/directives/class-map.js";
4
- import "lit/directives/style-map.js";
5
- import { $ as B } from "./litElement.mixin-BYMdyxuB.js";
6
- import "./tailwind.mixin-D2ZmggHb.js";
7
- import { c as F } from "./ripple-BumgqsDT.js";
8
- import { S as R } from "./theme.interface-C5Kj6WjD.js";
9
- import { html as L } from "lit";
10
- import { property as $, query as V, queryAssignedElements as W, eventOptions as G, customElement as J } from "lit/decorators.js";
11
- import { createRef as K, ref as Q } from "lit/directives/ref.js";
12
- import { takeUntil as q, distinctUntilChanged as X, tap as Z, filter as _, switchMap as tt } from "rxjs/operators";
13
- const b = new Uint32Array(65536), et = (t, e) => {
14
- if (t.length < e.length) {
15
- const o = e;
16
- e = t, t = o;
17
- }
18
- return e.length === 0 ? t.length : t.length <= 32 ? ((o, i) => {
19
- const n = o.length, l = i.length, r = 1 << n - 1;
20
- let h = -1, f = 0, S = n, p = n;
21
- for (; p--; ) b[o.charCodeAt(p)] |= 1 << p;
22
- for (p = 0; p < l; p++) {
23
- let y = b[i.charCodeAt(p)];
24
- const g = y | f;
25
- y |= (y & h) + h ^ h, f |= ~(y | h), h &= y, f & r && S++, h & r && S--, f = f << 1 | 1, h = h << 1 | ~(g | f), f &= g;
26
- }
27
- for (p = n; p--; ) b[o.charCodeAt(p)] = 0;
28
- return S;
29
- })(t, e) : ((o, i) => {
30
- const n = i.length, l = o.length, r = [], h = [], f = Math.ceil(n / 32), S = Math.ceil(l / 32);
31
- for (let s = 0; s < f; s++) h[s] = -1, r[s] = 0;
32
- let p = 0;
33
- for (; p < S - 1; p++) {
34
- let s = 0, d = -1;
35
- const w = 32 * p, C = Math.min(32, l) + w;
36
- for (let a = w; a < C; a++) b[o.charCodeAt(a)] |= 1 << a;
37
- for (let a = 0; a < n; a++) {
38
- const x = b[i.charCodeAt(a)], v = h[a / 32 | 0] >>> a & 1, m = r[a / 32 | 0] >>> a & 1, T = x | s, j = ((x | m) & d) + d ^ d | x | m;
39
- let A = s | ~(j | d), k = d & j;
40
- A >>> 31 ^ v && (h[a / 32 | 0] ^= 1 << a), k >>> 31 ^ m && (r[a / 32 | 0] ^= 1 << a), A = A << 1 | v, k = k << 1 | m, d = k | ~(T | A), s = A & T;
41
- }
42
- for (let a = w; a < C; a++) b[o.charCodeAt(a)] = 0;
43
- }
44
- let y = 0, g = -1;
45
- const O = 32 * p, E = Math.min(32, l - O) + O;
46
- for (let s = O; s < E; s++) b[o.charCodeAt(s)] |= 1 << s;
47
- let I = l;
48
- for (let s = 0; s < n; s++) {
49
- const d = b[i.charCodeAt(s)], w = h[s / 32 | 0] >>> s & 1, C = r[s / 32 | 0] >>> s & 1, a = d | y, x = ((d | C) & g) + g ^ g | d | C;
50
- let v = y | ~(x | g), m = g & x;
51
- I += v >>> l - 1 & 1, I -= m >>> l - 1 & 1, v >>> 31 ^ w && (h[s / 32 | 0] ^= 1 << s), m >>> 31 ^ C && (r[s / 32 | 0] ^= 1 << s), v = v << 1 | w, m = m << 1 | C, g = m | ~(a | v), y = v & a;
52
- }
53
- for (let s = O; s < E; s++) b[o.charCodeAt(s)] = 0;
54
- return I;
55
- })(t, e);
56
- };
57
- var ot = Object.defineProperty, it = Object.getOwnPropertyDescriptor, u = (t, e, o, i) => {
58
- for (var n, l = i > 1 ? void 0 : i ? it(e, o) : e, r = t.length - 1; r >= 0; r--) (n = t[r]) && (l = (i ? n(e, o, l) : n(l)) || l);
59
- return i && l && ot(e, o, l), l;
60
- };
61
- let c = class extends B(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}") {
62
- constructor() {
63
- super(...arguments), this.required = !1, this.placeholder = "", this.value = "", this.label = "", this.maxHeight = "25vh", this.multi = !1, this.inputRef = K(), this.searchTerm$ = new z(), this.startY = 0;
64
- }
65
- connectedCallback() {
66
- super.connectedCallback(), this.searchTerm$.pipe(q(this.disconnecting), X(), Z((t) => {
67
- const e = t.trim().toLowerCase(), o = this.options.map((i) => {
68
- const n = i.label.toLowerCase();
69
- return { option: i, levDistance: et(e, n) };
70
- }).filter(({ option: i, levDistance: n }) => e.length < 3 || n <= i.label.toLowerCase().length - e.length).sort((i, n) => i.levDistance - n.levDistance);
71
- this.options.forEach((i) => i.hidden = !0);
72
- for (const { option: i } of o) i.hidden = !1;
73
- this.empty.hidden = o.length > 0, this.requestUpdate();
74
- })).subscribe(() => {
75
- this.showOptions();
76
- }), N(this, "focusout").pipe(q(this.disconnecting), _((t) => {
77
- var e;
78
- return ((e = t.relatedTarget) == null ? void 0 : e.tagName) !== "SCHMANCY-OPTION";
79
- }), tt(() => {
80
- const t = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 250, easing: "cubic-bezier(0.5, 0.01, 0.25, 1)" });
81
- return U(new Promise((e) => {
82
- t.onfinish = () => {
83
- this.optionsContainer.style.display = "none", this.optionsContainer.style.opacity = "1", e();
84
- };
85
- }));
86
- })).subscribe({ next: () => {
87
- var t;
88
- if (this.multi) {
89
- const e = this.options.filter((o) => o.selected).map((o) => o.label);
90
- this.input.value = e.join(", ");
91
- } else this.input.value = ((t = this.options.find((e) => e.value === this.value)) == null ? void 0 : t.label) ?? "";
92
- } });
93
- }
94
- firstUpdated() {
95
- this.updateInputValue();
96
- }
97
- updated(t) {
98
- super.updated(t), t.has("value") && (this.syncSelectionFromValue(), this.updateInputValue());
99
- }
100
- handleSlotChange() {
101
- this.empty.hidden = this.options.some((t) => !t.hidden), this.syncSelectionFromValue(), this.updateInputValue();
102
- }
103
- syncSelectionFromValue() {
104
- if (this.multi) {
105
- const t = this.value.split(",").map((e) => e.trim()).filter(Boolean);
106
- this.options.forEach((e) => {
107
- e.selected = t.includes(e.value);
108
- });
109
- } else this.options.forEach((t) => {
110
- t.selected = t.value === this.value;
111
- });
112
- }
113
- updateInputValue() {
114
- requestAnimationFrame(() => {
115
- var t;
116
- if (this.multi) {
117
- const e = this.options.filter((o) => o.selected).map((o) => o.label);
118
- this.input.value = e.join(", ");
119
- } else {
120
- const e = (t = this.options.find((o) => o.value === this.value)) == null ? void 0 : t.label;
121
- this.input.value = e ?? "";
122
- }
123
- });
124
- }
125
- async showOptions() {
126
- this.optionsContainer.removeAttribute("hidden"), this.optionsContainer.style.display = "block";
127
- const { x: t, y: e } = await Y(this.input, this.optionsContainer, { placement: "bottom-start", middleware: [D(5), H(), M({ padding: 5 }), P({ apply({ availableWidth: o, availableHeight: i, elements: n, rects: l }) {
128
- const r = l.reference.width;
129
- n.floating.style.minWidth = `${r}px`, n.floating.style.maxWidth = `${o}px`, n.floating.style.maxHeight = `${i}px`;
130
- } })] });
131
- Object.assign(this.optionsContainer.style, { left: `${t}px`, top: `${e}px`, position: "absolute", zIndex: "9999", overflowY: "auto" });
132
- }
133
- hideOptions() {
134
- var t;
135
- (t = this.optionsContainer) == null || t.setAttribute("hidden", "true"), this.optionsContainer && (this.optionsContainer.style.display = "none");
136
- }
137
- handleInputChange(t) {
138
- t.preventDefault(), t.stopPropagation();
139
- const e = t.detail.value;
140
- this.searchTerm$.next(e);
141
- }
142
- handleOptionClick(t) {
143
- if (this.multi) {
144
- const e = this.options.find((i) => i.value === t);
145
- e && (e.selected = !e.selected);
146
- const o = this.options.filter((i) => i.selected).map((i) => i.value);
147
- this.value = o.join(","), this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: o }, bubbles: !0, composed: !0 }));
148
- } else this.hideOptions(), this.value = t, this.updateInputValue(), this.dispatchEvent(new CustomEvent("change", { detail: { value: t }, bubbles: !0, composed: !0 }));
149
- }
150
- checkValidity() {
151
- return this.multi ? this.options.some((t) => t.selected) : !!this.value;
152
- }
153
- reportValidity() {
154
- var t;
155
- return (t = this.inputRef.value) == null ? void 0 : t.reportValidity();
156
- }
157
- handleTouchStart(t) {
158
- var e, o;
159
- this.startY = ((o = (e = t.touches) == null ? void 0 : e[0]) == null ? void 0 : o.clientY) ?? 0;
160
- }
161
- preventScroll(t) {
162
- var l, r;
163
- const e = t.target;
164
- if (!this.optionsContainer.contains(e)) return;
165
- const o = this.optionsContainer.scrollTop, i = this.optionsContainer.scrollHeight - this.optionsContainer.offsetHeight, n = ((r = (l = t.touches) == null ? void 0 : l[0]) == null ? void 0 : r.clientY) ?? 0;
166
- (o <= 0 && n > this.startY || o >= i && n < this.startY) && t.preventDefault();
167
- }
168
- render() {
169
- var e;
170
- const t = !((e = this.optionsContainer) != null && e.hasAttribute("hidden"));
171
- return L`
172
- <div class="relative">
173
- <!-- The trigger slot (if any) overrides the default SchmancyInput -->
174
- <slot name="trigger">
175
- <schmancy-input
176
- ${Q(this.inputRef)}
177
- id="input"
178
- class="w-full"
179
- .label=${this.label}
180
- .placeholder=${this.placeholder}
181
- .required=${this.required}
182
- type="search"
183
- inputmode="text"
184
- autocomplete="off"
185
- clickable
186
- role="combobox"
187
- aria-autocomplete="list"
188
- aria-haspopup="listbox"
189
- aria-controls="options"
190
- aria-expanded=${t}
191
- @focus=${() => this.showOptions()}
192
- @input=${this.handleInputChange}
193
- >
194
- </schmancy-input>
195
- </slot>
196
-
197
- <ul
198
- id="options"
199
- tabindex="-1"
200
- class="absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm"
201
- role="listbox"
202
- hidden
203
- @click=${(o) => {
204
- var n;
205
- const i = (n = o.detail) == null ? void 0 : n.value;
206
- i && this.handleOptionClick(i);
207
- }}
208
- @touchstart=${this.handleTouchStart}
209
- @touchmove=${this.preventScroll}
210
- ${F({ bgColor: R.sys.color.surface.container })}
211
- >
212
- <!-- "No results" option -->
213
- <li id="empty" tabindex="-1">
214
- <schmancy-typography type="label">No results found</schmancy-typography>
215
- </li>
216
-
217
- <!-- Slot for the <schmancy-option> elements -->
218
- <slot @slotchange=${this.handleSlotChange}> </slot>
219
- </ul>
220
- </div>
221
- `;
222
- }
223
- };
224
- u([$({ type: Boolean })], c.prototype, "required", 2), u([$({ type: String })], c.prototype, "placeholder", 2), u([$({ type: String, reflect: !0 })], c.prototype, "value", 2), u([$({ type: String, reflect: !0 })], c.prototype, "label", 2), u([$({ type: String })], c.prototype, "maxHeight", 2), u([$({ type: Boolean })], c.prototype, "multi", 2), u([V("#options")], c.prototype, "optionsContainer", 2), u([V("#empty")], c.prototype, "empty", 2), u([V("schmancy-input")], c.prototype, "input", 2), u([W({ flatten: !0 })], c.prototype, "options", 2), u([G({ passive: !0 })], c.prototype, "handleOptionClick", 1), c = u([J("schmancy-autocomplete")], c);
225
- //# sourceMappingURL=autocomplete-CiCw7cWc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autocomplete-CiCw7cWc.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import {\n\tcomputePosition,\n\tflip,\n\toffset,\n\tshift,\n\tsize, // <-- NEW\n} 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 { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\nimport type { SchmancyInputInputEvent } from '@schmancy/input/input'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t@property({ type: Boolean }) required = false\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\n\t/**\n\t * ⚠️ If you still want an explicit fallback for maximum dropdown height,\n\t * you can keep this, but the `size()` middleware will already set a\n\t * dynamic max-height based on viewport space.\n\t */\n\t@property({ type: String }) maxHeight = '25vh'\n\n\t@property({ type: Boolean }) multi = false\n\n\t/** Direct reference to the <input> inside <schmancy-input>. */\n\tinputRef = createRef<HTMLInputElement>()\n\n\t@query('#options') private optionsContainer!: HTMLUListElement\n\t@query('#empty') private empty!: HTMLLIElement\n\t@query('schmancy-input') private input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\n\tprivate readonly searchTerm$ = new Subject<string>()\n\n\t// iOS scroll-blocking logic\n\tprivate startY = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// 1) Search filtering\n\t\tthis.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\n\t\t\t\t\t// Filter options using Levenshtein distance\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(({ option, levDistance }) => {\n\t\t\t\t\t\t\t// If very short searchTerm, be lenient\n\t\t\t\t\t\t\tif (searchTerm.length < 3) return true\n\t\t\t\t\t\t\t// Otherwise, filter by distance\n\t\t\t\t\t\t\treturn levDistance <= option.label.toLowerCase().length - searchTerm.length\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\t// Show/hide\n\t\t\t\t\tthis.options.forEach(o => (o.hidden = true))\n\t\t\t\t\tfor (const { option } of matches) {\n\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"No results found\"\n\t\t\t\t\tthis.empty.hidden = matches.length > 0\n\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\t// Show dropdown on each new term\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\t// 2) Focus out animation\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\tconst animation = this.optionsContainer.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(\n\t\t\t\t\t\tnew Promise<void>(resolve => {\n\t\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t\t\t\t\t\t\tthis.optionsContainer.style.opacity = '1'\n\t\t\t\t\t\t\t\tresolve()\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)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Resync the input after closing\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\tfirstUpdated() {\n\t\tthis.updateInputValue()\n\t}\n\n\tprotected updated(changedProps: Map<string | number | symbol, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\tthis.syncSelectionFromValue()\n\t\t\tthis.updateInputValue()\n\t\t}\n\t}\n\n\tprivate handleSlotChange() {\n\t\t// If no visible options, show \"empty\"\n\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\tthis.syncSelectionFromValue()\n\t\tthis.updateInputValue()\n\t}\n\n\tprivate syncSelectionFromValue() {\n\t\tif (this.multi) {\n\t\t\tconst values = this.value\n\t\t\t\t.split(',')\n\t\t\t\t.map(v => v.trim())\n\t\t\t\t.filter(Boolean)\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = values.includes(o.value)\n\t\t\t})\n\t\t} else {\n\t\t\tthis.options.forEach(o => {\n\t\t\t\to.selected = o.value === this.value\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate updateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selected = this.options.filter(o => o.selected).map(o => o.label)\n\t\t\t\tthis.input.value = selected.join(', ')\n\t\t\t} else {\n\t\t\t\tconst found = this.options.find(o => o.value === this.value)?.label\n\t\t\t\tthis.input.value = found ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * MAIN: Show the dropdown, using Floating UI to size it\n\t * to the available space, and at least as wide as the input.\n\t */\n\tprivate async showOptions() {\n\t\tthis.optionsContainer.removeAttribute('hidden')\n\t\tthis.optionsContainer.style.display = 'block'\n\n\t\tconst { x, y } = await computePosition(this.input, this.optionsContainer, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [\n\t\t\t\toffset(5),\n\t\t\t\tflip(),\n\t\t\t\tshift({ padding: 5 }),\n\t\t\t\t// NEW: Let the floating element fill available space,\n\t\t\t\t// but be at least as wide as the input.\n\t\t\t\tsize({\n\t\t\t\t\tapply({ availableWidth, availableHeight, elements, rects }) {\n\t\t\t\t\t\t// At least match input width\n\t\t\t\t\t\tconst referenceWidth = rects.reference.width\n\t\t\t\t\t\telements.floating.style.minWidth = `${referenceWidth}px`\n\n\t\t\t\t\t\t// Cap to available viewport space\n\t\t\t\t\t\telements.floating.style.maxWidth = `${availableWidth}px`\n\t\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t],\n\t\t})\n\n\t\tObject.assign(this.optionsContainer.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\toverflowY: 'auto',\n\t\t\t// The middleware is setting max-height, but if you want\n\t\t\t// a fallback you can still do:\n\t\t\t// maxHeight: this.maxHeight,\n\t\t})\n\t}\n\n\tprivate hideOptions() {\n\t\tthis.optionsContainer?.setAttribute('hidden', 'true')\n\t\tif (this.optionsContainer) {\n\t\t\tthis.optionsContainer.style.display = 'none'\n\t\t}\n\t}\n\n\tprivate handleInputChange(event: SchmancyInputInputEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\tprivate handleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tconst selectedValues = this.options.filter(o => o.selected).map(o => o.value)\n\t\t\tthis.value = selectedValues.join(',')\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value: selectedValues },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : Boolean(this.value)\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tprivate handleTouchStart(event: TouchEvent) {\n\t\tthis.startY = event.touches?.[0]?.clientY ?? 0\n\t}\n\n\tprivate preventScroll(event: TouchEvent) {\n\t\tconst target = event.target as HTMLElement\n\t\tif (!this.optionsContainer.contains(target)) return\n\n\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\tconst currentY = event.touches?.[0]?.clientY ?? 0\n\t\tif ((scrollTop <= 0 && currentY > this.startY) || (scrollTop >= contentHeight && currentY < this.startY)) {\n\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\n\trender() {\n\t\tconst isOpen = !this.optionsContainer?.hasAttribute('hidden')\n\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- The trigger slot (if any) overrides the default SchmancyInput -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\taria-expanded=${isOpen}\n\t\t\t\t\t\t@focus=${() => this.showOptions()}\n\t\t\t\t\t\t@input=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=\"absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-sm\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t// Each <schmancy-option> dispatches CustomEvent('click', { detail: { value } })\n\t\t\t\t\t\tconst detailVal = (e as CustomEvent).detail?.value\n\t\t\t\t\t\tif (detailVal) this.handleOptionClick(detailVal)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.handleTouchStart}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({ bgColor: SchmancyTheme.sys.color.surface.container })}\n\t\t\t\t>\n\t\t\t\t\t<!-- \"No results\" option -->\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<!-- Slot for the <schmancy-option> elements -->\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}> </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-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","super","arguments","this","required","placeholder","value","label","maxHeight","multi","inputRef","createRef","searchTerm$","Subject","startY","connectedCallback","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","forEach","o","hidden","empty","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","optionsContainer","animate","opacity","duration","easing","from","Promise","resolve","onfinish","style","display","next","selected","input","join","find","updateInputValue","changedProps","updated","has","syncSelectionFromValue","handleSlotChange","some","values","split","v","Boolean","includes","requestAnimationFrame","found","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","size","apply","availableWidth","availableHeight","elements","rects","referenceWidth","reference","width","floating","minWidth","maxWidth","Object","assign","left","top","position","zIndex","overflowY","setAttribute","event","preventDefault","stopPropagation","detail","selectedValues","dispatchEvent","CustomEvent","bubbles","composed","hideOptions","reportValidity","touches","clientY","target","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","currentY","render","isOpen","hasAttribute","html","ref","handleInputChange","detailVal","handleOptionClick","handleTouchStart","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","__decorateClass","property","type","prototype","String","reflect","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-B6BML4Gw.js","sources":["../src/form/form.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { LitElement, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'\n\nexport interface FormEventMap {\n\tsubmit: CustomEvent<FormData>\n\treset: CustomEvent\n}\n\n/**\n * The form is a component used to collect user input from\n * interactive controls.\n *\n * @element schmancy-form\n *\n * @slot - Default slot for the form.\n *\n * @fires submit - Emitted when the form is submitted.\n * @fires reset - Emitted when the form is reset.\n */\n@customElement('schmancy-form')\nexport default class SchmancyForm extends TailwindElement() {\n\tprivate $disconnecting = new Subject()\n\tpublic static readonly tagName = 'schmancy-form'\n\ttabIndex = 0\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: false,\n\t}\n\tpublic static styles = css`\n\t\t:host {\n\t\t\theight: 100%;\n\t\t\twidth: 100%;\n\t\t\tdisplay: block;\n\t\t}\n\t`\n\n\tprivate _controlsWithChecked = [\n\t\t'input',\n\t\t'radio',\n\t\t'schmancy-radio',\n\t\t'schmancy-switch',\n\t\t'schmancy-checkbox',\n\t\t'schmancy-radio-group',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsWithValue = [\n\t\t'input',\n\t\t'schmancy-input',\n\t\t'schmancy-mask-input',\n\t\t'textarea',\n\t\t'schmancy-rating',\n\t\t'schmancy-select',\n\t\t'schmancy-combo',\n\t\t'schmancy-date-time-input',\n\t\t'schmancy-autocomplete',\n\t]\n\tprivate _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']\n\n\t/** Specifies if form data validation should be skipped on submit.\n\t * @attr novalidate\n\t * @type {boolean}\n\t * @public\n\t */\n\t@property({ type: Boolean, reflect: true }) public novalidate = false\n\n\tconstructor() {\n\t\tsuper()\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(this, 'click').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)\n\t\t\t\t}),\n\t\t\t),\n\t\t\tfromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\t\ttap(e => {\n\t\t\t\t\tif (e.code === 'Enter' || e.key === 'Enter') {\n\t\t\t\t\t\tthis.handleSubmitRequest(e)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(takeUntil(this.$disconnecting))\n\t\t\t.subscribe()\n\t}\n\n\t/** Submits the form. */\n\tpublic submit(): boolean {\n\t\tconst formData = this.getFormData()\n\t\tif (!this.novalidate && !this.reportValidity()) {\n\t\t\treturn false\n\t\t}\n\t\tthis.dispatchEvent(new CustomEvent('submit', { detail: formData }))\n\t\treturn true\n\t}\n\n\t/** Resets the form. */\n\tpublic reset() {\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\toption.selected = option.defaultSelected\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\t(tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||\n\t\t\t\t(tagName !== 'input' && this._controlsWithChecked.includes(tagName))\n\t\t\t) {\n\t\t\t\telement.checked = element.hasAttribute('checked')\n\t\t\t} else if (\n\t\t\t\ttagName === 'schmancy-input' ||\n\t\t\t\ttagName === 'schmancy-rating' ||\n\t\t\t\ttagName === 'schmancy-mask-input' ||\n\t\t\t\ttagName === 'schmancy-date-time-input'\n\t\t\t) {\n\t\t\t\telement.value = element.getAttribute('value')\n\t\t\t} else if (this._controlsWithValue.includes(tagName)) {\n\t\t\t\telement.value = element.defaultValue\n\t\t\t}\n\t\t})\n\t\tthis.dispatchEvent(new CustomEvent('reset'))\n\t}\n\n\tprivate getFormElements(): any[] {\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tconst assignedElements = slot?.assignedElements({ flatten: true })\n\t\tconst formElements: any[] = []\n\t\tassignedElements?.forEach((element: any) => {\n\t\t\tif (!element.disabled) {\n\t\t\t\tformElements.push(element)\n\t\t\t}\n\t\t\tconst children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)\n\t\t\tformElements.push(...children)\n\t\t})\n\n\t\treturn formElements\n\t}\n\n\tpublic getFormData() {\n\t\tconst formData = new FormData()\n\n\t\tconst formElements = this.getFormElements()\n\t\tformElements.forEach(element => {\n\t\t\tconst tagName = element.tagName.toLowerCase()\n\t\t\tif (tagName === 'select') {\n\t\t\t\tfor (let i = 0; i < element.options.length; i++) {\n\t\t\t\t\tconst option = element.options[i]\n\t\t\t\t\tif (option.selected) {\n\t\t\t\t\t\tformData.append(element.name, option.value)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (this._controlsWithChecked.includes(tagName) && element.checked) {\n\t\t\t\tformData.append(element.name, element.value || 'on')\n\t\t\t} else if (\n\t\t\t\tthis._controlsWithValue.includes(tagName) &&\n\t\t\t\telement.type !== 'checkbox' &&\n\t\t\t\telement.type !== 'radio' &&\n\t\t\t\telement.type !== 'submit'\n\t\t\t) {\n\t\t\t\tformData.append(element.name, element.value)\n\t\t\t}\n\t\t})\n\n\t\treturn formData\n\t}\n\n\t/** Checks for validity of the form. */\n\tpublic reportValidity(): boolean {\n\t\tconst formElements = this.getFormElements()\n\t\treturn !formElements.some(\n\t\t\telement => typeof element.reportValidity === 'function' && element.reportValidity() === false,\n\t\t)\n\t}\n\n\tprivate handleSubmitRequest(event: MouseEvent | KeyboardEvent) {\n\t\tconst targetElement: any = event.target as HTMLElement\n\t\tif (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {\n\t\t\tthis.submit()\n\t\t} else if (targetElement.type?.toLowerCase() === 'reset') {\n\t\t\tthis.reset()\n\t\t}\n\n\t\treturn true\n\t}\n\n\tprotected override render() {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-form': SchmancyForm\n\t}\n}\n"],"names":["SchmancyForm","TailwindElement","constructor","super","this","$disconnecting","Subject","tabIndex","_controlsWithChecked","_controlsWithValue","_controlsThatSubmit","novalidate","merge","fromEvent","pipe","tap","e","target","type","toLowerCase","handleSubmitRequest","code","key","takeUntil","subscribe","formData","getFormData","reportValidity","dispatchEvent","CustomEvent","detail","getFormElements","forEach","element","tagName","i","options","length","option","selected","defaultSelected","includes","checked","hasAttribute","value","getAttribute","defaultValue","slot","shadowRoot","querySelector","assignedElements","flatten","formElements","disabled","push","children","Array","from","getElementsByTagName","filter","FormData","append","name","some","event","targetElement","submit","reset","html","shadowRootOptions","LitElement","mode","delegatesFocus","styles","css","__decorateClass","property","Boolean","reflect","prototype","customElement"],"mappings":"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"}