@gravitee/ui-components 3.25.3-typescript-8a53edf → 3.25.3-typescript-e7256ca

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 (370) hide show
  1. package/package.json +3 -4
  2. package/src/atoms/gv-autocomplete.d.ts +104 -0
  3. package/src/atoms/gv-autocomplete.js +1 -461
  4. package/src/atoms/gv-button.d.ts +109 -0
  5. package/src/atoms/gv-button.js +1 -410
  6. package/src/atoms/gv-checkbox.d.ts +114 -0
  7. package/src/atoms/gv-checkbox.js +1 -187
  8. package/src/atoms/gv-date-picker-calendar.d.ts +190 -0
  9. package/src/atoms/gv-date-picker-calendar.js +1 -894
  10. package/src/atoms/gv-date-picker-cell.d.ts +80 -0
  11. package/src/atoms/gv-date-picker-cell.js +1 -190
  12. package/src/atoms/gv-date-picker.d.ts +194 -0
  13. package/src/atoms/gv-date-picker.js +1 -671
  14. package/src/atoms/gv-file-upload.d.ts +64 -0
  15. package/src/atoms/gv-file-upload.js +1 -367
  16. package/src/atoms/gv-icon.d.ts +26 -0
  17. package/src/atoms/gv-icon.js +1 -103
  18. package/src/atoms/gv-image.d.ts +45 -0
  19. package/src/atoms/gv-image.js +1 -144
  20. package/src/atoms/gv-input-message.d.ts +20 -0
  21. package/src/atoms/gv-input-message.js +1 -84
  22. package/src/atoms/gv-input.d.ts +246 -0
  23. package/src/atoms/gv-input.js +1 -561
  24. package/src/atoms/gv-link.d.ts +67 -0
  25. package/src/atoms/gv-link.js +1 -210
  26. package/src/atoms/gv-message.d.ts +23 -0
  27. package/src/atoms/gv-message.js +1 -128
  28. package/src/atoms/gv-metric.d.ts +32 -0
  29. package/src/atoms/gv-metric.js +1 -117
  30. package/src/atoms/gv-relative-time.d.ts +45 -0
  31. package/src/atoms/gv-relative-time.js +1 -156
  32. package/src/atoms/gv-select-native.d.ts +174 -0
  33. package/src/atoms/gv-select-native.js +1 -388
  34. package/src/atoms/gv-select.d.ts +71 -0
  35. package/src/atoms/gv-select.js +1 -437
  36. package/src/atoms/gv-spinner.d.ts +10 -0
  37. package/src/atoms/gv-spinner.js +1 -57
  38. package/src/atoms/gv-state.d.ts +50 -0
  39. package/src/atoms/gv-state.js +1 -130
  40. package/src/atoms/gv-switch.d.ts +60 -0
  41. package/src/atoms/gv-switch.js +1 -243
  42. package/src/atoms/gv-tag.d.ts +69 -0
  43. package/src/atoms/gv-tag.js +1 -168
  44. package/src/atoms/gv-text.d.ts +110 -0
  45. package/src/atoms/gv-text.js +1 -168
  46. package/src/charts/gv-chart-bar.d.ts +50 -0
  47. package/src/charts/gv-chart-bar.js +1 -103
  48. package/src/charts/gv-chart-gauge.d.ts +58 -0
  49. package/src/charts/gv-chart-gauge.js +1 -100
  50. package/src/charts/gv-chart-histogram.d.ts +48 -0
  51. package/src/charts/gv-chart-histogram.js +1 -83
  52. package/src/charts/gv-chart-line.d.ts +52 -0
  53. package/src/charts/gv-chart-line.js +1 -224
  54. package/src/charts/gv-chart-map.d.ts +50 -0
  55. package/src/charts/gv-chart-map.js +1 -112
  56. package/src/charts/gv-chart-pie.d.ts +50 -0
  57. package/src/charts/gv-chart-pie.js +1 -91
  58. package/src/index.d.ts +77 -0
  59. package/src/index.js +1 -77
  60. package/src/lib/cron-expression.d.ts +1 -0
  61. package/src/lib/cron-expression.js +1 -205
  62. package/src/lib/date.d.ts +1 -0
  63. package/src/lib/date.js +1 -44
  64. package/src/lib/events.d.ts +1 -0
  65. package/src/lib/events.js +1 -26
  66. package/src/lib/http-client-schema-form.d.ts +68 -0
  67. package/src/lib/http-client-schema-form.js +1 -67
  68. package/src/lib/http.d.ts +222 -0
  69. package/src/lib/http.js +1 -237
  70. package/src/lib/i18n.d.ts +30 -0
  71. package/src/lib/i18n.js +1 -103
  72. package/src/lib/item.d.ts +12 -0
  73. package/src/lib/item.js +1 -118
  74. package/src/lib/properties.d.ts +42 -0
  75. package/src/lib/properties.js +1 -189
  76. package/src/lib/schema-form.d.ts +5 -0
  77. package/src/lib/schema-form.js +1 -44
  78. package/src/lib/studio.d.ts +2 -0
  79. package/src/lib/studio.js +1 -141
  80. package/src/lib/style.d.ts +6 -0
  81. package/src/lib/style.js +1 -41
  82. package/src/lib/text-format.d.ts +6 -0
  83. package/src/lib/text-format.js +1 -69
  84. package/src/lib/theme.d.ts +4 -0
  85. package/src/lib/theme.js +1 -63
  86. package/src/lib/utils.d.ts +9 -0
  87. package/src/lib/utils.js +1 -111
  88. package/src/mixins/chart-element.d.ts +39 -0
  89. package/src/mixins/chart-element.js +1 -165
  90. package/src/mixins/input-element.d.ts +64 -0
  91. package/src/mixins/input-element.js +1 -144
  92. package/src/mixins/item-resource.d.ts +56 -0
  93. package/src/mixins/item-resource.js +1 -120
  94. package/src/mixins/keyboard-element.d.ts +25 -0
  95. package/src/mixins/keyboard-element.js +1 -69
  96. package/src/mixins/update-after-browser.d.ts +11 -0
  97. package/src/mixins/update-after-browser.js +1 -30
  98. package/src/mixins/with-resize-observer.d.ts +12 -0
  99. package/src/mixins/with-resize-observer.js +1 -68
  100. package/src/mixins/with-skeleton-attribute.d.ts +35 -0
  101. package/src/mixins/with-skeleton-attribute.js +1 -112
  102. package/src/molecules/gv-card-full.d.ts +78 -0
  103. package/src/molecules/gv-card-full.js +1 -218
  104. package/src/molecules/gv-card-list.d.ts +33 -0
  105. package/src/molecules/gv-card-list.js +1 -113
  106. package/src/molecules/gv-card.d.ts +65 -0
  107. package/src/molecules/gv-card.js +1 -133
  108. package/src/molecules/gv-category-list.d.ts +17 -0
  109. package/src/molecules/gv-category-list.js +1 -60
  110. package/src/molecules/gv-category.d.ts +64 -0
  111. package/src/molecules/gv-category.js +1 -170
  112. package/src/molecules/gv-code.d.ts +192 -0
  113. package/src/molecules/gv-code.js +1 -359
  114. package/src/molecules/gv-confirm.d.ts +60 -0
  115. package/src/molecules/gv-confirm.js +1 -188
  116. package/src/molecules/gv-cron-editor.d.ts +115 -0
  117. package/src/molecules/gv-cron-editor.js +1 -710
  118. package/src/molecules/gv-dropdown-menu.d.ts +28 -0
  119. package/src/molecules/gv-dropdown-menu.js +1 -116
  120. package/src/molecules/gv-expandable.d.ts +37 -0
  121. package/src/molecules/gv-expandable.js +1 -122
  122. package/src/molecules/gv-expression-language.d.ts +150 -0
  123. package/src/molecules/gv-expression-language.js +1 -270
  124. package/src/molecules/gv-identity-picture.d.ts +44 -0
  125. package/src/molecules/gv-identity-picture.js +1 -148
  126. package/src/molecules/gv-list.d.ts +123 -0
  127. package/src/molecules/gv-list.js +1 -227
  128. package/src/molecules/gv-metrics.d.ts +65 -0
  129. package/src/molecules/gv-metrics.js +1 -162
  130. package/src/molecules/gv-modal.d.ts +64 -0
  131. package/src/molecules/gv-modal.js +1 -213
  132. package/src/molecules/gv-nav.d.ts +41 -0
  133. package/src/molecules/gv-nav.js +1 -196
  134. package/src/molecules/gv-option.d.ts +65 -0
  135. package/src/molecules/gv-option.js +1 -242
  136. package/src/molecules/gv-plans.d.ts +73 -0
  137. package/src/molecules/gv-plans.js +1 -429
  138. package/src/molecules/gv-popover.d.ts +91 -0
  139. package/src/molecules/gv-popover.js +1 -351
  140. package/src/molecules/gv-promote.d.ts +108 -0
  141. package/src/molecules/gv-promote.js +1 -209
  142. package/src/molecules/gv-rating-list.d.ts +77 -0
  143. package/src/molecules/gv-rating-list.js +1 -365
  144. package/src/molecules/gv-rating.d.ts +55 -0
  145. package/src/molecules/gv-rating.js +1 -253
  146. package/src/molecules/gv-row-expandable.d.ts +8 -0
  147. package/src/molecules/gv-row-expandable.js +1 -45
  148. package/src/molecules/gv-row.d.ts +37 -0
  149. package/src/molecules/gv-row.js +1 -210
  150. package/src/molecules/gv-stats.d.ts +53 -0
  151. package/src/molecules/gv-stats.js +1 -121
  152. package/src/molecules/gv-stepper.d.ts +46 -0
  153. package/src/molecules/gv-stepper.js +1 -288
  154. package/src/molecules/gv-table.d.ts +159 -0
  155. package/src/molecules/gv-table.js +1 -685
  156. package/src/molecules/gv-tree.d.ts +44 -0
  157. package/src/molecules/gv-tree.js +1 -250
  158. package/src/organisms/gv-documentation.d.ts +52 -0
  159. package/src/organisms/gv-documentation.js +1 -215
  160. package/src/organisms/gv-header.d.ts +60 -0
  161. package/src/organisms/gv-header.js +1 -288
  162. package/src/organisms/gv-http-client.d.ts +57 -0
  163. package/src/organisms/gv-http-client.js +1 -275
  164. package/src/organisms/gv-menu.d.ts +74 -0
  165. package/src/organisms/gv-menu.js +1 -263
  166. package/src/organisms/gv-newsletter-subscription.d.ts +82 -0
  167. package/src/organisms/gv-newsletter-subscription.js +1 -271
  168. package/src/organisms/gv-pagination.d.ts +63 -0
  169. package/src/organisms/gv-pagination.js +1 -198
  170. package/src/organisms/gv-properties.d.ts +229 -0
  171. package/src/organisms/gv-properties.js +1 -920
  172. package/src/organisms/gv-resizable-views.d.ts +33 -0
  173. package/src/organisms/gv-resizable-views.js +1 -396
  174. package/src/organisms/gv-resources.d.ts +125 -0
  175. package/src/organisms/gv-resources.js +1 -535
  176. package/src/organisms/gv-schema-form-array.d.ts +55 -0
  177. package/src/organisms/gv-schema-form-array.js +1 -250
  178. package/src/organisms/gv-schema-form-control-object.d.ts +64 -0
  179. package/src/organisms/gv-schema-form-control-object.js +1 -154
  180. package/src/organisms/gv-schema-form-control.d.ts +90 -0
  181. package/src/organisms/gv-schema-form-control.js +1 -443
  182. package/src/organisms/gv-schema-form.d.ts +156 -0
  183. package/src/organisms/gv-schema-form.js +1 -751
  184. package/src/organisms/gv-tabs.d.ts +56 -0
  185. package/src/organisms/gv-tabs.js +1 -210
  186. package/src/organisms/gv-user-menu.d.ts +56 -0
  187. package/src/organisms/gv-user-menu.js +1 -314
  188. package/src/organisms/gv-vertical-menu.d.ts +28 -0
  189. package/src/organisms/gv-vertical-menu.js +1 -123
  190. package/src/policy-studio/gv-flow-step.d.ts +142 -0
  191. package/src/policy-studio/gv-flow-step.js +1 -464
  192. package/src/policy-studio/gv-flow.d.ts +89 -0
  193. package/src/policy-studio/gv-flow.js +1 -621
  194. package/src/policy-studio/gv-policy-studio-menu.d.ts +94 -0
  195. package/src/policy-studio/gv-policy-studio-menu.js +1 -750
  196. package/src/policy-studio/gv-policy-studio.d.ts +464 -0
  197. package/src/policy-studio/gv-policy-studio.js +1 -1842
  198. package/src/styles/empty.d.ts +1 -0
  199. package/src/styles/empty.js +1 -36
  200. package/src/styles/input.d.ts +1 -0
  201. package/src/styles/input.js +1 -263
  202. package/src/styles/link.d.ts +1 -0
  203. package/src/styles/link.js +1 -32
  204. package/src/styles/shapes.d.ts +2 -0
  205. package/src/styles/shapes.js +1 -17
  206. package/src/styles/skeleton.d.ts +1 -0
  207. package/src/styles/skeleton.js +1 -53
  208. package/src/styles/zoom.d.ts +1 -0
  209. package/src/styles/zoom.js +1 -40
  210. package/src/theme/gv-theme.d.ts +81 -0
  211. package/src/theme/gv-theme.js +1 -203
  212. package/wc/gv-autocomplete.d.ts +1 -0
  213. package/wc/gv-autocomplete.js +1 -1
  214. package/wc/gv-button.d.ts +1 -0
  215. package/wc/gv-button.js +1 -1
  216. package/wc/gv-card-full.d.ts +1 -0
  217. package/wc/gv-card-full.js +1 -1
  218. package/wc/gv-card-list.d.ts +1 -0
  219. package/wc/gv-card-list.js +1 -1
  220. package/wc/gv-card.d.ts +1 -0
  221. package/wc/gv-card.js +1 -1
  222. package/wc/gv-category-list.d.ts +1 -0
  223. package/wc/gv-category-list.js +1 -1
  224. package/wc/gv-category.d.ts +1 -0
  225. package/wc/gv-category.js +1 -1
  226. package/wc/gv-chart-bar.d.ts +1 -0
  227. package/wc/gv-chart-bar.js +1 -1
  228. package/wc/gv-chart-gauge.d.ts +1 -0
  229. package/wc/gv-chart-gauge.js +1 -1
  230. package/wc/gv-chart-histogram.d.ts +1 -0
  231. package/wc/gv-chart-histogram.js +1 -1
  232. package/wc/gv-chart-line.d.ts +1 -0
  233. package/wc/gv-chart-line.js +1 -1
  234. package/wc/gv-chart-map.d.ts +1 -0
  235. package/wc/gv-chart-map.js +1 -1
  236. package/wc/gv-chart-pie.d.ts +1 -0
  237. package/wc/gv-chart-pie.js +1 -1
  238. package/wc/gv-checkbox.d.ts +1 -0
  239. package/wc/gv-checkbox.js +1 -1
  240. package/wc/gv-code.d.ts +1 -0
  241. package/wc/gv-code.js +1 -1
  242. package/wc/gv-confirm.d.ts +1 -0
  243. package/wc/gv-confirm.js +1 -1
  244. package/wc/gv-cron-editor.d.ts +1 -0
  245. package/wc/gv-cron-editor.js +1 -1
  246. package/wc/gv-date-picker-calendar.d.ts +1 -0
  247. package/wc/gv-date-picker-calendar.js +1 -1
  248. package/wc/gv-date-picker-cell.d.ts +1 -0
  249. package/wc/gv-date-picker-cell.js +1 -1
  250. package/wc/gv-date-picker.d.ts +1 -0
  251. package/wc/gv-date-picker.js +1 -1
  252. package/wc/gv-documentation.d.ts +1 -0
  253. package/wc/gv-documentation.js +1 -1
  254. package/wc/gv-dropdown-menu.d.ts +1 -0
  255. package/wc/gv-dropdown-menu.js +1 -1
  256. package/wc/gv-expandable.d.ts +1 -0
  257. package/wc/gv-expandable.js +1 -1
  258. package/wc/gv-expression-language.d.ts +1 -0
  259. package/wc/gv-expression-language.js +1 -1
  260. package/wc/gv-file-upload.d.ts +1 -0
  261. package/wc/gv-file-upload.js +1 -1
  262. package/wc/gv-flow-step.d.ts +1 -0
  263. package/wc/gv-flow-step.js +1 -1
  264. package/wc/gv-flow.d.ts +1 -0
  265. package/wc/gv-flow.js +1 -1
  266. package/wc/gv-header.d.ts +1 -0
  267. package/wc/gv-header.js +1 -1
  268. package/wc/gv-http-client.d.ts +1 -0
  269. package/wc/gv-http-client.js +1 -1
  270. package/wc/gv-icon.d.ts +1 -0
  271. package/wc/gv-icon.js +1 -1
  272. package/wc/gv-identity-picture.d.ts +1 -0
  273. package/wc/gv-identity-picture.js +1 -1
  274. package/wc/gv-image.d.ts +1 -0
  275. package/wc/gv-image.js +1 -1
  276. package/wc/gv-input-message.d.ts +1 -0
  277. package/wc/gv-input-message.js +1 -1
  278. package/wc/gv-input.d.ts +1 -0
  279. package/wc/gv-input.js +1 -1
  280. package/wc/gv-link.d.ts +1 -0
  281. package/wc/gv-link.js +1 -1
  282. package/wc/gv-list.d.ts +1 -0
  283. package/wc/gv-list.js +1 -1
  284. package/wc/gv-menu.d.ts +1 -0
  285. package/wc/gv-menu.js +1 -1
  286. package/wc/gv-message.d.ts +1 -0
  287. package/wc/gv-message.js +1 -1
  288. package/wc/gv-metric.d.ts +1 -0
  289. package/wc/gv-metric.js +1 -1
  290. package/wc/gv-metrics.d.ts +1 -0
  291. package/wc/gv-metrics.js +1 -1
  292. package/wc/gv-modal.d.ts +1 -0
  293. package/wc/gv-modal.js +1 -1
  294. package/wc/gv-nav.d.ts +1 -0
  295. package/wc/gv-nav.js +1 -1
  296. package/wc/gv-newsletter-subscription.d.ts +1 -0
  297. package/wc/gv-newsletter-subscription.js +1 -1
  298. package/wc/gv-option.d.ts +1 -0
  299. package/wc/gv-option.js +1 -1
  300. package/wc/gv-pagination.d.ts +1 -0
  301. package/wc/gv-pagination.js +1 -1
  302. package/wc/gv-plans.d.ts +1 -0
  303. package/wc/gv-plans.js +1 -1
  304. package/wc/gv-policy-studio-menu.d.ts +1 -0
  305. package/wc/gv-policy-studio-menu.js +1 -1
  306. package/wc/gv-policy-studio.d.ts +1 -0
  307. package/wc/gv-policy-studio.js +1 -1
  308. package/wc/gv-popover.d.ts +1 -0
  309. package/wc/gv-popover.js +1 -1
  310. package/wc/gv-promote.d.ts +1 -0
  311. package/wc/gv-promote.js +1 -1
  312. package/wc/gv-properties.d.ts +1 -0
  313. package/wc/gv-properties.js +1 -1
  314. package/wc/gv-rating-list.d.ts +1 -0
  315. package/wc/gv-rating-list.js +1 -1
  316. package/wc/gv-rating.d.ts +1 -0
  317. package/wc/gv-rating.js +1 -1
  318. package/wc/gv-relative-time.d.ts +1 -0
  319. package/wc/gv-relative-time.js +1 -1
  320. package/wc/gv-resizable-views.d.ts +1 -0
  321. package/wc/gv-resizable-views.js +1 -1
  322. package/wc/gv-resources.d.ts +1 -0
  323. package/wc/gv-resources.js +1 -1
  324. package/wc/gv-row-expandable.d.ts +1 -0
  325. package/wc/gv-row-expandable.js +1 -1
  326. package/wc/gv-row.d.ts +1 -0
  327. package/wc/gv-row.js +1 -1
  328. package/wc/gv-schema-form-array.d.ts +1 -0
  329. package/wc/gv-schema-form-array.js +1 -1
  330. package/wc/gv-schema-form-control-object.d.ts +1 -0
  331. package/wc/gv-schema-form-control-object.js +1 -1
  332. package/wc/gv-schema-form-control.d.ts +1 -0
  333. package/wc/gv-schema-form-control.js +1 -1
  334. package/wc/gv-schema-form.d.ts +1 -0
  335. package/wc/gv-schema-form.js +1 -1
  336. package/wc/gv-select-native.d.ts +1 -0
  337. package/wc/gv-select-native.js +1 -1
  338. package/wc/gv-select.d.ts +1 -0
  339. package/wc/gv-select.js +1 -1
  340. package/wc/gv-spinner.d.ts +1 -0
  341. package/wc/gv-spinner.js +1 -1
  342. package/wc/gv-state.d.ts +1 -0
  343. package/wc/gv-state.js +1 -1
  344. package/wc/gv-stats.d.ts +1 -0
  345. package/wc/gv-stats.js +1 -1
  346. package/wc/gv-stepper.d.ts +1 -0
  347. package/wc/gv-stepper.js +1 -1
  348. package/wc/gv-switch.d.ts +1 -0
  349. package/wc/gv-switch.js +1 -1
  350. package/wc/gv-table.d.ts +1 -0
  351. package/wc/gv-table.js +1 -1
  352. package/wc/gv-tabs.d.ts +1 -0
  353. package/wc/gv-tabs.js +1 -1
  354. package/wc/gv-tag.d.ts +1 -0
  355. package/wc/gv-tag.js +1 -1
  356. package/wc/gv-text.d.ts +1 -0
  357. package/wc/gv-text.js +1 -1
  358. package/wc/gv-theme.d.ts +1 -0
  359. package/wc/gv-theme.js +1 -1
  360. package/wc/gv-tree.d.ts +1 -0
  361. package/wc/gv-tree.js +1 -1
  362. package/wc/gv-user-menu.d.ts +1 -0
  363. package/wc/gv-user-menu.js +1 -1
  364. package/wc/gv-vertical-menu.d.ts +1 -0
  365. package/wc/gv-vertical-menu.js +1 -1
  366. package/CHANGELOG.md +0 -1292
  367. package/LICENSE.txt +0 -202
  368. package/README.md +0 -195
  369. package/src/.eslintrc.js +0 -19
  370. package/src/theme/definition.json +0 -1762
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitee/ui-components",
3
- "version": "3.25.3-typescript-8a53edf",
3
+ "version": "3.25.3-typescript-e7256ca",
4
4
  "description": "Gravitee.io UI Components library, based on Web Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,6 +9,7 @@
9
9
  "license": "Apache-2.0",
10
10
  "author": "",
11
11
  "main": "src/index.js",
12
+ "types": "src/index.d.ts",
12
13
  "files": [
13
14
  "assets/css",
14
15
  "assets/i18n",
@@ -72,12 +73,11 @@
72
73
  "@babel/core": "7.16.5",
73
74
  "@babel/plugin-syntax-dynamic-import": "7.8.3",
74
75
  "@babel/preset-env": "7.16.5",
76
+ "@babel/preset-typescript": "^7.16.5",
75
77
  "@commitlint/cli": "15.0.0",
76
78
  "@commitlint/config-conventional": "15.0.0",
77
79
  "@highcharts/map-collection": "1.1.4",
78
80
  "@rollup/plugin-json": "^4.1.0",
79
- "@rollup/plugin-node-resolve": "^13.1.1",
80
- "@rollup/plugin-typescript": "^8.3.0",
81
81
  "@semantic-release/changelog": "6.0.1",
82
82
  "@semantic-release/git": "10.0.1",
83
83
  "@storybook/addon-a11y": "6.4.9",
@@ -90,7 +90,6 @@
90
90
  "asciidoctor-highlight.js": "0.4.0",
91
91
  "babel-jest": "27.4.5",
92
92
  "babel-loader": "8.2.3",
93
- "babel-plugin-template-html-minifier": "4.1.0",
94
93
  "bundle-phobia-cli": "0.14.13",
95
94
  "chromatic": "6.2.3",
96
95
  "danger": "10.7.1",
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Autocomplete input wrapper
3
+ *
4
+ * ## Details
5
+ * * has @theme facet
6
+ *
7
+ * @fires gv-autocomplete:search - Custom event when user search value
8
+ * @fires gv-autocomplete:select - Custom event when user select value
9
+ * @fires gv-autocomplete:opened - Custom event after opened autocomplete
10
+ *
11
+ * @slot style - The options style
12
+ * @slot input - The input to wrap
13
+ * @slot noOption - What should be shown when there is no options to display
14
+ *
15
+ * @attr {Array.<{value: String, innerHTML?: String}>} options - the options for search
16
+ * @attr {String} value - selected value
17
+ * @attr {String} style - css if you want custom options rendered
18
+ * @attr {Number} minChars - minimum of characters for launch search and show results
19
+ * @attr {Number} size - results size to show before user must scroll
20
+ * @attr {Boolean|Function(value,option)} filter - If true, filter options by input, if function, filter options against it. The function will
21
+ * receive two arguments, inputValue and option, if the function returns true, the option will be included
22
+ * in the filtered set; Otherwise, it will be excluded.
23
+ * the option will be included in the filtered set; Otherwise, it will be excluded.
24
+ *
25
+ * @cssprop {Color} [--gv-autocomplete-hover--bgc=var(--gv-theme-neutral-color-lighter, #fafafa)] - Hover background color
26
+ * @cssprop {Color} [--gv-autocomplete--bgc=var(--gv-theme-neutral-color-lightest, #ffffff)] - Background color
27
+ * @cssprop {Color} [--gv-autocomplete--c=var(--gv-theme-font-color, #262626)] - Color
28
+ */
29
+ export class GvAutocomplete extends LitElement {
30
+ static get properties(): {
31
+ options: {
32
+ type: ArrayConstructor;
33
+ reflect: boolean;
34
+ };
35
+ value: {
36
+ type: StringConstructor;
37
+ reflect: boolean;
38
+ };
39
+ style: {
40
+ type: StringConstructor;
41
+ };
42
+ minChars: {
43
+ type: NumberConstructor;
44
+ };
45
+ filter: {
46
+ type: number;
47
+ };
48
+ size: {
49
+ type: NumberConstructor;
50
+ };
51
+ _options: {
52
+ type: ArrayConstructor;
53
+ attribute: boolean;
54
+ };
55
+ _forceOpen: {
56
+ type: BooleanConstructor;
57
+ attribute: boolean;
58
+ };
59
+ };
60
+ static get styles(): import("lit").CSSResult[];
61
+ _options: any[];
62
+ _candidateIndex: number;
63
+ minChars: number;
64
+ value: string;
65
+ filter: boolean;
66
+ size: number;
67
+ _handleOpened: ({ detail }: {
68
+ detail: any;
69
+ }) => void;
70
+ set options(arg: any[]);
71
+ get options(): any[];
72
+ reset(): void;
73
+ _getFilteredOptions(): any[];
74
+ _onInput(event: any): void;
75
+ _cancellableTimeout: NodeJS.Timeout | undefined;
76
+ _onSelect(value: any, option: any): void;
77
+ _onMouseOver(): void;
78
+ _shouldSelect: boolean | undefined;
79
+ _onMouseLeave(): void;
80
+ _renderOption(option: any): any;
81
+ _renderStyle(): "" | HTMLDivElement;
82
+ _hasNoOptionSlot(): boolean;
83
+ _clearHover(): void;
84
+ _updateHover(): void;
85
+ _onKeydown(e: any): void;
86
+ _open(): void;
87
+ _forceOpen: boolean | undefined;
88
+ _close(): void;
89
+ _onFocus(): void;
90
+ _onBlur(): void;
91
+ _getInput(): ChildNode | null;
92
+ _onClear(event: any): void;
93
+ _handlers: {
94
+ input: (event: any) => void;
95
+ focus: () => void;
96
+ blur: () => void;
97
+ keydown: (e: any) => void;
98
+ clear: (event: any) => void;
99
+ } | undefined;
100
+ _onOpened({ detail }: {
101
+ detail: any;
102
+ }): void;
103
+ }
104
+ import { LitElement } from "lit-element/lit-element";
@@ -1,461 +1 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { css, LitElement, unsafeCSS, html } from 'lit';
17
- import { dispatchCustomEvent } from '../lib/events';
18
- import { repeat } from 'lit/directives/repeat';
19
- import { classMap } from 'lit/directives/class-map';
20
- import { styleMap } from 'lit/directives/style-map';
21
-
22
- const ENTER_KEY_CODE = 13;
23
- const DOWN_ARROW_KEY_CODE = 40;
24
- const UP_ARROW_KEY_CODE = 38;
25
- const ESCAPE_KEY_CODE = 27;
26
-
27
- /**
28
- * Autocomplete input wrapper
29
- *
30
- * ## Details
31
- * * has @theme facet
32
- *
33
- * @fires gv-autocomplete:search - Custom event when user search value
34
- * @fires gv-autocomplete:select - Custom event when user select value
35
- * @fires gv-autocomplete:opened - Custom event after opened autocomplete
36
- *
37
- * @slot style - The options style
38
- * @slot input - The input to wrap
39
- * @slot noOption - What should be shown when there is no options to display
40
- *
41
- * @attr {Array.<{value: String, innerHTML?: String}>} options - the options for search
42
- * @attr {String} value - selected value
43
- * @attr {String} style - css if you want custom options rendered
44
- * @attr {Number} minChars - minimum of characters for launch search and show results
45
- * @attr {Number} size - results size to show before user must scroll
46
- * @attr {Boolean|Function(value,option)} filter - If true, filter options by input, if function, filter options against it. The function will
47
- * receive two arguments, inputValue and option, if the function returns true, the option will be included
48
- * in the filtered set; Otherwise, it will be excluded.
49
- * the option will be included in the filtered set; Otherwise, it will be excluded.
50
- *
51
- * @cssprop {Color} [--gv-autocomplete-hover--bgc=var(--gv-theme-neutral-color-lighter, #fafafa)] - Hover background color
52
- * @cssprop {Color} [--gv-autocomplete--bgc=var(--gv-theme-neutral-color-lightest, #ffffff)] - Background color
53
- * @cssprop {Color} [--gv-autocomplete--c=var(--gv-theme-font-color, #262626)] - Color
54
- */
55
- export class GvAutocomplete extends LitElement {
56
- static get properties() {
57
- return {
58
- options: { type: Array, reflect: true },
59
- value: { type: String, reflect: true },
60
- style: { type: String },
61
- minChars: { type: Number },
62
- filter: { type: Boolean | Function },
63
- size: { type: Number },
64
- _options: { type: Array, attribute: false },
65
- _forceOpen: { type: Boolean, attribute: false },
66
- };
67
- }
68
-
69
- static get styles() {
70
- return [
71
- // language=CSS
72
- css`
73
- :host {
74
- box-sizing: border-box;
75
- display: inline-block;
76
- width: 100%;
77
- }
78
-
79
- ::slotted(*) {
80
- width: 100%;
81
- }
82
-
83
- .container {
84
- position: relative;
85
- }
86
-
87
- .container .options.open {
88
- display: block;
89
- visibility: visible;
90
- opacity: 1;
91
- -webkit-transform: -webkit-translateY(0%);
92
- transform: translateY(0%);
93
- z-index: 100;
94
- }
95
-
96
- .options {
97
- background-color: var(--gv-autocomplete--bgc, var(--gv-theme-neutral-color-lightest, #ffffff));
98
- color: var(--gv-autocomplete--c, var(--gv-theme-font-color, #262626));
99
- margin: 0.2rem;
100
- position: absolute;
101
- box-shadow: 0 0 0 1px var(--gv-theme-neutral-color, #f5f5f5), 0 1px 3px var(--gv-theme-neutral-color-dark, #bfbfbf);
102
- border-radius: 2px;
103
- display: block;
104
- width: 100%;
105
- cursor: pointer;
106
- left: 0;
107
- right: 0;
108
- visibility: hidden;
109
- opacity: 0;
110
- -webkit-transform: -webkit-translateY(-2em);
111
- transform: translateY(-2em);
112
- -webkit-transition: -webkit-transform 150ms ease-in-out, opacity 150ms ease-in-out;
113
- -moz-transition: all 150ms ease-in-out;
114
- -ms-transition: all 150ms ease-in-out;
115
- -o-transition: all 150ms ease-in-out;
116
- overflow: auto;
117
- }
118
-
119
- .option {
120
- padding: 0.2rem;
121
- min-height: 30px;
122
- word-break: break-all;
123
- }
124
-
125
- .option.match ~ .option.match {
126
- background-color: transparent;
127
- }
128
-
129
- .option:hover,
130
- .option.hover,
131
- .keyboard .option.hover:hover {
132
- background-color: var(--gv-autocomplete-hover--bgc, var(--gv-theme-neutral-color-lighter, #fafafa));
133
- }
134
-
135
- .keyboard .option:hover {
136
- background-color: transparent;
137
- }
138
-
139
- .show {
140
- display: block;
141
- }
142
-
143
- .hide {
144
- display: none;
145
- }
146
- `,
147
- ];
148
- }
149
-
150
- constructor() {
151
- super();
152
- this._options = [];
153
- this._candidateIndex = -1;
154
- this.minChars = 1;
155
- this.value = '';
156
- this.style = '';
157
- this.filter = false;
158
- this.size = 5;
159
- this._handleOpened = this._onOpened.bind(this);
160
- }
161
-
162
- set options(options) {
163
- this._options = options;
164
- }
165
-
166
- get options() {
167
- return this._options;
168
- }
169
-
170
- reset() {
171
- this._getInput().reset();
172
- this._options = [];
173
- }
174
-
175
- _getFilteredOptions() {
176
- if (this.filter && this.value && this.value.length >= this.minChars && this.value !== '*') {
177
- if (typeof this.filter === 'function') {
178
- return this._options.filter((option) => {
179
- return this.filter(this.value, option);
180
- });
181
- } else {
182
- return this._options.filter((option) => {
183
- return option.value.indexOf(this.value) !== -1;
184
- });
185
- }
186
- } else {
187
- return this._options;
188
- }
189
- }
190
-
191
- _onInput(event) {
192
- clearTimeout(this._cancellableTimeout);
193
- this.value = event.target.value;
194
- if (this.value != null && this.value.trim().length >= this.minChars) {
195
- this._cancellableTimeout = setTimeout(() => {
196
- this._open();
197
- dispatchCustomEvent(this, 'search', this.value);
198
- }, 200);
199
- } else {
200
- this.options = [];
201
- }
202
- }
203
-
204
- _onSelect(value, option) {
205
- if (option == null) {
206
- option = this._options.find((option) => {
207
- return option.value === value;
208
- });
209
- }
210
- this.value = this._getInput().value = value;
211
- this._close();
212
- dispatchCustomEvent(this, 'select', option);
213
- }
214
-
215
- _onMouseOver() {
216
- this.shadowRoot.firstElementChild.classList.remove('keyboard');
217
- this._clearHover();
218
- this._shouldSelect = true;
219
- }
220
-
221
- _onMouseLeave() {
222
- this._shouldSelect = false;
223
- }
224
-
225
- _renderOption(option) {
226
- if (option.element) {
227
- return option.element;
228
- }
229
- if (option.innerHTML) {
230
- const wrapper = document.createElement('div');
231
- wrapper.innerHTML = option.innerHTML;
232
- return wrapper;
233
- }
234
- return option.value;
235
- }
236
-
237
- _renderStyle() {
238
- if (this.style) {
239
- const wrapper = document.createElement('div');
240
- wrapper.innerHTML = unsafeCSS(this.style);
241
- return wrapper;
242
- }
243
- return '';
244
- }
245
-
246
- _hasNoOptionSlot() {
247
- for (const node of this.childNodes) {
248
- if (node.slot === 'noOption') {
249
- return true;
250
- }
251
- }
252
- return false;
253
- }
254
-
255
- render() {
256
- const options = this._getFilteredOptions();
257
- let open = false;
258
-
259
- if (options && options.length > 0 && this._forceOpen) {
260
- open = this.minChars === 0 || this.value.trim().length >= this.minChars;
261
- }
262
-
263
- const input = this._getInput();
264
- let top = 0;
265
- if (input != null) {
266
- top = input.offsetHeight;
267
- }
268
-
269
- const classes = {
270
- options: true,
271
- open,
272
- };
273
-
274
- return html` <div class="container">
275
- ${this._renderStyle()}
276
- <slot></slot>
277
- ${this._hasNoOptionSlot() && this._forceOpen
278
- ? html`<div class="options open" style="${styleMap({ top: `${top}px` })}">
279
- <slot name="noOption" class="${!options || options.length === 0 ? 'show' : 'hide'}"></slot>
280
- </div>`
281
- : ''}
282
- <div class="${classMap(classes)}" @mouseleave="${this._onMouseLeave}" style="${styleMap({ top: `${top}px` })}">
283
- ${repeat(
284
- options,
285
- (option) => option,
286
- (option, index) => html`
287
- <div
288
- class="${classMap({ option: true })}"
289
- data-value="${option.value}"
290
- @mouseover="${() => this._onMouseOver(option, index)}"
291
- @click="${() => this._onSelect(option.value, option)}"
292
- >
293
- ${this._renderOption(option)}
294
- </div>
295
- `,
296
- )}
297
- </div>
298
- </div>`;
299
- }
300
-
301
- _clearHover() {
302
- this.shadowRoot.querySelectorAll('.option.hover').forEach((o) => o.classList.remove('hover'));
303
- }
304
-
305
- _updateHover() {
306
- this._clearHover();
307
- if (this._candidateIndex > -1) {
308
- this.shadowRoot.firstElementChild.classList.add('keyboard');
309
- const candidate = this.shadowRoot.querySelectorAll('.option')[this._candidateIndex];
310
- if (candidate) {
311
- const options = this.shadowRoot.querySelector('.options');
312
- const { top, left } = candidate.getBoundingClientRect();
313
- const container = options.getBoundingClientRect();
314
- const scrollLeft = left - container.left;
315
- const scrollTop = top - container.top;
316
- options.scrollTo(scrollLeft, scrollTop);
317
- candidate.classList.add('hover');
318
- }
319
- }
320
- }
321
-
322
- _onKeydown(e) {
323
- switch (e.keyCode) {
324
- case ENTER_KEY_CODE: {
325
- const options = this.shadowRoot.querySelectorAll('.option');
326
- const candidate = options[this._candidateIndex];
327
- if (candidate) {
328
- e.preventDefault();
329
- e.stopPropagation();
330
- this._candidateIndex = -1;
331
- this._onSelect(candidate.getAttribute('data-value'));
332
- this._updateHover();
333
- }
334
- this._close();
335
- break;
336
- }
337
-
338
- case DOWN_ARROW_KEY_CODE: {
339
- if (this._candidateIndex < this.shadowRoot.querySelectorAll('.option').length - 1) {
340
- e.preventDefault();
341
- e.stopPropagation();
342
- this._candidateIndex += 1;
343
- this._updateHover();
344
- }
345
- break;
346
- }
347
-
348
- case UP_ARROW_KEY_CODE: {
349
- if (this._candidateIndex > 0) {
350
- e.preventDefault();
351
- e.stopPropagation();
352
- this._candidateIndex -= 1;
353
- this._updateHover();
354
- }
355
- break;
356
- }
357
-
358
- case ESCAPE_KEY_CODE: {
359
- e.preventDefault();
360
- e.stopPropagation();
361
- this._candidateIndex = -1;
362
- this._updateHover();
363
- break;
364
- }
365
- default:
366
- this.value = this._getInput().value;
367
- this._candidateIndex = -1;
368
- this._updateHover();
369
- }
370
- }
371
-
372
- _open() {
373
- this._forceOpen = true;
374
- dispatchCustomEvent(this, 'opened', { target: this });
375
- }
376
-
377
- _close() {
378
- this._forceOpen = false;
379
- }
380
-
381
- _onFocus() {
382
- this._open();
383
- }
384
-
385
- _onBlur() {
386
- // Important when using custom HTML in options
387
- if (this._shouldSelect === false) {
388
- this._close();
389
- }
390
- }
391
-
392
- _getInput() {
393
- for (const node of this.childNodes) {
394
- if (node.slot === 'input') {
395
- return node;
396
- }
397
- }
398
- return this.firstElementChild;
399
- }
400
-
401
- _onClear(event) {
402
- this.value = event.target.value;
403
- }
404
-
405
- updated() {
406
- setTimeout(() => {
407
- const firstOption = this.shadowRoot.querySelector('.option');
408
- if (firstOption) {
409
- const maxHeight = firstOption.clientHeight * parseInt(this.size, 10);
410
- const options = this.shadowRoot.querySelector('.options');
411
- options.style.maxHeight = `${maxHeight}px`;
412
- options.scrollTo(0, 0);
413
- }
414
- }, 0);
415
- }
416
-
417
- firstUpdated() {
418
- this._handlers = {
419
- input: this._onInput.bind(this),
420
- focus: this._onFocus.bind(this),
421
- blur: this._onBlur.bind(this),
422
- keydown: this._onKeydown.bind(this),
423
- clear: this._onClear.bind(this),
424
- };
425
- this.shadowRoot.addEventListener('input', this._handlers.input);
426
- this.shadowRoot.addEventListener('keydown', this._handlers.keydown);
427
- const input = this._getInput();
428
- input.addEventListener('focus', this._handlers.focus);
429
- input.addEventListener('blur', this._handlers.blur);
430
- input.addEventListener('gv-input:clear', this._handlers.clear);
431
- if (input.tagName.toLowerCase() === 'gv-input') {
432
- input.setAttribute('no-submit', true);
433
- }
434
- }
435
-
436
- _onOpened({ detail }) {
437
- if (detail.target !== this) {
438
- this._close();
439
- }
440
- }
441
-
442
- connectedCallback() {
443
- super.connectedCallback();
444
- window.addEventListener('gv-autocomplete:opened', this._handleOpened);
445
- }
446
-
447
- disconnectedCallback() {
448
- if (this._handlers) {
449
- this.shadowRoot.removeEventListener('input', this._handlers.input);
450
- this.shadowRoot.removeEventListener('keydown', this._handlers.keydown);
451
- const input = this._getInput();
452
- input.removeEventListener('focus', this._handlers.focus);
453
- input.removeEventListener('blur', this._handlers.blur);
454
- input.removeEventListener('gv-input:clear', this._handlers.clear);
455
- }
456
- window.removeEventListener('gv-autocomplete:open', this._handleOpened);
457
- super.disconnectedCallback();
458
- }
459
- }
460
-
461
- window.customElements.define('gv-autocomplete', GvAutocomplete);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvAutocomplete=void 0;const t=require("lit"),e=require("../lib/events"),o=require("lit/directives/repeat"),i=require("lit/directives/class-map"),s=require("lit/directives/style-map");class n extends t.LitElement{static get properties(){return{options:{type:Array,reflect:!0},value:{type:String,reflect:!0},style:{type:String},minChars:{type:Number},filter:{type:Boolean|Function},size:{type:Number},_options:{type:Array,attribute:!1},_forceOpen:{type:Boolean,attribute:!1}}}static get styles(){return[t.css`:host{box-sizing:border-box;display:inline-block;width:100%}::slotted(*){width:100%}.container{position:relative}.container .options.open{display:block;visibility:visible;opacity:1;-webkit-transform:-webkit-translateY(0);transform:translateY(0);z-index:100}.options{background-color:var(--gv-autocomplete--bgc,var(--gv-theme-neutral-color-lightest,#fff));color:var(--gv-autocomplete--c,var(--gv-theme-font-color,#262626));margin:.2rem;position:absolute;box-shadow:0 0 0 1px var(--gv-theme-neutral-color,#f5f5f5),0 1px 3px var(--gv-theme-neutral-color-dark,#bfbfbf);border-radius:2px;display:block;width:100%;cursor:pointer;left:0;right:0;visibility:hidden;opacity:0;-webkit-transform:-webkit-translateY(-2em);transform:translateY(-2em);-webkit-transition:-webkit-transform 150ms ease-in-out,opacity 150ms ease-in-out;-moz-transition:all 150ms ease-in-out;-ms-transition:all 150ms ease-in-out;-o-transition:all 150ms ease-in-out;overflow:auto}.option{padding:.2rem;min-height:30px;word-break:break-all}.option.match~.option.match{background-color:transparent}.keyboard .option.hover:hover,.option.hover,.option:hover{background-color:var(--gv-autocomplete-hover--bgc,var(--gv-theme-neutral-color-lighter,#fafafa))}.keyboard .option:hover{background-color:transparent}.show{display:block}.hide{display:none}`]}constructor(){super(),this._options=[],this._candidateIndex=-1,this.minChars=1,this.value="",this.style="",this.filter=!1,this.size=5,this._handleOpened=this._onOpened.bind(this)}set options(t){this._options=t}get options(){return this._options}reset(){this._getInput().reset(),this._options=[]}_getFilteredOptions(){return this.filter&&this.value&&this.value.length>=this.minChars&&"*"!==this.value?"function"==typeof this.filter?this._options.filter((t=>this.filter(this.value,t))):this._options.filter((t=>-1!==t.value.indexOf(this.value))):this._options}_onInput(t){clearTimeout(this._cancellableTimeout),this.value=t.target.value,null!=this.value&&this.value.trim().length>=this.minChars?this._cancellableTimeout=setTimeout((()=>{this._open(),(0,e.dispatchCustomEvent)(this,"search",this.value)}),200):this.options=[]}_onSelect(t,o){null==o&&(o=this._options.find((e=>e.value===t))),this.value=this._getInput().value=t,this._close(),(0,e.dispatchCustomEvent)(this,"select",o)}_onMouseOver(){this.shadowRoot.firstElementChild.classList.remove("keyboard"),this._clearHover(),this._shouldSelect=!0}_onMouseLeave(){this._shouldSelect=!1}_renderOption(t){if(t.element)return t.element;if(t.innerHTML){const e=document.createElement("div");return e.innerHTML=t.innerHTML,e}return t.value}_renderStyle(){if(this.style){const e=document.createElement("div");return e.innerHTML=(0,t.unsafeCSS)(this.style),e}return""}_hasNoOptionSlot(){for(const t of this.childNodes)if("noOption"===t.slot)return!0;return!1}render(){const e=this._getFilteredOptions();let n=!1;e&&e.length>0&&this._forceOpen&&(n=0===this.minChars||this.value.trim().length>=this.minChars);const r=this._getInput();let a=0;null!=r&&(a=r.offsetHeight);const l={options:!0,open:n};return t.html`<div class="container">${this._renderStyle()}<slot></slot>${this._hasNoOptionSlot()&&this._forceOpen?t.html`<div class="options open" style="${(0,s.styleMap)({top:`${a}px`})}"><slot name="noOption" class="${e&&0!==e.length?"hide":"show"}"></slot></div>`:""}<div class="${(0,i.classMap)(l)}" @mouseleave="${this._onMouseLeave}" style="${(0,s.styleMap)({top:`${a}px`})}">${(0,o.repeat)(e,(t=>t),((e,o)=>t.html`<div class="${(0,i.classMap)({option:!0})}" data-value="${e.value}" @mouseover="${()=>this._onMouseOver(e,o)}" @click="${()=>this._onSelect(e.value,e)}">${this._renderOption(e)}</div>`))}</div></div>`}_clearHover(){this.shadowRoot.querySelectorAll(".option.hover").forEach((t=>t.classList.remove("hover")))}_updateHover(){if(this._clearHover(),this._candidateIndex>-1){this.shadowRoot.firstElementChild.classList.add("keyboard");const t=this.shadowRoot.querySelectorAll(".option")[this._candidateIndex];if(t){const e=this.shadowRoot.querySelector(".options"),{top:o,left:i}=t.getBoundingClientRect(),s=e.getBoundingClientRect(),n=i-s.left,r=o-s.top;e.scrollTo(n,r),t.classList.add("hover")}}}_onKeydown(t){switch(t.keyCode){case 13:{const e=this.shadowRoot.querySelectorAll(".option")[this._candidateIndex];e&&(t.preventDefault(),t.stopPropagation(),this._candidateIndex=-1,this._onSelect(e.getAttribute("data-value")),this._updateHover()),this._close();break}case 40:this._candidateIndex<this.shadowRoot.querySelectorAll(".option").length-1&&(t.preventDefault(),t.stopPropagation(),this._candidateIndex+=1,this._updateHover());break;case 38:this._candidateIndex>0&&(t.preventDefault(),t.stopPropagation(),this._candidateIndex-=1,this._updateHover());break;case 27:t.preventDefault(),t.stopPropagation(),this._candidateIndex=-1,this._updateHover();break;default:this.value=this._getInput().value,this._candidateIndex=-1,this._updateHover()}}_open(){this._forceOpen=!0,(0,e.dispatchCustomEvent)(this,"opened",{target:this})}_close(){this._forceOpen=!1}_onFocus(){this._open()}_onBlur(){!1===this._shouldSelect&&this._close()}_getInput(){for(const t of this.childNodes)if("input"===t.slot)return t;return this.firstElementChild}_onClear(t){this.value=t.target.value}updated(){setTimeout((()=>{const t=this.shadowRoot.querySelector(".option");if(t){const e=t.clientHeight*parseInt(this.size,10),o=this.shadowRoot.querySelector(".options");o.style.maxHeight=`${e}px`,o.scrollTo(0,0)}}),0)}firstUpdated(){this._handlers={input:this._onInput.bind(this),focus:this._onFocus.bind(this),blur:this._onBlur.bind(this),keydown:this._onKeydown.bind(this),clear:this._onClear.bind(this)},this.shadowRoot.addEventListener("input",this._handlers.input),this.shadowRoot.addEventListener("keydown",this._handlers.keydown);const t=this._getInput();t.addEventListener("focus",this._handlers.focus),t.addEventListener("blur",this._handlers.blur),t.addEventListener("gv-input:clear",this._handlers.clear),"gv-input"===t.tagName.toLowerCase()&&t.setAttribute("no-submit",!0)}_onOpened({detail:t}){t.target!==this&&this._close()}connectedCallback(){super.connectedCallback(),window.addEventListener("gv-autocomplete:opened",this._handleOpened)}disconnectedCallback(){if(this._handlers){this.shadowRoot.removeEventListener("input",this._handlers.input),this.shadowRoot.removeEventListener("keydown",this._handlers.keydown);const t=this._getInput();t.removeEventListener("focus",this._handlers.focus),t.removeEventListener("blur",this._handlers.blur),t.removeEventListener("gv-input:clear",this._handlers.clear)}window.removeEventListener("gv-autocomplete:open",this._handleOpened),super.disconnectedCallback()}}exports.GvAutocomplete=n,window.customElements.define("gv-autocomplete",n);