smoothly 1.0.0-alpha.13 → 1.0.0-alpha.131

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 (416) hide show
  1. package/dist/cjs/{Listenable-63ea2d90.js → Data-e345d3cd.js} +74 -4
  2. package/dist/cjs/Data-e345d3cd.js.map +1 -0
  3. package/dist/cjs/Observers-6450f075.js +25 -0
  4. package/dist/cjs/Observers-6450f075.js.map +1 -0
  5. package/dist/cjs/{getLanguage-430ecf04.js → getLanguage-28ce96e4.js} +1111 -890
  6. package/dist/cjs/getLanguage-28ce96e4.js.map +1 -0
  7. package/dist/cjs/{index-8352a4e0.js → index-6ae370b4.js} +12 -43
  8. package/dist/cjs/index-6ae370b4.js.map +1 -0
  9. package/dist/cjs/index.cjs.js +386 -22
  10. package/dist/cjs/index.cjs.js.map +1 -1
  11. package/dist/cjs/loader.cjs.js +4 -3
  12. package/dist/cjs/loader.cjs.js.map +1 -1
  13. package/dist/cjs/redirect-2e5d4524.js +104 -0
  14. package/dist/cjs/redirect-2e5d4524.js.map +1 -0
  15. package/dist/cjs/smoothly-accordion_70.cjs.entry.js +17204 -0
  16. package/dist/cjs/smoothly-accordion_70.cjs.entry.js.map +1 -0
  17. package/dist/cjs/smoothly-address-display.cjs.entry.js +1 -1
  18. package/dist/cjs/smoothly-address.cjs.entry.js +1 -1
  19. package/dist/cjs/smoothly-addresses.cjs.entry.js +1 -1
  20. package/dist/cjs/smoothly-color.cjs.entry.js +1 -1
  21. package/dist/cjs/smoothly-country.cjs.entry.js +9 -9
  22. package/dist/cjs/smoothly-country.cjs.entry.js.map +1 -1
  23. package/dist/cjs/smoothly-display-date-time.cjs.entry.js +26 -0
  24. package/dist/cjs/smoothly-display-date-time.cjs.entry.js.map +1 -0
  25. package/dist/cjs/smoothly-google-font.cjs.entry.js +1 -1
  26. package/dist/cjs/smoothly-radio-group.cjs.entry.js +1 -1
  27. package/dist/cjs/smoothly-reorder.cjs.entry.js +4 -4
  28. package/dist/cjs/smoothly-reorder.cjs.entry.js.map +1 -1
  29. package/dist/cjs/smoothly-trigger-sink.cjs.entry.js +4 -4
  30. package/dist/cjs/smoothly-trigger-sink.cjs.entry.js.map +1 -1
  31. package/dist/cjs/smoothly-trigger-source.cjs.entry.js +6 -6
  32. package/dist/cjs/smoothly-trigger-source.cjs.entry.js.map +1 -1
  33. package/dist/cjs/smoothly.cjs.js +4 -3
  34. package/dist/cjs/smoothly.cjs.js.map +1 -1
  35. package/dist/collection/collection-manifest.json +23 -12
  36. package/dist/collection/components/Button.js +16 -2
  37. package/dist/collection/components/Button.js.map +1 -1
  38. package/dist/collection/components/accordion/index.js +32 -12
  39. package/dist/collection/components/accordion/index.js.map +1 -1
  40. package/dist/collection/components/accordion-item/index.js +18 -25
  41. package/dist/collection/components/accordion-item/index.js.map +1 -1
  42. package/dist/collection/components/app/index.js +147 -1
  43. package/dist/collection/components/app/index.js.map +1 -1
  44. package/dist/collection/components/app/room/index.js +240 -0
  45. package/dist/collection/components/app/room/index.js.map +1 -0
  46. package/dist/collection/components/app/room/style.css +55 -0
  47. package/dist/collection/components/app/style.css +89 -101
  48. package/dist/collection/components/app-demo/index.js +5 -19
  49. package/dist/collection/components/app-demo/index.js.map +1 -1
  50. package/dist/collection/components/backtotop/index.js +3 -3
  51. package/dist/collection/components/backtotop/index.js.map +1 -1
  52. package/dist/collection/components/burger/index.js +174 -0
  53. package/dist/collection/components/burger/index.js.map +1 -0
  54. package/dist/collection/components/burger/style.css +22 -0
  55. package/dist/collection/components/button/index.js +10 -23
  56. package/dist/collection/components/button/index.js.map +1 -1
  57. package/dist/collection/components/button/style.css +13 -17
  58. package/dist/collection/components/button-demo/index.js +6 -2
  59. package/dist/collection/components/button-demo/index.js.map +1 -1
  60. package/dist/collection/components/button-demo/style.css +1 -0
  61. package/dist/collection/components/calendar/generate.js +1 -1
  62. package/dist/collection/components/calendar/generate.js.map +1 -1
  63. package/dist/collection/components/checkbox/index.js +25 -3
  64. package/dist/collection/components/checkbox/index.js.map +1 -1
  65. package/dist/collection/components/country/index.js +1 -1
  66. package/dist/collection/components/display/index.js +24 -3
  67. package/dist/collection/components/display/index.js.map +1 -1
  68. package/dist/collection/components/display-amount/index.js +1 -1
  69. package/dist/collection/components/display-demo/index.js +1 -1
  70. package/dist/collection/components/display-demo/index.js.map +1 -1
  71. package/dist/collection/components/filter/index.js +1 -1
  72. package/dist/collection/components/filter/index.js.map +1 -1
  73. package/dist/collection/components/filter/input/index.js +16 -9
  74. package/dist/collection/components/filter/input/index.js.map +1 -1
  75. package/dist/collection/components/form/index.js +132 -9
  76. package/dist/collection/components/form/index.js.map +1 -1
  77. package/dist/collection/components/form/style.css +9 -16
  78. package/dist/collection/components/frame/index.js +1 -2
  79. package/dist/collection/components/frame/index.js.map +1 -1
  80. package/dist/collection/components/icon/index.js +29 -38
  81. package/dist/collection/components/icon/index.js.map +1 -1
  82. package/dist/collection/components/icon-demo/index.js.map +1 -1
  83. package/dist/collection/components/icon-demo/style.css +1 -0
  84. package/dist/collection/components/input/Changeable.js +8 -0
  85. package/dist/collection/components/input/Changeable.js.map +1 -0
  86. package/dist/collection/components/input/Clearable.js.map +1 -0
  87. package/dist/collection/components/input/Input.js +2 -0
  88. package/dist/collection/components/input/Input.js.map +1 -0
  89. package/dist/collection/components/input/Looks.js +2 -0
  90. package/dist/collection/components/input/Looks.js.map +1 -0
  91. package/dist/collection/components/input/Submittable.js +8 -0
  92. package/dist/collection/components/input/Submittable.js.map +1 -0
  93. package/dist/collection/components/input/clear/index.js +237 -0
  94. package/dist/collection/components/input/clear/index.js.map +1 -0
  95. package/dist/collection/components/input/clear/style.css +254 -0
  96. package/dist/collection/components/{input-date → input/date}/index.js +160 -3
  97. package/dist/collection/components/input/date/index.js.map +1 -0
  98. package/dist/collection/components/{input-date-range → input/date/range}/index.js +161 -23
  99. package/dist/collection/components/input/date/range/index.js.map +1 -0
  100. package/dist/collection/components/input/date/range/style.css +69 -0
  101. package/dist/collection/components/input/date/style.css +58 -0
  102. package/dist/collection/components/input/demo/index.js +95 -0
  103. package/dist/collection/components/input/demo/index.js.map +1 -0
  104. package/dist/collection/components/{input-demo → input/demo}/style.css +1 -0
  105. package/dist/collection/components/input/file/index.js +305 -0
  106. package/dist/collection/components/input/file/index.js.map +1 -0
  107. package/dist/collection/components/input/file/style.css +85 -0
  108. package/dist/collection/components/input/index.js +131 -8
  109. package/dist/collection/components/input/index.js.map +1 -1
  110. package/dist/collection/components/{input-month → input/month}/index.js +5 -5
  111. package/dist/collection/components/input/month/index.js.map +1 -0
  112. package/dist/collection/components/{selector → input/select}/index.js +176 -5
  113. package/dist/collection/components/input/select/index.js.map +1 -0
  114. package/dist/collection/components/input/select/style.css +80 -0
  115. package/dist/collection/components/input/style.css +23 -8
  116. package/dist/collection/components/notification/index.js +45 -8
  117. package/dist/collection/components/notification/index.js.map +1 -1
  118. package/dist/collection/components/notification/style.css +25 -1
  119. package/dist/collection/components/notifier/style.css +1 -3
  120. package/dist/collection/components/picker/demo/index.js +91 -0
  121. package/dist/collection/components/picker/demo/index.js.map +1 -0
  122. package/dist/collection/components/picker/demo/style.css +26 -0
  123. package/dist/collection/components/picker/index.js +197 -396
  124. package/dist/collection/components/picker/index.js.map +1 -1
  125. package/dist/collection/components/picker/menu/index.js +422 -0
  126. package/dist/collection/components/picker/menu/index.js.map +1 -0
  127. package/dist/collection/components/picker/menu/style.css +44 -0
  128. package/dist/collection/components/picker/option/index.js +298 -0
  129. package/dist/collection/components/picker/option/index.js.map +1 -0
  130. package/dist/collection/components/picker/option/style.css +30 -0
  131. package/dist/collection/components/picker/slot-elements/index.js +109 -0
  132. package/dist/collection/components/picker/slot-elements/index.js.map +1 -0
  133. package/dist/collection/components/picker/slot-elements/style.css +3 -0
  134. package/dist/collection/components/picker/slotted-elements/index.js +84 -0
  135. package/dist/collection/components/picker/slotted-elements/index.js.map +1 -0
  136. package/dist/collection/components/picker/slotted-elements/style.css +3 -0
  137. package/dist/collection/components/picker/style.css +60 -144
  138. package/dist/collection/components/radio/index.js +4 -4
  139. package/dist/collection/components/radio/index.js.map +1 -1
  140. package/dist/collection/components/radio-button/index.js +35 -10
  141. package/dist/collection/components/radio-button/index.js.map +1 -1
  142. package/dist/collection/components/select-demo/index.js +0 -87
  143. package/dist/collection/components/select-demo/index.js.map +1 -1
  144. package/dist/collection/components/spinner/style.css +1 -0
  145. package/dist/collection/components/submit/index.js +64 -5
  146. package/dist/collection/components/submit/index.js.map +1 -1
  147. package/dist/collection/components/submit/style.css +224 -0
  148. package/dist/collection/components/summary/index.js +44 -1
  149. package/dist/collection/components/summary/index.js.map +1 -1
  150. package/dist/collection/components/svg/style.css +2 -2
  151. package/dist/collection/components/table/cell/index.js +1 -1
  152. package/dist/collection/components/table/cell/index.js.map +1 -1
  153. package/dist/collection/components/table/cell/style.css +19 -10
  154. package/dist/collection/components/table/demo/filtered/index.js +4 -3
  155. package/dist/collection/components/table/demo/filtered/index.js.map +1 -1
  156. package/dist/collection/components/table/demo/index.js +8 -2
  157. package/dist/collection/components/table/demo/index.js.map +1 -1
  158. package/dist/collection/components/table/demo/style.css +2 -0
  159. package/dist/collection/components/table/expandable/cell/index.js +14 -14
  160. package/dist/collection/components/table/expandable/cell/index.js.map +1 -1
  161. package/dist/collection/components/table/expandable/cell/style.css +32 -22
  162. package/dist/collection/components/table/expandable/row/index.js +9 -32
  163. package/dist/collection/components/table/expandable/row/index.js.map +1 -1
  164. package/dist/collection/components/table/expandable/row/style.css +32 -29
  165. package/dist/collection/components/table/footer/index.js +19 -0
  166. package/dist/collection/components/table/footer/index.js.map +1 -0
  167. package/dist/collection/components/table/footer/style.css +13 -0
  168. package/dist/collection/components/table/header/style.css +2 -2
  169. package/dist/collection/components/table/index.js +55 -12
  170. package/dist/collection/components/table/index.js.map +1 -1
  171. package/dist/collection/components/table/row/index.js +37 -5
  172. package/dist/collection/components/table/row/index.js.map +1 -1
  173. package/dist/collection/components/table/row/style.css +4 -1
  174. package/dist/collection/components/table/style.css +0 -2
  175. package/dist/collection/components/table/testing/data.js +28 -0
  176. package/dist/collection/components/table/testing/data.js.map +1 -0
  177. package/dist/collection/components/table/testing/index.js +28 -0
  178. package/dist/collection/components/table/testing/index.js.map +1 -0
  179. package/dist/collection/components/table/testing/style.css +22 -0
  180. package/dist/collection/components/theme/color/index.js +48 -0
  181. package/dist/collection/components/theme/color/index.js.map +1 -0
  182. package/dist/collection/components/theme/color/style.css +8 -0
  183. package/dist/collection/components/theme/color/variant/index.js +66 -0
  184. package/dist/collection/components/theme/color/variant/index.js.map +1 -0
  185. package/dist/collection/components/theme/color/variant/style.css +18 -0
  186. package/dist/collection/components/theme/colors/index.js +30 -0
  187. package/dist/collection/components/theme/colors/index.js.map +1 -0
  188. package/dist/collection/components/theme/colors/style.css +7 -0
  189. package/dist/collection/components/toggle-switch/index.js +69 -17
  190. package/dist/collection/components/toggle-switch/index.js.map +1 -1
  191. package/dist/collection/components/toggle-switch/style.css +19 -12
  192. package/dist/collection/components/trigger-source/index.js +3 -3
  193. package/dist/collection/components/trigger-source/index.js.map +1 -1
  194. package/dist/collection/global/Observers.js +22 -0
  195. package/dist/collection/global/Observers.js.map +1 -0
  196. package/dist/collection/global/index.js +5 -0
  197. package/dist/collection/global/index.js.map +1 -0
  198. package/dist/collection/index.js +2 -3
  199. package/dist/collection/index.js.map +1 -1
  200. package/dist/collection/model/Data.js.map +1 -0
  201. package/dist/collection/model/Icon.js +23 -0
  202. package/dist/collection/model/Icon.js.map +1 -0
  203. package/dist/collection/model/Listenable.js +2 -2
  204. package/dist/collection/model/Listenable.js.map +1 -1
  205. package/dist/collection/model/Notice.js +1 -1
  206. package/dist/collection/model/Notice.js.map +1 -1
  207. package/dist/collection/model/Option.js.map +1 -1
  208. package/dist/collection/model/index.js +3 -0
  209. package/dist/collection/model/index.js.map +1 -1
  210. package/dist/collection/model/redirect.js +8 -0
  211. package/dist/collection/model/redirect.js.map +1 -0
  212. package/dist/collection/smoothly.js +3 -0
  213. package/dist/collection/smoothly.js.map +1 -0
  214. package/dist/custom-elements/index.d.ts +94 -34
  215. package/dist/custom-elements/index.js +5360 -16302
  216. package/dist/custom-elements/index.js.map +1 -1
  217. package/dist/esm/{Listenable-fb6f4723.js → Data-37e7c0b9.js} +75 -5
  218. package/dist/esm/Data-37e7c0b9.js.map +1 -0
  219. package/dist/esm/Observers-5f08e828.js +25 -0
  220. package/dist/esm/Observers-5f08e828.js.map +1 -0
  221. package/dist/esm/{getLanguage-cccb8418.js → getLanguage-5233a597.js} +1111 -890
  222. package/dist/esm/getLanguage-5233a597.js.map +1 -0
  223. package/dist/esm/{index-7b57a52c.js → index-c196715a.js} +12 -42
  224. package/dist/esm/index-c196715a.js.map +1 -0
  225. package/dist/esm/index.js +388 -6
  226. package/dist/esm/index.js.map +1 -1
  227. package/dist/esm/loader.js +5 -4
  228. package/dist/esm/loader.js.map +1 -1
  229. package/dist/esm/redirect-b0f87e88.js +101 -0
  230. package/dist/esm/redirect-b0f87e88.js.map +1 -0
  231. package/dist/esm/smoothly-accordion_70.entry.js +17131 -0
  232. package/dist/esm/smoothly-accordion_70.entry.js.map +1 -0
  233. package/dist/esm/smoothly-address-display.entry.js +1 -1
  234. package/dist/esm/smoothly-address.entry.js +1 -1
  235. package/dist/esm/smoothly-addresses.entry.js +1 -1
  236. package/dist/esm/smoothly-color.entry.js +1 -1
  237. package/dist/esm/smoothly-country.entry.js +9 -9
  238. package/dist/esm/smoothly-country.entry.js.map +1 -1
  239. package/dist/esm/smoothly-display-date-time.entry.js +22 -0
  240. package/dist/esm/smoothly-display-date-time.entry.js.map +1 -0
  241. package/dist/esm/smoothly-google-font.entry.js +1 -1
  242. package/dist/esm/smoothly-radio-group.entry.js +1 -1
  243. package/dist/esm/smoothly-reorder.entry.js +2 -2
  244. package/dist/esm/smoothly-reorder.entry.js.map +1 -1
  245. package/dist/esm/smoothly-trigger-sink.entry.js +2 -2
  246. package/dist/esm/smoothly-trigger-source.entry.js +4 -4
  247. package/dist/esm/smoothly-trigger-source.entry.js.map +1 -1
  248. package/dist/esm/smoothly.js +5 -4
  249. package/dist/esm/smoothly.js.map +1 -1
  250. package/dist/smoothly/index.esm.js +1 -1
  251. package/dist/smoothly/index.esm.js.map +1 -1
  252. package/dist/smoothly/{p-d4182274.entry.js → p-1efa3261.entry.js} +2 -2
  253. package/dist/smoothly/p-2a0c2387.js +2 -0
  254. package/dist/smoothly/p-2a0c2387.js.map +1 -0
  255. package/dist/smoothly/{p-e136b93e.entry.js → p-4d743f07.entry.js} +2 -2
  256. package/dist/smoothly/p-4ff439dd.entry.js +2 -0
  257. package/dist/smoothly/{p-5b28795c.entry.js.map → p-4ff439dd.entry.js.map} +1 -1
  258. package/dist/smoothly/{p-be2ff772.entry.js → p-5edb65c6.entry.js} +2 -2
  259. package/dist/smoothly/{p-c49d2094.entry.js → p-663ccbd0.entry.js} +2 -2
  260. package/dist/smoothly/p-73442332.entry.js +2 -0
  261. package/dist/smoothly/p-73442332.entry.js.map +1 -0
  262. package/dist/smoothly/{p-940af6d3.entry.js → p-9992c8c4.entry.js} +2 -2
  263. package/dist/smoothly/p-a6c4c2d4.entry.js +2 -0
  264. package/dist/smoothly/p-a6c4c2d4.entry.js.map +1 -0
  265. package/dist/smoothly/p-b9cb0514.js +2 -0
  266. package/dist/smoothly/p-b9cb0514.js.map +1 -0
  267. package/dist/smoothly/p-c833c402.js +2 -0
  268. package/dist/smoothly/p-c833c402.js.map +1 -0
  269. package/dist/smoothly/p-ce4e6f44.entry.js +2 -0
  270. package/dist/smoothly/p-ce4e6f44.entry.js.map +1 -0
  271. package/dist/smoothly/p-d0b8061e.js +3 -0
  272. package/dist/smoothly/p-d0b8061e.js.map +1 -0
  273. package/dist/smoothly/{p-79025273.entry.js → p-dbd1afa9.entry.js} +2 -2
  274. package/dist/smoothly/p-ede93d69.js +2 -0
  275. package/dist/smoothly/p-ede93d69.js.map +1 -0
  276. package/dist/smoothly/{p-712b362e.entry.js → p-f96e41aa.entry.js} +2 -2
  277. package/dist/smoothly/p-ff8acb9b.entry.js +2 -0
  278. package/dist/smoothly/p-ff8acb9b.entry.js.map +1 -0
  279. package/dist/smoothly/smoothly.esm.js +1 -1
  280. package/dist/smoothly/smoothly.esm.js.map +1 -1
  281. package/dist/types/components/Button.d.ts +1 -2
  282. package/dist/types/components/accordion/index.d.ts +1 -1
  283. package/dist/types/components/accordion-item/index.d.ts +5 -4
  284. package/dist/types/components/app/index.d.ts +25 -0
  285. package/dist/types/components/app/room/index.d.ts +25 -0
  286. package/dist/types/components/app-demo/index.d.ts +2 -0
  287. package/dist/types/components/backtotop/index.d.ts +1 -1
  288. package/dist/types/components/burger/index.d.ts +15 -0
  289. package/dist/types/components/button/index.d.ts +2 -2
  290. package/dist/types/components/checkbox/index.d.ts +4 -2
  291. package/dist/types/components/display/index.d.ts +1 -0
  292. package/dist/types/components/filter/input/index.d.ts +1 -1
  293. package/dist/types/components/form/index.d.ts +16 -3
  294. package/dist/types/components/frame/index.d.ts +1 -1
  295. package/dist/types/components/icon/index.d.ts +3 -9
  296. package/dist/types/components/input/Changeable.d.ts +7 -0
  297. package/dist/types/components/input/Input.d.ts +10 -0
  298. package/dist/types/components/input/Looks.d.ts +1 -0
  299. package/dist/types/components/input/Submittable.d.ts +6 -0
  300. package/dist/types/components/input/clear/index.d.ts +17 -0
  301. package/dist/types/components/input/date/index.d.ts +28 -0
  302. package/dist/types/components/input/date/range/index.d.ts +33 -0
  303. package/dist/types/components/input/demo/index.d.ts +8 -0
  304. package/dist/types/components/input/file/index.d.ts +24 -0
  305. package/dist/types/components/input/index.d.ts +17 -4
  306. package/dist/types/components/{input-month → input/month}/index.d.ts +1 -1
  307. package/dist/types/components/{selector → input/select}/index.d.ts +15 -3
  308. package/dist/types/components/notification/index.d.ts +3 -1
  309. package/dist/types/components/picker/demo/index.d.ts +18 -0
  310. package/dist/types/components/picker/index.d.ts +33 -45
  311. package/dist/types/components/picker/menu/index.d.ts +53 -0
  312. package/dist/types/components/picker/option/index.d.ts +23 -0
  313. package/dist/types/components/picker/slot-elements/index.d.ts +15 -0
  314. package/dist/types/components/picker/slotted-elements/index.d.ts +8 -0
  315. package/dist/types/components/radio/index.d.ts +1 -1
  316. package/dist/types/components/radio-button/index.d.ts +3 -5
  317. package/dist/types/components/select-demo/index.d.ts +0 -9
  318. package/dist/types/components/submit/index.d.ts +6 -1
  319. package/dist/types/components/summary/index.d.ts +4 -0
  320. package/dist/types/components/table/demo/filtered/index.d.ts +1 -1
  321. package/dist/types/components/table/expandable/cell/index.d.ts +4 -4
  322. package/dist/types/components/table/expandable/row/index.d.ts +3 -7
  323. package/dist/types/components/table/footer/index.d.ts +3 -0
  324. package/dist/types/components/table/index.d.ts +6 -3
  325. package/dist/types/components/table/row/index.d.ts +3 -1
  326. package/dist/types/components/table/testing/data.d.ts +5 -0
  327. package/dist/types/components/table/testing/index.d.ts +4 -0
  328. package/dist/types/components/theme/color/index.d.ts +5 -0
  329. package/dist/types/components/theme/color/variant/index.d.ts +6 -0
  330. package/dist/types/components/theme/colors/index.d.ts +3 -0
  331. package/dist/types/components/toggle-switch/index.d.ts +7 -2
  332. package/dist/types/components/trigger-source/index.d.ts +1 -1
  333. package/dist/types/components.d.ts +490 -226
  334. package/dist/types/global/Observers.d.ts +8 -0
  335. package/dist/types/global/index.d.ts +4 -0
  336. package/dist/types/index.d.ts +1 -4
  337. package/dist/types/model/Icon.d.ts +8 -0
  338. package/dist/types/model/Notice.d.ts +1 -1
  339. package/dist/types/model/Option.d.ts +24 -6
  340. package/dist/types/model/index.d.ts +4 -1
  341. package/dist/types/model/redirect.d.ts +1 -0
  342. package/dist/types/smoothly.d.ts +3 -0
  343. package/package.json +16 -16
  344. package/dist/cjs/Listenable-63ea2d90.js.map +0 -1
  345. package/dist/cjs/getLanguage-430ecf04.js.map +0 -1
  346. package/dist/cjs/index-8352a4e0.js.map +0 -1
  347. package/dist/cjs/index-b282ee83.js +0 -865
  348. package/dist/cjs/index-b282ee83.js.map +0 -1
  349. package/dist/cjs/smoothly-accordion_61.cjs.entry.js +0 -28113
  350. package/dist/cjs/smoothly-accordion_61.cjs.entry.js.map +0 -1
  351. package/dist/collection/components/App.js +0 -71
  352. package/dist/collection/components/App.js.map +0 -1
  353. package/dist/collection/components/form/Clearable.js.map +0 -1
  354. package/dist/collection/components/form/Data.js.map +0 -1
  355. package/dist/collection/components/input-date/index.js.map +0 -1
  356. package/dist/collection/components/input-date/style.css +0 -39
  357. package/dist/collection/components/input-date-range/index.js.map +0 -1
  358. package/dist/collection/components/input-date-range/style.css +0 -51
  359. package/dist/collection/components/input-demo/index.js +0 -45
  360. package/dist/collection/components/input-demo/index.js.map +0 -1
  361. package/dist/collection/components/input-month/index.js.map +0 -1
  362. package/dist/collection/components/menu-options/index.js +0 -413
  363. package/dist/collection/components/menu-options/index.js.map +0 -1
  364. package/dist/collection/components/menu-options/style.css +0 -18
  365. package/dist/collection/components/option/index.js +0 -270
  366. package/dist/collection/components/option/index.js.map +0 -1
  367. package/dist/collection/components/option/style.css +0 -42
  368. package/dist/collection/components/room/index.js +0 -90
  369. package/dist/collection/components/room/index.js.map +0 -1
  370. package/dist/collection/components/select/index.js +0 -108
  371. package/dist/collection/components/select/index.js.map +0 -1
  372. package/dist/collection/components/select/style.css +0 -20
  373. package/dist/collection/components/selector/index.js.map +0 -1
  374. package/dist/collection/components/selector/style.css +0 -46
  375. package/dist/esm/Listenable-fb6f4723.js.map +0 -1
  376. package/dist/esm/getLanguage-cccb8418.js.map +0 -1
  377. package/dist/esm/index-2e948fc3.js +0 -861
  378. package/dist/esm/index-2e948fc3.js.map +0 -1
  379. package/dist/esm/index-7b57a52c.js.map +0 -1
  380. package/dist/esm/smoothly-accordion_61.entry.js +0 -28049
  381. package/dist/esm/smoothly-accordion_61.entry.js.map +0 -1
  382. package/dist/smoothly/p-06337b89.js +0 -2
  383. package/dist/smoothly/p-06337b89.js.map +0 -1
  384. package/dist/smoothly/p-21341e18.entry.js +0 -2
  385. package/dist/smoothly/p-21341e18.entry.js.map +0 -1
  386. package/dist/smoothly/p-5b28795c.entry.js +0 -2
  387. package/dist/smoothly/p-5b6351f6.js +0 -2
  388. package/dist/smoothly/p-5b6351f6.js.map +0 -1
  389. package/dist/smoothly/p-70280a11.js +0 -2
  390. package/dist/smoothly/p-70280a11.js.map +0 -1
  391. package/dist/smoothly/p-b49664d8.entry.js +0 -2
  392. package/dist/smoothly/p-b49664d8.entry.js.map +0 -1
  393. package/dist/smoothly/p-b82efb2e.entry.js +0 -2
  394. package/dist/smoothly/p-b82efb2e.entry.js.map +0 -1
  395. package/dist/smoothly/p-c88ae468.js +0 -3
  396. package/dist/smoothly/p-c88ae468.js.map +0 -1
  397. package/dist/types/components/App.d.ts +0 -5
  398. package/dist/types/components/input-date/index.d.ts +0 -14
  399. package/dist/types/components/input-date-range/index.d.ts +0 -23
  400. package/dist/types/components/input-demo/index.d.ts +0 -3
  401. package/dist/types/components/menu-options/index.d.ts +0 -35
  402. package/dist/types/components/option/index.d.ts +0 -32
  403. package/dist/types/components/room/index.d.ts +0 -7
  404. package/dist/types/components/select/index.d.ts +0 -14
  405. /package/dist/collection/components/{form → input}/Clearable.js +0 -0
  406. /package/dist/collection/components/{input-month → input/month}/style.css +0 -0
  407. /package/dist/collection/{components/form → model}/Data.js +0 -0
  408. /package/dist/smoothly/{p-d4182274.entry.js.map → p-1efa3261.entry.js.map} +0 -0
  409. /package/dist/smoothly/{p-e136b93e.entry.js.map → p-4d743f07.entry.js.map} +0 -0
  410. /package/dist/smoothly/{p-be2ff772.entry.js.map → p-5edb65c6.entry.js.map} +0 -0
  411. /package/dist/smoothly/{p-c49d2094.entry.js.map → p-663ccbd0.entry.js.map} +0 -0
  412. /package/dist/smoothly/{p-940af6d3.entry.js.map → p-9992c8c4.entry.js.map} +0 -0
  413. /package/dist/smoothly/{p-79025273.entry.js.map → p-dbd1afa9.entry.js.map} +0 -0
  414. /package/dist/smoothly/{p-712b362e.entry.js.map → p-f96e41aa.entry.js.map} +0 -0
  415. /package/dist/types/components/{form → input}/Clearable.d.ts +0 -0
  416. /package/dist/types/{components/form → model}/Data.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/picker/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport { Notice, Option } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-picker\",\n\tstyleUrl: \"style.scss\",\n\tshadow: true,\n})\nexport class SmoothlyPicker {\n\tprivate inputElement: HTMLInputElement\n\tprivate keepFocusOnReRender = false\n\tprivate menuElement: HTMLSmoothlyMenuOptionsElement\n\t@Element() element: HTMLElement\n\t@State() isOpen: boolean\n\t@State() empty: boolean\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) readonly = false\n\t@Prop() maxMenuHeight = \"inherit\"\n\t@Prop() maxHeight: string\n\t@Prop({ mutable: true }) emptyMenuLabel = \"No Options\"\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop() mutable = false\n\t@Prop() optionStyle: any\n\t@Prop({ mutable: true, reflect: true }) options: (Option & { checked?: boolean })[] = []\n\t@Prop({ reflect: true }) labelSetting: \"hide\" | \"default\"\n\t@Prop({ reflect: true }) label: string\n\t@Prop({ mutable: true }) selections: Option[] = []\n\t@Prop({ mutable: true }) selectNoneName = \"Select None\"\n\t@Prop({ mutable: true }) selectAllName = \"Select All\"\n\t@Prop({ mutable: true }) selectionName = \"items selected\"\n\t@Prop({ mutable: true }) newOptionLabel = \"Add:\"\n\t@Prop() valueValidator: (value: any) => [boolean, Notice | undefined] = _ => [true, undefined]\n\t@Event() menuClose: EventEmitter<Option[]>\n\t@Event() notice: EventEmitter<Notice>\n\t@Watch(\"isOpen\")\n\tisOpenChangeHandler() {\n\t\tif (this.isOpen == false) {\n\t\t\tthis.menuClose.emit(this.selections)\n\t\t}\n\t}\n\tcomponentDidRender() {\n\t\tthis.filterOptions()\n\t\tif (this.keepFocusOnReRender) {\n\t\t\tthis.inputElement.focus()\n\t\t\tthis.keepFocusOnReRender = false\n\t\t}\n\t}\n\t@Listen(\"optionSelect\")\n\t@Listen(\"optionUnselect\")\n\toptionSelectHandler(event: CustomEvent<Option>) {\n\t\tthis.toggle(event.detail)\n\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"optionAdd\")\n\toptionAddHandler(event: CustomEvent<{ name: string; value: string }>) {\n\t\tif (this.mutable) {\n\t\t\tconst [status, notice] = this.valueValidator(event.detail.value)\n\t\t\tif (status) {\n\t\t\t\tconst option = { ...event.detail }\n\t\t\t\tthis.options = [...this.options, option]\n\t\t\t\tthis.select(option)\n\t\t\t}\n\t\t\tnotice && this.notice.emit(notice)\n\t\t}\n\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"menuEmpty\")\n\temptyHandler(event: CustomEvent<boolean>) {\n\t\tthis.empty = event.detail\n\t\tevent.stopPropagation()\n\t}\n\ttoggle(option: Option) {\n\t\toption.value == \"select-none\"\n\t\t\t? this.toggleAll()\n\t\t\t: this.selections.map(s => s.value).includes(option.value)\n\t\t\t? this.unselect(option)\n\t\t\t: this.select(option)\n\t}\n\ttoggleAll() {\n\t\tthis.selections = this.selections.length == this.options?.length ? [] : this.options\n\t\tthis.inputElement.focus()\n\t\tthis.keepFocusOnReRender = true\n\t}\n\tunselect(selection: Option) {\n\t\tconst index = this.selections.map(selection => selection.value).indexOf(selection.value)\n\t\tif (index != -1) {\n\t\t\tthis.selections = [\n\t\t\t\t...this.selections.slice(0, index),\n\t\t\t\t...this.selections.slice(index + 1, this.selections.length),\n\t\t\t]\n\t\t\tthis.keepFocusOnReRender = true\n\t\t}\n\t}\n\tselect(selection: Option) {\n\t\tconst isNewSelection = this.selections.reduce((acc, current) => acc && current.value != selection.value, true)\n\t\tif (isNewSelection)\n\t\t\tthis.selections = this.multiple ? [...this.selections, selection] : [selection]\n\t\tthis.inputElement.value = \"\"\n\t\tthis.filterOptions()\n\t\tthis.keepFocusOnReRender = true\n\t\tthis.isOpen = this.multiple\n\t}\n\ttoggleHighlighted() {\n\t\tif (this.mutable && this.empty) {\n\t\t\tconst [status, notice] = this.valueValidator(this.inputElement.value)\n\t\t\tif (status) {\n\t\t\t\tconst option = { name: this.inputElement.value, value: this.inputElement.value }\n\t\t\t\tthis.options = [...this.options, option]\n\t\t\t\tthis.select(option)\n\t\t\t}\n\t\t\tnotice && this.notice.emit(notice)\n\t\t} else\n\t\t\tthis.menuElement?.getHighlighted().then((result: Option | undefined) => {\n\t\t\t\tresult && this.toggle(result)\n\t\t\t})\n\t}\n\thighlightDefault() {\n\t\tthis.filterOptions()\n\t\tthis.menuElement?.setHighlight(this.multiple || this.selections.length == 0 ? 0 : this.selections[0].value)\n\t}\n\tfilterOptions() {\n\t\tthis.menuElement?.filterOptions(this.inputElement.value, [])\n\t}\n\tonInput(event: UIEvent) {\n\t\tthis.isOpen = this.inputElement.value != \"\" ? true : this.isOpen\n\t\tthis.highlightDefault()\n\t}\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (event.key == \"ArrowUp\" || event.key == \"ArrowDown\") {\n\t\t\tthis.menuElement?.moveHighlight(event.key == \"ArrowUp\" ? -1 : 1)\n\t\t\tevent.preventDefault()\n\t\t} else if (event.key == \"Enter\" && this.isOpen)\n\t\t\tthis.toggleHighlighted()\n\t\telse if (event.key == \"Escape\") {\n\t\t\tthis.inputElement.value = \"\"\n\t\t\tthis.isOpen = false\n\t\t\tthis.filterOptions()\n\t\t} else if (event.key == \" \" && this.inputElement.value == \"\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.isOpen = true\n\t\t\tthis.filterOptions()\n\t\t}\n\t}\n\tonClick() {\n\t\tif (!(this.readonly || this.disabled)) {\n\t\t\tthis.isOpen = !this.isOpen\n\t\t\tthis.inputElement.focus()\n\t\t\tthis.highlightDefault()\n\t\t\tthis.filterOptions()\n\t\t}\n\t}\n\tonBlur() {\n\t\tthis.inputElement.value = \"\"\n\t\tthis.isOpen = false\n\t\tthis.filterOptions()\n\t}\n\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--max-height\": this.maxHeight ?? \"inherit\",\n\t\t\t\"--label-display\": this.labelSetting == \"hide\" ? \"none\" : \"absolute\",\n\t\t}\n\t\tthis.options?.forEach(o => {\n\t\t\to.checked = this.selections.map(s => s.value).includes(o.value)\n\t\t})\n\t\tconst options = [\n\t\t\t...(this.multiple\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: \"select-none\",\n\t\t\t\t\t\t\tname: this.selections.length == this.options.length ? this.selectNoneName : this.selectAllName,\n\t\t\t\t\t\t\tchecked: this.selections.length == this.options.length,\n\t\t\t\t\t\t\tdivider: true,\n\t\t\t\t\t\t},\n\t\t\t\t ]\n\t\t\t\t: []),\n\t\t\t...(this.options ?? []),\n\t\t]\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={cssVariables}\n\t\t\t\thas-selection={this.selections.length > 0}\n\t\t\t\tis-open={this.isOpen ? \"\" : undefined}\n\t\t\t\tonMouseDown={(e: MouseEvent) => e.preventDefault()}\n\t\t\t\tonClick={() => this.onClick()}>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-icon part=\"search\" class=\"search\" name=\"search-outline\" size=\"tiny\"></smoothly-icon>\n\t\t\t\t\t<label part=\"label-element\">{this.label}</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tpart=\"input\"\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tref={(el: HTMLInputElement) => (this.inputElement = el ? el : this.inputElement)}\n\t\t\t\t\t\tonFocus={() => this.highlightDefault()}\n\t\t\t\t\t\tonBlur={() => this.onBlur()}\n\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\tthis.selections.length > 3\n\t\t\t\t\t\t\t\t? this.selections.length.toString() + \" \" + this.selectionName\n\t\t\t\t\t\t\t\t: this.selections.map(selection => selection.name).join(\", \")\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonKeyDown={e => this.onKeyDown(e)}\n\t\t\t\t\t\tonInput={(e: UIEvent) => this.onInput(e)}></input>\n\t\t\t\t\t<smoothly-icon part=\"chevron\" class=\"down\" name=\"chevron-down\" size=\"tiny\"></smoothly-icon>\n\t\t\t\t\t<smoothly-icon part=\"chevron\" class=\"up\" name=\"chevron-up\" size=\"tiny\"></smoothly-icon>\n\t\t\t\t</div>\n\t\t\t\t<smoothly-menu-options\n\t\t\t\t\tpart=\"menu-options\"\n\t\t\t\t\tstyle={{ width: \"100%\" }}\n\t\t\t\t\ttoggle={true}\n\t\t\t\t\toptionStyle={{ ...this.optionStyle }}\n\t\t\t\t\torder={false}\n\t\t\t\t\temptyMenuLabel={this.emptyMenuLabel}\n\t\t\t\t\tnewOptionLabel={this.newOptionLabel}\n\t\t\t\t\tmax-menu-height={this.maxMenuHeight}\n\t\t\t\t\tmutable={this.mutable}\n\t\t\t\t\tref={(el: HTMLSmoothlyMenuOptionsElement) => (this.menuElement = el ?? this.menuElement)}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t\tresetHighlightOnOptionsChange={false}\n\t\t\t\t\toptions={options}></smoothly-menu-options>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/picker/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { Notice, Option } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Controls } from \"./menu\"\n\n@Component({\n\ttag: \"smoothly-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPicker implements Clearable, Input {\n\t@Element() element: HTMLSmoothlyPickerElement\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() selected = new Map<any, Option>()\n\t@State() display: Node[]\n\t@Event() smoothlyPickerLoaded: EventEmitter<Controls>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyChange: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks) => void>\n\tprivate controls?: Controls & { synced: () => boolean }\n\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t}\n\n\t@Watch(\"selected\")\n\tselectedChanged() {\n\t\tconst selected = Array.from(this.selected.values(), option => option.value)\n\t\tif (this.controls?.synced()) {\n\t\t\tthis.smoothlyInput.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\t\tthis.smoothlyChange.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\t}\n\t\tthis.display = Array.from(this.selected.values(), option => {\n\t\t\tconst span = document.createElement(\"span\")\n\t\t\toption.slotted.forEach(node => span.appendChild(node.cloneNode(true)))\n\t\t\treturn span\n\t\t})\n\t}\n\n\tcomponentDidLoad() {\n\t\tif (this.controls)\n\t\t\tthis.smoothlyPickerLoaded.emit((({ synced, ...controls }) => controls)(this.controls))\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyPickerMenuLoaded\")\n\tmenuLoadedHandler(event: CustomEvent<Controls & { synced: () => boolean }>) {\n\t\tthis.controls = event.detail\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>) {\n\t\tif (event.detail.selected)\n\t\t\tthis.selected = this.multiple\n\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t: new Map().set(event.detail.value, event.detail)\n\t}\n\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tif (!this.readonly)\n\t\t\tif (this.multiple)\n\t\t\t\tthis.selected = event.detail.selected\n\t\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t\t: !this.selected.delete(event.detail.value)\n\t\t\t\t\t? this.selected\n\t\t\t\t\t: new Map(this.selected.entries())\n\t\t\telse\n\t\t\t\tthis.selected = !event.detail.selected ? new Map() : new Map().set(event.detail.value, event.detail)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tthis.open = !event.composedPath().includes(this.element) ? false : !this.open\n\t}\n\t@Listen(\"focusin\", { target: \"window\" })\n\tfocusHandler(event: FocusEvent) {\n\t\tif (!event.composedPath().includes(this.element))\n\t\t\tthis.open = false\n\t}\n\t@Method()\n\tasync clear() {\n\t\tthis.selected.forEach(option => option.selected && option.element.clickHandler())\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-slot-elements class={\"selected\"} nodes={this.display} />\n\t\t\t\t<span class={\"label\"}>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</span>\n\t\t\t\t<button type=\"button\">\n\t\t\t\t\t<smoothly-icon size=\"tiny\" name={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"} />\n\t\t\t\t</button>\n\t\t\t\t<slot name=\"child\" />\n\t\t\t\t<smoothly-picker-menu\n\t\t\t\t\topen={this.open}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t\tmultiple={this.multiple}\n\t\t\t\t\tmutable={this.mutable}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tvalidator={this.validator}>\n\t\t\t\t\t<slot name=\"search\" slot=\"search\" />\n\t\t\t\t\t<slot name=\"display\" slot=\"display\" />\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-picker-menu>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n"]}
@@ -0,0 +1,422 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import global from "../../../global/index";
3
+ const Observers = global().Observers;
4
+ function* chain(...iterables) {
5
+ for (const iterable of iterables)
6
+ yield* iterable;
7
+ }
8
+ function restore(target, source) {
9
+ target === null || target === void 0 ? void 0 : target.set.selected((target.selected = source.selected));
10
+ target === null || target === void 0 ? void 0 : target.set.readonly((target.readonly = source.readonly));
11
+ target === null || target === void 0 ? void 0 : target.set.visible((target.visible = source.visible));
12
+ target === null || target === void 0 ? void 0 : target.set.value((target.value = source.value));
13
+ target === null || target === void 0 ? void 0 : target.set.search((target.search = source.search));
14
+ return target;
15
+ }
16
+ function restoreListener(ref, option) {
17
+ ref === null || ref === void 0 ? void 0 : ref.addEventListener("smoothlyPickerOptionLoad", (e) => restore(e.detail, option));
18
+ }
19
+ export class SmoothlyPickerMenu {
20
+ constructor() {
21
+ this.synced = false;
22
+ this.looks = undefined;
23
+ this.open = false;
24
+ this.multiple = false;
25
+ this.mutable = false;
26
+ this.readonly = false;
27
+ this.validator = undefined;
28
+ this.backend = new Map();
29
+ this.options = new Map();
30
+ this.created = new Map();
31
+ this.search = "";
32
+ this.valid = false;
33
+ this.display = undefined;
34
+ this.flip = false;
35
+ this.flipChecked = false;
36
+ }
37
+ componentWillLoad() {
38
+ if (!Observers.has(this.element)) {
39
+ const threshold = 0.4;
40
+ Observers.set(this.element, new IntersectionObserver(entries => {
41
+ var _a, _b;
42
+ return ((_b = (_a = entries.find(entry => entry.target == this.element)) === null || _a === void 0 ? void 0 : _a.intersectionRatio) !== null && _b !== void 0 ? _b : 0) < threshold &&
43
+ !this.flipChecked &&
44
+ ((this.flip = !this.flip), (this.flipChecked = true));
45
+ }, { threshold }));
46
+ }
47
+ }
48
+ sync() {
49
+ if (this.backend.size != this.options.size)
50
+ this.synced = false;
51
+ else
52
+ this.synced = true;
53
+ }
54
+ componentDidLoad() {
55
+ this.smoothlyPickerMenuLoaded.emit({
56
+ remember: () => {
57
+ this.memory = {
58
+ backend: new Map(Array.from(this.backend.entries(), ([value, option]) => [value, Object.assign({}, option)])),
59
+ options: new Map(Array.from(this.options.entries(), ([value, option]) => [value, Object.assign({}, option)])),
60
+ };
61
+ },
62
+ restore: () => {
63
+ if (this.memory) {
64
+ for (const option of this.options.values()) {
65
+ const memory = this.memory.options.get(option.value);
66
+ if (memory != undefined)
67
+ restore(option, memory);
68
+ else if (this.created.get(option.value))
69
+ option.set.selected((option.selected = false));
70
+ }
71
+ for (const option of this.backend.values()) {
72
+ const memory = this.memory.backend.get(option.value);
73
+ if (memory != undefined)
74
+ restore(option, memory);
75
+ else if (this.created.get(option.value))
76
+ option.set.selected((option.selected = false));
77
+ }
78
+ }
79
+ },
80
+ synced: () => this.synced,
81
+ });
82
+ }
83
+ disconnectedCallback() {
84
+ var _a;
85
+ if (!this.element.parentElement) {
86
+ (_a = Observers.get(this.element)) === null || _a === void 0 ? void 0 : _a.disconnect();
87
+ Observers.remove(this.element);
88
+ }
89
+ }
90
+ openChange() {
91
+ const observer = Observers.get(this.element);
92
+ if (this.open)
93
+ observer === null || observer === void 0 ? void 0 : observer.observe(this.element);
94
+ else
95
+ observer === null || observer === void 0 ? void 0 : observer.unobserve(this.element);
96
+ }
97
+ readonlyChanged() {
98
+ for (const option of chain(this.options.values(), this.backend.values()))
99
+ option.element, option.set.readonly(this.readonly);
100
+ }
101
+ scrollHandler() {
102
+ this.flipChecked = false;
103
+ }
104
+ optionLoadHandler(event) {
105
+ if (!this.listElement || !event.composedPath().includes(this.listElement)) {
106
+ event.stopPropagation();
107
+ this.sync();
108
+ event.detail.set.readonly(this.readonly);
109
+ const current = this.options.get(event.detail.value);
110
+ if (current)
111
+ event.detail.set.selected(current.element.selected);
112
+ }
113
+ }
114
+ optionLoadedHandler(event) {
115
+ var _a;
116
+ if (!this.listElement || !event.composedPath().includes(this.listElement)) {
117
+ event.stopPropagation();
118
+ const current = restore(this.backend.get(event.detail.value), event.detail);
119
+ this.backend = new Map(this.backend
120
+ .set(event.detail.value, Object.assign(Object.assign({}, event.detail), { clone: (_a = current === null || current === void 0 ? void 0 : current.clone) !== null && _a !== void 0 ? _a : event.detail.element.cloneNode(true) }))
121
+ .entries());
122
+ }
123
+ else
124
+ this.options.set(event.detail.value, event.detail);
125
+ this.sync();
126
+ }
127
+ optionChangeHandler(event) {
128
+ var _a;
129
+ if (!this.listElement || !event.composedPath().includes(this.listElement)) {
130
+ event.stopPropagation();
131
+ (_a = this.options.get(event.detail.value)) === null || _a === void 0 ? void 0 : _a.set.selected(event.detail.selected);
132
+ }
133
+ else {
134
+ const current = this.backend.get(event.detail.value);
135
+ if (current === null || current === void 0 ? void 0 : current.element.parentElement)
136
+ current === null || current === void 0 ? void 0 : current.set.selected(event.detail.selected);
137
+ }
138
+ if (!this.readonly && !this.multiple && event.detail.selected)
139
+ for (const option of chain(this.options.values(), this.backend.values()))
140
+ if (option.value != event.detail.value)
141
+ option.set.selected(false);
142
+ }
143
+ inputHandler(event) {
144
+ event.stopPropagation();
145
+ this.search = event.detail.search;
146
+ if (!this.search) {
147
+ this.valid = false;
148
+ for (const option of chain(this.options.values(), this.backend.values()))
149
+ option.set.visible(true);
150
+ }
151
+ else {
152
+ this.valid = !Array.from(this.options.values()).find(option => option.value == this.search);
153
+ const search = this.search.toLocaleLowerCase();
154
+ for (const option of chain(this.options.values(), this.backend.values())) {
155
+ const value = option.value.toString().toLocaleLowerCase().includes(search);
156
+ const searches = option.search.some(value => value.includes(search));
157
+ const result = value || searches;
158
+ option.set.visible(result);
159
+ }
160
+ }
161
+ }
162
+ addHandler() {
163
+ var _a;
164
+ const validation = !this.validator ? true : this.validator(this.search);
165
+ if (this.mutable) {
166
+ if (typeof validation == "object" ? validation.result : validation) {
167
+ if (!this.multiple)
168
+ for (const option of chain(this.options.values(), this.backend.values()))
169
+ option.set.selected(false);
170
+ this.created = new Map(this.created.set(this.search, { value: this.search, selected: true }).entries());
171
+ this.search = "";
172
+ (_a = this.searchElement) === null || _a === void 0 ? void 0 : _a.focus();
173
+ this.valid = false;
174
+ }
175
+ if (typeof validation == "object")
176
+ this.notice.emit(validation.notice);
177
+ }
178
+ }
179
+ keyDownHandler(event) {
180
+ if (event.key == "Enter") {
181
+ event.preventDefault();
182
+ this.addHandler();
183
+ }
184
+ }
185
+ emptyDisplayHandler(event) {
186
+ event.stopPropagation();
187
+ event.detail.set.nodes(this.display);
188
+ }
189
+ render() {
190
+ return (h(Host, { class: { valid: this.valid, flip: this.flip } }, h("smoothly-slotted-elements", { class: "hide", onSmoothlySlottedChange: e => (this.display = e.detail) }, h("slot", { name: "display" })), h("div", { class: "hide" }, h("slot", null), Array.from(this.created.values(), option => (h("smoothly-picker-option", { key: option.value, value: option.value, selected: option.selected }, option.value, h("smoothly-slot-elements", { slot: "display", nodes: this.display }))))), h("div", { class: "controls" }, h("smoothly-input", { ref: e => (this.searchElement = e), name: "search", value: this.search, looks: this.looks, onKeyDown: e => this.keyDownHandler(e), onSmoothlyInput: e => this.inputHandler(e), onSmoothlyChange: e => e.stopPropagation(), onSmoothlyBlur: e => e.stopPropagation() }, h("slot", { name: "search" })), this.mutable && !this.readonly ? (h("button", { onClick: () => this.addHandler(), disabled: !this.valid, type: "button" }, h("smoothly-icon", { name: "add-outline" }))) : null), h("div", { class: "list", ref: e => (this.listElement = e) }, Array.from(this.backend.values())
191
+ .sort((a, b) => a.position - b.position)
192
+ .map(option => (h("smoothly-slot-elements", { ref: e => restoreListener(e, option), clone: false, nodes: option.clone }))))));
193
+ }
194
+ static get is() { return "smoothly-picker-menu"; }
195
+ static get encapsulation() { return "scoped"; }
196
+ static get originalStyleUrls() {
197
+ return {
198
+ "$": ["style.css"]
199
+ };
200
+ }
201
+ static get styleUrls() {
202
+ return {
203
+ "$": ["style.css"]
204
+ };
205
+ }
206
+ static get properties() {
207
+ return {
208
+ "looks": {
209
+ "type": "string",
210
+ "mutable": false,
211
+ "complexType": {
212
+ "original": "Looks",
213
+ "resolved": "\"border\" | \"grid\" | \"line\" | \"plain\"",
214
+ "references": {
215
+ "Looks": {
216
+ "location": "import",
217
+ "path": "../../input/Looks"
218
+ }
219
+ }
220
+ },
221
+ "required": false,
222
+ "optional": false,
223
+ "docs": {
224
+ "tags": [],
225
+ "text": ""
226
+ },
227
+ "attribute": "looks",
228
+ "reflect": false
229
+ },
230
+ "open": {
231
+ "type": "boolean",
232
+ "mutable": false,
233
+ "complexType": {
234
+ "original": "boolean",
235
+ "resolved": "boolean",
236
+ "references": {}
237
+ },
238
+ "required": false,
239
+ "optional": false,
240
+ "docs": {
241
+ "tags": [],
242
+ "text": ""
243
+ },
244
+ "attribute": "open",
245
+ "reflect": true,
246
+ "defaultValue": "false"
247
+ },
248
+ "multiple": {
249
+ "type": "boolean",
250
+ "mutable": false,
251
+ "complexType": {
252
+ "original": "boolean",
253
+ "resolved": "boolean",
254
+ "references": {}
255
+ },
256
+ "required": false,
257
+ "optional": false,
258
+ "docs": {
259
+ "tags": [],
260
+ "text": ""
261
+ },
262
+ "attribute": "multiple",
263
+ "reflect": true,
264
+ "defaultValue": "false"
265
+ },
266
+ "mutable": {
267
+ "type": "boolean",
268
+ "mutable": false,
269
+ "complexType": {
270
+ "original": "boolean",
271
+ "resolved": "boolean",
272
+ "references": {}
273
+ },
274
+ "required": false,
275
+ "optional": false,
276
+ "docs": {
277
+ "tags": [],
278
+ "text": ""
279
+ },
280
+ "attribute": "mutable",
281
+ "reflect": true,
282
+ "defaultValue": "false"
283
+ },
284
+ "readonly": {
285
+ "type": "boolean",
286
+ "mutable": false,
287
+ "complexType": {
288
+ "original": "boolean",
289
+ "resolved": "boolean",
290
+ "references": {}
291
+ },
292
+ "required": false,
293
+ "optional": false,
294
+ "docs": {
295
+ "tags": [],
296
+ "text": ""
297
+ },
298
+ "attribute": "readonly",
299
+ "reflect": true,
300
+ "defaultValue": "false"
301
+ },
302
+ "validator": {
303
+ "type": "unknown",
304
+ "mutable": false,
305
+ "complexType": {
306
+ "original": "(value: string) => boolean | { result: boolean; notice: Notice }",
307
+ "resolved": "((value: string) => boolean | { result: boolean; notice: Notice; }) | undefined",
308
+ "references": {
309
+ "Notice": {
310
+ "location": "import",
311
+ "path": "../../../model"
312
+ }
313
+ }
314
+ },
315
+ "required": false,
316
+ "optional": true,
317
+ "docs": {
318
+ "tags": [],
319
+ "text": ""
320
+ }
321
+ }
322
+ };
323
+ }
324
+ static get states() {
325
+ return {
326
+ "backend": {},
327
+ "options": {},
328
+ "created": {},
329
+ "search": {},
330
+ "valid": {},
331
+ "display": {},
332
+ "flip": {},
333
+ "flipChecked": {}
334
+ };
335
+ }
336
+ static get events() {
337
+ return [{
338
+ "method": "notice",
339
+ "name": "notice",
340
+ "bubbles": true,
341
+ "cancelable": true,
342
+ "composed": true,
343
+ "docs": {
344
+ "tags": [],
345
+ "text": ""
346
+ },
347
+ "complexType": {
348
+ "original": "Notice",
349
+ "resolved": "Notice",
350
+ "references": {
351
+ "Notice": {
352
+ "location": "import",
353
+ "path": "../../../model"
354
+ }
355
+ }
356
+ }
357
+ }, {
358
+ "method": "smoothlyPickerMenuLoaded",
359
+ "name": "smoothlyPickerMenuLoaded",
360
+ "bubbles": true,
361
+ "cancelable": true,
362
+ "composed": true,
363
+ "docs": {
364
+ "tags": [],
365
+ "text": ""
366
+ },
367
+ "complexType": {
368
+ "original": "Controls & { synced: () => boolean }",
369
+ "resolved": "Controls & { synced: () => boolean; }",
370
+ "references": {
371
+ "Controls": {
372
+ "location": "local"
373
+ }
374
+ }
375
+ }
376
+ }];
377
+ }
378
+ static get elementRef() { return "element"; }
379
+ static get watchers() {
380
+ return [{
381
+ "propName": "open",
382
+ "methodName": "openChange"
383
+ }, {
384
+ "propName": "readonly",
385
+ "methodName": "readonlyChanged"
386
+ }];
387
+ }
388
+ static get listeners() {
389
+ return [{
390
+ "name": "scroll",
391
+ "method": "scrollHandler",
392
+ "target": "window",
393
+ "capture": false,
394
+ "passive": true
395
+ }, {
396
+ "name": "smoothlyPickerOptionLoad",
397
+ "method": "optionLoadHandler",
398
+ "target": undefined,
399
+ "capture": false,
400
+ "passive": false
401
+ }, {
402
+ "name": "smoothlyPickerOptionLoaded",
403
+ "method": "optionLoadedHandler",
404
+ "target": undefined,
405
+ "capture": false,
406
+ "passive": false
407
+ }, {
408
+ "name": "smoothlyPickerOptionChange",
409
+ "method": "optionChangeHandler",
410
+ "target": undefined,
411
+ "capture": false,
412
+ "passive": false
413
+ }, {
414
+ "name": "smoothlySlotEmpty",
415
+ "method": "emptyDisplayHandler",
416
+ "target": undefined,
417
+ "capture": false,
418
+ "passive": false
419
+ }];
420
+ }
421
+ }
422
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/picker/menu/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport global from \"../../../global/index\"\nimport { Notice, Option } from \"../../../model\"\nimport { Looks } from \"../../input/Looks\"\nimport { Slot } from \"../slot-elements\"\n\nconst Observers = global().Observers\n\nfunction* chain<T>(...iterables: Iterable<T>[]): Iterable<T> {\n\tfor (const iterable of iterables)\n\t\tyield* iterable\n}\n\nfunction restore<T extends Option>(target: T | undefined, source: Option): T | undefined {\n\ttarget?.set.selected((target.selected = source.selected))\n\ttarget?.set.readonly((target.readonly = source.readonly))\n\ttarget?.set.visible((target.visible = source.visible))\n\ttarget?.set.value((target.value = source.value))\n\ttarget?.set.search((target.search = source.search))\n\treturn target\n}\nfunction restoreListener(ref: HTMLElement | undefined, option: Option) {\n\tref?.addEventListener(\"smoothlyPickerOptionLoad\", (e: CustomEvent<Option>) => restore(e.detail, option))\n}\nexport interface Controls {\n\tremember: () => void\n\trestore: () => void\n}\n@Component({\n\ttag: \"smoothly-picker-menu\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPickerMenu {\n\t@Element() element: HTMLSmoothlyPickerMenuElement\n\t@Prop() looks: Looks\n\t@Prop({ reflect: true }) open = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() backend = new Map<any, Option & { clone: Node }>() // value -> Option\n\t@State() options = new Map<any, Option>() // value -> Option\n\t@State() created = new Map<any, Option.Created>()\n\t@State() search = \"\"\n\t@State() valid = false\n\t@State() display: Node[]\n\t@State() flip = false\n\t@State() flipChecked = false\n\t@Event() notice: EventEmitter<Notice>\n\t@Event() smoothlyPickerMenuLoaded: EventEmitter<Controls & { synced: () => boolean }>\n\tprivate memory?: { backend: SmoothlyPickerMenu[\"backend\"]; options: SmoothlyPickerMenu[\"options\"] }\n\tprivate listElement?: HTMLElement\n\tprivate searchElement?: HTMLElement\n\tprivate synced = false\n\n\tcomponentWillLoad() {\n\t\tif (!Observers.has(this.element)) {\n\t\t\tconst threshold = 0.4\n\t\t\tObservers.set(\n\t\t\t\tthis.element,\n\t\t\t\tnew IntersectionObserver(\n\t\t\t\t\tentries =>\n\t\t\t\t\t\t(entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) < threshold &&\n\t\t\t\t\t\t!this.flipChecked &&\n\t\t\t\t\t\t((this.flip = !this.flip), (this.flipChecked = true)),\n\t\t\t\t\t{ threshold }\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\t}\n\tsync() {\n\t\tif (this.backend.size != this.options.size)\n\t\t\tthis.synced = false\n\t\telse\n\t\t\tthis.synced = true\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyPickerMenuLoaded.emit({\n\t\t\tremember: () => {\n\t\t\t\tthis.memory = {\n\t\t\t\t\tbackend: new Map(Array.from(this.backend.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t\toptions: new Map(Array.from(this.options.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: () => {\n\t\t\t\tif (this.memory) {\n\t\t\t\t\tfor (const option of this.options.values()) {\n\t\t\t\t\t\tconst memory = this.memory.options.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t\tfor (const option of this.backend.values()) {\n\t\t\t\t\t\tconst memory = this.memory.backend.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsynced: () => this.synced,\n\t\t})\n\t}\n\tdisconnectedCallback() {\n\t\tif (!this.element.parentElement) {\n\t\t\tObservers.get(this.element)?.disconnect()\n\t\t\tObservers.remove(this.element)\n\t\t}\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tconst observer = Observers.get(this.element)\n\t\tif (this.open)\n\t\t\tobserver?.observe(this.element)\n\t\telse\n\t\t\tobserver?.unobserve(this.element)\n\t}\n\n\t@Watch(\"readonly\")\n\treadonlyChanged() {\n\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\toption.element, option.set.readonly(this.readonly)\n\t}\n\t@Listen(\"scroll\", { target: \"window\" })\n\tscrollHandler() {\n\t\tthis.flipChecked = false\n\t}\n\t@Listen(\"smoothlyPickerOptionLoad\")\n\toptionLoadHandler(event: CustomEvent<Option.Load>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.sync()\n\t\t\tevent.detail.set.readonly(this.readonly)\n\n\t\t\tconst current = this.options.get(event.detail.value)\n\t\t\tif (current)\n\t\t\t\tevent.detail.set.selected(current.element.selected)\n\t\t}\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst current = restore(this.backend.get(event.detail.value), event.detail)\n\t\t\tthis.backend = new Map(\n\t\t\t\tthis.backend\n\t\t\t\t\t.set(event.detail.value, {\n\t\t\t\t\t\t...event.detail,\n\t\t\t\t\t\tclone: current?.clone ?? event.detail.element.cloneNode(true),\n\t\t\t\t\t})\n\t\t\t\t\t.entries()\n\t\t\t)\n\t\t} else\n\t\t\tthis.options.set(event.detail.value, event.detail)\n\t\tthis.sync()\n\t}\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.options.get(event.detail.value)?.set.selected(event.detail.selected)\n\t\t} else {\n\t\t\tconst current = this.backend.get(event.detail.value)\n\t\t\tif (current?.element.parentElement)\n\t\t\t\tcurrent?.set.selected(event.detail.selected)\n\t\t}\n\n\t\tif (!this.readonly && !this.multiple && event.detail.selected)\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\tif (option.value != event.detail.value)\n\t\t\t\t\toption.set.selected(false)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.search = event.detail.search\n\t\tif (!this.search) {\n\t\t\tthis.valid = false\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\toption.set.visible(true)\n\t\t} else {\n\t\t\tthis.valid = !Array.from(this.options.values()).find(option => option.value == this.search)\n\t\t\tconst search = this.search.toLocaleLowerCase()\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values())) {\n\t\t\t\tconst value = option.value.toString().toLocaleLowerCase().includes(search)\n\t\t\t\tconst searches = option.search.some(value => value.includes(search))\n\t\t\t\tconst result = value || searches\n\t\t\t\toption.set.visible(result)\n\t\t\t}\n\t\t}\n\t}\n\taddHandler() {\n\t\tconst validation = !this.validator ? true : this.validator(this.search)\n\t\tif (this.mutable) {\n\t\t\tif (typeof validation == \"object\" ? validation.result : validation) {\n\t\t\t\tif (!this.multiple)\n\t\t\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\t\t\toption.set.selected(false)\n\t\t\t\tthis.created = new Map(this.created.set(this.search, { value: this.search, selected: true }).entries())\n\t\t\t\tthis.search = \"\"\n\t\t\t\tthis.searchElement?.focus()\n\t\t\t\tthis.valid = false\n\t\t\t}\n\t\t\tif (typeof validation == \"object\")\n\t\t\t\tthis.notice.emit(validation.notice)\n\t\t}\n\t}\n\tkeyDownHandler(event: KeyboardEvent) {\n\t\tif (event.key == \"Enter\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.addHandler()\n\t\t}\n\t}\n\t@Listen(\"smoothlySlotEmpty\")\n\temptyDisplayHandler(event: CustomEvent<Slot>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail.set.nodes(this.display)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ valid: this.valid, flip: this.flip }}>\n\t\t\t\t<smoothly-slotted-elements class={\"hide\"} onSmoothlySlottedChange={e => (this.display = e.detail)}>\n\t\t\t\t\t<slot name=\"display\" />\n\t\t\t\t</smoothly-slotted-elements>\n\t\t\t\t<div class={\"hide\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t{Array.from(this.created.values(), option => (\n\t\t\t\t\t\t<smoothly-picker-option key={option.value} value={option.value} selected={option.selected}>\n\t\t\t\t\t\t\t{option.value}\n\t\t\t\t\t\t\t<smoothly-slot-elements slot=\"display\" nodes={this.display} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"controls\"}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tref={e => (this.searchElement = e)}\n\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\tvalue={this.search}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tonKeyDown={e => this.keyDownHandler(e)}\n\t\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}>\n\t\t\t\t\t\t<slot name=\"search\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t{this.mutable && !this.readonly ? (\n\t\t\t\t\t\t<button onClick={() => this.addHandler()} disabled={!this.valid} type={\"button\"}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"add-outline\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"list\"} ref={e => (this.listElement = e)}>\n\t\t\t\t\t{Array.from(this.backend.values())\n\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t\t\t.map(option => (\n\t\t\t\t\t\t\t<smoothly-slot-elements ref={e => restoreListener(e, option)} clone={false} nodes={option.clone} />\n\t\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n"]}
@@ -0,0 +1,44 @@
1
+ :host {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 0.5rem;
5
+ position: absolute;
6
+ z-index: 4;
7
+ left: -1px;
8
+ right: -1px;
9
+ min-width: max-content;
10
+ background-color: rgb(var(--background-color, var(--smoothly-color-shade)));
11
+ padding: 0.5rem;
12
+ border: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;
13
+ }
14
+ :host:not(.flip) {
15
+ top: 100%;
16
+ }
17
+ :host.flip {
18
+ bottom: 100%;
19
+ }
20
+ :host:not([open]) {
21
+ display: none;
22
+ }
23
+ :host .list {
24
+ display: grid;
25
+ grid-template-columns: auto 1fr auto;
26
+ align-items: center;
27
+ row-gap: 0.5ch;
28
+ overflow-y: auto;
29
+ max-height: calc(1.75rem * 10 + 0.5ch * 9);
30
+ padding-right: 0.5rem;
31
+ padding-bottom: 0.25rem;
32
+ }
33
+ :host .hide {
34
+ display: none;
35
+ }
36
+ :host .controls {
37
+ display: grid;
38
+ grid-template-columns: 1fr auto;
39
+ gap: 0.5rem;
40
+ transition: grid-template-columns 200ms linear;
41
+ }
42
+ :host .controls > button:disabled {
43
+ opacity: 0.3;
44
+ }