@gravitee/ui-components 3.25.3-typescript-bfd8f67 → 3.25.3-typescript-94e8113

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 (550) hide show
  1. package/CHANGELOG.md +1292 -0
  2. package/LICENSE.txt +202 -0
  3. package/README.md +195 -0
  4. package/dist/src/atoms/gv-autocomplete.d.ts +104 -0
  5. package/dist/src/atoms/gv-autocomplete.js +422 -0
  6. package/dist/src/atoms/gv-button.d.ts +109 -0
  7. package/dist/src/atoms/gv-button.js +397 -0
  8. package/dist/src/atoms/gv-checkbox.d.ts +114 -0
  9. package/dist/src/atoms/gv-checkbox.js +178 -0
  10. package/dist/src/atoms/gv-date-picker-calendar.d.ts +190 -0
  11. package/dist/src/atoms/gv-date-picker-calendar.js +812 -0
  12. package/dist/src/atoms/gv-date-picker-cell.d.ts +80 -0
  13. package/dist/src/atoms/gv-date-picker-cell.js +174 -0
  14. package/dist/src/atoms/gv-date-picker.d.ts +194 -0
  15. package/dist/src/atoms/gv-date-picker.js +638 -0
  16. package/dist/src/atoms/gv-file-upload.d.ts +64 -0
  17. package/dist/src/atoms/gv-file-upload.js +348 -0
  18. package/dist/src/atoms/gv-icon.d.ts +26 -0
  19. package/dist/src/atoms/gv-icon.js +93 -0
  20. package/dist/src/atoms/gv-image.d.ts +45 -0
  21. package/dist/src/atoms/gv-image.js +135 -0
  22. package/dist/src/atoms/gv-input-message.d.ts +20 -0
  23. package/dist/src/atoms/gv-input-message.js +78 -0
  24. package/dist/src/atoms/gv-input.d.ts +246 -0
  25. package/dist/src/atoms/gv-input.js +508 -0
  26. package/dist/src/atoms/gv-link.d.ts +67 -0
  27. package/dist/src/atoms/gv-link.js +204 -0
  28. package/dist/src/atoms/gv-message.d.ts +23 -0
  29. package/dist/src/atoms/gv-message.js +133 -0
  30. package/dist/src/atoms/gv-metric.d.ts +32 -0
  31. package/dist/src/atoms/gv-metric.js +112 -0
  32. package/dist/src/atoms/gv-relative-time.d.ts +45 -0
  33. package/dist/src/atoms/gv-relative-time.js +143 -0
  34. package/dist/src/atoms/gv-select-native.d.ts +174 -0
  35. package/dist/src/atoms/gv-select-native.js +363 -0
  36. package/dist/src/atoms/gv-select.d.ts +71 -0
  37. package/dist/src/atoms/gv-select.js +413 -0
  38. package/dist/src/atoms/gv-spinner.d.ts +10 -0
  39. package/dist/src/atoms/gv-spinner.js +54 -0
  40. package/dist/src/atoms/gv-state.d.ts +50 -0
  41. package/dist/src/atoms/gv-state.js +125 -0
  42. package/dist/src/atoms/gv-switch.d.ts +60 -0
  43. package/dist/src/atoms/gv-switch.js +235 -0
  44. package/dist/src/atoms/gv-tag.d.ts +69 -0
  45. package/dist/src/atoms/gv-tag.js +162 -0
  46. package/dist/src/atoms/gv-text.d.ts +110 -0
  47. package/dist/src/atoms/gv-text.js +160 -0
  48. package/dist/src/charts/gv-chart-bar.d.ts +50 -0
  49. package/dist/src/charts/gv-chart-bar.js +101 -0
  50. package/dist/src/charts/gv-chart-gauge.d.ts +58 -0
  51. package/dist/src/charts/gv-chart-gauge.js +92 -0
  52. package/dist/src/charts/gv-chart-histogram.d.ts +48 -0
  53. package/dist/src/charts/gv-chart-histogram.js +78 -0
  54. package/dist/src/charts/gv-chart-line.d.ts +52 -0
  55. package/dist/src/charts/gv-chart-line.js +218 -0
  56. package/dist/src/charts/gv-chart-map.d.ts +50 -0
  57. package/dist/src/charts/gv-chart-map.js +111 -0
  58. package/dist/src/charts/gv-chart-pie.d.ts +50 -0
  59. package/dist/src/charts/gv-chart-pie.js +89 -0
  60. package/dist/src/index.d.ts +77 -0
  61. package/dist/src/index.js +77 -0
  62. package/dist/src/lib/cron-expression.d.ts +1 -0
  63. package/dist/src/lib/cron-expression.js +176 -0
  64. package/dist/src/lib/date.d.ts +1 -0
  65. package/dist/src/lib/date.js +43 -0
  66. package/dist/src/lib/events.d.ts +1 -0
  67. package/dist/src/lib/events.js +26 -0
  68. package/dist/src/lib/http-client-schema-form.d.ts +68 -0
  69. package/dist/src/lib/http-client-schema-form.js +67 -0
  70. package/dist/src/lib/http.d.ts +222 -0
  71. package/dist/src/lib/http.js +237 -0
  72. package/dist/src/lib/i18n.d.ts +30 -0
  73. package/dist/src/lib/i18n.js +93 -0
  74. package/dist/src/lib/item.d.ts +12 -0
  75. package/dist/src/lib/item.js +110 -0
  76. package/dist/src/lib/properties.d.ts +42 -0
  77. package/dist/src/lib/properties.js +171 -0
  78. package/dist/src/lib/schema-form.d.ts +5 -0
  79. package/dist/src/lib/schema-form.js +39 -0
  80. package/dist/src/lib/studio.d.ts +2 -0
  81. package/dist/src/lib/studio.js +144 -0
  82. package/dist/src/lib/style.d.ts +6 -0
  83. package/dist/src/lib/style.js +39 -0
  84. package/dist/src/lib/text-format.d.ts +6 -0
  85. package/dist/src/lib/text-format.js +65 -0
  86. package/dist/src/lib/theme.d.ts +4 -0
  87. package/dist/src/lib/theme.js +60 -0
  88. package/dist/src/lib/utils.d.ts +9 -0
  89. package/dist/src/lib/utils.js +106 -0
  90. package/dist/src/mixins/chart-element.d.ts +39 -0
  91. package/dist/src/mixins/chart-element.js +153 -0
  92. package/dist/src/mixins/input-element.d.ts +64 -0
  93. package/dist/src/mixins/input-element.js +136 -0
  94. package/dist/src/mixins/item-resource.d.ts +56 -0
  95. package/dist/src/mixins/item-resource.js +102 -0
  96. package/dist/src/mixins/keyboard-element.d.ts +25 -0
  97. package/dist/src/mixins/keyboard-element.js +62 -0
  98. package/dist/src/mixins/update-after-browser.d.ts +11 -0
  99. package/dist/src/mixins/update-after-browser.js +30 -0
  100. package/dist/src/mixins/with-resize-observer.d.ts +12 -0
  101. package/dist/src/mixins/with-resize-observer.js +62 -0
  102. package/dist/src/mixins/with-skeleton-attribute.d.ts +35 -0
  103. package/dist/src/mixins/with-skeleton-attribute.js +109 -0
  104. package/dist/src/molecules/gv-card-full.d.ts +78 -0
  105. package/dist/src/molecules/gv-card-full.js +209 -0
  106. package/dist/src/molecules/gv-card-list.d.ts +33 -0
  107. package/dist/src/molecules/gv-card-list.js +101 -0
  108. package/dist/src/molecules/gv-card.d.ts +65 -0
  109. package/dist/src/molecules/gv-card.js +130 -0
  110. package/dist/src/molecules/gv-category-list.d.ts +17 -0
  111. package/dist/src/molecules/gv-category-list.js +56 -0
  112. package/dist/src/molecules/gv-category.d.ts +64 -0
  113. package/dist/src/molecules/gv-category.js +163 -0
  114. package/dist/src/molecules/gv-code.d.ts +192 -0
  115. package/dist/src/molecules/gv-code.js +334 -0
  116. package/dist/src/molecules/gv-confirm.d.ts +60 -0
  117. package/dist/src/molecules/gv-confirm.js +175 -0
  118. package/dist/src/molecules/gv-cron-editor.d.ts +115 -0
  119. package/dist/src/molecules/gv-cron-editor.js +685 -0
  120. package/dist/src/molecules/gv-dropdown-menu.d.ts +28 -0
  121. package/dist/src/molecules/gv-dropdown-menu.js +108 -0
  122. package/dist/src/molecules/gv-expandable.d.ts +37 -0
  123. package/dist/src/molecules/gv-expandable.js +116 -0
  124. package/dist/src/molecules/gv-expression-language.d.ts +150 -0
  125. package/dist/src/molecules/gv-expression-language.js +263 -0
  126. package/dist/src/molecules/gv-identity-picture.d.ts +44 -0
  127. package/dist/src/molecules/gv-identity-picture.js +139 -0
  128. package/dist/src/molecules/gv-list.d.ts +123 -0
  129. package/dist/src/molecules/gv-list.js +214 -0
  130. package/dist/src/molecules/gv-metrics.d.ts +65 -0
  131. package/dist/src/molecules/gv-metrics.js +147 -0
  132. package/dist/src/molecules/gv-modal.d.ts +64 -0
  133. package/dist/src/molecules/gv-modal.js +203 -0
  134. package/dist/src/molecules/gv-nav.d.ts +41 -0
  135. package/dist/src/molecules/gv-nav.js +180 -0
  136. package/dist/src/molecules/gv-option.d.ts +65 -0
  137. package/dist/src/molecules/gv-option.js +230 -0
  138. package/dist/src/molecules/gv-plans.d.ts +73 -0
  139. package/dist/src/molecules/gv-plans.js +400 -0
  140. package/dist/src/molecules/gv-popover.d.ts +91 -0
  141. package/dist/src/molecules/gv-popover.js +323 -0
  142. package/dist/src/molecules/gv-promote.d.ts +108 -0
  143. package/dist/src/molecules/gv-promote.js +203 -0
  144. package/dist/src/molecules/gv-rating-list.d.ts +77 -0
  145. package/dist/src/molecules/gv-rating-list.js +341 -0
  146. package/dist/src/molecules/gv-rating.d.ts +55 -0
  147. package/dist/src/molecules/gv-rating.js +234 -0
  148. package/dist/src/molecules/gv-row-expandable.d.ts +8 -0
  149. package/dist/src/molecules/gv-row-expandable.js +42 -0
  150. package/dist/src/molecules/gv-row.d.ts +37 -0
  151. package/dist/src/molecules/gv-row.js +205 -0
  152. package/dist/src/molecules/gv-stats.d.ts +53 -0
  153. package/dist/src/molecules/gv-stats.js +110 -0
  154. package/dist/src/molecules/gv-stepper.d.ts +46 -0
  155. package/dist/src/molecules/gv-stepper.js +274 -0
  156. package/dist/src/molecules/gv-table.d.ts +159 -0
  157. package/dist/src/molecules/gv-table.js +644 -0
  158. package/dist/src/molecules/gv-tree.d.ts +44 -0
  159. package/dist/src/molecules/gv-tree.js +238 -0
  160. package/dist/src/organisms/gv-documentation.d.ts +52 -0
  161. package/dist/src/organisms/gv-documentation.js +205 -0
  162. package/dist/src/organisms/gv-header.d.ts +60 -0
  163. package/dist/src/organisms/gv-header.js +276 -0
  164. package/dist/src/organisms/gv-http-client.d.ts +57 -0
  165. package/dist/src/organisms/gv-http-client.js +258 -0
  166. package/dist/src/organisms/gv-menu.d.ts +74 -0
  167. package/dist/src/organisms/gv-menu.js +258 -0
  168. package/dist/src/organisms/gv-newsletter-subscription.d.ts +82 -0
  169. package/dist/src/organisms/gv-newsletter-subscription.js +258 -0
  170. package/dist/src/organisms/gv-pagination.d.ts +63 -0
  171. package/dist/src/organisms/gv-pagination.js +179 -0
  172. package/dist/src/organisms/gv-properties.d.ts +229 -0
  173. package/dist/src/organisms/gv-properties.js +860 -0
  174. package/dist/src/organisms/gv-resizable-views.d.ts +33 -0
  175. package/dist/src/organisms/gv-resizable-views.js +371 -0
  176. package/dist/src/organisms/gv-resources.d.ts +125 -0
  177. package/dist/src/organisms/gv-resources.js +496 -0
  178. package/dist/src/organisms/gv-schema-form-array.d.ts +55 -0
  179. package/dist/src/organisms/gv-schema-form-array.js +237 -0
  180. package/dist/src/organisms/gv-schema-form-control-object.d.ts +64 -0
  181. package/dist/src/organisms/gv-schema-form-control-object.js +141 -0
  182. package/dist/src/organisms/gv-schema-form-control.d.ts +90 -0
  183. package/dist/src/organisms/gv-schema-form-control.js +419 -0
  184. package/dist/src/organisms/gv-schema-form.d.ts +156 -0
  185. package/dist/src/organisms/gv-schema-form.js +700 -0
  186. package/dist/src/organisms/gv-tabs.d.ts +56 -0
  187. package/dist/src/organisms/gv-tabs.js +201 -0
  188. package/dist/src/organisms/gv-user-menu.d.ts +56 -0
  189. package/dist/src/organisms/gv-user-menu.js +298 -0
  190. package/dist/src/organisms/gv-vertical-menu.d.ts +28 -0
  191. package/dist/src/organisms/gv-vertical-menu.js +119 -0
  192. package/dist/src/policy-studio/gv-flow-step.d.ts +142 -0
  193. package/dist/src/policy-studio/gv-flow-step.js +443 -0
  194. package/dist/src/policy-studio/gv-flow.d.ts +89 -0
  195. package/dist/src/policy-studio/gv-flow.js +595 -0
  196. package/dist/src/policy-studio/gv-policy-studio-menu.d.ts +94 -0
  197. package/dist/src/policy-studio/gv-policy-studio-menu.js +689 -0
  198. package/dist/src/policy-studio/gv-policy-studio.d.ts +464 -0
  199. package/dist/src/policy-studio/gv-policy-studio.js +1712 -0
  200. package/dist/src/styles/empty.d.ts +1 -0
  201. package/dist/src/styles/empty.js +35 -0
  202. package/dist/src/styles/input.d.ts +1 -0
  203. package/dist/src/styles/input.js +262 -0
  204. package/dist/src/styles/link.d.ts +1 -0
  205. package/dist/src/styles/link.js +31 -0
  206. package/dist/src/styles/shapes.d.ts +2 -0
  207. package/dist/src/styles/shapes.js +17 -0
  208. package/dist/src/styles/skeleton.d.ts +1 -0
  209. package/dist/src/styles/skeleton.js +52 -0
  210. package/dist/src/styles/zoom.d.ts +1 -0
  211. package/dist/src/styles/zoom.js +39 -0
  212. package/dist/src/theme/gv-theme.d.ts +81 -0
  213. package/dist/src/theme/gv-theme.js +197 -0
  214. package/dist/wc/gv-autocomplete.d.ts +1 -0
  215. package/dist/wc/gv-autocomplete.js +1 -0
  216. package/dist/wc/gv-button.d.ts +1 -0
  217. package/dist/wc/gv-button.js +1 -0
  218. package/dist/wc/gv-card-full.d.ts +1 -0
  219. package/dist/wc/gv-card-full.js +1 -0
  220. package/dist/wc/gv-card-list.d.ts +1 -0
  221. package/dist/wc/gv-card-list.js +1 -0
  222. package/dist/wc/gv-card.d.ts +1 -0
  223. package/dist/wc/gv-card.js +1 -0
  224. package/dist/wc/gv-category-list.d.ts +1 -0
  225. package/dist/wc/gv-category-list.js +1 -0
  226. package/dist/wc/gv-category.d.ts +1 -0
  227. package/dist/wc/gv-category.js +1 -0
  228. package/dist/wc/gv-chart-bar.d.ts +1 -0
  229. package/dist/wc/gv-chart-bar.js +1 -0
  230. package/dist/wc/gv-chart-gauge.d.ts +1 -0
  231. package/dist/wc/gv-chart-gauge.js +1 -0
  232. package/dist/wc/gv-chart-histogram.d.ts +1 -0
  233. package/dist/wc/gv-chart-histogram.js +1 -0
  234. package/dist/wc/gv-chart-line.d.ts +1 -0
  235. package/dist/wc/gv-chart-line.js +1 -0
  236. package/dist/wc/gv-chart-map.d.ts +1 -0
  237. package/dist/wc/gv-chart-map.js +1 -0
  238. package/dist/wc/gv-chart-pie.d.ts +1 -0
  239. package/dist/wc/gv-chart-pie.js +1 -0
  240. package/dist/wc/gv-checkbox.d.ts +1 -0
  241. package/dist/wc/gv-checkbox.js +1 -0
  242. package/dist/wc/gv-code.d.ts +1 -0
  243. package/dist/wc/gv-code.js +1 -0
  244. package/dist/wc/gv-confirm.d.ts +1 -0
  245. package/dist/wc/gv-confirm.js +1 -0
  246. package/dist/wc/gv-cron-editor.d.ts +1 -0
  247. package/dist/wc/gv-cron-editor.js +1 -0
  248. package/dist/wc/gv-date-picker-calendar.d.ts +1 -0
  249. package/dist/wc/gv-date-picker-calendar.js +1 -0
  250. package/dist/wc/gv-date-picker-cell.d.ts +1 -0
  251. package/dist/wc/gv-date-picker-cell.js +1 -0
  252. package/dist/wc/gv-date-picker.d.ts +1 -0
  253. package/dist/wc/gv-date-picker.js +1 -0
  254. package/dist/wc/gv-documentation.d.ts +1 -0
  255. package/dist/wc/gv-documentation.js +1 -0
  256. package/dist/wc/gv-dropdown-menu.d.ts +1 -0
  257. package/dist/wc/gv-dropdown-menu.js +1 -0
  258. package/dist/wc/gv-expandable.d.ts +1 -0
  259. package/dist/wc/gv-expandable.js +1 -0
  260. package/dist/wc/gv-expression-language.d.ts +1 -0
  261. package/dist/wc/gv-expression-language.js +1 -0
  262. package/dist/wc/gv-file-upload.d.ts +1 -0
  263. package/dist/wc/gv-file-upload.js +1 -0
  264. package/dist/wc/gv-flow-step.d.ts +1 -0
  265. package/dist/wc/gv-flow-step.js +1 -0
  266. package/dist/wc/gv-flow.d.ts +1 -0
  267. package/dist/wc/gv-flow.js +1 -0
  268. package/dist/wc/gv-header.d.ts +1 -0
  269. package/dist/wc/gv-header.js +1 -0
  270. package/dist/wc/gv-http-client.d.ts +1 -0
  271. package/dist/wc/gv-http-client.js +1 -0
  272. package/dist/wc/gv-icon.d.ts +1 -0
  273. package/dist/wc/gv-icon.js +1 -0
  274. package/dist/wc/gv-identity-picture.d.ts +1 -0
  275. package/dist/wc/gv-identity-picture.js +1 -0
  276. package/dist/wc/gv-image.d.ts +1 -0
  277. package/dist/wc/gv-image.js +1 -0
  278. package/dist/wc/gv-input-message.d.ts +1 -0
  279. package/dist/wc/gv-input-message.js +1 -0
  280. package/dist/wc/gv-input.d.ts +1 -0
  281. package/dist/wc/gv-input.js +1 -0
  282. package/dist/wc/gv-link.d.ts +1 -0
  283. package/dist/wc/gv-link.js +1 -0
  284. package/dist/wc/gv-list.d.ts +1 -0
  285. package/dist/wc/gv-list.js +1 -0
  286. package/dist/wc/gv-menu.d.ts +1 -0
  287. package/dist/wc/gv-menu.js +1 -0
  288. package/dist/wc/gv-message.d.ts +1 -0
  289. package/dist/wc/gv-message.js +1 -0
  290. package/dist/wc/gv-metric.d.ts +1 -0
  291. package/dist/wc/gv-metric.js +1 -0
  292. package/dist/wc/gv-metrics.d.ts +1 -0
  293. package/dist/wc/gv-metrics.js +1 -0
  294. package/dist/wc/gv-modal.d.ts +1 -0
  295. package/dist/wc/gv-modal.js +1 -0
  296. package/dist/wc/gv-nav.d.ts +1 -0
  297. package/dist/wc/gv-nav.js +1 -0
  298. package/dist/wc/gv-newsletter-subscription.d.ts +1 -0
  299. package/dist/wc/gv-newsletter-subscription.js +1 -0
  300. package/dist/wc/gv-option.d.ts +1 -0
  301. package/dist/wc/gv-option.js +1 -0
  302. package/dist/wc/gv-pagination.d.ts +1 -0
  303. package/dist/wc/gv-pagination.js +1 -0
  304. package/dist/wc/gv-plans.d.ts +1 -0
  305. package/dist/wc/gv-plans.js +1 -0
  306. package/dist/wc/gv-policy-studio-menu.d.ts +1 -0
  307. package/dist/wc/gv-policy-studio-menu.js +1 -0
  308. package/dist/wc/gv-policy-studio.d.ts +1 -0
  309. package/dist/wc/gv-policy-studio.js +1 -0
  310. package/dist/wc/gv-popover.d.ts +1 -0
  311. package/dist/wc/gv-popover.js +1 -0
  312. package/dist/wc/gv-promote.d.ts +1 -0
  313. package/dist/wc/gv-promote.js +1 -0
  314. package/dist/wc/gv-properties.d.ts +1 -0
  315. package/dist/wc/gv-properties.js +1 -0
  316. package/dist/wc/gv-rating-list.d.ts +1 -0
  317. package/dist/wc/gv-rating-list.js +1 -0
  318. package/dist/wc/gv-rating.d.ts +1 -0
  319. package/dist/wc/gv-rating.js +1 -0
  320. package/dist/wc/gv-relative-time.d.ts +1 -0
  321. package/dist/wc/gv-relative-time.js +1 -0
  322. package/dist/wc/gv-resizable-views.d.ts +1 -0
  323. package/dist/wc/gv-resizable-views.js +1 -0
  324. package/dist/wc/gv-resources.d.ts +1 -0
  325. package/dist/wc/gv-resources.js +1 -0
  326. package/dist/wc/gv-row-expandable.d.ts +1 -0
  327. package/dist/wc/gv-row-expandable.js +1 -0
  328. package/dist/wc/gv-row.d.ts +1 -0
  329. package/dist/wc/gv-row.js +1 -0
  330. package/dist/wc/gv-schema-form-array.d.ts +1 -0
  331. package/dist/wc/gv-schema-form-array.js +1 -0
  332. package/dist/wc/gv-schema-form-control-object.d.ts +1 -0
  333. package/dist/wc/gv-schema-form-control-object.js +1 -0
  334. package/dist/wc/gv-schema-form-control.d.ts +1 -0
  335. package/dist/wc/gv-schema-form-control.js +1 -0
  336. package/dist/wc/gv-schema-form.d.ts +1 -0
  337. package/dist/wc/gv-schema-form.js +1 -0
  338. package/dist/wc/gv-select-native.d.ts +1 -0
  339. package/dist/wc/gv-select-native.js +1 -0
  340. package/dist/wc/gv-select.d.ts +1 -0
  341. package/dist/wc/gv-select.js +1 -0
  342. package/dist/wc/gv-spinner.d.ts +1 -0
  343. package/dist/wc/gv-spinner.js +1 -0
  344. package/dist/wc/gv-state.d.ts +1 -0
  345. package/dist/wc/gv-state.js +1 -0
  346. package/dist/wc/gv-stats.d.ts +1 -0
  347. package/dist/wc/gv-stats.js +1 -0
  348. package/dist/wc/gv-stepper.d.ts +1 -0
  349. package/dist/wc/gv-stepper.js +1 -0
  350. package/dist/wc/gv-switch.d.ts +1 -0
  351. package/dist/wc/gv-switch.js +1 -0
  352. package/dist/wc/gv-table.d.ts +1 -0
  353. package/dist/wc/gv-table.js +1 -0
  354. package/dist/wc/gv-tabs.d.ts +1 -0
  355. package/dist/wc/gv-tabs.js +1 -0
  356. package/dist/wc/gv-tag.d.ts +1 -0
  357. package/dist/wc/gv-tag.js +1 -0
  358. package/dist/wc/gv-text.d.ts +1 -0
  359. package/dist/wc/gv-text.js +1 -0
  360. package/dist/wc/gv-theme.d.ts +1 -0
  361. package/dist/wc/gv-theme.js +1 -0
  362. package/dist/wc/gv-tree.d.ts +1 -0
  363. package/dist/wc/gv-tree.js +1 -0
  364. package/dist/wc/gv-user-menu.d.ts +1 -0
  365. package/dist/wc/gv-user-menu.js +1 -0
  366. package/dist/wc/gv-vertical-menu.d.ts +1 -0
  367. package/dist/wc/gv-vertical-menu.js +1 -0
  368. package/package.json +8 -16
  369. package/src/atoms/gv-autocomplete.js +0 -1
  370. package/src/atoms/gv-button.js +0 -1
  371. package/src/atoms/gv-checkbox.js +0 -1
  372. package/src/atoms/gv-date-picker-calendar.js +0 -1
  373. package/src/atoms/gv-date-picker-cell.js +0 -1
  374. package/src/atoms/gv-date-picker.js +0 -1
  375. package/src/atoms/gv-file-upload.js +0 -1
  376. package/src/atoms/gv-icon.js +0 -1
  377. package/src/atoms/gv-image.js +0 -1
  378. package/src/atoms/gv-input-message.js +0 -1
  379. package/src/atoms/gv-input.js +0 -1
  380. package/src/atoms/gv-link.js +0 -1
  381. package/src/atoms/gv-message.js +0 -1
  382. package/src/atoms/gv-metric.js +0 -1
  383. package/src/atoms/gv-relative-time.js +0 -1
  384. package/src/atoms/gv-select-native.js +0 -1
  385. package/src/atoms/gv-select.js +0 -1
  386. package/src/atoms/gv-spinner.js +0 -1
  387. package/src/atoms/gv-state.js +0 -1
  388. package/src/atoms/gv-switch.js +0 -1
  389. package/src/atoms/gv-tag.js +0 -1
  390. package/src/atoms/gv-text.js +0 -1
  391. package/src/charts/gv-chart-bar.js +0 -1
  392. package/src/charts/gv-chart-gauge.js +0 -1
  393. package/src/charts/gv-chart-histogram.js +0 -1
  394. package/src/charts/gv-chart-line.js +0 -1
  395. package/src/charts/gv-chart-map.js +0 -1
  396. package/src/charts/gv-chart-pie.js +0 -1
  397. package/src/index.js +0 -1
  398. package/src/lib/cron-expression.js +0 -1
  399. package/src/lib/date.js +0 -1
  400. package/src/lib/events.js +0 -1
  401. package/src/lib/http-client-schema-form.js +0 -1
  402. package/src/lib/http.js +0 -1
  403. package/src/lib/i18n.js +0 -1
  404. package/src/lib/item.js +0 -1
  405. package/src/lib/properties.js +0 -1
  406. package/src/lib/schema-form.js +0 -1
  407. package/src/lib/studio.js +0 -1
  408. package/src/lib/style.js +0 -1
  409. package/src/lib/text-format.js +0 -1
  410. package/src/lib/theme.js +0 -1
  411. package/src/lib/utils.js +0 -1
  412. package/src/mixins/chart-element.js +0 -1
  413. package/src/mixins/input-element.js +0 -1
  414. package/src/mixins/item-resource.js +0 -1
  415. package/src/mixins/keyboard-element.js +0 -1
  416. package/src/mixins/update-after-browser.js +0 -1
  417. package/src/mixins/with-resize-observer.js +0 -1
  418. package/src/mixins/with-skeleton-attribute.js +0 -1
  419. package/src/molecules/gv-card-full.js +0 -1
  420. package/src/molecules/gv-card-list.js +0 -1
  421. package/src/molecules/gv-card.js +0 -1
  422. package/src/molecules/gv-category-list.js +0 -1
  423. package/src/molecules/gv-category.js +0 -1
  424. package/src/molecules/gv-code.js +0 -1
  425. package/src/molecules/gv-confirm.js +0 -1
  426. package/src/molecules/gv-cron-editor.js +0 -1
  427. package/src/molecules/gv-dropdown-menu.js +0 -1
  428. package/src/molecules/gv-expandable.js +0 -1
  429. package/src/molecules/gv-expression-language.js +0 -1
  430. package/src/molecules/gv-identity-picture.js +0 -1
  431. package/src/molecules/gv-list.js +0 -1
  432. package/src/molecules/gv-metrics.js +0 -1
  433. package/src/molecules/gv-modal.js +0 -1
  434. package/src/molecules/gv-nav.js +0 -1
  435. package/src/molecules/gv-option.js +0 -1
  436. package/src/molecules/gv-plans.js +0 -1
  437. package/src/molecules/gv-popover.js +0 -1
  438. package/src/molecules/gv-promote.js +0 -1
  439. package/src/molecules/gv-rating-list.js +0 -1
  440. package/src/molecules/gv-rating.js +0 -1
  441. package/src/molecules/gv-row-expandable.js +0 -1
  442. package/src/molecules/gv-row.js +0 -1
  443. package/src/molecules/gv-stats.js +0 -1
  444. package/src/molecules/gv-stepper.js +0 -1
  445. package/src/molecules/gv-table.js +0 -1
  446. package/src/molecules/gv-tree.js +0 -1
  447. package/src/organisms/gv-documentation.js +0 -1
  448. package/src/organisms/gv-header.js +0 -1
  449. package/src/organisms/gv-http-client.js +0 -1
  450. package/src/organisms/gv-menu.js +0 -1
  451. package/src/organisms/gv-newsletter-subscription.js +0 -1
  452. package/src/organisms/gv-pagination.js +0 -1
  453. package/src/organisms/gv-properties.js +0 -1
  454. package/src/organisms/gv-resizable-views.js +0 -1
  455. package/src/organisms/gv-resources.js +0 -1
  456. package/src/organisms/gv-schema-form-array.js +0 -1
  457. package/src/organisms/gv-schema-form-control-object.js +0 -1
  458. package/src/organisms/gv-schema-form-control.js +0 -1
  459. package/src/organisms/gv-schema-form.js +0 -1
  460. package/src/organisms/gv-tabs.js +0 -1
  461. package/src/organisms/gv-user-menu.js +0 -1
  462. package/src/organisms/gv-vertical-menu.js +0 -1
  463. package/src/policy-studio/gv-flow-step.js +0 -1
  464. package/src/policy-studio/gv-flow.js +0 -1
  465. package/src/policy-studio/gv-policy-studio-menu.js +0 -1
  466. package/src/policy-studio/gv-policy-studio.js +0 -1
  467. package/src/styles/empty.js +0 -1
  468. package/src/styles/input.js +0 -1
  469. package/src/styles/link.js +0 -1
  470. package/src/styles/shapes.js +0 -1
  471. package/src/styles/skeleton.js +0 -1
  472. package/src/styles/zoom.js +0 -1
  473. package/src/theme/gv-theme.js +0 -1
  474. package/wc/gv-autocomplete.js +0 -1
  475. package/wc/gv-button.js +0 -1
  476. package/wc/gv-card-full.js +0 -1
  477. package/wc/gv-card-list.js +0 -1
  478. package/wc/gv-card.js +0 -1
  479. package/wc/gv-category-list.js +0 -1
  480. package/wc/gv-category.js +0 -1
  481. package/wc/gv-chart-bar.js +0 -1
  482. package/wc/gv-chart-gauge.js +0 -1
  483. package/wc/gv-chart-histogram.js +0 -1
  484. package/wc/gv-chart-line.js +0 -1
  485. package/wc/gv-chart-map.js +0 -1
  486. package/wc/gv-chart-pie.js +0 -1
  487. package/wc/gv-checkbox.js +0 -1
  488. package/wc/gv-code.js +0 -1
  489. package/wc/gv-confirm.js +0 -1
  490. package/wc/gv-cron-editor.js +0 -1
  491. package/wc/gv-date-picker-calendar.js +0 -1
  492. package/wc/gv-date-picker-cell.js +0 -1
  493. package/wc/gv-date-picker.js +0 -1
  494. package/wc/gv-documentation.js +0 -1
  495. package/wc/gv-dropdown-menu.js +0 -1
  496. package/wc/gv-expandable.js +0 -1
  497. package/wc/gv-expression-language.js +0 -1
  498. package/wc/gv-file-upload.js +0 -1
  499. package/wc/gv-flow-step.js +0 -1
  500. package/wc/gv-flow.js +0 -1
  501. package/wc/gv-header.js +0 -1
  502. package/wc/gv-http-client.js +0 -1
  503. package/wc/gv-icon.js +0 -1
  504. package/wc/gv-identity-picture.js +0 -1
  505. package/wc/gv-image.js +0 -1
  506. package/wc/gv-input-message.js +0 -1
  507. package/wc/gv-input.js +0 -1
  508. package/wc/gv-link.js +0 -1
  509. package/wc/gv-list.js +0 -1
  510. package/wc/gv-menu.js +0 -1
  511. package/wc/gv-message.js +0 -1
  512. package/wc/gv-metric.js +0 -1
  513. package/wc/gv-metrics.js +0 -1
  514. package/wc/gv-modal.js +0 -1
  515. package/wc/gv-nav.js +0 -1
  516. package/wc/gv-newsletter-subscription.js +0 -1
  517. package/wc/gv-option.js +0 -1
  518. package/wc/gv-pagination.js +0 -1
  519. package/wc/gv-plans.js +0 -1
  520. package/wc/gv-policy-studio-menu.js +0 -1
  521. package/wc/gv-policy-studio.js +0 -1
  522. package/wc/gv-popover.js +0 -1
  523. package/wc/gv-promote.js +0 -1
  524. package/wc/gv-properties.js +0 -1
  525. package/wc/gv-rating-list.js +0 -1
  526. package/wc/gv-rating.js +0 -1
  527. package/wc/gv-relative-time.js +0 -1
  528. package/wc/gv-resizable-views.js +0 -1
  529. package/wc/gv-resources.js +0 -1
  530. package/wc/gv-row-expandable.js +0 -1
  531. package/wc/gv-row.js +0 -1
  532. package/wc/gv-schema-form-array.js +0 -1
  533. package/wc/gv-schema-form-control-object.js +0 -1
  534. package/wc/gv-schema-form-control.js +0 -1
  535. package/wc/gv-schema-form.js +0 -1
  536. package/wc/gv-select-native.js +0 -1
  537. package/wc/gv-select.js +0 -1
  538. package/wc/gv-spinner.js +0 -1
  539. package/wc/gv-state.js +0 -1
  540. package/wc/gv-stats.js +0 -1
  541. package/wc/gv-stepper.js +0 -1
  542. package/wc/gv-switch.js +0 -1
  543. package/wc/gv-table.js +0 -1
  544. package/wc/gv-tabs.js +0 -1
  545. package/wc/gv-tag.js +0 -1
  546. package/wc/gv-text.js +0 -1
  547. package/wc/gv-theme.js +0 -1
  548. package/wc/gv-tree.js +0 -1
  549. package/wc/gv-user-menu.js +0 -1
  550. package/wc/gv-vertical-menu.js +0 -1
@@ -0,0 +1,812 @@
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 './gv-date-picker-cell';
17
+ import { addDays, addMonths, addYears, endOfMonth, format, getDay, getMonth, getYear, isAfter, isBefore, parse, setHours, setMinutes, startOfDay, subMonths, subYears, } from 'date-fns';
18
+ import { classMap } from 'lit/directives/class-map';
19
+ import { dispatchCustomEvent } from '../lib/events';
20
+ import { i18n } from '../lib/i18n';
21
+ import { LitElement, css, html } from 'lit';
22
+ import { until } from 'lit/directives/until';
23
+ /**
24
+ * Date Picker Calendar
25
+ *
26
+ * ## Details
27
+ * * has @theme facet
28
+ *
29
+ * @fires gv-date-picker-cell:select - Custom event when user select cell
30
+ * @fires gv-date-picker-cell:hover - Custom event when user hover cell
31
+ *
32
+ * @attr {Number} dateFrom - unix date form
33
+ * @attr {Number} dateTo - unix date to
34
+ * @attr {Array} disabledDates - array of disabled date
35
+ * @attr {Number} hoveredDate - unix hovered date
36
+ * @attr {Number} min - unix min date
37
+ * @attr {Number} max - unix max date
38
+ * @attr {Object} locale - date-fns locale object
39
+ *
40
+ * @cssprop {Color} [--gv-date-picker-hover--bgc=var(--gv-theme-color-light, #86c3d0)] - Hover background color
41
+ * @cssprop {Color} [--gv-date-picker-hover--c=var(--gv-theme-font-color-dark, #262626)] - Hover color
42
+ * @cssprop {Color} [--gv-date-picker-selected--bgc=var(--gv-theme-color, #5a7684)] - Selected background color
43
+ * @cssprop {Color} [--gv-date-picker-selected--c=var(--gv-theme-font-color-light, #ffffff)] - Selected color
44
+ */
45
+ export class GvDatePickerCalendar extends LitElement {
46
+ static get properties() {
47
+ return {
48
+ dateFrom: { type: Number },
49
+ dateTo: { type: Number },
50
+ disabledDates: { type: Array },
51
+ hoveredDate: { type: Number },
52
+ locale: { type: Object },
53
+ max: { type: Number },
54
+ min: { type: Number },
55
+ month: { type: String },
56
+ monthMode: { type: Boolean },
57
+ next: { type: Boolean },
58
+ prev: { type: Boolean },
59
+ range: { type: Boolean },
60
+ time: { type: Boolean },
61
+ small: { type: Boolean, reflect: true },
62
+ strict: { type: Boolean },
63
+ year: { type: String },
64
+ yearMode: { type: Boolean },
65
+ _dayNamesOfWeek: { type: Array, attribute: false },
66
+ _dimensions: { type: Array, attribute: false },
67
+ _hasGoToday: { type: Boolean, attribute: false },
68
+ _hour: { type: Number, attribute: false },
69
+ _minute: { type: Number, attribute: false },
70
+ _second: { type: Number, attribute: false },
71
+ _monthsList: { type: Array, attribute: false },
72
+ _locale: { type: Object, attribute: false },
73
+ _from: { type: Number, attribute: false },
74
+ _to: { type: Number, attribute: false },
75
+ };
76
+ }
77
+ static get styles() {
78
+ return [
79
+ // language=CSS
80
+ css `
81
+ :host {
82
+ display: block;
83
+ }
84
+
85
+ :host > div {
86
+ overflow: hidden;
87
+ }
88
+
89
+ .nav,
90
+ .foot,
91
+ .nav-times {
92
+ display: flex;
93
+ padding: 0.5rem;
94
+ height: 30px;
95
+ }
96
+
97
+ .nav .current,
98
+ .foot {
99
+ flex: 1;
100
+ display: flex;
101
+ justify-content: center;
102
+ }
103
+
104
+ .monthName,
105
+ .day {
106
+ text-transform: capitalize;
107
+ }
108
+
109
+ .foot-time {
110
+ justify-content: flex-end;
111
+ }
112
+
113
+ .calendar-grid {
114
+ display: grid;
115
+ grid-template-columns: repeat(7, 1fr);
116
+ padding: 0.5rem 0.5rem 0 0.5rem;
117
+ }
118
+
119
+ .calendar-grid-large {
120
+ grid-template-columns: repeat(3, 1fr);
121
+ }
122
+
123
+ .header,
124
+ .content {
125
+ display: grid;
126
+ grid-template-columns: repeat(2, auto);
127
+ }
128
+
129
+ gv-date-picker-cell {
130
+ height: 32px;
131
+ }
132
+
133
+ .calendar-grid-large gv-date-picker-cell {
134
+ height: 48px;
135
+ }
136
+
137
+ .calendar-grid,
138
+ .foot,
139
+ .time {
140
+ border-top: 1px solid var(--gv-theme-neutral-color-dark);
141
+ }
142
+
143
+ .nav-times {
144
+ justify-content: center;
145
+ align-items: center;
146
+ }
147
+
148
+ .nav-times,
149
+ .time {
150
+ border-left: 1px solid var(--gv-theme-neutral-color-dark);
151
+ }
152
+
153
+ .day {
154
+ height: 32px;
155
+ width: 33px;
156
+ margin: 0;
157
+ padding: 0;
158
+ display: flex;
159
+ justify-content: center;
160
+ align-items: center;
161
+ font-size: 12px;
162
+ }
163
+
164
+ :host([small]) .day {
165
+ height: 25px;
166
+ width: 26px;
167
+ }
168
+
169
+ .box-col,
170
+ .times {
171
+ display: flex;
172
+ }
173
+
174
+ .box-col {
175
+ flex-direction: column;
176
+ }
177
+
178
+ .box-col:first-of-type {
179
+ width: 260px;
180
+ }
181
+
182
+ :host([small]) .box-col:first-of-type {
183
+ width: 195px;
184
+ }
185
+
186
+ .box {
187
+ display: flex;
188
+ }
189
+
190
+ .times {
191
+ max-height: 235px;
192
+ flex-direction: row;
193
+ }
194
+
195
+ .time {
196
+ scroll-behavior: smooth;
197
+ overflow-x: auto;
198
+ min-width: 50px;
199
+ width: 100%;
200
+ }
201
+
202
+ .time > div {
203
+ height: 32px;
204
+ display: flex;
205
+ justify-content: center;
206
+ align-items: center;
207
+ }
208
+
209
+ :host([small]) .time > div {
210
+ height: 25px;
211
+ }
212
+
213
+ .time > div:hover {
214
+ background: var(--gv-date-picker-hover--bgc, var(--gv-theme-color-light, #86c3d0));
215
+ color: var(--gv-date-picker-hover--c, var(--gv-theme-font-color-dark, #262626));
216
+ }
217
+
218
+ .time > div.selected {
219
+ background: var(--gv-date-picker-selected--bgc, var(--gv-theme-color, #5a7684));
220
+ color: var(--gv-date-picker-selected--c, var(--gv-theme-font-color-light, #ffffff));
221
+ }
222
+
223
+ .time > div.disabled {
224
+ opacity: 0.4;
225
+ }
226
+ `,
227
+ ];
228
+ }
229
+ constructor() {
230
+ super();
231
+ this._dayNamesOfWeek = [];
232
+ this._monthsList = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];
233
+ this.range = false;
234
+ this.currentDate = parseInt(format(startOfDay(Date.now()), 't'), 10);
235
+ this._hasGoToday = true;
236
+ this._hours = this.computeArrayOfTime(24);
237
+ this._minutes = this.computeArrayOfTime(60);
238
+ this._seconds = this.computeArrayOfTime(60);
239
+ }
240
+ set dateFrom(value) {
241
+ this._from = value;
242
+ if (this.time && this._from) {
243
+ const date = new Date(this._from * 1000);
244
+ this._hour = format(date, 'HH');
245
+ this._minute = format(date, 'mm');
246
+ if (this.isStrictTime()) {
247
+ this._second = format(date, 'ss');
248
+ }
249
+ }
250
+ }
251
+ set dateTo(value) {
252
+ this._to = value;
253
+ }
254
+ computeArrayOfTime(size) {
255
+ return new Array(size).fill('').map((a, i) => {
256
+ let time = i.toString();
257
+ if (time.length === 1) {
258
+ time = `0${time}`;
259
+ }
260
+ return time;
261
+ });
262
+ }
263
+ _renderPreviousNav() {
264
+ if (this.prev || this.monthMode || this.yearMode) {
265
+ return html `
266
+ <gv-button link icon="navigation:angle-double-left" @click="${this._onPrevYear}" ?small="${this.small}"></gv-button>
267
+ ${this.monthMode || this.yearMode
268
+ ? ''
269
+ : html `<gv-button link icon="navigation:angle-left" ?small="${this.small}" @click="${this._onPrevMonth}"></gv-button>`}
270
+ `;
271
+ }
272
+ return '';
273
+ }
274
+ _renderCurrentNav() {
275
+ return html `
276
+ <div class="current">
277
+ ${this.yearMode
278
+ ? ''
279
+ : html `<gv-button link @click="${this._onSelectMonth}" ?small="${this.small}"
280
+ ><span class="monthName">${until(this.computeName(this.month, this.year))}</span></gv-button
281
+ >`}
282
+ <gv-button ?small="${this.small}" link @click="${this._onSelectYear}">${this.computeCurrentYearName()}</gv-button>
283
+ </div>
284
+ `;
285
+ }
286
+ _renderNextNav() {
287
+ if (this.next || this.monthMode || this.yearMode) {
288
+ return html `
289
+ ${this.monthMode || this.yearMode
290
+ ? ''
291
+ : html `<gv-button link icon="navigation:angle-right" ?small="${this.small}" @click="${this._onNextMonth}"></gv-button>`}
292
+ <gv-button ?small="${this.small}" link icon="navigation:angle-double-right" @click="${this._onNextYear}"></gv-button>
293
+ `;
294
+ }
295
+ }
296
+ _renderDays() {
297
+ return html ` ${this._dayNamesOfWeek && this._dayNamesOfWeek.map((dayNameOfWeek) => html `<div class="day">${dayNameOfWeek}</div>`)}
298
+ ${this._dimensions &&
299
+ this._dimensions.map((dimension) => html `${dimension &&
300
+ dimension.map((data) => html ` <div>
301
+ ${data
302
+ ? html `
303
+ <gv-date-picker-cell
304
+ .disabledDates="${this.disabledDates}"
305
+ .min="${this.monthMode || this.yearMode ? null : this.min}"
306
+ .max="${this.monthMode || this.yearMode ? null : this.max}"
307
+ .month="${this.month}"
308
+ .hoveredDate="${this.hoveredDate}"
309
+ .dateTo="${this._to}"
310
+ .dateFrom="${this._from}"
311
+ .data="${data}"
312
+ .time="${this.time}"
313
+ ?isCurrent="${this.isCurrentDate(data)}"
314
+ @gv-date-picker-cell:hover="${this._onHover}"
315
+ @gv-date-picker-cell:select="${this._onSelect}"
316
+ ></gv-date-picker-cell>
317
+ `
318
+ : null}
319
+ </div>`)}`)}`;
320
+ }
321
+ isStrictTime() {
322
+ return this.time === true && this.strict === true;
323
+ }
324
+ render() {
325
+ const classes = {
326
+ 'calendar-grid': true,
327
+ 'calendar-grid-large': this.monthMode || this.yearMode,
328
+ };
329
+ return html `
330
+ <div class="box">
331
+ ${this.isStrictTime()
332
+ ? ''
333
+ : html `<div class="box-col">
334
+ <div class="nav">${this._renderPreviousNav()} ${this._renderCurrentNav()} ${this._renderNextNav()}</div>
335
+ <div class="${classMap(classes)}">${this._renderDays()}</div>
336
+ </div>`}
337
+ ${this.time && !this.monthMode && !this.yearMode
338
+ ? html `<div class="box-col">
339
+ ${this.isStrictTime() ? '' : html `<div class="nav-times">${this.getTime()}</div>`}
340
+ <div class="times">
341
+ <div class="time">
342
+ ${this._hours &&
343
+ this._hours.map((val) => html `<div
344
+ @click="${this._onSelectHour.bind(this, val)}"
345
+ class="${classMap({
346
+ hour: true,
347
+ selected: this._hour === val,
348
+ disabled: this.isHoursDisabled(val),
349
+ })}"
350
+ >
351
+ ${val}
352
+ </div>`)}
353
+ </div>
354
+ <div class="time">
355
+ ${this._minutes &&
356
+ this._minutes.map((val) => html `<div
357
+ @click="${this._onSelectMinute.bind(this, val)}"
358
+ class="${classMap({
359
+ minute: true,
360
+ selected: this._minute === val,
361
+ disabled: this.isMinutesDisabled(val),
362
+ })}"
363
+ >
364
+ ${val}
365
+ </div>`)}
366
+ </div>
367
+
368
+ ${this.isStrictTime()
369
+ ? html `<div class="time">
370
+ ${this._seconds &&
371
+ this._seconds.map((val) => html `<div
372
+ @click="${this._onSelectSecond.bind(this, val)}"
373
+ class="${classMap({
374
+ second: true,
375
+ selected: this._second === val,
376
+ disabled: this.isSecondsDisabled(val),
377
+ })}"
378
+ >
379
+ ${val}
380
+ </div>`)}
381
+ </div>`
382
+ : ''}
383
+ </div>
384
+ </div>`
385
+ : ''}
386
+ </div>
387
+ ${this.hasGoToday()
388
+ ? html ` <div class="foot">
389
+ <gv-button link @click=${this.goToday}>${i18n('gv-date-picker.today')}</gv-button>
390
+ </div>`
391
+ : ''}
392
+ ${this.time && !this.monthMode && !this.yearMode
393
+ ? html ` <div class="foot foot-time">
394
+ <gv-button primary outlined small @click=${this._onNow}
395
+ >${this.isStrictTime() ? i18n('gv-date-picker.currentTime') : i18n('gv-date-picker.now')}</gv-button
396
+ >
397
+ <gv-button primary small @click=${this._onDateTimeSelected} .disabled="${this.disableValidation === true}"
398
+ >${i18n('gv-date-picker.ok')}</gv-button
399
+ >
400
+ </div>`
401
+ : ''}
402
+ `;
403
+ }
404
+ isMinutesDisabled(value) {
405
+ if (this._from && this._hour != null) {
406
+ const selectedDate = new Date(this._from * 1000);
407
+ selectedDate.setHours(parseInt(this._hour, 10), parseInt(value, 10), 0, 0);
408
+ if (this.min) {
409
+ const minDate = new Date(this.min * 1000);
410
+ if (isBefore(selectedDate, minDate)) {
411
+ return true;
412
+ }
413
+ }
414
+ if (this.max) {
415
+ const maxDate = new Date(this.max * 1000);
416
+ if (isAfter(selectedDate, maxDate)) {
417
+ return true;
418
+ }
419
+ }
420
+ }
421
+ return false;
422
+ }
423
+ isSecondsDisabled(value) {
424
+ if (this._from && this._hour != null) {
425
+ const selectedDate = new Date(this._from * 1000);
426
+ selectedDate.setHours(parseInt(this._hour, 10), parseInt(value, 10), 0, 0);
427
+ if (this.min) {
428
+ const minDate = new Date(this.min * 1000);
429
+ if (isBefore(selectedDate, minDate)) {
430
+ return true;
431
+ }
432
+ }
433
+ if (this.max) {
434
+ const maxDate = new Date(this.max * 1000);
435
+ if (isAfter(selectedDate, maxDate)) {
436
+ return true;
437
+ }
438
+ }
439
+ }
440
+ return false;
441
+ }
442
+ isHoursDisabled(value) {
443
+ if (this._from) {
444
+ const selectedDate = new Date(this._from * 1000);
445
+ selectedDate.setHours(parseInt(value, 10));
446
+ if (this.min) {
447
+ const minDate = new Date(this.min * 1000);
448
+ minDate.setMinutes(0, 0, 0);
449
+ if (selectedDate.getTime() < minDate.getTime()) {
450
+ return true;
451
+ }
452
+ }
453
+ if (this.max) {
454
+ const maxDate = new Date(this.max * 1000);
455
+ if (selectedDate.getTime() > maxDate.getTime()) {
456
+ return true;
457
+ }
458
+ }
459
+ }
460
+ return false;
461
+ }
462
+ _updateTime() {
463
+ setTimeout(() => {
464
+ if (!this._hour || this.isHoursDisabled(this._hour)) {
465
+ const hour = this.shadowRoot.querySelector('.hour:not(.disabled)');
466
+ if (hour) {
467
+ this._hour = hour.textContent;
468
+ }
469
+ }
470
+ }, 0);
471
+ setTimeout(() => {
472
+ if (!this._minute || this.isMinutesDisabled(this._minute)) {
473
+ const minute = this.shadowRoot.querySelector('.minute:not(.disabled)');
474
+ if (minute) {
475
+ this._minute = minute.textContent;
476
+ }
477
+ }
478
+ }, 0);
479
+ if (this.isStrictTime()) {
480
+ setTimeout(() => {
481
+ if (!this._second || this.isSecondsDisabled(this._second)) {
482
+ const second = this.shadowRoot.querySelector('.second:not(.disabled)');
483
+ if (second) {
484
+ this._second = second.textContent;
485
+ }
486
+ }
487
+ }, 0);
488
+ }
489
+ }
490
+ getTime() {
491
+ if (this._hour && this._minute) {
492
+ return `${this._hour}:${this._minute}`;
493
+ }
494
+ return '';
495
+ }
496
+ isCurrentDate(data) {
497
+ if (this.yearMode) {
498
+ return getYear(data.date * 1000) === getYear(this.currentDate * 1000);
499
+ }
500
+ else if (this.monthMode) {
501
+ return getMonth(data.date * 1000) === getMonth(this.currentDate * 1000);
502
+ }
503
+ return data.date === this.currentDate;
504
+ }
505
+ updated(properties) {
506
+ if (properties.has('year')) {
507
+ this.dispatchEvent(new CustomEvent('year-changed', { detail: { value: this.year } }));
508
+ }
509
+ if (properties.has('locale') ||
510
+ properties.has('year') ||
511
+ properties.has('month') ||
512
+ properties.has('monthMode') ||
513
+ properties.has('yearMode')) {
514
+ this.yearAndMonthChanged(this.year, this.month);
515
+ }
516
+ if (properties.has('_hour') || properties.has('_minute')) {
517
+ this.shadowRoot.querySelectorAll('.selected').forEach((time) => {
518
+ time.parentNode.scrollTop = time.offsetTop - time.parentNode.offsetTop;
519
+ });
520
+ }
521
+ }
522
+ _updateDays() {
523
+ const dayNames = [];
524
+ for (let i = 0; i < 7; i += 1) {
525
+ dayNames.push(this.locale.localize.day(i, { width: 'short' }));
526
+ }
527
+ const firstDayOfWeek = this.locale.options.weekStartsOn;
528
+ const tmp = dayNames.slice().splice(0, firstDayOfWeek);
529
+ this._dayNamesOfWeek = dayNames.slice().splice(firstDayOfWeek, dayNames.length).concat(tmp);
530
+ }
531
+ yearAndMonthChanged(year, month) {
532
+ if (year && month && this.locale) {
533
+ if (this.yearMode) {
534
+ this._dayNamesOfWeek = [];
535
+ const cols = [null];
536
+ const { start, end } = this.getYearInterval(year);
537
+ for (let c = start; c < end; c++) {
538
+ const startDateString = `01/${month}/${c}`;
539
+ const startDateFn = parse(startDateString, 'dd/MM/yyyy', new Date(), { awareOfUnicodeTokens: true });
540
+ cols.push({
541
+ hover: false,
542
+ date: parseInt(format(startDateFn, 't'), 10),
543
+ title: this.computeName(month, c, 'yyyy'),
544
+ });
545
+ }
546
+ cols.push(null);
547
+ this._dimensions = [cols];
548
+ }
549
+ else if (this.monthMode) {
550
+ this._dayNamesOfWeek = [];
551
+ this._dimensions = [
552
+ this._monthsList.map((month) => {
553
+ const startDateString = `01/${month}/${year}`;
554
+ const startDateFn = parse(startDateString, 'dd/MM/yyyy', new Date(), { awareOfUnicodeTokens: true });
555
+ return {
556
+ hover: false,
557
+ date: parseInt(format(startDateFn, 't'), 10),
558
+ title: this.computeName(month, this.year, 'MMM'),
559
+ };
560
+ }),
561
+ ];
562
+ }
563
+ else {
564
+ this._updateDays();
565
+ let monthMinus = month;
566
+ monthMinus = monthMinus.substring(monthMinus.length - 2);
567
+ let startDateString = `01/${monthMinus}/${year}`;
568
+ let startDateFn = parse(startDateString, 'dd/MM/yyyy', new Date(), { awareOfUnicodeTokens: true });
569
+ const endDateFn = endOfMonth(startDateFn);
570
+ const endDateString = format(endDateFn, 'dd/MM/yyyy', { awareOfUnicodeTokens: true });
571
+ const firstDayOfWeek = this.locale.options.weekStartsOn;
572
+ const rows = [];
573
+ let columns = [];
574
+ const lastDayOfWeek = 6;
575
+ while (startDateString !== endDateString) {
576
+ let dayNumberFn = getDay(startDateFn) - firstDayOfWeek;
577
+ if (dayNumberFn < 0) {
578
+ dayNumberFn = 6;
579
+ }
580
+ const columnFn = {
581
+ hover: false,
582
+ date: parseInt(format(startDateFn, 't'), 10),
583
+ title: parseInt(format(startDateFn, 'd', { awareOfUnicodeTokens: true }), 10),
584
+ };
585
+ columns.push(columnFn);
586
+ if (dayNumberFn === lastDayOfWeek) {
587
+ for (let i = columns.length; i < lastDayOfWeek + 1; i += 1) {
588
+ columns.unshift(0);
589
+ }
590
+ rows.push(columns.slice());
591
+ columns = [];
592
+ }
593
+ startDateFn = addDays(startDateFn, 1);
594
+ startDateString = format(startDateFn, 'dd/MM/yyyy', { awareOfUnicodeTokens: true });
595
+ if (startDateString === endDateString) {
596
+ const endColumnFn = {
597
+ hover: false,
598
+ date: parseInt(format(startDateFn, 't'), 10),
599
+ title: parseInt(format(startDateFn, 'd', { awareOfUnicodeTokens: true }), 10),
600
+ };
601
+ columns.push(endColumnFn);
602
+ for (let i = columns.length; i <= lastDayOfWeek; i += 1) {
603
+ columns.push(0);
604
+ }
605
+ rows.push(columns.slice());
606
+ columns = [];
607
+ }
608
+ }
609
+ this._dimensions = rows;
610
+ }
611
+ }
612
+ }
613
+ getYearInterval(year = this.year) {
614
+ let start = parseInt(year, 10);
615
+ while (start % 10 !== 0) {
616
+ start--;
617
+ }
618
+ return { start, end: start + 10 };
619
+ }
620
+ computeName(month, year, _format = 'MMMM') {
621
+ if (month && year) {
622
+ const dateFn = parse(`${month}/${year}`, 'MM/yyyy', new Date());
623
+ return format(dateFn, _format, { locale: this.locale });
624
+ }
625
+ return '';
626
+ }
627
+ computeCurrentYearName() {
628
+ if (this.yearMode) {
629
+ const { start, end } = this.getYearInterval();
630
+ return `${start}-${end - 1}`;
631
+ }
632
+ return this.year;
633
+ }
634
+ _onSelectHour(value) {
635
+ this._hour = value;
636
+ this._updateTime();
637
+ }
638
+ _onSelectMinute(value) {
639
+ this._minute = value;
640
+ this._updateTime();
641
+ }
642
+ _onSelectSecond(value) {
643
+ this._second = value;
644
+ this._updateTime();
645
+ }
646
+ _onSelectMonth() {
647
+ if (this.monthMode) {
648
+ this._from = this._dateFrom;
649
+ }
650
+ else {
651
+ this._dateFrom = this._from;
652
+ this._from = null;
653
+ }
654
+ this.yearMode = false;
655
+ this.monthMode = !this.monthMode;
656
+ this.yearAndMonthChanged(this.year, this.month);
657
+ dispatchCustomEvent(this, 'month-mode', { mode: this.monthMode, month: this.month, year: this.year });
658
+ }
659
+ _onSelectYear() {
660
+ if (this.yearMode) {
661
+ this._from = this._dateFrom;
662
+ }
663
+ else {
664
+ this._dateFrom = this._from;
665
+ this._from = null;
666
+ }
667
+ this.monthMode = false;
668
+ this.yearMode = !this.yearMode;
669
+ this.yearAndMonthChanged(this.year, this.month);
670
+ dispatchCustomEvent(this, 'year-mode', { mode: this.yearMode, month: this.month, year: this.year });
671
+ }
672
+ get datetimeSelected() {
673
+ if (this.isStrictTime() && this._from == null) {
674
+ this._from = new Date().valueOf() / 1000;
675
+ }
676
+ let selectedDate = new Date(this._from * 1000);
677
+ selectedDate = setHours(selectedDate, parseInt(this._hour ? this._hour : 0, 10));
678
+ selectedDate = setMinutes(selectedDate, parseInt(this._minute ? this._minute : 0, 10));
679
+ return selectedDate.getTime() / 1000;
680
+ }
681
+ _onDateTimeSelected() {
682
+ this.value = this.datetimeSelected;
683
+ this.dispatchEvent(new CustomEvent('date-from-changed', { detail: { value: this.value } }));
684
+ }
685
+ _onNow() {
686
+ const now = new Date();
687
+ if (!this.isStrictTime()) {
688
+ now.setSeconds(0, 0);
689
+ }
690
+ this._from = now.getTime() / 1000;
691
+ this.month = format(now, 'MM');
692
+ this.year = format(now, 'yyyy');
693
+ this._hour = format(now, 'HH');
694
+ this._minute = format(now, 'mm');
695
+ if (this.isStrictTime()) {
696
+ this._second = format(now, 'mm');
697
+ }
698
+ this.dispatchEvent(new CustomEvent('date-from-changed', { detail: { value: this._from } }));
699
+ }
700
+ get disableValidation() {
701
+ const date = this.datetimeSelected;
702
+ if (date) {
703
+ if (this.min && date < this.min) {
704
+ return true;
705
+ }
706
+ if (this.max && date > this.max) {
707
+ return true;
708
+ }
709
+ }
710
+ return false;
711
+ }
712
+ _onSelect({ detail }) {
713
+ const { date } = detail;
714
+ if (this.yearMode) {
715
+ this.yearMode = false;
716
+ this.monthMode = true;
717
+ this._from = this._dateFrom;
718
+ const selectedDate = new Date(date * 1000);
719
+ this.year = format(selectedDate, 'yyyy');
720
+ dispatchCustomEvent(this, 'year-changed', { year: this.year });
721
+ }
722
+ else if (this.monthMode) {
723
+ this.monthMode = false;
724
+ this._from = this._dateFrom;
725
+ const selectedDate = new Date(date * 1000);
726
+ this.month = format(selectedDate, 'MM');
727
+ this.year = format(selectedDate, 'yyyy');
728
+ dispatchCustomEvent(this, 'month-changed', { month: this.month, year: this.year });
729
+ }
730
+ else if (this.time) {
731
+ this._from = date;
732
+ this._updateTime();
733
+ }
734
+ else if (this.range) {
735
+ if (this._from && this._to) {
736
+ this._from = date;
737
+ this._to = null;
738
+ this.hoveredDate = undefined;
739
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', { detail: { value: this.hoveredDate } }));
740
+ }
741
+ else if (!this._from || (this._from && date < this._from)) {
742
+ this._from = date;
743
+ }
744
+ else if (!this._to || (this._to && date > this._to)) {
745
+ this._to = date;
746
+ }
747
+ this.dispatchEvent(new CustomEvent('date-from-changed', { detail: { value: this._from } }));
748
+ this.dispatchEvent(new CustomEvent('date-to-changed', { detail: { value: this._to } }));
749
+ }
750
+ else {
751
+ this._from = date;
752
+ this.dispatchEvent(new CustomEvent('date-from-changed', { detail: { value: this._from } }));
753
+ }
754
+ }
755
+ _onHover(event) {
756
+ if (this.range) {
757
+ this.hoveredDate = event.detail.date;
758
+ this.dispatchEvent(new CustomEvent('hovered-date-changed', { detail: { value: this.hoveredDate } }));
759
+ }
760
+ }
761
+ _onNextMonth() {
762
+ const month = parse(this.month, 'MM', new Date());
763
+ const monthPlusDate = addMonths(month, 1);
764
+ const monthPlusString = format(monthPlusDate, 'MM', { locale: this.locale });
765
+ this.month = monthPlusString;
766
+ if (this.month === '01') {
767
+ const year = parse(this.year, 'yyyy', new Date());
768
+ const yearPlusDate = addYears(year, 1);
769
+ const yearPlusString = format(yearPlusDate, 'yyyy', { locale: this.locale });
770
+ this.year = yearPlusString;
771
+ }
772
+ }
773
+ _onPrevMonth() {
774
+ const month = parse(this.month, 'MM', new Date());
775
+ const monthMinusDate = subMonths(month, 1);
776
+ const monthMinusString = format(monthMinusDate, 'MM', { locale: this.locale });
777
+ this.month = monthMinusString;
778
+ if (this.month === '12') {
779
+ const year = parse(this.year, 'yyyy', new Date());
780
+ const yearMinusDate = subYears(year, 1);
781
+ const yearMinusString = format(yearMinusDate, 'yyyy', { locale: this.locale });
782
+ this.year = yearMinusString;
783
+ }
784
+ }
785
+ _onNextYear() {
786
+ if (this.yearMode) {
787
+ this.year = parseInt(this.year, 10) + 10;
788
+ }
789
+ const year = parse(this.year, 'yyyy', new Date());
790
+ const yearPlusDate = addYears(year, 1);
791
+ const yearPlusString = format(yearPlusDate, 'yyyy', { locale: this.locale });
792
+ this.year = yearPlusString;
793
+ }
794
+ _onPrevYear() {
795
+ if (this.yearMode) {
796
+ this.year = parseInt(this.year, 10) - 10;
797
+ }
798
+ const year = parse(this.year, 'yyyy', new Date());
799
+ const yearMinusDate = subYears(year, 1);
800
+ const yearMinusString = format(yearMinusDate, 'yyyy', { locale: this.locale });
801
+ this.year = yearMinusString;
802
+ }
803
+ goToday() {
804
+ this.month = `0${getMonth(new Date()) + 1}`.slice(-2);
805
+ this.year = getYear(new Date());
806
+ this._onSelect({ detail: { date: new Date().getTime() / 1000 } });
807
+ }
808
+ hasGoToday() {
809
+ return !this.range && !this.time && !this.monthMode && !this.yearMode && this._hasGoToday;
810
+ }
811
+ }
812
+ window.customElements.define('gv-date-picker-calendar', GvDatePickerCalendar);